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 信号为真(通常为高电平)时才会触发事件

浙公网安备 33010602011771号