在wsl环境中配置和开发verilog(一种比较新颖的verilog开发指南)
WSL是windows中自带的linux子系统,笔者在若干月前首次接触其便爱不释手,verilog作为一种硬件解释语言,可否像c语言那样被游刃有余的编译和运行呢,笔者这次大胆的尝试在WSL环境+VSCODE+Iverilog开发verilog。
首先默认按照了WSL和VSCODE,WSL安装可以自行在网上搜索帖子。
随后在WSL的ubuntu系统的命令行中输入如下指令:
sudo apt-get install iverilog
sudo apt-get install gtkwave
这是安装iverilog编译器和gtwake图形显示软件。
随后打开Vscode采用SSH连接到WSL,新建一个文件夹,在其中打开终端。
为了仿真和测试你的Verilog设计,通常需要一个testbench文件(例如testbench.v)。Testbench不是编译Verilog代码所必需的,但是没有它,你将无法进行仿真来验证你的设计是否按预期工作。
以下是为什么需要testbench的原因:
-
激励生成:Testbench提供了一个环境,你可以在这个环境中生成激励信号来模拟实际硬件的工作条件。
-
行为验证:通过在testbench中对设计模块的输入进行操作,并观察输出,你可以验证设计的行为是否符合预期。
-
波形观察:Testbench允许你将仿真的信号输出到波形文件中,这样你可以使用波形查看器来分析信号随时间的变化。
-
调试:如果设计不按预期工作,testbench可以帮助你调试问题,因为它允许你逐步通过仿真来检查各个信号的状态。
编译Verilog代码本身不需要testbench,编译过程只是将Verilog代码转换成仿真器可以理解的格式。但是,为了进行仿真,你需要一个testbench来:
-
实例化你的设计模块。
-
提供激励。
-
观察和验证输出。
在文件夹中将下面两份代码用vim filename的方法新建并编辑:
module adder(clk, rst_n, a, b, c);input [3:0] a, b; // 输入a和b为4位宽output [7:0] c; // 输出c为8位宽input clk, rst_n;reg [7:0] c_reg;always @(posedge clk or negedge rst_n) beginif (!rst_n) c_reg <= 8'h0;else c_reg <= a + b;endassign c = c_reg;
endmodule
上面的代码命名为adder_rtl.v,这是我们写的模块代码,实现加法器功能
`timescale 1ns / 1ps
module my_testbench;
// Inputs
reg clk;
reg reset;
// Outputs
wire out;
// Instantiate the Unit Under Test (UUT)
adder uut (.clk(clk), .rst_n(reset), .a(4'b0010), .b(4'b0011), .c(out)
);
initial begin// Initialize Inputsclk = 0;reset = 0;
// Wait 100 ns for global reset to finish#100;// Add stimulus herereset = 1;#10;reset = 0;
forever #5 clk = ~clk; // Toggle clock every 5ns
end
// Monitor the outputs
initial begin$monitor("At time %t, output is %b",$time, out);
end
// Dump the waveforms
initial begin$dumpfile("my_module.vcd");$dumpvars(0, my_testbench);
end
endmodule
上面的文件命名为my_testbench.v,是测试代码,有点类似于嵌入式开发中的main.c,在其中实例化我们写的加法器模块。 后面在终端中输入如下指令首先编译生成.out文件,再生成波形文件,再用波形查看软件gtkwave来观察波形。
iverilog -o my_simulation.out my_module.v my_testbench.v
vvp my_simulation.out
gtkwave my_module.vcd
my_module.vcd是在my_testbench.v中规定的生成波形文件,要用vvp来加工生成的.out文件来生成波形文件。下面是生成的波形观察窗口,里面显示了verilog的若干波形。

相关文章:
在wsl环境中配置和开发verilog(一种比较新颖的verilog开发指南)
WSL是windows中自带的linux子系统,笔者在若干月前首次接触其便爱不释手,verilog作为一种硬件解释语言,可否像c语言那样被游刃有余的编译和运行呢,笔者这次大胆的尝试在WSL环境VSCODEIverilog开发verilog。 首先默认按照了WSL和VS…...
AI学习指南HuggingFace篇-Hugging Face 的核心工具
一、引言 Hugging Face作为AI领域的重要参与者,提供了许多强大的工具,极大地简化了自然语言处理(NLP)任务的开发流程。其中,Transformers、Datasets 和 Tokenizers 是Hugging Face的三大核心工具。本文将深入介绍这些工具的作用、功能以及它们如何相互配合,帮助读者更好…...
DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度
前言 最近在做项目时遇到一个需求,需要将升级的文件压缩成zip,再进行传输; 通过网络调研,有许多方式可以实现,例如QT私有模块的ZipReader、QZipWriter;或者第三方库zlib或者libzip或者quazip等࿱…...
深入解析桥接模式:软件设计中的解耦利器
桥接模式:软件设计中的解耦利器 在软件开发的复杂世界中,设计模式是开发者解决常见问题的有力工具。桥接模式作为一种重要的结构型设计模式,在处理抽象与实现的关系时展现出独特的优势,它能够巧妙地将抽象部分与实现部分分离&…...
MYSQL-数据库-DDL-DML-DQL-DCL-基础学习
MySql概念: 建立在关系模型基础上,有多张相互连接的二维表组成的数据库 SQL通用语法: 1.SQL语句可以单行或多行书写,以分号结尾 2.SQL语句可以使用空格/缩进来增强语句的可读性 3.MySQL数据库的SQL语句不区分大小写,关…...
rv1126解码的一些原理
rv1126解码篇中,出现最重要的两个api一个是,send_vdec_thread线程里面调用的RK_MPI_SYS_SendMediaBuffer,把数据发到解码器。另外一个是read_vdec_thread线程的RK_MPI_SYS_GetMediaBuffer获取解码器里面的数据。 今天想探讨一下他的底层原理。…...
二级公共基础之数据结构与算法篇(七)排序技术
目录 前言 一、交换类排序 1.冒泡排序法 1. 冒泡排序的思想 2. 冒泡排序的实现步骤 3. 示例 4. 冒泡排序的特点 2.快速排序 1. 快速排序的核心思想 2. 快速排序的实现步骤 3. 示例代码(C语言) 4. 快速排序的特点 二、插入类排序 1. 简单插入排序 1.简单插入排…...
深蕾科技智能多媒体SoC产品助力“DataEye剧查查之夜”微短剧盛会
深蕾科技助力微短剧盛会 深圳湾“DataEye剧查查之夜”微短剧盛会,于2025年2月20日18:00点,在深圳湾盛大开启。作为第十四届中国国际新媒体短片节的重要组成部分,“剧查查之夜”汇聚了微短剧行业的顶尖力量,吸引了众多大咖齐聚一堂…...
Apache Doris 实现毫秒级查询响应
1. 引言 1.1 数据分析的重要性 随着大数据时代的到来,企业对实时数据分析的需求日益增长。快速、准确地获取数据洞察成为企业在竞争中脱颖而出的关键。传统的数据库系统在处理大规模数据时往往面临性能瓶颈,难以满足实时分析的需求。例如,一个电商公司需要实时监控销售数据…...
计算机考研之数据结构:P 问题和 NP 问题
在算法的时间复杂度估算中,通常教材和题目中的估算结果包括: O ( 1 ) , O ( log n ) , O ( n ) , O ( n ) , O ( n log n ) , O ( n 2 ) , O ( n 3 ) , O ( log log n ) O(1),O(\log{n}),O(\sqrt{n}),O(n),O(n\log{n}),O(n^2),O(n^3),O(\log…...
新数据结构(13)——I/O
字符流 字符输入流(Reader) 字符输入流用于从数据源(如文件、字符串等)读取字符数据。Reader 是所有字符输入流的抽象基类。 常用实现类 FileReader 用于从文件中读取字符数据。 InputStreamReader 将字节流转换为字符流&…...
PySide6学习专栏(四):用多线程完成复杂计算任务
如果计程序中要处理一个非常庞大的数据集中的数据,且数据处理计算很复杂,造成数据处理占用大量时间和CPU资源,如果不用多线程,仅在主进程中来处理数据,将会使整个程序卡死,必须采用多线程来处理这些数据是唯…...
Python多线程编程理解面试题解析
一、多线程介绍 Python 的多线程是一种实现并发编程的方式,允许程序同时执行多个任务。然而,由于 Python 的全局解释器锁(GIL)的存在,多线程在某些场景下可能无法充分利用多核 CPU 的性能。以下是对 Python 多线程的理…...
Flutter - 初体验
项目文件目录结构介绍 注:创建 Flutter 项目名称不要包含特殊字符,不要使用驼峰标识 // TODO 开发中运行一个 Flutter 三种启动方式 Run 冷启动从零开始启动Hot Reload 热重载执行 build 方法Hot Restart 热重启重新运行整个 APP 先看效果,…...
使用最广泛的Web应用架构
目前互联网中没有一种绝对使用最广泛的Web应用架构,不同的架构在不同的场景和企业中都有广泛应用,但微服务架构和Serverless架构是当前较为主流和广泛使用的架构。以下是对这两种架构的具体分析: 微服务架构 适用场景广泛 大型互联网公司&a…...
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-split_dota.py
split_dota.py ultralytics\data\split_dota.py 目录 split_dota.py 1.所需的库和模块 2.def bbox_iof(polygon1, bbox2, eps1e-6): 3.def load_yolo_dota(data_root, split"train"): 4.def get_windows(im_size, crop_sizes(1024,), gaps(200,), im_rate_t…...
Unity shader glsl着色器特效之 模拟海面海浪效果
一个简单的海浪效果,通过波的叠加实现水面起伏的动效,根据波峰斜率来为浪花着色,再根据法线贴图和水花贴图来和调整uv的平滑移动来增强海浪移动的细节。如果需要更逼真的效果可以考虑在满足浪花触发的地方添加粒子系统 前置效果图 因为是很久…...
`AdminAdminDTO` 和 `userSession` 对象中的字段对应起来的表格
以下是将更正后的表格放在最前面的回答,表格包含序号列,合并了后端 AdminAdminDTO 和前端 userSession 的所有字段,并标注对方没有的字段。token 字段值用省略号(...)表示: 序号字段名AdminAdminDTO (后端…...
sqlserver查询内存使用情况的方法
查询 这个SQL查询用于获取当前数据库实例中各个数据库在缓冲池(buffer pool)中的数据页所占用的内存大小。 select isnull(db_name(database_id),ResourceDb) AS DatabaseName,CAST(COUNT(row_count) * 8.0 /(1024.0) AS DECIMAL(28,2)) AS [size (MB…...
别再让数据库扛下所有:用Memcached给MySQL减负的5个实战场景与配置要点
从MySQL到Memcached:高并发场景下的缓存实战手册 当你的电商网站在大促期间突然变慢,数据库监控面板上的CPU使用率飙升至红线,这往往意味着关系型数据库正在承受它本不该承受的压力。Memcached作为一款久经考验的内存缓存系统,能在…...
清华PPT模板终极指南:3分钟打造专业学术演示文稿
清华PPT模板终极指南:3分钟打造专业学术演示文稿 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报的PPT设计而烦恼吗?THU-PPT-Theme项目为你提供了一套完整的清华大学…...
TrollInstallerX:iOS 14.0-16.6.1设备如何一键部署TrollStore?
TrollInstallerX:iOS 14.0-16.6.1设备如何一键部署TrollStore? 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 对于iOS开发者和技术爱好者而言&a…...
7个技巧掌握extract-video-ppt:从视频中智能提取可编辑PPT的完整指南
7个技巧掌握extract-video-ppt:从视频中智能提取可编辑PPT的完整指南 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在数字化时代,视频内容已成为知识传播的…...
别再只用默认密钥了!手把手教你复现Shiro反序列化漏洞(CVE-2016-4437)并理解其核心原理
深入解析Shiro反序列化漏洞:从攻击原理到安全实践 在Java安全领域,Apache Shiro框架因其简洁易用而广受欢迎,但2016年曝光的CVE-2016-4437漏洞却给开发者敲响了警钟——默认配置的安全隐患可能带来灾难性后果。本文将带您从密码学基础开始&am…...
【2026年最新600套毕设项目分享】微信小程序的自修室预约系统(30144)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 项目演示视频2 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运…...
Apache Kylin Cube设计实战:从销售数据模型出发,手把手教你规划维度和度量
Apache Kylin Cube设计实战:销售数据分析的维度与度量艺术 当企业积累了大量销售数据后,如何快速获取业务洞察成为关键挑战。传统Hive查询在面对亿级数据时响应缓慢,而Apache Kylin通过预计算技术将查询速度提升百倍。本文将基于典型的销售数…...
《JAVA面经实录》- 设计模式面试题(一)
《JAVA面经实录》- 设计模式面试题(一)这份是设计模式面试题・标准答案背诵版语言精炼、口语化、不啰嗦,面试官最爱听,直接背就能过。一、基础必问题(标准答案)1.设计模式三大类?创建型:控制对象创建&#…...
Charles抓包实战:从零配置到成功解密微信小程序/H5页面请求
Charles抓包实战:解密微信小程序与H5页面流量的全链路指南 当你盯着手机屏幕上那个加载缓慢的H5页面,或是调试一个行为诡异的微信小程序时,是否曾渴望能像X光一样透视所有网络请求?作为从业十年的全栈开发者,我经历过太…...
Whoami开发者架构解析:深入理解模块化隐私保护系统设计
Whoami开发者架构解析:深入理解模块化隐私保护系统设计 【免费下载链接】whoami-project Whoami provides enhanced privacy, anonymity for Debian and Arch based linux distributions 项目地址: https://gitcode.com/gh_mirrors/wh/whoami-project Whoami…...
