verilog之预编译
Posted electricdream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog之预编译相关的知识,希望对你有一定的参考价值。
verilog之预编译
1、基本作用
预编译,就是在verilog进入编译器前的准备工作。一般是完成一些文件的调用,一些编译器的设置,一些参数的定义。一般使用include,define,timescale就可以实现。比较灵活的使用是ifdef和endif的插入,可以将预编译的功能拓展。
2、使用事例
`define WIDTH 8 `include "demo_include.v" `include "demo_h.h" `timescale 10ns/1ns `define cut module demo; reg [`WIDTH-1:0] s1; //different from parameters reg clk; demo_include U1( .clk(clk) ); initial begin #1 $display(`WIDTH); #2 `ifdef cut $stop; `endif #2 $display(`HEIGHT); $stop; end endmodule
上面的事例包括了定义了参数,引用了文件,设置时序间隔。
主要需要注意的是ifdef-endif的使用:
这里的使用方法就是将ifdef定义的宏作为开关使用,控制特定的代码段是否工作。类似一个可选择性注释的开关。
还有其他的作用,一般是编辑器的设置,这里不多介绍,这里记住这个使用方法就可以。
注意预编译区的代码也是按照前后顺序依次执行的。使用ifdef需要注意顺序,define要在ifdef前面使用。同理,也可以使用ifdef优化参数,对参数进行分类。
3、总结反思
预编译的内容不是特别复杂,一般用于提高设计的普适性和灵活性。在复杂设计时,应当注意预编译的充分利用以提高设计的效率。
以上是关于verilog之预编译的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript之预编译学习(内含多个面试题) #yyds干货盘点#