Quartus和Modelsim中使用`include包含头文件的对比

在Quartus建立的工程中包含有头文件,而该工程在Modelsim仿真时有时会报错。

Quartus版本是Quartus Prime 17.1 Lite Edition;Modelsim版本是Modelsim SE 10.2。

1、Quartus工程中`include包含的是“***.vh”(或者“***.h”)文件,在Quartus中对工程编译时,“***.vh”文件一定要保存在Quartus工程目录下,或者在包含该头文件模块的文件目录下,如果该文件在其他文件目录会报错如下:

Error (10054): Verilog HDL File I/O error at sdram_seqrw_core.v(35): can't open Verilog Design File "burst_mode.vh"。

2、Modelsim工程中`include包含的是“***.vh”(或者“***.h”)文件,在Modelsim中对工程编译时,“***.vh”文件一定要保存在Modelsim工程目录下,如果该文件在其他文件目录会报错如下:

Error: F:/study/cyc10_image/test_ex/cmos_ov5640_ver2/src/sdram/sdram_seqrw_core.v(35): Cannot find `include file "burst_mode.h" in directories.

总结:在用Modelsim仿真带有 `include包含文件的工程时( `include "***.vh"),一定要把 "***.vh"文件拷贝到Modelsim工程目录下。

备注另外一个问题:Quartus编译和Modelsim编译的区别:在定义参数之前使用了这个参数,在在Quartus中不会报错,但是Modelsim中却会报错,如下:Error: F:/study/cyc10_image/test_ex/cmos_ov5640_ver2/src/sdram/sdram_seqrw_core.v(9): (vlog-2730) Undefined variable: 'SDR_RWD_WIDTH'.(网上查了一下像是Modelsim的编译相对于Quartus更严格,个人感觉会不会与verilog标准有关,有知道的大神还望指点一下)。

代码如图:

Quartus和Modelsim中使用`include包含头文件的对比_第1张图片

对于这个问题:在modelsim仿真的时候可以把 参数 写到 模块名 和 端口列表 之间(如下图),这样modelsim编译就不会报错了 ,同样在Quartus中编译也不会报错。

Quartus和Modelsim中使用`include包含头文件的对比_第2张图片

你可能感兴趣的:(FPGA开发)