系统任务
仿真控制任务
仿真控制任务用于使仿真进程停止,该任务有两个$finish\$stop;
两者用法相同,以$stop为例说明:
initial #500 $stop;//执行此initial语句将使仿真进程在500个时间单位后停止;
这两个系统任务都是终止仿真:
$finish终止仿真进程,会把控制权返回操作系统
$stop终止方正进城后,没有返回操作系统,而是返回仿真器的命令行
随机函数random
随机函数提供一个随机数机制,每次调用这个函数都可以返回一个新的随机数,格式如下:
$random%b
其中b>0。它给出了一个范围在(-b+1):(b+1)中的随机数。
下面给出一个产生随机数的例子:
reg [23:0]rand;
rand = $random%60;
该例子给出了一个范围在-59到59之间的随机数,下面的例子通过位拼接操作产生一个值在0-59之间的数
reg[23:0]rand;
rand = {$random}%60;
verilog用于模块的测试
需要有测试激励信号输入到被测模块
需要记录被测模块的输出信号
ps:被测模块的输入端类型是wire型 被测模块的输出类型是reg/wire型
仿真的概念
仿真是对电路模块进行动态的全面测试
仿真的作用
通过观测被测试模块的输出信号是否符合要求可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改
仿真包括
仿真有:前RTL仿真、逻辑网表仿真、门级仿真和布线后仿真;
前RTL仿真、逻辑网表仿真、门级仿真:可以调试和验证逻辑系统的涉及和结构准确与否,并发现问题及时修改。
布线后仿真:分析设计的电路模块的运行是否正常
一般需要编写测试文件对设计进行仿真测试,称为testbench
testbench一般采用行为级描述,产生一定的输入激励,得到设计的输出响应,并检查输出结果的正确性
在规范的模块设计中,每一个模块都需要编写独立的测试文件对模块进行充分的测试
应该选择合适的输入激励,保证测试能够覆盖典型输入和特殊输入