赞
踩
EDA比较:Modelsim vs VCS 参考链接:https://www.zhihu.com/question/270518986
一、FPGA设计验证包括功能仿真、时序仿真和电路仿真。
功能仿真指仅对逻辑功能进行模拟测试,以了解其实现的功能是否满足原设计的要求。 仿真过程没有加入时序信息, 不涉及具体器件的硬件特性,如延时特性等。
时序仿真是在HDL满足功能要求的基础上,在布局布线后,提取有关的器件延迟、连线延时等时序参数信息,并在此基础上进行仿真,是接近于器件真实运行状态的一种仿真。
以上两种仿真,modelsim都可以完成。
仿真流程:创建工程、编写源代码、编译、启动仿真器、运行仿真。
二、Test Bench 测试平台/测试仿真文件
1、设计实例化被测元件DUT,了解测试计划和测试案例。
2、test bench:模拟实际环境的输入激励和输出效验的一种“虚拟平台”,在这个平台上可以对设计从软件层面上进行分析和效验。Test Bench负责向被测元器件的输入端口提供激励(时钟)、一些控制信号(复位和置位信号)或者一些数据(地址、数据),另外Test Bench还监测被测元器件的输出端口所输出的信号值是否和我们的设计预期相符,并把监测的情况显示给我们。
三、modelsim使用
1、wave添加出错 :# (vish-4014) No objects found matching
参考文献:https://blog.csdn.net/li_qcxy/article/details/8510949
2、sim窗口:显示层次化测试平台。顶层tb,到dut,到具体底层设计。每个层次显示包含的硬件模块、任务、过程块。
3、object窗口:在sim窗口中选中层次,object窗口显示输入输出、内部信号。
4、wave窗口:除了放大镜缩放窗口,按F自动缩放信号,按住滚轮拖动缩放信号片段。
四、demo:全加器仿真与测试
1、全加器属组合逻辑电路(不含存储单元,输出仅与该时刻输入有关,与电路原来的状态无关 ),逻辑功能描述方式:逻辑图,逻辑函数,真值表。电路本身可以用框图表示。
2、逻辑抽象:分析因果关系、 二值逻辑状态01含义选定、列出真值表。
8-3编码器 选定高电平为有效输入信号。8-3优先编码器 选定低电平为有效输入信号。
2、代码
DUT 待测设计
- module adder1(a,b,ci,so,co );
-
- // Portdeclarations
- input a,b,ci;
- output so,co;
-
- //InternalVariables
- wire a,b,ci;
-
- //CodeStarts Here
- assign {co, so} = a + b + ci;
-
- endmodule
Testbench 测试平台
- `timescale 1ns/1ns //时间尺度指令,仿真时间单位/时间精度
-
- module test_adder1;
-
- wire so;
- wire co;
- reg a;
- reg b;
- reg ci;
-
- adder1 U(.a(a),.b(b),.ci(ci),.so(so),.co(co)); //元件例化语句,嵌入全加器程序
-
- initial begin
- #20 a = 0; b = 0; ci = 0;
- #20 a = 0; b = 0; ci = 1;
- #20 a = 0; b = 1; ci = 0;
- #20 a = 0; b = 1; ci = 1;
- #20 a = 1; b = 0; ci = 0;
- #20 a = 1; b = 0; ci = 1;
- #20 a = 1; b = 1; ci = 0;
- #20 a = 1; b = 1; ci = 1;
- #200 $stop; //暂停仿真过程
- end
-
- endmodule
断点调试方法:sim中,设置断点。然后restart,sim。
通过display显示变量的值:
https://blog.csdn.net/qq_40793742/article/details/82830591 Modelsim中通过$display显示变量的值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。