原创 ModelSim源文件编译语法错误解决

2021-6-29 09:40 18582 39 39 分类: FPGA/CPLD 文集: ModelSim
.
  1. Syntax error near “non-printable character with the hex value ‘0xef“

手打了一个简单的源文件,ModelSim编译的时候出现几条类似上述的语法错误。由于代码简单,也没几行实在是不知道问题出在哪里,后来网上搜索,发现有其它人遇到了类似问题。问题出在手打代码的时候使用了第三方编辑器,比如UEdit或notpad++等等,这些编辑器很容易在不经意间保存文件的时候会在代码中某处出现隐藏的乱码。解决的一种办法就是用ModelSim自己的编辑器打开源文件,乱码会无处藏身。


另外,仿真的时候使用了文件操作,首先是打开文件
  1. File = $fopen("fft_cos.hex", "r");

上述代码在初始化的时候打开文件,File定义为integer类型,仿真的时候倒是没有出现什么问题。但是在读取文件的时候,使用
  1. $fscanf(File, "%h",data);

语句将文件一行数据读取并保存到寄存其data里,读取函数会自动换行。在时钟同步下控制文件的读取,即同步与时钟的读取使能信号来控制文件的每一次(每一行)数据的读取的时候,上述语句位于always进程里,
  1. always@(posedge clk or negedge rst_n)
  2. begin
  3. if (!rst_n)
  4. begin
  5. data <=56'h00000000000000;
  6. end
  7. else
  8. begin
  9. if(filerd_en)
  10. begin
  11. //callback = $fscanf(File, "%h",data);
  12. $fscanf(File, "%h",data);
  13. //data_o <= data;
  14. valid <= 1'b1;
  15. end
  16. else
  17. begin
  18. valid <= 1'b0;
  19. end
  20. end
  21. end

这时候仿真会给出一个警告
  1. ** Warning: (vsim-PLI-3691) E:/workspace/prj/SourceSim/SortMergerSim/CS_sort_and_merger_by_stack/rdFile.v(35): Expected a system task, not a system function '$fscanf'.
  2. # Time: 0 ps Iteration: 0 Instance: /cs_sortmerger_stack_tb/FileRead File: E:/workspace/prj/SourceSim/SortMergerSim/CS_sort_and_merger_by_stack/rdFile.v

去除该警告的方法,就是使用上述代码中屏蔽的
  1. //callback = $fscanf(File, "%h",data);


作者: coyoo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1010859.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
39
关闭 站长推荐上一条 /3 下一条