当前位置: 首页 > news >正文

断言

搬运:SystemVerilog断言与bind实践 - 知乎

在集成电路前端工作中,设计和验证都会用到断言(SVA), 设计用断言初步保证状态机等按设想跳转, 而验证希望用断言覆盖信号级的功能点。在使用断言时,即使你是设计人员, 也不太推荐将断言写在RTL代码的同一文件里,因为按照理解,RTL是可综合的,是芯片上的实际器件,而SVA不是;另外,rtl代码可能被某些EDA tool使用,但是该tool未必支持SVA。

废话少说,看如下一个FIFO,如何给它用bind添加断言?

就用这个写法:

而SVA写在一个module里:

这里注意点是:1.SVA module里的端口包括DUT的全部接口,以及你想检查的内部信号,注意方向上接口取反,内部信号均为input;

2.bind 写法是bind dut_module sva_module inst_name(.), 之所以SVA module端口添加了全部DUT接口(你可能并不需要检测全部接口),就是因为可以.*通配,非常方便;

bind一个SVA module,可以连接到如下两种情况:

1)某个module的全部实例;

这样所有的fifo1的实例全部会做SVA check。

另外,这个bind语句写在哪里比较合适呢?写在top_tb里就好,和DUT是平级的,层次比较清楚。

2)某个module的单个实例;

不推荐这么干!!!原因有二:这个写法在新VCS里是认的,但是老版VCS可能不认,所以自找麻烦;此外一个module的运行规则应该是一致的,如果你认为有不一致的地方,找找自身问题,设计问题或者验证决策问题,不该用断言来验证了。

再来看下个问题,如何bind断言至有参数的module?

要点就是,SVA module也同时参数化就行!我们之前说过,SVA module的接口和DUT是镜像的吧?那么参数也复制过来就行,如下面这个assert module,有一个参数SIZE,用法和DUT module一样就行。

这里还有一个技巧,就是断言的名字要长,有足够的信息量,在断言中不用$display打印信息,因为检查断言是否有检测到错本身就会在log打印了,之后需求去波形check,如果名字信息量够,往往无需再看断言怎么写的是什么功能,如下图大家看看,一目了然:

SVA concurrent与immediate的选择?

并发断言在周期结束时,每个周期只对所有重要信号采样一次,就在信号在下一个时钟边缘发生变化之前,就像实际的硬件寄存器采样一样。对于简单的SVA使用,我们通常不关心循环期间的组合沉降或故障,我们只关心循环结束时的最终值。下图是immediate断言:

即时断言在调用时按需采样信号。即时断言对于测试复位、预设和锁存启用等异步控制信号非常有用。如果任何异步控制信号出现故障,它们确实会立即引起变化,可能需要立即评估。

一般RTL里95%以上的信号可以在一个周期结束时进行采样,并进行适当评估,而可能只有约5%的异步

需要立即对控制信号进行采样和评估。这最能描述我自己的用法并发断言和即时断言的比率。

请记住,立即断言使用关键字assert,他们不会等到采样周期结束。

一些有用的宏:

这是并发断言的两个宏,并发断言以clk为依据,所以用宏来避免重复劳动。iff(!rst_n)代表复位时不用检测。

上面的宏使用和不使用的对比如下:

最后总结下本文的重点:

1.使用bind file

2.不要把sva写入rtl同文件

3.sva的label要长,比如ERR_AVALID_TOO_LONG,不要在断言中加display和uvm_info等

4.大多数断言都使用并发断言( 

@posedge

 clk),不要立即断言(除非验证异步复位等情况)

 

5.使用宏来避免重复劳动

 

http://www.hskmm.com/?act=detail&tid=31721

相关文章:

  • 时延估计算法ETDGE的解析
  • 2025年10月最新房产信息公布:西安买房新楼盘口碑推荐榜单Top10精选
  • RTX低成本迁移方案,支持国产环境
  • 2025 年国内小程序开发优质机构最新推荐排行榜:覆盖多领域需求,助力政企精准选型
  • 基于DSP28335的SVPWM矢量控制实现
  • 2025年10月权威信息公布:西安买房新楼盘口碑推荐榜单Top10~地建嘉信臻境领衔
  • Python 受保护成员和私有成员
  • 2025 年钢制拖链源头厂家最新推荐排行榜:聚焦优质品牌助力企业精准选购,破解市场选型难题
  • 2025 年北京律师事务所推荐:北京汇都律师事务所 —— 综合实力强、业务覆盖广且服务高效的专业法律机构
  • 精确高效的API风险监测产品,筑牢运营商数据安全防线
  • 《从数组到动态顺序表:数据结构与算法如何优化内存管理?》 - 教程
  • 2025 年墙体广告公司最新推荐排行榜:聚焦下沉市场优质服务,助力品牌精准触达目标受众大型/ 户外/专业墙体广告公司推荐
  • 创新:在张力中寻找新的平衡
  • 全景式 精准识别 动态防护的金融数据安全管理方案 ——全知科技助力光大证券构建智能化、可视化、合规可控的数据安全体系
  • AI降噪、实时响应、闭环治理的政务数据安全管理方案 ——全知科技与教育部学位与研究生教育发展中心合作案例
  • 2025 单招综评培训机构推荐榜:济南易升教育 5 星领跑,适配基础/冲刺/面试全流程备考
  • 多维协同 一键化部署 合规可控的运营商数据安全管理方案
  • 学习随笔一:低代码开发与 SQL 核心知识
  • 实验1 现代C++基础编程
  • firewalld和iptables的区别与应用
  • 视觉定位引导劈刀修磨系统赋能芯片封装
  • @wraps(func)
  • 递归函数的精确时间统计
  • [HZOI]CSP-S模拟32
  • 《植物大战僵尸融合版 V3.0(神秘版本)》详细图文教程:安装、存档继承与玩法解析
  • 在 Qt Creator 中使用 Promote 功能让 QTabWidget 显示自定义页面
  • AI赋能标准化流程:智能汽车软件CI/CT最佳实践新范式
  • The 2023 ICPC Asia Shenyang Regional Contest K. Maximum Rating
  • 用积木思维搞定TCP/IP——LuatOS快速上手指南
  • 2025 年江门办公室装修公司最新推荐排行榜:助力企业避开装修陷阱,精选优质服务品牌