0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >技术信息 > 语言属性确保IC验证

语言属性确保IC验证

来源: eetimes
2023-02-03
类别:技术信息
eye 6
文章创建人 拍明芯城

  硬件验证语言(HVL)已经度过了关键的早期采用者阶段,现在正在积极进入主流。据估计,他们目前的渗透水平占整个Verilog和VHDL用户市场的10%,年增长率超过50%。HVL市场目前由商业解决方案主导:Verisity Design Inc.的Specman Elite和Synopsys Inc.的Vera。其他商业解决方案包括Forte Design Systems的Rave和Co-Design Automation Inc.的新来者Superlog.开源解决方案,包括Cadence Design Systems Inc.的TestBuilder和Juniper Networks Inc.的Jeda。 C++ TCL或Perl,并通过自定义PLI接口与VHDL或Verilog集成。

  如果您目前正在使用 Verilog 或 VHDL 来验证您的设计,您是否应该考虑在下一个项目中切换到验证语言,或者您是否可以使用现有工具完成相同的任务?随着80年代后期设计复杂性的增加,设计界被迫放弃其可靠的原理图捕获工具,拥抱逻辑综合革命,以保持有竞争力的生产力水平。功能复杂性的持续增加迫使核查界对核查方式进行类似的改变。此更改涉及的不仅仅是使用自检事务级测试平台。尽管这种方法是成功使用 HVL 的必要步骤,但仅实现当今一流的功能验证方法还不够。

  HVL 的一个基本要求是支持高级数据类型、面向对象、并发控制和设计可观测性。通常正是这个基本要求促使用户切换到C或C++来实现测试平台,因为Verilog和VHDL都没有提供所有这些功能。Verilog没有高级数据类型,VHDL没有设计的直接可见性。这两种语言都不是面向对象的,也没有动态并发控制机制。C++与PLI接口相结合,可以轻松满足这些要求。但这些基本要求只涉及编写定向、自检、事务级测试平台的机制。它们没有从根本上改变核查的实施方式。

  为了在下一代数百万门设计中具有竞争力,HVL必须提供三种互补工具,以实现新的、更高效的功能验证方法:可约束的随机生成、时间断言和功能覆盖。本文将讨论这些工具。

  


  


  随着功能复杂性的增加,必须验证的特征数量呈指数级增长。定向验证方法,其中每个功能都使用单独的手动编写的测试用例单独验证,很快就会崩溃。需要编写和调试的测试用例太多。在规定的上市时间窗口内编写所有这些测试用例所需的人数是难以管理的,而且成本太高 - 假设您设法找到它们。为了解决这个问题,约束随机生成已被证明是一种有效的工具,可以有效地生成行使设计特征所需的激励。

  HVL 提供的可约束随机生成比 Verilog 提供的简单随机数生成器和分发任务或 VHDL 中常用的随机生成包强大得多。为了高效且高效地创建大量不同且有趣的场景,HVL 可以轻松生成有效复杂数据结构的随机实例。它们还可以轻松添加约束以将随机生成定向到解决方案空间中特定有趣的区域,或者删除约束以放宽某些条件以注入错误。图 1 显示了一个使用 OpenVera 语言编写的编码示例,该示例使用动态约束控制随机生成 MAC 帧。

  断言语句

  时态断言是 HVL 的第二个要求。断言是对属性的陈述,该属性必须始终为真。典型的软件断言是检查指针的值是否为 NULL。使用 HDL 指定简单断言很容易。但是,在多个周期中具有多个替代方案的复杂、重叠的断言更难表达、调试,更重要的是,更难信任。

  HVL 包括一种强大的时态语言,可以使用简洁的语法描述复杂的协议关系。动态生成并行执行线程、检测差异和报告错误的日常功能都是内置的,使验证工程师能够专注于要验证的实际功能,而不是检测和报告机制。它们简洁的语法和形式语义使它们非常适合通过形式验证工具进行解释,然后这些工具可能会尝试在数学上证明或反驳该属性。

  尽管它们的力量很大,但时间断言往往未被充分利用。这可能是由于它们的语法特征的声明性和数学性质挑战了我们传统的程序思维模式。这就是为什么大多数时态断言示例(包括下面的示例)通常很简单,并给人的印象是,时间断言不值得为学习如何使用它们而进行投资。但是一旦理解,它们被证明是确保设计功能质量不可或缺的工具。

  在图 2 中,使用 SuperLog 语言,断言声明请求后必须始终在 100 个时钟周期内进行授权或重试,除非应用了重置,并且除非有请求,否则不得进行授权或重试。

  HVL的最后一个基本要素是功能覆盖。高级构造将帮助您更轻松地对数据及其转换进行建模。受约束的随机生成将有助于自动创建测试用例,临时断言将有助于检测功能错误。但是,您如何知道您已经完全验证了设计的功能呢?假设您的测试用例是随机生成的,您如何知道是否已应用所有相关测试用例?这就是功能覆盖的用武之地。

  


  补充保障

  功能和代码覆盖率是互补的。后者测量代码行,而前者测量数据模式、状态序列及其与既定目标的组合。代码覆盖率将检测遗漏错误(“测试平台是否忘记执行这行代码?”),而功能覆盖率检测委托错误(“设计是否在所有可能的数据值序列下工作?”)。代码覆盖率可以帮助检测现有代码中的错误,但功能覆盖率可以帮助查找未实现函数中的错误。

  功能覆盖率可以帮助回答以下问题:“我是否使用所有可能的寻址模式执行了所有可能的操作数?“我是否向所有端口发送了所有重要长度的以太网数据包?”“我写信给每个登记册了吗?”图 3 显示了一个编码示例,该示例使用 Specman Elite 中的 e 语言来测量生成的 MAC 帧长度的功能覆盖率。生成的报告的部分屏幕截图使用户能够分析在设计验证中还需要完成的工作。

  本文 的 目的 是 说明 为什么 使用 专门 设计 用于 解决 功能 验证 独特 挑战 的 语言 或 环境 比 以往 的 定向 测试 平台 能 提供 更高 的 生产力 和 整体 质量。这些挑战通过易于约束的随机生成、时间断言和功能覆盖来解决。但是,重要的是要注意,尽管这些功能体现在 HVL 中,但仅使用 HVL 并不一定意味着充分利用这些功能。必须区分学习语言和学习如何正确使用它。前者很容易。后者需要几个月的经验或适当的高级方法培训。

  —

  Janick Bergeron,Qualis Design Corp.(俄勒冈州奥斯威戈湖)的首席技术官,是验证协会(http://janick.bergeron.com/guild/)的主持人。他拥有超过 15 年的功能验证经验,拥有滑铁卢大学(安大略省滑铁卢)的 MASc 学位和俄勒冈大学(尤金)的 MBA 学位。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: IC验证

相关资讯