ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Testbech的一些技巧

2022-07-15 12:31:23  阅读:185  来源: 互联网

标签:输出 Testbech 技巧 clk initial 一些 输入 monitor


  • 1.基本概念
  • Testbech是一种验证的手段,但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟平台”的产生。在这个平台上你可以对你的设计从软件层面上进行分析和校验,这个就是testbench的含义
  • 2.初步认识
  • Testbech像是一个激励的产生器。例如一个ram可能有几个input和output:clk(时钟输入),addr(地址输入),wen(写使能),data(数据输入),dataout(数据输出)。可以写一个文件,给clk,addr,wen,data送入预想的一些信号,然后观察输出,看看ram是否工作正常。这个文件就是一个testbench.在quartus、Modelsim等仿真软件中添加.v文件,可以提供debug及波形显示接口进行结果观察,这里的激励都是根据某个协议、某种通信方式预先设定好进行传输的。
  • 3.编写技巧
  • Testbech是一个没有输入输出端口的模块,与待测模块输入端相连接的变量定义为reg,与输出端口相连接的定义为wire,必须在initial块中初始化变量,用$stop$finish暂停或结束仿真,wait(z==1'b1)//等待变量值改变
  • 时钟产生的一种技巧:initial repeate(13) #5 clk = ~clk;控制只产生13个时钟周期
  • 同步数据:initial forever @(posedge clk) #3 x = $random;为了降低多个输入同时翻转的概率,对时序电路的输入一般采用素数作为时间间隔。
  • 同步显示:initial $monitor("%d is changed at %t",MUT.current,$time);一般在initial中调用,采用$monitor显示模块MUT内部current的值以及发生变化的时间,$monitor是一个后台运行任务函数,多个模块下,任意时间只能有一个$monitor起作用。
  • always @(z)$display(“Output changed at %t to %b”,$time,z);当z发生变化输出z值以及变化时间,自动换行
  • always @(z)$strobe(“Output changed at %t to %b”,$time,z);仿真结束后显示输出,查看非阻塞赋值变量的值

标签:输出,Testbech,技巧,clk,initial,一些,输入,monitor
来源: https://www.cnblogs.com/ICeryh/p/16480974.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有