仿真和验证

验证是保证设计在功能上正确的一个过程。通常,设计和验证都有一个起点和一个终点。

设计的过程实际是从一种形式到另一种形式的转换,比如从设计规格(specification)到RTL代码,从RTL代码到门级网表,,从网表到版图等。验证则是要保证每一步的设计转换过程准确无误。

下图所示说明了从设计规格到门级网表的转换和验证过程。其中,从设计规格到RTL代码是由设计工程师手动完成的,而从RTL代码到门级网表则是由逻辑综合工具自动完成的。

f280d770548147169c350636184bd563.jpg相对应的是,要验证从设计规格到RTL代码的过程,就需要进行功能验证。功能验证一般是指验证RTL代码是否符合原始的设计需求和规格。

仿真的一般性含义是使用EDA工具,通过对实际情况的模拟,验证设计的正确性。由此可见,仿真的重点在于使用EDA软件工具模拟设计的实际工作情况。在FPGA/CPLD设计领域,最常用的仿真工具是modelsim。

在传统的ASIC领域,验证是一件费时耗力的一个环节。而对于FPGA/CPLD等可编程逻辑器件来说,验证的问题就相对简单一些。可以使用modelsim或active-hdl等HDL仿真工具对设计进行功能上的仿真,也可以将一些仿真硬件与仿真工具相结合,通过软硬件联合仿真,加快仿真速度。我们还可以在硬件上直接使用逻辑分析仪,示波器等测量手段直接观察设计的工作情况。

什么是testbench

testbench,顾名思义就是测试平台的意思。简单来说,在仿真的时候testbench用来产生测试激励给待验证设计(DUV),或者称为待测设计(DUT),同时检查DUV的输出是否与预期的一致,达到验证设计功能的目的。

59f68137155c428480baae0050373986.jpg

仿真因EDA工具和设计复杂度的不同而略有不同,对于简单的设计,特别是一些小规模的CPLD设计来说,一般可以直接使用开发工具内嵌的仿真波形工具绘制激励,然后进行功能仿真。另一种较为常用的方式是,使用HDL(硬件描述语言)编制testbench(仿真文件),通过波形或自动比较工具,分析设计的正确性,并分析testbench自身的覆盖率和正确性。

基于testbench的仿真流程如图所示

646d989519aa4f25b650675227718610.jpg

从图中可以清晰地看出testbench的主要功能

*为DUT(design under test 待测试设计)提供激励

*正确实例化DUT

*将仿真数据显示在终端或者存为文件,也可以显示在波形窗口中以供分析检查

*复杂设计可以使用EDA工具,或者通过用户接口自动比较仿真结果与理想值,实现结果的自动检查

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生如象棋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值