首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Verilog或VHDL进行逻辑(芯片)设计的测试驱动开发(TDD)经验

使用Verilog或VHDL进行逻辑(芯片)设计的测试驱动开发(TDD)经验
EN

Stack Overflow用户
提问于 2009-10-28 04:47:52
回答 8查看 5.4K关注 0票数 31

我在网上看过,这些讨论/例子似乎是针对传统软件开发的。由于Verilog和VHDL语言(用于芯片设计,例如FPGA和ASIC)类似于软件开发C和C++,这似乎是有意义的。然而,它们有一些不同之处,它们基本上是并行的,需要硬件来完全测试。

你有什么好的和不好的经历?在这个特定的应用程序上,你有什么建议吗?

编辑/澄清: 10/28/09:我特别询问TDD。我熟悉做测试台,包括自我检查。我也知道SystemVerilog有一些特别的功能用于测试台。

10/28/09:隐含的问题包括: 1)为任何功能编写测试,从不使用波形进行模拟;2)首先编写测试/测试台。

11/29/09:在Empirical Studies Show Test Driven Development Improves Quality中,他们报告了(软件)测试开发:“与没有使用测试开发的项目相比,四个产品的发布前缺陷密度,以每千行代码的缺陷来衡量,减少了40%到90%。团队管理层主观地报告使用测试开发的团队的初始开发时间增加了15%-35%,尽管团队一致认为这被降低的维护成本所抵消。”减少的错误减少了磁带输出的风险,但代价是对计划的影响适中。This也有一些数据。

11/29/09:我主要做的是控制和数据路径代码,不是DSP代码。对于DSP,典型的解决方案包括Matlab位精确模拟。

3/02/10: TDD的好处是确保测试首先失败。我想这也可以通过断言来实现。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-10-30 20:59:47

我为FPGA编写代码,而不是ASICS。但TDD仍然是我的首选方法。我喜欢对我编写的所有功能代码进行全套测试,并且我尝试(并不总是成功地)首先编写测试代码。在调试时,总是会出现盯着波形的情况,但这不是验证代码的好方法(IMHO)。

考虑到在真实硬件中执行正确测试的难度(模拟角落情况特别困难),以及VHDL编译只需要几秒钟(而“转硬件”编译需要几分钟(甚至几个小时))的事实,我看不出任何人还能以其他方式操作!

在编写RTL时,我还将断言构建到RTL中,以捕获我知道不应该发生的事情。显然,这被认为有点“奇怪”,因为人们认为验证工程师编写断言,而RTL设计者不这样做。但大多数情况下,我是自己的验证工程师,所以这可能就是原因!

票数 29
EN

Stack Overflow用户

发布于 2018-03-12 04:16:10

我使用进行VHDL语言的测试驱动开发。

VUnit是一个Python库,它调用VHDL语言编译器和模拟器,并读取模拟结果。它还提供了几个很好的VHDL库,使得编写更好的测试台变得更加容易,例如communication librarylogging librarychecking library

因为它是从Python中调用的,所以有很多可能性。可以生成测试数据,也可以在Python中检查测试的输出数据。前几天我看到了一个他们使用Octave - a Matlab copy - for plotting test results的例子。

VUnit看起来非常活跃,我有几次能够直接向开发人员提问,并很快获得了帮助。

一个缺点是很难调试编译错误,因为库中有太多同名的函数/过程变体。此外,一些事情是通过预处理代码在后台完成的,这意味着一些错误可能会出现在意想不到的地方。

票数 13
EN

Stack Overflow用户

发布于 2009-10-28 09:47:03

IEEE Verilog标准的SystemVerilog扩展包括各种结构,这些结构有助于创建全面的测试套件来验证复杂的数字逻辑设计。SystemVerilog是一种硬件验证语言,用于通过仿真(而不是仿真或使用FPGA)来验证专用芯片设计。

与传统的硬件设计语言(Verilog)相比,它的主要优点是:

函数和断言覆盖数据的受限randomization

  • assertions

  • automatic集合

关键是能够访问支持这一最新(2005)标准的模拟软件。并非所有的模拟器都完全支持更高级的功能。

除了IEEE标准之外,VMM Central (http://www.vmmcentral.com)还提供了一个开放源码的SystemVerilog验证组件库。它为创建测试环境提供了一个合理的框架。

SystemVerilog不是唯一的超文本标记语言,VMM也不是唯一的库。但是,如果您有权使用适当的工具,我建议您两者都使用。我发现这是一种在成为硅片之前发现设计错误的有效方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1633559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档