我有这样一个宏: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