Verilog实用define和include设置仿真模式与编译模式

最近FPGA琢磨了有一段时间了。虽然后期因为期末考原因,琢磨时间比较少了。每次停歇一段时间后,从新思考问题,问题似乎没有起初那么难解决了,敲起代码来顺手很多。大概是时间慢慢沉淀了知识,吸收了经验。理论和经验都需要时间来消化。这段时间大约写了有5~10K的Verilog了,自己的代码风格也基本定型了。对HDL也有更贴近的认识了。看了些视频教程,这从中吸收了不少精华。其中就包括开源骚客(http://dengkanwen.com/)的SDRAM系列教程。收货颇多,尤其是他的设计逻辑方法。当工程量逐渐增大时,就必须有清晰的逻辑时序图,系统框图。

回归正题。

我正是在开源骚客那学到的如何利用define来设置仿真模式和编译模式。

在文件第一行写`define SIM

在配置参数位置,用`ifndef来判断是否有定义SIM 或者说是否在仿真模式。如果在仿真模式则用仿真的参数,如果在编译模式则用真实的参数。

例如在SDRAM仿真中,不至于仿真时间太常,所以从新设置仿真模式下的参数以便仿真。


`ifndef SIM
localparam AREF_T = 13'd7813; //8192 times for every 64ms
localparam T200US = 15'd20000; //Wait 200us for Power-up
`else
localparam AREF_T = 13'd200; //8192 times for every 64ms
localparam T200US = 15'd80; //Wait 200us for Power-up
`endif

当要编译的时候,只要把`define SIM注释掉就可以了。方便简单。

但是这种发放也有缺点,就是当顶层文件例化多个模块的时候,每次仿真和编译都要一个一个模块进行注释或去注释`define SIM,也是很麻烦的。所以这时候就可以引入`include方法了。

套用【原创】关于include用法的总结【Verilog】的解释

这时候我只要include一个文件里面define SIM就可以了。

Verilog实用define和include设置仿真模式与编译模式》上有4条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注