当前位置: 首页 > news >正文

开源verilog模拟 iverilog verilator +gtkwave仿真及一点区别

开源的 iverilog verilator 和商业软件动不动几G几十G相比,体积小的几乎可以忽略不计。
两个都比较好用,各有优势。
iverilog兼容性好。
verilator速度快。
配上gtkwave 看波形,仿真工具基本就齐了。

说下基本用法
计数器
counter.v

module counter(input wire clk,input wire rst_n,output reg[7:0] out
);always @(posedge clk or negedge rst_n)if(!rst_n)out <= 0;elseout <= out + 1;endmodule

testbench

test.v

module test;reg rst_n;
reg clk;
initial begin#10 rst_n = 1;#10 rst_n = 0;#10 rst_n = 1;#50 $finish;
endinitial begin$dumpfile("test.vcd");$dumpvars(0,test);$monitor("time=%t, out=%h",$time,out);
endalways #1 clk = !clk;wire[7:0] out;counter c1(clk, rst_n, out);endmodule

rst_n和clk故意未赋初值 能看出些区别。

先用iverilog

iverilog test.v counter.v

生成a.out
直接运行

./a.out

vvp a.out

会生成test.vcd
vcd全称 value change dump
从名字可以看出来用来记录数值变动的文件

gtkwave  test.vcd

在这里插入图片描述

可以看出由于clk没有初值,翻转后也不定。上面直接是红色的,xx不确定。

verilator 可以写个c++调用顶层,也可以不写,用个-binary参数,编译。

verilator -binary -trace test.v counter.v

注不加-trace编译运行后 不生成波形文件。

会在当前目录下创建 obj_dir,中间文件和生成的文件都在里面。
会生成一个以第一个verilog+V命名的可执行文件以上面为例 会生成Vtest
如果把counter放前面会生成Vcounter,运行

./obj_dir/Vtest 

当前目录下会生成test.vcd
在这里插入图片描述
可以看出直接已经帮你赋初值了

以下还用iverilog测试
clk 赋初值0
在这里插入图片描述

再给rst_n赋初值0 在这里插入图片描述
如果给rst_n 赋初值1
中间加个 #5 rst_n = 0;
在这里插入图片描述
可以看出,rst_n从开始至变0以前 out的值也是不确定的,上面都直接表示了出来

iverilog兼容性非常好,拿个老文件,基本直接就能编译通过。
但编译的比较慢,文件一多感受就非常明显了。同样一大运行的也慢。
verilator检查比较严格, 但是增量编译,动哪个编哪个,最后再链接。
各有优点吧。反正体积不大,都装上吧。

http://www.lryc.cn/news/269398.html

相关文章:

  • mysql中按字段1去重,按字段2降序排序
  • OCP NVME SSD规范解读-4.NVMe IO命令-2
  • 平凯数据库亮相 2023 信息技术应用创新论坛
  • 2024深入评测CleanMyMac X4.14.6破解版新的功能
  • WPF+Halcon 培训项目实战(8):WPF+Halcon初次开发
  • Vue - 实现文件导出文件保存下载
  • c基础学习(一)
  • c语言的文件操作
  • C语言 volatile关键字
  • IDEA快捷使用-快捷键模板
  • 在VMware安装CentOS 7:详细教程
  • [Angular] 笔记 10:服务与依赖注入
  • 【产品经理】axure中继器的使用——表格增删改查分页实现
  • 面向对象进阶-继承
  • [NOIP2012 普及组] 摆花
  • 系统学习Python——装饰器:函数装饰器-[装饰器状态保持方案:外层作用域和全局变量]
  • Tekton
  • 2023,TEVC,A Competitive and Cooperative Swarm Optimizer for Constrained MOP
  • java设计模式学习之【中介者模式】
  • C++三剑客之std::variant(一)
  • 新火种AI|AI正在让汽车成为“消费电子产品”
  • Docker六 | Docker Compose容器编排
  • Oraclelinux部署Oracle服务
  • Ubuntu安装K8S(1.28版本,基于containrd)
  • Linux 线程安全 (2)
  • 异或运算^简述
  • Google Play上架:2023年度总结报告
  • JAVA进化史: JDK10特性及说明
  • 第二百三十四回
  • {MySQL} 数据库约束 表的关系 新增删除 修改 查询