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

我已经看了网络,讨论/示例似乎是为了传统的软件开发。由于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年他们报告(软件)TDD“四个产品的预发布缺陷密度,以每千行代码的缺陷来衡量,相对于没有发生缺陷的项目减少了40%和90%使用TDD。团队管理层主观上报告了使用TDD的团队的初始开发时间增加了15-35%,尽管团队认为这被减少的维护成本抵消了。减少的错误减少了磁带出现的风险,以中度计划影响为代价。 This也有一些数据。

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

03/02/10:TDD的优点是你确保测试首先失败。我想这也可以做断言。

我为FPGA编写代码,而不是ASICS …但TDD是我仍然是我的首选方法。我喜欢对我写的所有功能代码进行全套测试,我尝试(不总是成功)首先编写测试代码。盯着波形总是发生在你调试时的某个时刻,但它不是一个好的验证你的代码(IMHO)的方法

考虑到在真实的硬件中执行正确的测试的困难(刺激的角落情况是特别困难的)和事实,VHDL编译需要几秒钟(vs一个“到硬件”编译,需要很多分钟(甚至小时)),我don看不到任何人可以操作任何其他方式!

我也在RTL中构建断言,因为我写它来捕捉我知道不应该发生的事情。显然,这被认为是有点“奇怪”,因为有一种感觉,验证工程师写断言和RTL设计师没有。但大多是我自己的验证工程师,所以也许这就是为什么!

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...