按照时延特性可以分成时序仿真和功能仿真
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 时间 这样达到一个周期信号激励
数字系统仿真未来发展会不断更新迭代,直到出现更先进的技术