EDA之testbench仿真

按照时延特性可以分成时序仿真和功能仿真

verilog描述层级包括系统级行为级,rtl级,门级,管子级

testbench四大功能作用:

1例化待验证模块2提供激励3收集结果和预期做对比4自动判断模块内部结构是否正确

testbench可以使用不可综合的verilog语句描述

开头设置时间精度:

`timescale 10ns/1ns 前面是一个单元的时间 后面是精度

激励信号用reg类型

产生时钟信号的语句:always #20 clk1=~clk1

用initial语句来依次赋值 一次性过程语句 initial begin *********end initial begin ******end******

最后例化 括号里面写当前的 不加括号的是外部的

仿真精度:单位时间gs内仿真画面的更新次数。

仿真精度的概念有狭义与广义之分, 狭义的仿真精度与误差成反比, 即误差越小、精度越高, 这是通常人们所理解的精度。而广义的仿真精度是由不确定性和误差引起的, 本文说的精度使用广义的精度概念

系统函数有:

显示函数1 $display 像printf一样打印(/t是tab) 还可以显示当前仿真时间 $time

显示函数2 $write display会在文本后加一个换行 而write是不加的

显示函数3 $strobe 显示最后的值

显示函数4 $monitor 只能用一个 多次使用会后者取代前者 检测值的变化 一变化就会出来值

控制函数1 $stop $finish停止仿真器仿真

a=1

a<=2

a=3

最后a是2 但会经历1和3

时间函数$time 返回64位整数时间值 stime返回32位 realtime返回实数 timeformat控制时间的显示方式

系统函数的特点:

函数不能启动任务,而任务能启动其它任务和函数。 函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位,函数返回一个值,而任务则不返回值。

#(上升沿延迟时间,下降沿延迟时间)指的是被赋值的要变化的时候 延迟的时间 被变化的是上升沿还是下降沿 使用时候设置合理的延迟和断点

仿真激励的形成:

一是用testbench来加

二是用force 信号名字 值 当前时间,值 当前时间

或者是force 信号名字 值 当前时间,值 当前时间-repeat 时间 这样达到一个周期信号激励

数字系统仿真未来发展会不断更新迭代,直到出现更先进的技术

猜你喜欢

转载自blog.csdn.net/weixin_63163242/article/details/128868048
今日推荐