Vhdl 可变延迟管道的PSL断言

Vhdl 可变延迟管道的PSL断言,vhdl,system-verilog,verification,system-verilog-assertions,psl,Vhdl,System Verilog,Verification,System Verilog Assertions,Psl,我试图编写一个PSL断言,检查输入上的断言数量是否与输出上的断言数量匹配 例如: 在输入端,任何事情都可以在任何时候发生,输出端也可以在任何时候被断言。确切时间未知,也不重要。我要验证的是没有丢弃任何信息 我用下面的PSL语句来验证这一点。这是一个强有力的断言,意味着在测试结束时,所有断言都需要“完成” 例如,以下情况应为故障,但此PSL通过: 我注意到这个语句不强,因为不同的输入断言可以由相同的输出断言匹配。例如: 实现这样一个PSL的好方法是什么?显然,我也可以通过其他方法(计算输入和

我试图编写一个PSL断言,检查输入上的断言数量是否与输出上的断言数量匹配

例如:

在输入端,任何事情都可以在任何时候发生,输出端也可以在任何时候被断言。确切时间未知,也不重要。我要验证的是没有丢弃任何信息

我用下面的PSL语句来验证这一点。这是一个强有力的断言,意味着在测试结束时,所有断言都需要“完成”

例如,以下情况应为故障,但此PSL通过:

我注意到这个语句不强,因为不同的输入断言可以由相同的输出断言匹配。例如:


实现这样一个PSL的好方法是什么?显然,我也可以通过其他方法(计算输入和输出断言)来验证它,但是有没有一种方法可以用PSL来验证呢?是否有一个我可以使用SVA实现的等价检查?

我可能在这里遗漏了一些东西,但为什么不简单地实现计数器并在测试结束时比较它们呢

always @(posedge clk) bgein
  if (reset) begin
    counter_in <= 0;
    counter_out <= 0;
  end else begin
    if (input_) counter_in++;
    if (output_) counter_out++;
  end
end 
final begin
  assert (counter_in == counter_out);
end
始终@(posedge clk)bgein
如果(重置)开始

输入中的计数器_断言了两个周期(“2个事务”),但输出仅断言了1个周期。在这种情况下,这意味着事务被“删除”。但是是的,也许我等的时间不够长。我将添加一个解释,即断言是强大的,并且在模拟结束时,需要完成所有PSL断言。
always @(posedge clk) bgein
  if (reset) begin
    counter_in <= 0;
    counter_out <= 0;
  end else begin
    if (input_) counter_in++;
    if (output_) counter_out++;
  end
end 
final begin
  assert (counter_in == counter_out);
end