在寫 bench 的時候,有時候會想怎麼只需要維護一份 bench 卻讓他可以一人分飾多角呢?
這時候要好好善用 `define 的功能
舉個例子好了,我希望在執行A模擬的時候,signal_bit = 1'b1;
而執行B模擬的時候,signal_bit = 1'b0;
或許你會說,寫成
signal = select ? 1'b1 : 1'b0;
程式寫法百百種,好與壞需要長時間的累積。
或許在這個例子,這個方式也可以,但是總有些時候,你用這種方式是行不通的。
或許你可以考慮這種方式。
`ifdef SIM_A
wire signal_bit = 1'b1;
`else
wire signal_bit = 1'b0;
`endif
那如果有更多case呢?
你可以寫成
`ifdef SIM_A
wire [1:0] signal_bit = 2'b00;
`elsif SIM_B
wire [1:0] signal_bit = 2'b01;
`elsif SIM_C
wire [1:0] signal_bit = 2'b10;
`endif
沒有留言:
張貼留言