如何在 System Verilog 中读取 CSV 文件时跳过第一行

问题描述 投票:0回答:1

我正在尝试在 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 文件时跳过标题行。请建议如何解决这个问题

csv verilog system-verilog
1个回答
0
投票

由于您不需要像处理以下行那样设置标题行的格式,因此请在

$fgets
循环之前使用
$fscanf
而不是
while

$fgets(line, file);
while (!$feof(file)) begin
© www.soinside.com 2019 - 2024. All rights reserved.