Bri*_*ton 31 simulation tdd verilog fpga vhdl
我在网上看过,讨论/例子似乎是传统的软件开发.由于Verilog和VHDL(用于芯片设计,例如FPGA和ASIC)类似于软件开发C和C++,因此它似乎是有意义的.但是,它们之间存在一些差异,这些差异基本上是并行的,需要硬件才能进
你有什么经历,无论好坏?您可以在此特定应用程序上建议的任何链接?
编辑/澄清:2009年10月28日:我特别询问TDD.我熟悉测试台,包括自检台.我也知道SystemVerilog具有测试平台的一些特殊功能.
10/28/09:隐含的问题包括:1)为任何功能编写测试,从不使用波形进行模拟,2)首先编写测试/测试平台.
11/29/09:在实证研究中显示测试驱动开发提高了他们为(软件)TDD报告的质量 "四种产品的预发布缺陷密度,以每千行代码的缺陷来衡量,在40%到90%之间下降相对于未使用TDD的项目.团队管理层主动报告使用TDD的团队的初始开发时间增加了15-35%,尽管团队同意这可以通过降低维护成本来抵消.减少的错误降低了流片带来的风险,但却以适度的时间表影响为代价. 这也有一些数据.
11/29/09:我主要做控制和数据路径代码,而不是DSP代码.对于DSP,典型的解决方案涉及Matlab位精确仿真.
03/02/10:TDD的优势在于确保测试首先失败.我想这也可以用断言来完成.
Mar*_*son 28
我为FPGA编写代码,而不是ASICS ...但是TDD仍然是我的首选方法.我喜欢为我编写的所有功能代码进行全套测试,并且我尝试(并不总是成功)首先编写测试代码.在调试时,盯着波形总会在某个时刻发生,但这并不是验证代码(恕我直言)的好方法.
鉴于在真实硬件中执行适当测试的困难(刺激角落情况特别困难)以及VHDL编译需要几秒钟(相对于"硬件"编译需要花费几分钟(甚至几小时))的事实,我不喜欢看看任何人都可以以任何其他方式操作!
我还在编写RTL时将断言构建到RTL中以捕获我知道不应该发生的事情.显然这被认为有点"怪异",因为人们认为验证工程师会编写断言,而RTL设计人员则不会.但大多数情况下我是我自己的验证工程师,所以也许这就是原因!
我使用VUnit进行VHDL的测试驱动开发.
VUnit是一个Python库,它调用VHDL编译器和模拟器并读取模拟结果.它还提供了几个不错的VHDL库,使编写更好的测试平台变得更加容易,例如通信库,日志库和检查库.
因为它是从Python调用的,所以有很多种可能性.既可以生成测试数据,也可以在Python中检查测试的输出数据.我前几天看到这个例子,他们使用Octave(一个Matlab副本)来绘制测试结果.
VUnit似乎非常活跃,我有几次能够直接向开发人员提问并快速得到帮助.
缺点是调试编译错误更加困难,因为库中存在许多具有相同名称的函数/过程变体.此外,通过预处理代码在场景后面完成了一些操作,这意味着某些错误可能会出现在意外的地方.
我对硬件/芯片设计了解不多,但我对TDD很感兴趣,所以我至少可以和你讨论一下流程的适用性。
我认为最相关的问题是:您的测试能够多快为您提供设计反馈?与此相关:您添加新测试的速度有多快?您的工具对设计重构(改变结构而不改变行为)的支持程度如何?
TDD 过程在很大程度上取决于软件的“柔软性”——良好的自动化单元测试可以在几秒钟内(外部是几分钟)运行,并指导短暂的集中构建和重构。您的工具是否支持这种工作流程 - 在编写和运行测试之间快速循环以及在短迭代中构建被测系统?