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之预编译

JavaScript之预编译学习(内含多个面试题) #yyds干货盘点#

JavaScript之预编译与变量提升windowAOGOreturnif

JavaScript之预编译学习(附带多个面试题)

JavaScript之预编译学习(附带多个面试题)

JS之预编译和执行顺序(全局和函数)