0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

testbench是什么? testbench测试的机制是什么?

冬至子 来源:玩儿转FPGA 作者:东哥 2023-06-28 16:44 次阅读

01

testbench是什么

废话不多说直接上干货,testbench就是对写的FPGA文件进行测试的文件,可以是verilog也可以是VHDL。

verilog和VHDL的国际标准里面有很多不能被综合实现的语句,比如initial,forever,repeat,延时语句#1等等,这些语句就是用来测试的时候使用的。运行环境一般是ise或者vivado自带的仿真工具,或者如modelsim一样的第三方仿真工具。

02

testbench测试的机制是什么

任何一个设计好的模块(比如第一讲的PWM产生模块),都有输入和输出,此模块是否满足要求就是看给定满足要求的输入,是否能够得到满足要求的输出。所以testbench的测试机制就是 :用各种verilog或者VHDL语法,产生满足条件的激励信号(也就是对被模块的输入),同时对模块的输出进行捕捉,测试输出是否满足要求 。如下图,产生激励输出验证模块两个模块都属于testbench,最好的输出验证模块最终只需要给一个pass和fail的答案出来就可以了。不管是用一个信号表示pass和fail还是用$display()函数打印,最终简单明了的给出过或者不过的信息就好了。请大家写仿真文件的时候尽量做到这点。

图片

03

testbench运行顺序之谜

首先,跟大家解释一点,所有testbench本质上都是串行执行,因为在CPU环境下,没有可靠并行执行的能力。所有并行的语句,比如两个always模块,fork join语句块,都是软件模拟并行执行的。所以老一点的编译器,信号定义要在initial语句前面,initial的信号要先有初始值后面的语句才能从给定初值开始执行。所以大家写testbench的时候,要注意,最好先定义信号,再写initial语句,后面的语句交换顺序不影响,软件可以识别并按照IEEE标准的顺序去执行。

如果一个模块里面想用并行执行语句用fork join语句,顺序执行用begin end语句。initial语句可以写多个,都是并行执行的,当两个信号在initial冲突的时候,会先执行前面的initial的值。

04

常用testbench语句总结

时钟产生——always begin clk = 0; #1 clk = 1; #1; end 。注意这里的always后面没有@!没有@的时候always代表永远循环执行begin end之间的语句,如果有@,后面一定要加时钟,代表时钟边沿来到的时候顺序执行begin end里面的语句。没有@的always语句不可综合。

时间轴设置——'timescale 仿真时间单位/时间精度; 比如`timescale 1ns / 1ps;代表仿真的时间轴单位是1ns,仿真工具仿真的最大精度只到1ps内的逻辑变化。

延时语句——#n; 代表延时n个时间轴单位。比如之前定义了`timescale 1ns / 1ps;如果后面写 #3;就代表延时3ns而不是延时3ps。

初始化——initial begin a=0; #100; a=1; end。testbench在运行起来之后,第一个进入初始化语句,并且只执行一次停在最后一句,然后才是后面的语句。由于begin end里面的语句是串行执行的,所以这句话代表a低电平100ns后永远为高。复位信号常常这样产生。

系统函数——**stop;代表运行到这一句停止仿真,**dispaly("pass");代表在命令行显示pass这串字符。

等待语句——wait(条件表达式) 语句/语句块; 语句块可以是串行块(begin…end)或并行块(fork…join)。当逻辑表达式为“真”时,语句块立即得到执行;否则,暂停进程并等待,直到逻辑表达式变为“真”,再开始执行后面的语句。

关于verilog测试激励的语法请打开,里面有所有的仿真激励:

打开菜鸟教程——资料下载——选择“verilog最经典中文教程”

另外提一句:学verilog要知道verilog语句的执行顺序和机制,生成的对应时序,哪些语句可综合哪些不可综合。这是最基础的要求。

05

