【发布时间】:2016-02-05 14:26:51
【问题描述】:
我有一个这样的宏:
`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 {} 和 index [] 都搞乱了模块实例名称中的自动分配。
我想在不为信号名称添加另一个输入并且在宏外部没有临时信号的情况下解决这个问题。
有没有办法将带有索引的输出信号名称转换为唯一的字符串...例如使用 $sformatf 然后用下划线替换索引括号?
或者是否有其他方法可以统一信号名称但保持合法?像 atoi() 之类的东西可以根据信号名称使其成为唯一编号?
【问题讨论】:
标签: string macros verilog system-verilog