当前位置: 首页 > 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检查比较严格, 但是增量编译,动哪个编哪个,最后再链接。
各有优点吧。反正体积不大,都装上吧。

相关文章:

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

开源的 iverilog verilator 和商业软件动不动几G几十G相比&#xff0c;体积小的几乎可以忽略不计。 两个都比较好用&#xff0c;各有优势。 iverilog兼容性好。 verilator速度快。 配上gtkwave 看波形&#xff0c;仿真工具基本就齐了。 说下基本用法 计数器 counter.v module…...

mysql中按字段1去重,按字段2降序排序

数据举例 sql语句 按字段field4降序排序&#xff0c;按字段field1去重 SELECT tt1.name2,tt1.field1,tt1.field2,tt1.field4 from ( select tt2.name2,tt2.field1,tt2.field2,tt2.field4 from t2 tt2 ORDER BY tt2.field4 DESC ) tt1 GROUP BY tt1.field1执行结果...

OCP NVME SSD规范解读-4.NVMe IO命令-2

NVMe-IO-3&#xff1a; 由于设备具有掉电保护功能&#xff08;如Power Loss Protection&#xff0c;PLP&#xff09;&#xff0c;因此在以下情况下&#xff0c;性能不应降低&#xff1a; FUA&#xff08;Force Unit Access&#xff09;&#xff1a;是计算机存储设备中的一种命…...

平凯数据库亮相 2023 信息技术应用创新论坛

11 月 25 日&#xff0c;2023 信息技术应用创新论坛在常州开幕。江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务副市长李林等领导出席论坛并致辞。中国工程院院士郑纬民出席并作主题报告。来自产学研用金等各界的千余名代表参加本次论坛。…...

2024深入评测CleanMyMac X4.14.6破解版新的功能

随着时间的推移&#xff0c;我们的Mac电脑往往会变得越来越慢&#xff0c;存储空间变得越来越紧张&#xff0c;这时候一个优秀的清理工具就显得尤为重要。作为一款备受好评的Mac清理工具&#xff0c;它能够为你的Mac带来全方位的清理和优化。在本文中&#xff0c;我们将深入评测…...

WPF+Halcon 培训项目实战(8):WPF+Halcon初次开发

前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只做笔记分享&#xff0c;想要源码或者教学视频可以和他联系一下。 相关链接 微软系列技术教程 WPF 年度公益课程 Halcon开发 CSD…...

Vue - 实现文件导出文件保存下载

1 文件导出&#xff1a;使用XLSX插件 需求背景&#xff1a;纯前端导出&#xff0c;如 在前端页面勾选部分表格数据&#xff0c;点击"导出"按钮导出Excel文件。 实现思路&#xff1a; 1.通过XLSX插件的 XLSX.utils.book_new()方法&#xff0c;创建excel工作蒲对象wb…...

c基础学习(一)

学习网站&#xff1a; C语言的过去与未来 - C语言教程 - C语言网 (dotcpp.com)https://www.dotcpp.com/course/c-intros/ C 语言简介 - C 语言教程 - 网道 (wangdoc.com)https://wangdoc.com/clang/intro 变量&#xff1a; #include<stdio.h> /*引入头文件-- 标准…...

c语言的文件操作

当涉及到C语言中的文件操作时&#xff0c;我们需要了解一些基本的概念和函数。首先&#xff0c;让我们来看看如何打开和关闭文件&#xff0c;以及如何读取和写入文件。 要打开文件&#xff0c;我们使用fopen函数。这个函数接受两个参数&#xff1a;文件名和打开模式。打开模式…...

C语言 volatile关键字

volatile关键字介绍 volatile 是一个关键字&#xff0c;用于修饰变量&#xff0c;表示该变量是易变的&#xff0c;即可能在任何时候被意外地改变。在多线程编程中&#xff0c;当多个线程同时访问同一个变量时&#xff0c;由于线程之间的交互和优化&#xff0c;可能会导致变量的…...

