前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【验证那些事儿】验证的重要性||如何减少人为因素

【验证那些事儿】验证的重要性||如何减少人为因素

作者头像
空白的贝塔
发布2021-09-28 15:03:17
7710
发布2021-09-28 15:03:17
举报
文章被收录于专栏:摸鱼范式

根据《Writing Testbenches》整理

验证的重要性

很多讲verilog的书把重点放在怎么写可综合的RTL代码,编写验证功能性的测试平台这一方面却讲的比较少,会导致很多人认为设计比验证更加重要,但是实际上这和现实并不相符。

  • 验证的工作量占据了项目的70%

现在的芯片规模越来越大,所使用的ip越来越多,验证的复杂度也是急剧提高的,理想状态下,验证人员数量应该是设计的两倍,但是现实很骨感,很多公司连一比一都做不到。

  • 验证是必不可少的

很多时候项目的进度并不会完全按照标准流程来,甚至设计完成了才开始考虑验证的事情。设计进度一旦受到影响,就会产生很多问题。所以,验证技术的目标就是要让设计与验证能够并行化进行,并且在更高层次去实现。

  • 并行化可以缩短验证时间
  • 抽象可以缩短验证所需时间
  • 抽象可以减少对底层细节的控制

验证工作可以在更加高的层次进行,例如事务级、总线周期级甚至更高级别,而非在最底层的0,1

  • 自动化可以缩短所需时间
  • 随机化是一个非常重要的自动化工具

恢复模型

这个概念是用来精确解释验证的对象是什么的

  • 了解你到底在验证什么东西

这是最重要的问题,搞清楚你的任务

  • 所谓验证,就是要用各种方法确认spec和设计的输出一致性

从spec到RTL,RTL的迭代都是一种变换,而验证就是要证明变换的正确性

人为因素

所有的工程师都需要对spec有自己的理解

  • 根据自己的理解而不是设计规范去验证设计文件

如果按照这种方式去验证,就会出现下面的恢复路径。最后验证的目标变成了设计是否符合设计人员对于spec的理解,没有办法检查出设计人员对于spec的错误理解。

只要有人介入,就可能导致不确定性和不可重复性,我们需要通过自动化、放差错技术或者冗余技术去减少错误发生的可能性

自动化

自动化从根源上消除了一部分人为因素,但是自动化并不是普适的,例如没有明确定义、要求人智能创造的过程。

防差错技术

将人的参与,简化为简单、安全的步骤,人的介入只是为了获取预期输所需要的特定序列或者步骤。这在全面质量管理中被称为“防差错技术”(Poka-Yoke)。

冗余

  • 让两个人检查对方的工作

这一种提高可靠性最简单的方法,但是也是代价最高的方法。冗余会要求对于每次变换都需要一个独立的人去验证,尽管费时费力,但是,在芯片设计中,没有什么是比缺陷更加严重的代价。

  • 应该由不同的人负责验证

下图是使用了冗余方法来避免模棱两可的spec导致的错误时的恢复路径。芯片设计中所谓的变换经是根据spec产生RTL,所以应该由另一个人去负责验证。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 摸鱼范式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 验证的重要性
  • 恢复模型
  • 人为因素
    • 自动化
      • 防差错技术
        • 冗余
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档