其实看了之前的链接大部分大家应该都能看明白了,现在只拣之前没讲的代码讲。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA设计
    +关注

    关注

    9

    文章

    428

    浏览量

    26480
  • 交换机
    +关注

    关注

    21

    文章

    2621

    浏览量

    99219
  • VHDL语言
    +关注

    关注

    1

    文章

    113

    浏览量

    17986
  • PWM模块
    +关注

    关注

    0

    文章

    13

    浏览量

    9425
收藏 人收藏

    评论

    相关推荐

    怎样在Verilog写的testbench测试VHDL模块??

    怎样在Verilog写的testbench测试VHDL模块??一个vhdl的工程模块,怎么用verilog写testbench 来调用模块仿真!!真心求帮助
    发表于 08-01 22:54

    testbench 设计教程

    testbench 设计教程
    发表于 09-12 12:06

    分享一些testbench的文档教你如何写好testbench

    这个论坛感觉说testbench的略少,分享一些testbench的文档。。。。。
    发表于 09-08 18:03

    testbench设置的问题

    本帖最后由 平漂流 于 2017-5-21 11:09 编辑 如图,看Verilog仿真视频教程里面,在testbench设置时候,直接复制“blocking_vlg_tst”到top
    发表于 05-21 11:04

    LFSR testbench V1.2

    LFSR testbench The LFSR testbench can help you understand the LFSR basics: 1. Change
    发表于 05-14 11:18 50次下载

    Writing Testbench

    Writing Testbench:The Quebec Bridge Company was formed in 1887 and for the nextthirteen years, very
    发表于 07-10 17:30 0次下载
    Writing <b class='flag-5'>Testbench</b>

    编写高效率的testbench

    编写高效率的testbench,学习编写测试文件的小伙伴们。
    发表于 05-11 16:40 16次下载

    testbench_book

    verilog Testbench
    发表于 12-13 22:20 3次下载

    testbench怎么写_testbench经典教程VHDL

     testbench是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟
    发表于 12-01 17:22 5.6w次阅读
    <b class='flag-5'>testbench</b>怎么写_<b class='flag-5'>testbench</b>经典教程VHDL

    简单的Testbench设计

    testbench是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟
    的头像 发表于 03-08 14:35 2447次阅读

    Verilog testbench总结

    对于testbench而言,端口应当和被测试的module一一对应。端口分为input,output和inout类型产生激励信号的时候,input对应的端口应当申明为reg, output对应的端口申明为wire,inout端口比较特殊,下面专门讲解。
    发表于 07-07 15:23 4632次阅读

    典型的UVM Testbench架构

    UVM类库提供了通用的代码功能,如component hierarchy、transaction level model(TLM),configuration database等等,使用户能够创建任何类型的Testbench架构。
    的头像 发表于 05-22 10:14 2038次阅读
    典型的UVM <b class='flag-5'>Testbench</b>架构

    Verilog Testbench怎么写 Verilog Testbench文件的编写要点

    熟练了一点、但是整体编写下来比较零碎不成体系,所以在这里简要记录一下一般情况下、针对小型的verilog模块进行测试时所需要使用到的testbench文件的编写要点。
    的头像 发表于 08-01 12:44 3515次阅读
    Verilog <b class='flag-5'>Testbench</b>怎么写 Verilog <b class='flag-5'>Testbench</b>文件的编写要点

    Testbench的基本组成和设计规则

      对于小型设计来说,最好的测试方式便是使用TestBench和HDL仿真器来验证其正确性。一般TestBench需要包含这些部分:实例化待测试设计、使用
    的头像 发表于 09-01 09:57 1148次阅读
    <b class='flag-5'>Testbench</b>的基本组成和设计规则

    编写高效Testbench的指南和示例

    Testbench是验证HDL设计的主要手段,本文提供了布局和构建高效Testbench的指南以及示例。另外,本文还提供了一种示例,可以为任何设计开发自检Testbench
    的头像 发表于 10-29 16:14 124次阅读
    编写高效<b class='flag-5'>Testbench</b>的指南和示例