IDEA快捷使用-快捷键模板

常用快捷模板 .方法的使用,例如输入 arr.null 回车 其他常规方法直接输入回车&#xff0c;不需要对象通过.来调用。 创建变量 psfi 创建公开int类型常量 public static final int prsf 创建 私有静态变量 private static final psf 创建公开静态变量 public static final创…...

在VMware安装CentOS 7:详细教程

安装准备工作 本地虚拟机&#xff1a;我这里使用的是VMware Workstation 17 Pro centos7系统ISO镜像&#xff1a;我这里使用的是CentOS-7-x86_64-DVD-2009.iso&#xff0c;具体的下载地址是在阿里云官方镜像站&#xff1a;centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿…...

[Angular] 笔记 10:服务与依赖注入

什么是 Services & Dependency Injection? chatgpt 回答&#xff1a; 在 Angular 中&#xff0c;Services 是用来提供特定功能或执行特定任务的可重用代码块。它们可以用于处理数据、执行 HTTP 请求、管理应用程序状态等。Dependency Injection&#xff08;依赖注入&#…...

【产品经理】axure中继器的使用——表格增删改查分页实现

笔记为个人总结笔记&#xff0c;若有错误欢迎指出哟~ axure中继器的使用——表格增删改查分页实现 中继器介绍总体视图视频预览功能1.表头设计2.中继器3.添加功能实现4.删除功能实现5.修改功能实现6.查询功能实现7.批量删除 中继器介绍 在 Axure RP9 中&#xff0c;中继器&…...

面向对象进阶-继承

继承中&#xff1a;成员变量的访问特点 就近原则&#xff1a;谁离我近我就访问谁,先在局部位置找&#xff0c;找不到然后在到本类成员位置到&#xff0c;如果本类成员位置找不到就到父类成员位置找&#xff0c;逐级往上找。 package oop.Extends.a03oopextendsdemo03; public…...

[NOIP2012 普及组] 摆花

[NOIP2012 普及组] 摆花 题目描述 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共 m m m 盆。通过调查顾客的喜好&#xff0c;小明列出了顾客最喜欢的 n n n 种花&#xff0c;从 1 1 1 到 n n n 标号。为了在门口展出更…...

系统学习Python——装饰器:函数装饰器-[装饰器状态保持方案:外层作用域和全局变量]

分类目录&#xff1a;《系统学习Python》总目录 闭包函数&#xff08;带有外围def作用域引用和嵌套的def&#xff09;常常可以实现相同的效果&#xff0c;特别是用于像被装饰的最初咱数这样的静态数据时。然而在下面这个例子中&#xff0c;我们也需要外层作用域中的一个计数器&…...

Tekton

一. 概念 Tekton 官网 Github Tekton 是一种用于构建 CI/CD 管道的云原生解决方案&#xff0c;它由提供构建块的 Tekton Pipelines&#xff0c;Tekton 作为 Kubernetes 集群上的扩展安装和运行&#xff0c;包含一组 Kubernetes 自定义资源&#xff0c;这些资源定义了您可以为…...

2023,TEVC,A Competitive and Cooperative Swarm Optimizer for Constrained MOP

Abstract 通过元启发式方法求解多目标优化问题( MOPs )得到了广泛的关注。在经典变异算子的基础上&#xff0c;发展了几种改进的变异算子&#xff0c;以及多目标优化进化算法。在这些算子中&#xff0c;竞争群优化算法(CSO)表现出良好的性能。然而&#xff0c;在处理目标空间较…...

java设计模式学习之【中介者模式】

文章目录 引言中介者模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用聊天室示例代码地址 引言 想象一下一座忙碌的机场&#xff0c;各种飞机需要起飞、降落&#xff0c;而不同的飞行活动之间必须互不干扰。如果没有一个统一的控制系统&#xff0c;这将是一…...

主动学习在可修复硬件系统可靠性分析中的应用

1. 可修复硬件系统可靠性分析的挑战与机遇 在航空航天、医疗设备和军事装备等关键领域&#xff0c;硬件系统的可靠性直接关系到人员安全和任务成败。传统可靠性分析方法面临三大核心挑战&#xff1a; 数据收集成本高 &#xff1a;全系统测试需要拆卸设备&#xff0c;每次维护…...

基于SSE的轻量级实时通信库Hermes:Web应用实时消息推送实践

1. 项目概述&#xff1a;一个为Web应用量身打造的“信使”最近在折腾一个前后端分离的项目&#xff0c;后端服务部署在云端&#xff0c;前端应用则直接跑在用户的浏览器里。一个老生常谈的问题又摆在了面前&#xff1a;如何让前端能实时、可靠地获取后端的数据变更通知&#xf…...

BERT PyTorch实现避坑指南:torch.gather()、GELU激活函数与数据预处理那些事儿

BERT PyTorch实现避坑指南&#xff1a;torch.gather()、GELU激活函数与数据预处理那些事儿 当你第一次尝试在PyTorch中实现BERT模型时&#xff0c;可能会遇到一些令人困惑的技术细节。本文将从实际调试的角度&#xff0c;深入解析三个最容易卡住开发者的关键点&#xff1a;torc…...

树莓派AI智能体进化框架:轻量级边缘持续学习实践

1. 项目概述&#xff1a;一个面向树莓派的AI智能体进化框架最近在折腾树莓派上的AI应用时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫pk-pi-hermes-evolve。光看这个名字&#xff0c;就能拆出不少信息量&#xff1a;“pk”可能指代项目作者或一个特定系列&#xff0c;…...

开发者会话管理工具:提升多任务开发效率的利器

1. 项目概述&#xff1a;一个为开发者打造的会话管理利器在开发日常中&#xff0c;我们常常会同时打开多个终端窗口、IDE项目、数据库连接或者远程服务器会话。一天下来&#xff0c;桌面上可能散落着十几个终端标签页&#xff0c;每个都承载着不同的上下文&#xff1a;一个在跑…...

全网首份DeepSeek-MMLU交叉验证报告:在真实业务场景中,高分≠高可用——5类典型失败案例与鲁棒性加固方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek-MMLU基准测试成绩全景概览 MMLU&#xff08;Massive Multitask Language Understanding&#xff09;是评估大语言模型跨学科知识广度与推理能力的关键基准&#xff0c;涵盖57个学科领域&#…...

从0到4倍:一次产品冷启动的完整复盘

近期终于有了大块的时间&#xff0c;打算把自己做开发者关系的一些经历都梳理出来。背景&#xff1a;我们做了一个类似 Windows 注册表的配置管理模块&#xff0c;并在上面增加了配置叠加和分层权限管控。它的核心价值是这样的&#xff1a;之前之后系统集成团队想改某个应用的行…...

6541616

56465651...

基于视觉大模型的GUI自动化:从原理到实践

1. 项目概述&#xff1a;当GUI自动化遇见视觉大模型 最近在折腾自动化测试和RPA&#xff08;机器人流程自动化&#xff09;的时候&#xff0c;我遇到了一个老生常谈但又极其棘手的问题&#xff1a;如何稳定、高效地识别和操作那些没有标准控件标识的图形界面元素&#xff1f;传…...

别再只会显示字符了!用51单片机和OLED做个简易电子时钟(IIC协议详解)

从零构建51单片机OLED电子时钟&#xff1a;IIC协议深度解析与项目实战 在嵌入式开发领域&#xff0c;51单片机因其稳定性和易用性始终占据一席之地。当基础的点亮OLED屏幕、显示静态文字已经无法满足你的求知欲时&#xff0c;一个融合硬件协议、实时时钟和UI设计的电子时钟项目…...