SV断言基于事件触发器

时间:2017-06-30 08:04:35

标签: system-verilog system-verilog-assertions

假设SV接口包含并发断言属性。 是否可以仅在触发事件时启用此断言?我尝试在接口文件中的任务中编写属性,但最终出现错误:"属性":语法错误,意外属性。

Interface intf;

   task e1();
        -> e1; 
   endtask

   wait(e1.triggered); // something like this, where property waits for trigger 
   property prop1;
     @(posedge clk) a ##1 b;
   endproperty

endinterface

谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您需要考虑最佳同步写入属性并在每个时钟周期进行评估。您的属性表示发生a b的每个时钟周期后的一个周期。我猜你所追求的是:

  

如果e1出现,则a应该为真(在下一个上升沿)   clk?)然后b应该在clk的上升沿之后为真   该

因此,这样做的一种方法是创建一个始终阻塞,在e1发生时产生一个时钟宽的脉冲,例如:

always begin
  @(e1);
  @(posedge clk) e = 1'b1;
  @(posedge clk) e = 1'b0;
end

property prop1;
 @(posedge clk) e |-> a ##1 b;
endproperty

或其中的一些变体。不过,我觉得我应该担心比赛。