說我有一個8位標誌寄存器:我可以在verilog中選擇有意義的名稱嗎?
reg [7:0] flags;
雖然在我的代碼,我可以參考其中的一部分作爲flags[0]
,,flags[7:4]
等,我寧願能夠沿着做些什麼flags.Z
,flags.C
,flags.STATE
。
目前,我發現這很接近:
`define Z [0]
`define N [1]
`define C [2]
`define V [3]
`define STATE [7:4]
reg [7:0] flags;
這意味着我可以同時分配和評估flags`Z
,flags`C
和flags`STATE
。
但是,用單字母定義污染全局命名空間似乎是一個壞主意,特別是因爲編譯器會接受notflags`N
。這是可以接受的嗎?
有沒有更簡單的方法來做到這一點?我知道SystemVerilog有結構,但我限制在verilog 2001.