Verilog中parameter和define的区别

如题所述

`define 是宏定义,全局作用的,而且不受语意限制。你甚至可以定义半截的字符串出来。但是使用的时候才会做展开。

举例而言,如果你定义一个宽度信息为:

`define RANGE 2:3

然后在使用的时候`include这个文件,RANGE就可以解析了。
wire [`RANGE] bus;

parameter是模块内常量定义,仅限于常量。一般的工具对于parameter的支持力度更好,毕竟是语意可以识别的。而`define的支持仅仅限于parse阶段,不会流入到elaboration阶段。但是如果把``define的使用场景都改为parameter会造成不必要的变量的引入。

目前一般使用`define的地方一般是全局化的configuration阶段。比如说对整个IP的配置信息,一个IP应该满足不同的SOC的需求提供不同的配置。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-21
1、define:作用:
常用于定义常量可以跨模块、跨文件;
范围:整个工程;
概念:可以跨模块的定义,写在模块名称上面,在整个设计工程都有效。
一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`define指令,定义的常量可以被其他文件调用,直到遇到
`undef;
2、
parameter:作用:
常用于模块间参数传递;
范围:
本module内有效的定义;
概念:本module内有效的定义,可用于参数传递;
如果在模块内部定义时无法进行参数传递,
若在模块名后照下面这样写则可以进行传递
相似回答