我正在尝试在 System Verilog 中读取 csv 文件并解析它们并将值分配给关联数组。我想在阅读时跳过 csv 文件的第一行。我正在使用以下任务将 csv 文件读入 sv。
while (!$feof(file)) begin
$fscanf(file, "%s\n", line);
for (i = 0; i < line.len(); i++) begin
if (line[i] == ",") begin
break;
end
end
if (i != line.len()) begin
register_name = line.substr(0, i-1);
exp_value = line.substr(i + 1, line.len() - 1);
end else begin
$display("Error: The line format is not readable. Line: %s. Please check it", line);
end
if (exp_value.len() > 0) begin
$sscanf(exp_value, "%h", value);
end else begin
$display("Error: Value is not able to be read. Line: %s, Value: %h. Please check it", line, exp_value);
end
Temp_Arr.name = register_name;
Temp_Arr.value = value;
RegData[register_name] = Temp_Arr;
end
我在 while 循环之前尝试使用“fscanf()”函数,希望它能跳过第一行,但它不起作用。
数组的内容是这样的
Register Name,Expected Value
Reg_1,0abd4
Reg_2,4eec3
...
我想在解析 csv 文件时跳过标题行。请建议如何解决这个问题
由于您不需要像处理以下行那样设置标题行的格式,因此请在
$fgets
循环之前使用 $fscanf
而不是 while
:
$fgets(line, file);
while (!$feof(file)) begin