sv语法iff关键字的使用

在 SystemVerilog中,iff 是 “if and only if”(当且仅当)的缩写 ,用于添加条件限制,常出现在以下场景:

事件控制

在时序逻辑的事件控制表达式里,像 @(posedge clk iff reset_n) ,posedge clk 是检测时钟信号 clk 的上升沿这个事件 ,iff reset_n 表示只有当复位信号 reset_n 满足(一般是为高电平,具体看设计中复位信号是高有效还是低有效 )时,才会对时钟上升沿事件做出响应。例如:

always @(posedge clk iff reset_n) begin
    // 只有时钟上升沿且复位信号有效时,执行这里的操作
    // 比如对寄存器赋值等操作
end

断言

disable iff:用于定义断言的禁用条件。在断言语句中,当 disable iff 后面的条件表达式为真时,对应的断言将被禁用,不会进行检查。例如:

property p;
    @(posedge clk) a |=> b;
    disable iff (reset_n);
endproperty
assert property (p);

上述代码定义了属性 p ,表示在时钟 clk 上升沿时,信号 a 出现后下一个时钟周期信号 b 应出现 ,但当 reset_n 为真时,这个断言不会被执行检查。

实例


如图代码表示,等待 vifapb.PCLK 信号的上升沿,并且只有在 vifapb.PRESETn 信号为真(通常为高电平)时才会触发事件

posted @ 2025-04-05 15:37  MKYC  阅读(383)  评论(0)    收藏  举报