如何使用Verilog语言进行仿真验证

电子说

1.3w人已加入

描述

0****1

仿真验证平台结构

仿真验证主要作用是搭建一个测试平台,测试和验证程序设计的正确性,验证设计是否实现了我们所预期的功能。其结构如下图所示。

HDL语言

图中可以看到,这个测试平台本身对外没有输入输出端口的,我们需要通过实例化的方式将待测试模块放置于仿真中,然后设计相应的激励信号加载在待测试模块的输入端,运行仿真后观测输出信号是否正确。

下图是2选1多路选择器的仿真测试代码,我们依次解读各部分内容。

HDL语言

`timescale 1ns/1ps

`timescale是预编译指令,用于定义时间单位和时间精度。此处,时间单位为1ns,时间精度为1ps。

因此,语句 always #10 a=~a 中“#10”表示延时10ns。

reg a,b,sel;

wire out;

信号声明部分包含两部分。

待测试模块的输入信号,在仿真文件中是需要设计的激励信号,一般在always和initial语句中描述,因此,声明为reg型。

待测试模块的输出信号是待观察的信号,声明为wire型。

initial begin

a=0;b=0;sel=0;

end

always #10 a=~a;

always #20 b=~b;

always #40 sel=~sel;

以上是激励信号的描述。

mux2_1 uut(

.a(a),

.b(b),

.sel(sel),

.out(out)

);

以上是待测试模块的实例化。uut是实例名,由用户自定义,不能缺少。

0****2

仿真验证一般步骤

• 新建仿真文件(.v),与源程序文件名不能相同。

• 模块声明:对外没有输入、输出端口。

• 信号声明:待测模块的输入信号声明为reg型,输出信号声明为wire型。

• 设计激励信号:对待验证模块的输入端口信号进行模拟,覆盖所有情况。

• 实例化待测模块:对待测模块进行实例化。

• 运行仿真:Run Behavioral Simulation(行为仿真)

• 观察仿真结果:判断被测试模块的输出响应是否符合预期要求

03

如何观察内部信号

①scope窗口选则待测试模块(uut是待测模块实例名)。

②将想要观察的信号拖到仿真波形窗口。

③重新加载仿真(relaunch simulation)。

HDL语言

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分