2014年4月18日 星期五

`define/`if `elsif `else `endif 用途

在寫 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

沒有留言:

張貼留言