当前位置: 首页 > news >正文

认识Testbench仿真激励

一、认识Testbench

       Bench有平台之意,所以Testbench就是测试平台的意思。

      任何一个被测模块,都有输入和输出,此模块是否合格的判断依据,就是在满足输入要求的情况下,能否得到符合预期的输出。我们把被测模块称作UUT(Unit Under Test)。

       Vivado提供了Simulator(仿真)功能,用户可以通过编写仿真文件,根据UUT 顶层输入/输出接口的设计要求,产生测试激励信号输入到被测模块UUT,同时对被测模块的输出进行捕捉,监视顶层输出接口,观察输出是否符合预期。整个流程就像把一个模块放到一个测试平台上验证一样,只不过在这里平台是一个文件,Testbench文件,一种模拟实际环境输入激励和输出校验的“虚拟平台”。

      可见,Testbench文件的作用是:1、产生输入接口的测试激励;2、监视输出接口。

      Testbench文件也采用Verilog语言编写,不需要输入输出,所以Testbench对外无接口,不需要端口声明。

二、最基本的Testbench模板

       TestBench最基本的功能,是例化UUT模块,产生时钟信号clk和复位信号rst。稍微复杂一点,还可以监视UUT模块的输出。下面是一个最基本的Testbench模板。

//定义模块的仿真时的时间单位和时间精度
`timescale 1ns / 1psmodule vtf_pll_test();//不需要声明端口;// Inputs,被测模块UUT的输入设置为regreg sys_clk;reg rst_n;
// Outputs,被测模块UUT的输出设置为wirewire clk_out;// Instantiate the Unit Under Test (UUT),例化被测模块uutpll_test uut (.sys_clk(sys_clk), 		.rst_n(rst_n), .clk_out(clk_out));//起始语句,只执行一次,初始化变量,产生复位信号initial begin// Initialize Inputs,初始化uut的输入信号,复位sys_clk = 0;rst_n = 0;// Wait 100 ns for global reset to finish,等待全局复位完成,时间为100个时间单位,#100;rst_n = 1; #20000;// 等待20000个时间单位,$display("stop");//在命令行显示字符串$stop;//系统函数,结束仿真end//always后面没有@,代表永远循环执行;没有@的always语句不可综合,产生时钟信号//如果有@,后面一定要加时钟,代表时钟边沿来到的时候顺序执行begin end里面的语句。//没有begin...end限制,只执行其下面一个语句  always #10 sys_clk = ~ sys_clk;   //20ns一个周期,产生50MHz时钟源endmodule

http://www.lryc.cn/news/319187.html

相关文章:

  • Postman请求API接口测试步骤和说明
  • 这是二叉搜索树吗?
  • 5.82 BCC工具之tcpdrop.py解读
  • JavaScript 基础知识
  • 【判断是否为回文数】
  • 【C++】string进一步介绍
  • 思科设备下面主机访问公网经常时好时坏延迟大丢包不稳定
  • nuxtjs 如何通过ecosystem.config.js配置pm2?
  • 个人博客系列-后端项目-用户注册功能(7)
  • vue项目因内存溢出启动报错
  • UI 学习 二 可访问性 模式
  • Spring学习
  • 鸿蒙开发-UI-动画-组件内转场动画
  • Leet code 179 最大数
  • swagger踩坑之请求类不显示具体字段
  • 案例分析篇14:信息系统安全设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)
  • 前端之用HTML弄一个古诗词
  • Linux 安装使用 Docker
  • Doris部署学习(一)
  • QT下跨平台库实现及移植经验分享
  • 8:00面试,8:06就出来了,问的问题有点变态。。。
  • Rust 利用 Trait 实现多态性
  • Java毕业设计-基于springboot开发的“智慧食堂”设计与实现-毕业论文+答辩PPT(附源代码+演示视频)
  • 一瓶5.86万,听花酒什么来头?
  • 代码随想录 二叉树—填充每个节点的下一个右侧结点指针
  • 用 bsdtar 做 Linux 全系统迁移 - 最省空间、最灵活的Linux系统迁移方式,但需要那么一点点技巧
  • 【模拟string函数的实现】
  • 智能合约开发基础知识:最小信任机制、智能合约、EVM
  • 程序人生——Java泛型和反射的使用建议
  • JavaSE-----认识异常【详解】