我有這樣一個宏:Systemverilog:有沒有一種方法可以使信號在宏實例化模塊中獨一無二?
`define BOB_STAGE(_BUS_IN, _BUS_OUT) \
bob_module auto_``_BUS_OUT``_bob_module (.bus_in(_BUS_IN), .bus_out(_BUS_OUT));
(注意_BUS_OUT成爲實例名稱進行唯一實例的一部分)
所以這些都是使用所有的地方,並採取級聯信號到1信號輸出,但輸出信號被編入索引。
實施例使用:
`BOB_STAGE({A,B,C,D}, OUT[1]);
的問題是兩者的concat {}和索引[]弄亂在模塊實例名稱自動分配。
我想解決這個問題,而不需要爲信號名稱添加另外的輸入,並且在宏的外部沒有臨時信號。
有什麼方法可以將輸出信號名稱與索引轉換爲唯一字符串...例如使用$ sformatf,然後用下劃線替換索引括號?
或者是否有其他方法來統一信號名稱,但保持合法?像atoi()這樣的東西,使其成爲基於信號名稱的唯一編號?
林不知道你的意思是'逃過名字' – user5888527
請參閱部分_5.6.1轉義標識符1800-2012的LRM –
這適用於RTL。謝謝。 (不確定實現工具會喜歡它,但這是另一場戰鬥) – user5888527