搭建 Verilog 仿真环境
搭建 Verilog 仿真环境
对于 Verilog 的初学者,有一个仿真环境是必要的。这就好比是刚开始接触 C 语言,连 C 语言的开发环境都没有,怎么学习 C 语言呢,难道靠大脑模拟运行吗?
本文介绍如何在 Linux 操作系统(以 Ubuntu 为例)下搭建一个轻量级的 RTL 仿真环境。
安装软件
要安装 2 个软件
sudo apt-get install iverilog
sudo apt-get install gtkwave
准备代码
安装好后可以做个实验。
先准备两个文件
count.v
module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end
endmodule
tb_count.v
`timescale 1ns/1ns module coun4_tp; reg clk, reset; //测试输入信号定义为 reg 型 wire[3:0] out; //测试输出信号定义为 wire 型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin //激励信号定义 clk=0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; // initial 块执行一次,inital 块里面是顺序执行的end //定义结果显示格式 initial $monitor($time,,"clk=%d reset=%d out=%d", clk, reset, out); //注意这里的 ,, 代表空参数,空参数在输出时显示为空格。 initial begin$dumpfile("test.vcd"); // 指定 VCD 文件的名字为 test.vcd ,仿真信息将记录到此文件$dumpvars(0, coun4_tp); //指定层次数为0,则 coun4_tp 模块及其下面各层次的所有信号将被记录end
endmodule
代码中有几处要解释:
$dumpfile
和 $dumpvar
是 verilog 语言中的两个系统任务。
$dumpfile
系统任务:为所要创建的 VCD 文件指定文件名。
VCD 文件是在对设计进行的仿真过程中,记录各种信号取值变化情况的信息记录文件。EDA 工具通过读取
VCD 格式的文件,显示图形化的仿真波形,所以,可以把 VCD 文件简单视为波形记录文件。
$dumpvar
系统任务:指定需要记录到 VCD 文件中的信号,可以指定某一模块层次上的所有信号,也可以单独指定某一个信号。
典型语法为
$dumpvar(level, module_name);
参数 level 为一个整数,用于指定层次数,参数 module_name 则指定要记录的模块。
举例:
initial$dumpvar (0, top); //指定层次数为0,则top模块及其下面各层次的所有信号将被记录
initial$dumpvar (1, top); //记录模块实例top以下一层的信号//层次数为1,即记录top模块这一层次的信号//对于top模块中调用的更深层次的模块实例,则不记录其信号变化
initial$dumpvar (2, top); //记录模块实例top以下两层的信号//即top模块及其下一层的信号将被记录
代码就讲到这里,我们看看怎么仿真。
如何仿真
$ iverilog -o testname count.v tb_count.v
-o 选项用来指定输出的文件名,这里是 testname,你可以换成别的
这样之后,就会生成可执行文件 testname
我们运行它,就会生成 .vcd 波形文件
$ ./testname
VCD info: dumpfile test.vcd opened for output.0 clk=0 reset=0 out= x50 clk=1 reset=0 out= x100 clk=0 reset=1 out= x150 clk=1 reset=1 out= 0200 clk=0 reset=0 out= 0250 clk=1 reset=0 out= 1300 clk=0 reset=0 out= 1350 clk=1 reset=0 out= 2400 clk=0 reset=0 out= 2450 clk=1 reset=0 out= 3500 clk=0 reset=0 out= 3550 clk=1 reset=0 out= 4600 clk=0 reset=0 out= 4650 clk=1 reset=0 out= 5700 clk=0 reset=0 out= 5750 clk=1 reset=0 out= 6800 clk=0 reset=0 out= 6850 clk=1 reset=0 out= 7900 clk=0 reset=0 out= 7950 clk=1 reset=0 out= 81000 clk=0 reset=0 out= 81050 clk=1 reset=0 out= 91100 clk=0 reset=0 out= 91150 clk=1 reset=0 out=101200 clk=0 reset=0 out=101250 clk=1 reset=0 out=111300 clk=0 reset=0 out=111350 clk=1 reset=0 out=121400 clk=0 reset=0 out=121450 clk=1 reset=0 out=131500 clk=0 reset=0 out=131550 clk=1 reset=0 out=141600 clk=0 reset=0 out=141650 clk=1 reset=0 out=151700 clk=0 reset=0 out=151750 clk=1 reset=0 out= 01800 clk=0 reset=0 out= 01850 clk=1 reset=0 out= 11900 clk=0 reset=0 out= 11950 clk=1 reset=0 out= 22000 clk=0 reset=0 out= 22050 clk=1 reset=0 out= 32100 clk=0 reset=0 out= 32150 clk=1 reset=0 out= 42200 clk=0 reset=0 out= 4
这时候,又会多出一个 test.vcd 文件
使用 gtkwave 命令查看 .vcd 文件
$ gtkwave test.vcd
要把信号拖动到 Signals 里面
如果觉得前面敲那些命令太麻烦,可以来一个简单的 Makefile
TGT =main
SRC =$(wildcard *.v)
CC =iverilog$(TGT): $(SRC)$(CC) -o $@ $^./$(TGT)gtkwave test.vcd # 代码中指定 VCD 文件的名字为 test.vcd
clean:$(RM) $(TGT) test.vcd
参考资料
【1】verilog的 $dumpfile
和 $dumpvar
系统任务详解
【2】搭建verilog学习环境
搭建 Verilog 仿真环境相关推荐
- 记一下终于用iverilog搭建好仿真环境
动机 一开始准备在linux系统里仿真的,看了非常多的教程,写的已经非常详细了,但是我这脑子还招架不住啊,最后转向在windows进行仿真,过程跟linux中其实是一样的,但是我电脑的linux系统始 ...
- 一生一芯 预学习阶段 搭建verilator仿真环境 之 示例:双控开关
一生一芯 预学习阶段 搭建verilator仿真环境 之 示例:双控开关 1.前言 一生一芯预学习 中需要安装4.210版本Verilator,通过git方式下载所需要版本. 2.步骤 1.官网链接: ...
- 机架搭建_【新阁教育】穷学上位机系列——搭建STEP7仿真环境
经常有学员问我,学习上位机要不要买PLC硬件? 我一般的回答是:富则自行购买,穷则搭建仿真. PLC硬件,对于学习上位机来说,是锦上添花的事,经济条件允许,有则更好,条件不允许,新阁教育告诉您也可以通 ...
- XTDorne平台搭建无人机仿真环境时遇到的问题及解决
XTDorne平台搭建无人机仿真环境时遇到的问题及解决 PX4安装过程中遇到的问题及解决 PX4安装过程中遇到的问题及解决 执行make px4_sitl_default gazebo遇到的问题 问题 ...
- 【回答问题】ChatGPT上线了!如何使用控制算法或动力学模型控制PreScan搭建的仿真环境及相关车辆的运动状态?
PreScan是一款仿真软件,可以用来模拟汽车在不同条件下的运动状态.要使用控制算法或动力学模型来控制PreScan搭建的仿真环境和相关车辆的运动状态,需要进行以下步骤: 在PreScan中建立汽车的 ...
- 信捷plc485通信上位机_【新阁教育】穷学上位机系列——搭建STEP7仿真环境
经常有学员问我,学习上位机要不要买PLC硬件? 我一般的回答是:富则自行购买,穷则搭建仿真. PLC硬件,对于学习上位机来说,是锦上添花的事,经济条件允许,有则更好,条件不允许,新阁教育告诉您也可以通 ...
- 基于eclipse搭建LittleVGL仿真环境
基于eclipse搭建LittleVGL仿真环境 环境 Windows 10 64位 工具 Eclipse IDE for C/C++ 4.15 --开发IDE SDL2 --提供仿真显示 MinGW ...
- Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)
本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法. 文章目录 1. 搭建ModbusT ...
- 【rotors】多旋翼无人机仿真(一)——搭建rotors仿真环境
[rotors]多旋翼无人机仿真(一)--搭建rotors仿真环境 [rotors]多旋翼无人机仿真(二)--设置飞行轨迹 [rotors]多旋翼无人机仿真(三)--SE3控制 [rotors]多旋翼 ...
最新文章
- 住房要注意用电安全-记录一下失火
- Segment Routing — SR-MPLS
- zabbix 2.2自动安装脚本
- 一些常用的CSS hack代码
- 洛谷 - P3379 【模板】最近公共祖先(LCA)(RMQ求LCA/Tarjan求LCA)
- MySQL找出锁等待
- POJ 1276 Cash Machine
- 利用Flex 和 PHP 生产 PDF.
- Jetty 9 正式版发布!
- 助力春运 重庆机场今晨新增一架飞机入列
- 推荐 4 个开源小程序
- 相机下载_SonyPMCARE, 反向工程索尼PlayMemories相机应用
- com词根词缀_词根词缀记忆大全---经典详细的总结
- html图片原始比例_html图片如何按屏幕大小等比例缩放?
- 固定偏置放大电路为何不能保证静态工作点的稳定性?
- mac上chrome插件安装
- 计算机用户怎么配置漫游,Windows下漫游用户配置和强制漫游用户配置详细过程...
- WFP 学习(一)——构架把握
- 微信公众帐号第三方服务平台源码
- 对象存储2:数据存储类型-文件存储、块存储、对象存储详解