我在设计中有一条VHDL记录,例如
TYPE signal_record IS RECORD
signal_0 : std_ulogic;
signal_1 : std_ulogic;
...
signal_31 : std_ulogic;
END RECORD;
在我的SV测试平台上,我想在systemverilog中的每个signal_%d上应用一个断言。
generate
for (genvar i = 0; i < 31; i++)
begin :
assert property(pp_one_property(clk, {`PATH_TO_SIGNAL.signal_,i}));
end
endgenerate
然而,这不会起作用,因为systemverilog会将信号作为断言属性的第二个参数。
如何在这些信号上动态应用断言?
答案 0 :(得分:0)
不幸的是,你必须手工编写所有这些内容。连接运算符不会创建新标识符。如果您将记录作为数组而不是32个单独的字段,您可以这样做,因为您可以根据genvar
索引条目。
答案 1 :(得分:0)
SystemVerilog允许您通过使用两个连续的重音(即“`”)从文本宏构造标识符,而不引入空格。这可能是你得到你想要的最接近的。