【数字电路】MacBook使用iverilog进行数字电路仿真

安装流程

在终端中用brew包管理工具进行安装仿真工具:

编译verilog代码:
brew install icarus-verilog编译verilog代码:
brew install verilatorMacOS系统显示UNIX GUI
brew install xquartz可视化仿真波形图:
brew install gtkwave

安装过程中可能出现如下报错:

Error: icarus-verilog: unknown or unsupported macOS version: :dunno

解决方案:升级brew工具

brew update-reset

代码编写

编写verilog文件test.v

module test (input clk,output dout
);assign dout = ~clk;
endmodule

这个verilog代码表达的是输出信号dout是输入信号clk取反的值。

编写testbench文件test_tb.v

/*incentive document
*/
`timescale 1ns / 1ns
module testbench();reg clk;/* define the wire below */wire dout;parameter CYCLE    = 2;parameter END_TIME = 200;/* init the module below */test mod(.clk    (clk),.dout   (dout));/***************************************************/initial begin            $dumpfile("wave.vcd");      //生成的vcd文件名称$dumpvars(0, testbench);    //tb模块名称end 
/***************************************************//* init the state */initial beginclk = 0;end
/***************************************************//* generate clock */always begin#(CYCLE / 2) clk = ~clk;end
/***************************************************//* stop the simulation */initial begin#END_TIME;$stop;endendmodule

注意,一定要有如下模块才能生成波形文件:

    initial begin            $dumpfile("wave.vcd");      //生成的vcd文件名称$dumpvars(0, testbench);    //tb模块名称end 

编译仿真

verilog文件编译:

iverilog -o wave test.v test_tb.v

生成vcd文件:

vvp -n wave

这里的-n是让testbench在执行完测试流程之后自动结束,也可以不在执行命令这里使用-n,而通过在testbench文件的initial块中添加$finish命令来结束。

在这里插入图片描述

用gtkwave工具打开vcd波形:

gtkwave wave.vcd
或
open wave.vcd

但是我的MacOS系统版本高于14,所以gtkwave工具不兼容,因此可以使用vscode的wavetrace插件可视化波形图。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
从波形图可知,dout=~clk这个逻辑满足,仿真完成。

另外,编译过程可以写进shell脚本(complier.sh)一步完成:

echo "开始编译"
iverilog -o wave ./test.v ./test_tb.v
echo "编译完成"echo "生成波形文件"
vvp -n wave
cp wave.vcd wave.lxtecho "打开波形文件"
open wave.vcd

执行脚本:

bash ./compiler.sh

在vscode中安装Verilog-HDL插件,可以实现Highlight(代码高亮)、Liting(代码查错)、Ctag等功能。
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/278373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop和Spark的区别

Hadoop 表达能力有限。磁盘IO开销大,延迟度高。任务和任务之间的衔接涉及IO开销。前一个任务完成之前其他任务无法完成,难以胜任复杂、多阶段的计算任务。 Spark Spark模型是对Mapreduce模型的改进,可以说没有HDFS、Mapreduce就没有Spark。…

VR智慧眼:为各行业打造3D数字化业务协同平台

自改革开放以来,城镇化建设一直在不断推进实施,如今各城市化速度虽然在不断加快,但随之而来的部分城市开始出现资源短缺、环境污染、交通拥堵、安全隐患等问题,因此为了满足智慧城市大型区域场景数字化升级需求,助力区…

Jrebel 在 Idea 2023.3中无法以 debug 的模式启动问题

Jrebel 在 Idea 2023.3中无法以 debug 的模式启动问题 Idea 在升级了2023.3以后,Jrebel 无法以 debug 的模式启动,找了半天,最后在插件主页的评论区找到了解决方案 特此记录一下

linux系统的u盘/mmc/sd卡等的支持热插拔和自动挂载行为

1.了解mdev mdev是busybox自带的一个简化版的udev。udev是从Linux 2.6 内核系列开始的设备文件系统(DevFS)的替代品,是 Linux 内核的设备管理器。总的来说,它取代了 devfs 和 hotplug,负责管理 /dev 中的设备节点。同时…

RG0标准全光谱LED光源—台湾旺泓防蓝光灯珠

随着LED行业照明的发展;以及我国儿童青少年近视综合防控工作的推进和深入,灯具光源的重要性越发凸显,能为人类提供更高光色品质、更舒适健康的光环境的照明技术成为研究突破方向。 全光谱LED光源的出现,拓展了光谱可能性&#xf…

Springboot的火车票订票系统(有报告)。Javaee项目,springboot项目。

演示视频: Springboot的火车票订票系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&#…

OpenAI发布了一份提示工程指南(Prompt Engineering Guide)

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 Open AI 发布了一份很棒的提示工程指南。 以下是在 GPT-4 使用提示时获得更好结果的 6 种策略的总结:

使用GPT开发食堂采购账单

原始系统中&#xff0c;只有采购量和消耗量&#xff0c;需要添加“余”列&#xff0c;并自动计算的余量 具体实现通过查询GPT获得&#xff1a; 提问&#xff1a; 使用antdesign vue的<a-table>组件做一个互动表&#xff0c;每行输入a和b两值&#xff0c;计算cab&#xf…

Java基础面试题小结

基础面试题 Java语言简介 Java是1995年由sun公司推出的一门高级语言&#xff0c;该语言具备如下特点: 简单易学&#xff0c;相较于C语言和C&#xff0c;没有指针的概念&#xff0c;所以操作和使用是会相对容易一些。平台无关性&#xff0c;即Java程序可以通过Java虚拟机在不…

Docker-consul容器服务自动发现与注册

什么叫微服务或者注册与发现&#xff1f; 是一种分布式管理系统&#xff0c;定位服务的方法。 在传统的架构中&#xff0c;应用程序之间直连到已知的服务。 已知的服务&#xff1a;设备提供的网络、IP地址、基于tcp/ip端口 基于现微服务部署&#xff0c;服务的动态性&#…

搭建你的知识付费小程序平台:源码解析与技术实现

知识付费小程序平台在当今数字化时代扮演着越来越重要的角色&#xff0c;为教育者和学习者提供了一个灵活、便捷的学习环境。本文将以关键词“知识付费小程序源码”为基础&#xff0c;探讨如何搭建一个功能强大的知识付费小程序平台&#xff0c;并提供一些基础的技术代码示例。…

Linux——LAMP平台部署及应用

一、安装PHP软件包 1、准备工作 为了避免发生程序冲突等现象&#xff0e;建议先将RPM方式安装的php及相关依赖包〈如果已存在&#xff09;卸载。例如&#xff0c;根据实际安装情况可卸载php、php-cli、php一ldap、 php-comman、php一mysql等。另外.需要安装zlib一devel和libxm…