0

我将如何编写 SVA 来检查 sig 是否变高,触发器是否在 4 个周期之前trigger [*4] |-> signal 为高还不够好,因为它没有检查信号在 3 个周期内没有变高。我应该$past 如何使用?

4

2 回答 2

1

这将检查 , 在4 个 clk 周期前的上升沿上是否sig为高:trigger

assert_name: assert property (
   @(posedge clk) (
     ($rose(sig) -> $past(trigger,4))
   )
);
于 2013-10-29T13:32:09.353 回答
-1

没有什么可以阻止您编写一小段可综合的 RTL,它计算了多少个周期trigger已经很高。

always @(posedge clk) begin
    if (trigger) begin
        triggerCount := triggerCount + 1;
    end else begin
        triggerCount := 0;
    end
end

assert_name: assert property (
   @(posedge clk) (
     ($rose(sig) -> triggerCount == 4)
   )
);
于 2013-10-31T13:46:49.707 回答