我尝试使用$fscanf
函数在SystemVerilog中读取CSV文件。
这是CSV文件的格式:
REG_1,0xab4556
REG_2,0x124d
字符串
等等
我必须扫描这些值并将它们分配给变量Register Name和Value。我将在代码中稍后调用这些值,但现在这是我面临的问题。
这是我用来扫描它的函数:
while (!$feof(file)) begin
$fscanf(file, "%s,%x", register_name, expected_value);
$display("Register Name: %s, Value: %h", register_name, expected_value);
end
型
但是,我得到这样的输出
Register Name: REG_1,0xab4456, Value: 0x00000000
型
它将CSV文件的两列都阅读到第一个变量中。我如何修复这个问题?
1条答案
按热度按时间9bfwbjaz1#
问题是您的文件内容不能很好地与Verilog
$fscanf
一起工作。%s
基本上读取整行。%s
是一个字符串格式规范,其中包括逗号。如果你不能很容易地改变文件的内容,你需要在Verilog中做很多工作。例如,这段代码将每一行读入2个
string
变量:字符串
输出量:
型
如果希望
Value
被解释为Verilog数字而不是字符串,则需要执行更多的字符串解析和转换。