verilog之预编译

摘要:
verilog之预编译1、基本作用预编译,就是在verilog进入编译器前的准备工作。比较灵活的使用是ifdef和endif的插入,可以将预编译的功能拓展。主要需要注意的是ifdef-endif的使用:这里的使用方法就是将ifdef定义的宏作为开关使用,控制特定的代码段是否工作。使用ifdef需要注意顺序,define要在ifdef前面使用。同理,也可以使用ifdef优化参数,对参数进行分类。
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
moduledemo;
    reg [`WIDTH-1:0] s1; //different from parameters
    regclk;
    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之预编译》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[翻译]如何编写GIMP插件(二)JS周期函数setInterval下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C/C++ 开发一款多人聊天室

基于UDP协议实现 服务端代码: // Test_Console.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <WinSock2.h> #include <WS2tcpip.h> #include <Window...

Linux基础——查看IP及port的简单实现

需要注意,不同的机器,有的可能为大端字节序,有的可能为小端字节序。 小端就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 大端就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。 实现代码如下: 1 #include <stdio.h> 2 #include <stdlib...

linux C++ 共享库导出类

1.共享库的对外接口函数的声明必须加上extern “C”。 2.使用共享库对话接口函数生成的对象指针时在该对象未被释放之前不能关闭共享库句柄,否则会出现segmentation fault错误。 以下是一个插件式设计的示例: 1、主执行程序:main.cpp #include #include #include "SMSGamePlugin.h" int...

004.UDP--拼接UDP数据包,构造ip头和udp头通信(使用原始套接字)

一.大致流程: 建立一个client端,一个server端,自己构建IP头和UDP头,写入数据(hello,world!)后通过原始套接字(SOCK_RAW)将包发出去。 server端收到数据后,打印UDP数据并发送确认消息(yes),client收到yes后将其打印。 二.其中: client端IP:192.168.11.104 端口:8600 ser...

NDK编译依赖opencv静态库的arm64-v8a动态库

遇到的问题:写完Android.mk和Application.mk文件,然后使用cygwin+NDK编译 总是遇到下面的编译错误: fatal error: opencv2/core.hpp: No such file or directory #include "opencv2/core.hpp" 在网上试了很多方法,都不奏效。 最终解决问题的办法是:...

cmake编译多个文件

demo.h #ifndef UNTITLED_HEADER_DEMO_H #define UNTITLED_HEADER_DEMO_H void printHello(char *name); #endif //UNTITLED_HEADER_DEMO_H demo.c // // Created by gxf on 2020/2/6. // #i...