【发布时间】:2021-09-02 18:23:40
【问题描述】:
是否有一种简单的方法可以检查给定信号是否保持高电平几微秒。据我了解,在 SVA 中,我们只能检查信号是否在某个时间戳为高。
【问题讨论】:
-
SVA 可以根据时钟周期检查宽度。
标签: system-verilog verification
是否有一种简单的方法可以检查给定信号是否保持高电平几微秒。据我了解,在 SVA 中,我们只能检查信号是否在某个时间戳为高。
【问题讨论】:
标签: system-verilog verification
如果这个信号是模块端口,可以使用$width定时检查。
module desgin(input wire signal);
specify
$width(posedge signal, 2us);
endspecify
...
endmodule
如果这是一个任意信号,您可以使用bind 语句将此模块插入到您设计的任何位置
module widthcheck #(real limit) (input signal);
specify
$width(posedge signal, limit);
endspecify
endmodule
module testbench;
bind target_instance widthcheck#(2us) (target_signal);
...
endmodule
当然,总是有蛮力的方法
real rise, fall, width;
always begin
wait(signal) rise = $realtime;
wait(!signal) fall = $realtime;
width = fall - rise;
if (width<limit)
$error("signal width(%t) less than limit(%t)", width, limit);
end
【讨论】: