[Mac + Icarus Verilog + gtkwave] Mac运行Verilog及查看波形图

目录

  • 1. MAC安装环境
    • 1. 1 Icarus Verilog 编译
    • 1. 2 gtkwave 查看波形
  • 2. 安装遇到的问题
    • 2. 1 macOS cannot verify that this app is free from malware
    • 2. 2 gtkwave-bin is not compatible with macOS 14 or later
  • 3. 运行示例
    • 3. 1 源代码
    • 3. 2 编译Verilog
    • 3. 3 生成.vcd文件
    • 3. 3 查看波形
    • 3. 4 脚本运行
  • 参考




1. MAC安装环境

1. 1 Icarus Verilog 编译

使用HomeBrew安装iVerilog (icarus-verilog):

brew install icarus-verilog

1. 2 gtkwave 查看波形

brew install --HEAD randomplum/gtkwave/gtkwave

2. 安装遇到的问题

2. 1 macOS cannot verify that this app is free from malware



  • Install the app anyway: If you downloaded an app from a trusted source but still can’t open it because of the “macOS cannot verify that this app is free from malware” error, you can try installing the app anyway. To do this, hold down Control and click on the app, then select “Open” from the context menu.
  • Redownload the app: If the digital signature of the app is invalid or corrupted, you can try redownloading the app from the developer’s website.
  • Use a different app: If you can’t get the app to work, consider using a different app that provides similar functionality.

2. 2 gtkwave-bin is not compatible with macOS 14 or later

This version of “gtkwave-bin” is not compatible with macOS 14 or later and needs to be updated. Contact the app developer for more information.

brew uninstall gtkwave
brew untap randomplum/gtkwave
brew install --HEAD randomplum/gtkwave/gtkwave
  • 参考:Not Compatible with macOS 14 #2517

3. 运行示例

3. 1 源代码

  • simple_circuit.v
module	simple_circuit(input a, input b, output y);  assign y = a & b;
endmodule
  • test_bench.v
module	test_bench;reg		a, b;wire	y;// 实例化被测试单元。这行代码用于实例化一个名为 simple_circuit 的模块,并将其连接到测试平台中的信号。uut是该实例的名称,表示 "Unit Under Test"(被测试单元)。simple_circuit	uut (.a(a), .b(b), .y(y));// 应用输入initial	begin$dumpfile("./out/output_vcd.vcd");$dumpvars;a = 0; b = 0;#10 a = 0; b = 1;#10 a = 1; b = 0;#10 a = 1; b = 1;#10 $finish;end
endmodule

3. 2 编译Verilog

iverilog -o ./out/output_exe test_bench.v simple_circuit.v

这条命令使用 iverilog 编译器将 test_bench.v 和 simple_circuit.v 文件编译成一个可执行的仿真文件,并将其输出到 ./out/output_exe。

3. 3 生成.vcd文件

vvp ./out/output_exe
  • 这条命令使用vvp仿真器运行之前生成的 ./out/output_exe 仿真文件。运行过程中,如果 Verilog 代码中包含生成波形文件的指令(如 $dumpfile$dumpvars),将会生成一个 .vcd 文件(波形文件)。
  • vvp的全称是 Verilog Procedural Processor。它是Icarus Verilog仿真器的一部分,用于执行由iverilog编译器生成的仿真文件。

3. 3 查看波形

gtkwave out/output_vcd.vcd

3. 4 脚本运行

  • run.sh
echo "Running the script >>>"echo "1.Compiling the verilog code: "
iverilog -o ./out/output_exe test_bench.v simple_circuit.vecho "2.Running the executable: "
vvp ./out/output_exeecho "3.Generating the wave form: "
gtkwave out/output_vcd.vcd
  • 然后,添加执行权限,再执行该脚本:
chmod +x run.sh
./run.sh



参考

  • hello-verilog
  • How to fix “macOS cannot verify that this app is free from malware” error
  • Mac上进行Verilog仿真

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

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

相关文章

kalilinux - 目录扫描之dirsearch

情景导入 先简单介绍一下dirsearch有啥用。 假如你现在访问一个网站,例如https://www.example.com/ 它是一个电商平台或者其他功能性质的平台。 站在开发者的角度上思考,我们只指导https://www.example.com/ 但不知道它下面有什么文件,文…

如何制作符合自己设备的FLM下载算法

如何制作符合自己设备的FLM下载算法 --------以I.MXRT1062 QSPI FLAH为例(串行qspi nor flash) 本文介绍一种基于i.mxrt1062的外挂flah的qspi nor flash下载算法FLM的一种方法,Flash 编程算法是一种用于擦除或下载应用程序到 Flash 设备的软…

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读 导读:这篇论文针对在资源受限的边缘设备上部署检索增强生成 (RAG) 系统的挑战,提出了一种名为 EdgeRAG 的高效方法。EdgeRAG 通过巧妙地结合预计算、在线生成和缓存策…

基于Java的百度AOI数据解析与转换的实现方法

目录 前言 一、AOI数据结构简介 1、官网的实例接口 2、响应参数介绍 二、Java对AOI数据的解析 1、数据解析流程图 2、数据解析实现 3、AOI数据解析成果 三、总结 前言 在当今信息化社会,地理信息数据在城市规划、交通管理、商业选址等领域扮演着越来越重要的…

【C++】构造函数与析构函数

写在前面 构造函数与析构函数都是属于类的默认成员函数! 默认成员函数是程序猿不显示声明定义,编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的,关于类与对象不才在前面笔记中有详细的介绍:点我…

2013年IMO几何预选题第4题

在 △ A B C \triangle ABC △ABC 中, A B < A C AB < AC AB<AC. P P P, Q Q Q 是直线 A C AC AC 上的两个不同的点, 满足 ∠ P B A ∠ Q B A ∠ A C B \angle PBA \angle QBA \angle ACB ∠PBA∠QBA∠ACB, 且 A A A 在 P P P 与 C C C 之间. 已知在线段…

UDP报文格式

UDP是传输层的一个重要协议&#xff0c;他的特性有面向数据报、无连接、不可靠传输、全双工。 下面是UDP报文格式&#xff1a; 1&#xff0c;报头 UDP的报头长度位8个字节&#xff0c;包含源端口、目的端口、长度和校验和&#xff0c;其中每个属性均为两个字节。报头格式为二…

网络科技有限公司网络设计

网络科技有限公司网络设计 摘要&#xff1a;伴随着信息科技发展&#xff0c;上网变得一件必不可少的事情&#xff0c;当然网络安全对我们也是越来越重要。像我们的传统网结构是无法为我们的上网提供一个安全的网络环境。锐雯网络科技有限公司就是以网络安全为基本的对网络惊醒…

【c++】哈希

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 目录 1. unordered系列关联式容器1.1 unordered_map1.2 接口函数 例题 2.哈希概念2.1哈希冲突2.2哈希函数2.3哈希冲突解决2.3.1线性探测二次探测 2.3.2开散列 3. 封装迭代器封装完整代码&a…

@Query(org.springframework.data.jpa.repository.Query)

文章目录 1. findPAProductByAdminId 方法作用&#xff1a;解释&#xff1a; 2. findPaginatedPAProductByAdminId 方法作用&#xff1a;解释&#xff1a; 总结&#xff1a; package com.productQualification.resource.repository.productAuthentication;import com.productQu…

[Collection与数据结构] PriorityQueue与堆

1. 优先级队列 1.1 概念 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然…

STM32网络通讯之CubeMX实现LWIP项目设计(十五)

STM32F407 系列文章 - ETH-LWIP-CubeMX&#xff08;十五&#xff09; 目录 前言 一、软件设计 二、CubeMX实现 1.配置前准备 2.CubeMX配置 1.ETH模块配置 2.时钟模块配置 3.中断模块配置 4.RCC及SYS配置 5.LWIP模块配置 3.生成代码 1.main文件 2.用户层源文件 3.…

【React】静态组件动态组件

目录 静态组件动态组件创建一个构造函数(类)使用 class 实现组件**使用 function 实现类组件** 静态组件 函数组件是静态组件&#xff1a; 组件第一次渲染完毕后&#xff0c;无法基于内部的某些操作让组件更新「无法实现自更新」&#xff1b;但是&#xff0c;如果调用它的父组…

我的世界-与门、或门、非门等基本门电路实现

一、红石比较器 (1) 红石比较器结构 红石比较器有前端单火把、后端双火把以及两个侧端 其中后端和侧端是输入信号,前端是输出信号 (2) 红石比较器的两种模式 比较模式 前端火把未点亮时处于比较模式 侧端>后端 → 0 当任一侧端强度大于后端强度时,输出…

持续集成 01|Gitee介绍、Pycharm使用Gitee

目录 一、理论 二、 git的简介与安装 三、Gitee 1、注册网易163邮箱 2、注册Gitee账号 3、git和gitee管理代码工作原理 三、PyCharm安装配置Gitee 四、Pycharm使用Gitee插件的五种场景 1、将 Gitee的新仓库 Checkout&#xff08;检出&#xff09;到 Pycharm中 2、推送…

【Qt】03-页面切换

前言一、按键实现界面切换1.1 创建新的类文件1.1.1 创建1.1.2 细节选择 1.2 代码以及需要注意的点mywidget.cppsecondwidget.cppmywidget.hsecondwidget.h 1.3 结果展示 二、signal关键字2.1 代码以及解释mywidget.cppsecondwidget.cppmywidget.hsecondwidget.h解释 2.2 现象 三…

软件授权管理中的软件激活向导示例

软件激活向导示例 在软件许可中&#xff0c;提供许可应该是简单和安全的。这适用于想要在中央许可证服务器上创建新许可证的软件开发人员&#xff0c;也适用于需要在其设备上获得许可证的最终用户。如果所讨论的系统有互联网连接&#xff0c;或是暂时的连接&#xff0c;就可以…

02JavaWeb——JavaScript-Vue(项目实战)

一、JavaScript html完成了架子&#xff0c;css做了美化&#xff0c;但是网页是死的&#xff0c;我们需要给他注入灵魂&#xff0c;所以接下来我们需要学习 JavaScript&#xff0c;这门语言会让我们的页面能够和用户进行交互。 1.1 介绍 通过JS/js效果演示提供资料进行效果演…

【java】java入门

盘符名称冒号---------盘符切换 dir---------------查看当前路径下的内容 cd目录--------进入单级目录 cd..----------回退到上一级目录 cd \----------回退到盘符目录 cls----------清屏 exit 为什么要配环境变量&#xff1f; 在任意的目录下都可以打开指定的软件。把软件的路…

利用爬虫获取某学习软件的考试题库(带源码)

首先要重新进行账号的登陆用来获取cookie 按下F12在控制台输入&#xff1a; // 获取当前页面的 cookies var cookies document.cookie.split(";");// 创建一个数组来存储 cookies 对象 var cookieArray [];// 遍历每个 cookie 并将其转换为对象 cookies.forEach(f…