zoukankan      html  css  js  c++  java
  • 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、总结反思

    预编译的内容不是特别复杂,一般用于提高设计的普适性和灵活性。在复杂设计时,应当注意预编译的充分利用以提高设计的效率。

  • 相关阅读:
    cereal:C++实现的开源序列化库
    随笔
    我们一起成长
    青岛近代历史和文化资料整理
    Codeforces Round #580 (Div. 2)-D. Shortest Cycle(思维建图+dfs找最小环)
    CodeForces
    PAT甲级1151(由前序和中序确定LCA)
    记录使用vs code两天的心得
    AcWing 285. 没有上司的舞会(树形dp入门)
    POJ-3255-Roadblocks(次短路的另一种求法)
  • 原文地址:https://www.cnblogs.com/electricdream/p/13406170.html
Copyright © 2011-2022 走看看