赞
踩
工程文件的路径或源文件中是否包含中文或空格!
第一个排除的可能原因:Quartus中Assignments-Settings-Simulation中仿真文件的输出路径是否正确!
下面是一个示例。
Modelsim仿真时报错找不到两个txt文件:
源文件层级如下:
这两个txt文件是在顶层文件CNN.v中读取的:
最后的解决方法就是把两个txt文件放在Modelsim仿真时生成的simulation文件夹里。
附工程代码链接。
仿真时,如果按照默认的方法从Quartus中调用Modelsim,那么只能得到testbench中的信号波形。子模块中的信号波形需要自己手动添加,信号的格式(比如进制)也要自己手动设置,然后重新仿真。当子模块较多,需要观察的信号波形较多,且仿真时间长时,每修改一下代码然后仿真,就要手动添加一次,甚是麻烦。这个问题可以用.do文件来解决。
从Quartus中调用Modelsim时,在文件夹simulation-modelsim中会生成一个“top_level_module_name_run_msim_rtl_verilog.do”文件。这个文件长这样(顶层模块名为DYNAMIC_8SEG_DISPLAY,故文件名为“DYNAMIC_8SEG_DISPLAY_run_msim_rtl_verilog.do”)
在Quartus中选择“Tools-Run Simulation Tool-RTL Simulation”调用Modelsim,Modelsim会先执行这个文件。
把自己想要添加的波形写在一个run.do文件,然后在Quartus中选择“Assignments-Settings-Simulation-Use script to set up simulation”,选择写好的run.do文件,则上面的“DYNAMIC_8SEG_DISPLAY_run_msim_rtl_verilog.do”文件变成如图所示。可以看到,最后会调用我们自己写的run.do文件。
工程文件名如果有空格,Modelsim启动时会报错。
出现这个的原因是task有输出信号,调用task时传给这个信号的变量误写成wire型,改为reg型即可。
task reset;
output rst_n;
begin
rst_n = 1'b0;
#100
rst_n = 1'b1;
end
endtask
module demo(...);
...
// wire rst_n; // 会产生3047错误
reg rst_n;
initial begin
...
reset(rst_n);
...
end
endmodule
从Github上下载了一个Verilog实现的三层CNN,在Quartus编译中的Fitter阶段时报错。原因就是块资源不足,此时选用的是Stratix V系列中资源最多的型号了。可以从这里看到用FPGA在实现CNN时面临着资源不足的问题。
每次下载代码时,需要点击programmer图标,弹出下载窗口,关闭时会要求保存为“Chain+数字.cdf“文件。每点击一次,就会有一个新的窗口,且命名中的数字依次递增。我的疑惑就是每次下载代码都要保存一个cdf文件吗?还是打开原有的cdf文件(尝试了菜单栏里的“文件-打开文件”,并不方便”)?还是说每次下载代码都不要保存.cdf文件?为什么每次下载代码都要保存一个.cdf文件呢?
已解决。第一次下载时保存.cdf文件,可以在左侧导航栏“Files"中看到该.cdf文件,每次下载时打开它就可以了。
点开菜单栏中的“文件-打开文件”,点击“文件类型”的下拉框就可以看到所有文件类型的说明。
先完成编译,然后点击菜单栏“Tools-Netlist Viewer-RTL Viewer”,即可查看RTL视图。左方可以查看Logics,Operators,Registers和Ports。
在RTL Viewer窗口中点击菜单栏“Tools-Properties”,可以查看各个单元的信号值,以及扇出扇入。
①只需要配置output引脚和inout引脚的slew rate。
②需要较大驱动电流时,修改current strength。
点击“Tools-Run Simulation Tool-RTL Simulation”时错误如下。原因是已经打开了一个Modelsim。把打开的Modelsim关闭,再重新仿真即可。
define.v写了一个宏,比如BIT,调用的时候写成了BLT,编译器是查不出来宏写错了,会报一些奇怪的错误。所以下次如果出错的那一行有宏,先判断宏是否写对了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。