Verilog中parameter(參數)與define(宏定義)的區別
-
語句格式
parameter xx=yy; (有分號)
’define xx yy (無分號)
-
作用范圍
參數是局部的,只在其定義的模塊內部起作用,而宏定義對同時編譯的多個文件起作用。即使在某一個模塊內部指定的宏定義,在編譯過程中仍舊對多個文件起作用,直至遇到重新定義為止。
- 狀態機環境下
狀態機的定義可以用parameter 定義,但是不推薦使用`define 宏定義的方式,因為'define 宏定義在編譯時自動替換整個設計中所定義的宏,而parameter 僅僅定義模塊內部的參數,定義的參數不會與模塊外的其他狀態機混淆。例如一個工程里面有兩個module 各包含一個FSM,如果設計時都有IDLE 這一名稱的狀態,如果使用'define 宏定義就會混淆起來,如果使用parameter 則不會造成任何不良影響。