System verilog $pass带有输入信号
我想验证一下,如果一个事件发生了,那么在过去的“num_ticks”中,应该已经断言了一些信号 例如,我写的属性是:System verilog $pass带有输入信号,system-verilog,uvm,questasim,system-verilog-assertions,System Verilog,Uvm,Questasim,System Verilog Assertions,我想验证一下,如果一个事件发生了,那么在过去的“num_ticks”中,应该已经断言了一些信号 例如,我写的属性是: property test_past; @(posedge clk) $rose(gnt) |-> $past(req, num_ticks); endproperty 这里的问题在于num_ticks。如果num_ticks是写入属性的模块的输入信号,则断言失败。如果我将num\u ticks声明为int,并将其赋给常数,则它将通过 $pass是否仅适用于常
property test_past;
@(posedge clk)
$rose(gnt) |-> $past(req, num_ticks);
endproperty
这里的问题在于num_ticks
。如果num_ticks
是写入属性的模块的输入信号,则断言失败。如果我将num\u ticks
声明为int,并将其赋给常数,则它将通过
$pass是否仅适用于常量值?LRM中未提及这一点
我正在使用Questasim 10.3为此,您可以使用多个断言 假设num_ticks是4位宽,那么您可以这样做
genvar x;
generate
for (x=0; x<16; x++)
begin
property test_past;
@(posedge clk)
(num_ticks == x) && $rose(gnt) |-> $past(req, x);
endproperty
end
endgenerate
genvarx;
生成
对于(x=0;x$过去(需求,x);
端属性
结束
最终生成
为此,您可以使用多个断言
假设num_ticks是4位宽,那么您可以这样做
genvar x;
generate
for (x=0; x<16; x++)
begin
property test_past;
@(posedge clk)
(num_ticks == x) && $rose(gnt) |-> $past(req, x);
endproperty
end
endgenerate
genvarx;
生成
对于(x=0;x$过去(需求,x);
端属性
结束
最终生成
我刚刚注意到我使用的是一个过时的LRM-2002 Accelera extensions版本。关于如何使用变量num_ticks实现$pass功能,有什么建议吗?我用了一些逻辑来解决这个问题。不太好看,但我刚刚注意到我使用的是一个过时的LRM-2002 Accelera extensions版本.关于如何使用变量num_ticks实现$pass功能,有什么建议吗?我用了一些逻辑来解决这个问题。虽然不漂亮,但确实可以