我如何编写SVA来检查sig是否为高触发器在trigger [*4] |-> signal
之前的4个周期内是高的
不够好,因为它没有检查信号在3个周期内没有变高。我应该使用$past
如何??
答案 0 :(得分:1)
这将检查sig
的上升沿,trigger
是否高达4 clk周期:
assert_name: assert property (
@(posedge clk) (
($rose(sig) -> $past(trigger,4))
)
);
答案 1 :(得分:-1)
没有什么可以阻止你编写一小段可综合的RTL来计算trigger
的周期数。{/ p>
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)
)
);