Dinglei_hello · 2021年11月12日

SVA断言面试题的4种写法:要求信号en_1为高电平的时候,断言这期间数据都保持不变。

SVA断言是一个对设计属性的描述,就和日常生活中的逻辑描述一样,条条大路通罗马,不拘细节,力求简洁易懂。

要求信号en_1为高电平的时候,数据都保持不变。容易想到的写法有很多:

第一种

always @(posedge clk1) begin    
  if (~en_1)        
    latch_data <= dat_clk1;    
  else        
    assert (dat_clk1==latch_data);
  end   

这类似于一句话能说清楚的事情,长篇大论。不能一句话触及问题的本质。

第二种

@(posedge clk)  disable iff(reset)  
  en_1 && $stable(en_1) |-> $stable(data);


@(posedge clk)  
  en_1 && $past(en_1) |-> $stable(data);

最后还有一种比较巧妙的写法,如果我想要证明 A -> B ,我们可以利用逆否命题证明 ~B ->~A。

如果我们想要断言“信号en_1为高电平的时候,这期间数据都保持不变”,可以转换成“如果数据发生了变化,那么上一拍en_1一定为低电平”

@(posedge clk)  disable iff(reset)  
  !$stable(data) |-> !$past(en_1);
作者:验证哥布林
原文链接:https://mp.weixin.qq.com/s/2LXonDLERRihDaOh5k1lrg
微信公众号:
 title=

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏
推荐阅读
关注数
19646
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息