数字集成电路设计(五、仿真验证与 Testbench 编写)(一)


引言

  • 前面的第三章,第四章要求非常准确,非常严格地按照想法做,但是到了测试,怎么写都可以
  • 从硬件描述语言的作用,可以分为:可综合设计和测试仿真。对于设计岗位,要对前面的知识非常了解,同时对仿真测试也要很了解。对于验证岗位,要对测试仿真非常了解,尽可能用能想到的语法去做
  • 第三章第四章讲的实际上是针对于电路的具体设计,最后是想的怎么把管子,触发器,与非门等连接到一起,操纵的是电路。而在测试和仿真,它的性质和C语言是完全一样的,操纵的是计算机的CPU

1. Verilog HDL 电路仿真和验证概述

  • 验证在 Verilog HDL 设计的整个流程中分为4个阶段:
    (1)功能验证
    (2)综合后验证
    (3)时序验证
    (4)板级验证
  • 其中和Verilog有关系的是前三种,最后一个就是电路板级的验证了
  • 这个课程只讲了功能验证,综合后验证和时序验证就是对EDA工具的使用(后面会有介绍)
  • !!功能验证是没有经过综合,在计算机层面上的验证,是最基本的验证,换句话来讲,就是对语法的检验过程
  • 综合后验证就是把所有原件连接在一起,它是实实在在的电路,是对电路的连接关系,基本逻辑的考察
  • 时序验证就是在综合后电路加上一个延迟文件(.sdf等),贴近于实际电路的情况,把实际中的物理器件变成数学模型放在这里,所以,基本上时序通过,板级就不会有问题,除非对信号的调理没调理到合适的位置,对信号的容差没有考虑
  • 目前常用的功能验证有三种:黑盒法、白盒法和灰盒法

2. Verilog HDL测试程序设计基础

2.1 Testbench及其结构

  • 通常采用测试平台(Testbench)方式进行仿真和验证。在仿真时,Testbench 用来产生测试激励给待验证设计(Design Under Verification,DUV),或者称为待测试设计(Design Under Test,DUT),同时检查DUV/DUT 的输出是否与预期的一致,从而达到验证设计功能的目的
    在这里插入图片描述

  • 在数字信号的设计中,有一些输入信号,一些输出信号,用示波器或LED或其他东西看一下输出电位。这时候就有三个东西:信号源、被测电路、测试仪器(对输出结果的观察)在这里插入图片描述

  • 对于硬件描述语言,一定还是一个模块,然后对输入输出变量和参数进行定义

  • 三个部分:调用待测试的模块,定义测试向量(激励向量产生,显示输出结果),显示格式定义(可以不写,因为定义不是很准确)

  • !!其实我们就是在写如何产生激励向量

  • 例:T触发器测试程序
    在这里插入图片描述在这里插入图片描述

  • 输出打印可以不这么写,后面会讲

  • 产生的结果
    在这里插入图片描述

  • 仿真流程:
    在这里插入图片描述

  • 从图中可以清晰地看出Testbench 的主要功能:

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
《模拟集成电路设计仿真》以单级放大器、运算放大器及模数转换器为重点,介绍模拟集成电路的基本概念、工作原理和分析方法,特别是全面系统地介绍了模拟集成电路仿真技术,是模拟集成电路分析、设计仿真的入门读物。 《模拟集成电路设计仿真》共分10章和7个附录。第1章介绍模拟集成电路的发展与设计方法;第2、3章介绍单级放大器、电流镜和差分放大器等基本模拟电路的原理;第4章是电路噪声分析计算与仿真;第5章介绍运算放大器的工作原理及其分析和仿真方法;第6、7章以双端输入、单端输出运算放大器以及全差分运算放大器为例,介绍运算放大器的设计仿真方法;第8、9章以带隙电压基准和电流基准电路为例,介绍参考电压源和电流源的设计方法,其中对温度补偿技术作了详细分析;第10章为模数转换电路(ADc),重点介绍了ADc的概念与工作原理以及采用Verilog—A语言进行系统设计的方法。《模拟集成电路设计仿真》的附录全面介绍了模拟集成电路设计的软件环境以及仿真技术。 《模拟集成电路设计仿真》可作为高等院校集成电路设计相关专业工程硕士的教材,也可以作为相关专业本科生和研究生的教材,并可供模拟集成电路工程师参考。 点击链接进入旧版: 国家集成电路工程领域工程硕士系列教材•模拟集成电路设计仿真
testbench(测试台框架)是用于验证设计功能的一种方式,在FPGA或ASIC设计中非常常见。testbench文件的编写方法如下: 1. 定义module:首先,在testbench文件中定义一个module,该module将作为顶层实例来实例化要测试的设计模块。 2. 为输入信号添加时钟:为设计模块的输入信号添加时钟信号。这个时钟信号可以是固定的时钟频率,也可以是根据需要来控制的时钟。 3. 为输入信号添加数据:为设计模块的输入信号添加数据,以便测试设计的各种情况。通常需要为输入信号定义一组数据,以覆盖不同的测试用例。 4. 实例化设计模块:在module定义中实例化设计模块,并将输入信号连接到testbench模块的输出信号。 5. 配置仿真环境:设置仿真环境的一些参数,如仿真时间,仿真精度等。 6. 模拟输入:使用initial块或always块在仿真过程中为输入信号提供数据。可以使用任务或函数来生成数据。 7. 模拟输出:使用initial块或always块来检查设计模块的输出信号。可以使用assert语句来验证输出是否符合预期。 8. 运行仿真:在仿真环境中运行仿真,检查设计模块的输出是否与预期一致。 9. 分析仿真结果:根据仿真结果来评估设计的功能和性能。 10. 优化设计:根据仿真结果,进行必要的调整和改进,以优化设计的性能和功能。 以上是testbench仿真文件编写的一般方法。根据具体的设计需求和测试要求,可以进行相应的调整和改进。编写良好的testbench可以确保设计的正确性和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

普通的晓学生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值