轻量化Verilog开发环境搭建

news2024/10/6 16:23:42

轻量化Verilog学习环境搭建

本文记录基于vscode、iverilog搭建轻量化Verilog学习环境的方法。
ref: VSCode Verilog工具链、linux下搭建轻量易用的verilog仿真环境

环境搭建

(1)安装iverilog,这是一个轻量化的开源verilog编译器,配合gtkwave可进行波形仿真。

sudo apt-get install iverilog
sudo apt-get install gtkwave

(2)安装vscode插件Verilog-HDL为verilog提供语法高亮和静态检查等基本支持。打开扩展设置,设置Verilog格式化插件和Lint插件。其中Lint插件可选iVerilog。Format插件可选Verible( 下载地址)。将Verible二进制文件解压到/usr/local/bin,并在插件设置中填好二进制文件的路径。

(3)添加一个简单的自动化脚本来自动调用iverilog,提高效率。

工程结构(下载):

verilog_learn/
├── build
│   ├── a.out
│   ├── wave.vcd
├── gtkwave.tcl
├── led_demo_tb.v
├── led_demo.v
├── run.sh
└── .vscode
    └── tasks.json

run.sh:

echo "Handling: $1..." # the verilog file
source="../$1.v"
testbanch="../$1_tb.v"

# 生成波形文件
iverilog -o ./a.out $source $testbanch
vvp -n ./a.out -lxt2

# 使用gtkwave查看仿真波形
# https://blog.csdn.net/yelllowcong/article/details/78424329
isGtkWaveRunning=$(ps -ef |grep gtkwave |grep -v "grep" |wc -l)
if [ $isGtkWaveRunning -eq 0 ]; then
        # echo NOT RUN
        gtkwave wave.vcd --script=../gtkwave.tcl
else
        # echo is RUN
        echo "gtkwave is running"
        # gtkwave wave.vcd
fi
# 综合并可视化网表
# yosys -p 'prep ; show -format pdf -prefix yosys' $source
# code ./yosys.pdf

其中gtkwave.tcl文件是对gtkwave进行自动化配置的脚本,内容如下:

# ref: https://gist.github.com/davidzwa/ef1eafc6cd23e613af612e27eddb054b
# ref: https://ughe.github.io/2018/11/13/gtkwave-automation
# Add all signals
set nfacs [ gtkwave::getNumFacs ]
set all_facs [list]
for {set i 0} {$i < $nfacs } {incr i} {
    set facname [ gtkwave::getFacName $i ]
    lappend all_facs "$facname"
}
set num_added [ gtkwave::addSignalsFromList $all_facs ]
puts "num signals added: $num_added"

# zoom full
gtkwave::/Time/Zoom/Zoom_Full

随后在vscode中新建一个task(存于.vscode/task.json路径)来自动运行run.sh,这样在xxx.v文件下按快捷键ctrl+shift+B即可执行run.sh。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "options": {
        // 这里指定tasks 的运行目录,默认是${workspaceRoot},也就是.vscode/..
        "cwd": "${workspaceRoot}/build"
    },
    "tasks": [
        {
            // 这个task完成编译
            "label": "build",
            "type": "shell",
            "command": "../run.sh",
            "args": [
                "${fileBasenameNoExtension}"
            ]
        },
    ]
}

验证

添加led_demo.v及其测试脚本led_demo_tb.v
led_demo.v:

module led_demo(
        input clk,
        input rst_n,

        output reg led
);

reg [7:0] cnt;

always @ (posedge clk)
begin
        if(!rst_n)
                cnt <= 0;
        else if(cnt >= 10)
                cnt <= 0;
        else
                cnt <= cnt + 1;
end

always @ (posedge clk)
begin
        if(!rst_n)
                led <= 0;
        else if(cnt == 10)
                led <= !led;
end

endmodule

led_demo_tb.v

`timescale 1ns/100ps

module led_demo_tb;

parameter SYSCLK_PERIOD = 10;

reg SYSCLK;
reg NSYSRESET;

initial
begin
    SYSCLK = 1'b0;
    NSYSRESET = 1'b0;
end

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

initial
begin
    #(SYSCLK_PERIOD * 10 )
        NSYSRESET = 1'b1;
        #1000
                $stop;
end

always @(SYSCLK)
    #(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;

led_demo led_demo_ut0 (
    // Inputs
    .rst_n(NSYSRESET),
    .clk(SYSCLK),

    // Outputs
    .led( led)
);

endmodule

打开led_demo.v,按快捷键ctrl+shift+B,即可自动执行编译,并开启gtkwave显示仿真波形:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4月更新 | Visual Studio Code Python

我们很高兴地宣布2023年4月版 Visual Studio Code 的 Python 和 Jupyter 扩展现已推出&#xff01; 此版本包括以下改进&#xff1a; Data Wrangler 可供 Visual Studio Code Insiders 使用移动符号重构Create Environment 按钮嵌入依赖文件扩展作者的环境 APIPython 环境的内…

Foxit PDF Reader及Editor任意代码执行漏洞复现(CVE-2023-27363)

0x01 产品简介 Foxit PDF Reader是一套用来阅读PDF格式文件的软件&#xff0c;由福建福昕软件所研发&#xff0c;主要运行在Windows操作系统上。 0x02 漏洞概述 Foxit PDF Reader及Editor中存在任意代码执行漏洞&#xff0c;由于Foxit PDF Reader/Editor未验证exportXFAData方…

【C++】3. 类和对象 - 类的六大默认成员函数

专栏导读 &#x1f341;作者简介&#xff1a;余悸&#xff0c;在读本科生一枚&#xff0c;致力于 C方向学习。 &#x1f341;收录于 C专栏&#xff0c;本专栏主要内容为 C初阶、 C 进阶、STL 详解等&#xff0c;持续更新中&#xff01; &#x1f341;相关专栏推荐&#xff1a; …

定薪17K*15,阿里测试岗上岸经验分享.....

先简单介绍一下我自己吧&#xff0c;等会大家以为我是什么学历狂人&#xff0c;技术大牛&#xff0c;我毕业于广东一个普通本科院校&#xff0c;绝对不是什么双一流大学&#xff0c;大家不要有距离感&#xff0c;这也是我为什么来分享的原因&#xff0c;因为我觉得我这段经验还…

Agisoft Metashape 空三导入Photomod

Agisoft Metashape 空三导入Photomod 文章目录 Agisoft Metashape 空三导入Photomod前言一、Metashape空三成果导出1.1导出PAT-B空三格式1.2. 导出相机文件二、Photomod空三成果导入2.1导入PAT-B空三格式2.2导入相机文件前言 本文讲解将Agisoft Metashape的空三成果导入Photom…

uniapp - 微信小程序接入腾讯视频播放器功能插件,uniapp开发微信小程序端调用引入并使用腾讯视频播放组件完整全流程(详细示例源码,一键复制开箱即用)

效果图 在uniapp 微信小程序项目中,集成腾讯视频功能插件,实现播放腾讯视频效果,附带详细示例源码及注释, 你可以跟着步骤一步步来,保证几分钟就能快速在uniapp小程序项目中植入腾讯视频功能! 一、开通插件 首先使用腾讯视频的话

【数据结构】链表的增删改查| 组件化封装

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;专栏汇总&#xff1a;全部文章专栏汇总 &#x1f525; 给大…

BSN-DDC基础网络详解(十一):官方门户OpenAPI说明及开发资料汇总

01 官方门户OpenAPI说明 官方门户OpenAPI是BSN联盟面向算力中心方和平台方开放的一套官方门户业务管理服务接口。“业务开通”和“资金账户充值/提现”操作&#xff0c;需通过官方门户手工执行&#xff0c;官方门户内的其它功能&#xff0c;都建议算力中心方和平台方按照官方…

Mongo集合操作

2、创建切换数据库 2.1 默认数据库 mongo数据库和其他类型的数据库一样&#xff0c;可以创建数据库&#xff0c;且可以创建多个数据库。 mongo数据库默认会有四个数据库&#xff0c;分别是 admin&#xff1a;主要存储MongoDB的用户、角色等信息 config&#xff1a;主要存储…

数据泄露、数据爬取......金融机构要如何保护催收场景下的数据安全?

金融企业的贷后催收是指向借款人发送催收通知和采取其他措施&#xff0c;以确保借款人按时还款并追回逾期贷款的过程。这通常包括电话催收、信函催收、上门访问等方式。贷后催收通常由金融机构内部的专业团队或第三方专业催收公司承担。 由于催收业务会涉及到很多个人信息&…

家政服务预约小程序开发 解放双手享受洁净生活

在外工作忙了了一天回到家还有做不完的家务&#xff0c;很多时候家庭主妇总是受不了这样的生活二崩溃&#xff0c;随着生活水平的提高&#xff0c;上门家政预约类软件层出不穷&#xff0c;让万千家庭足不出户就可在线预约家政服务&#xff0c;在家享受专业的保洁、维修、安装等…

鸿蒙Hi3861学习十四-Huawei LiteOS-M(STA模式)

一、简介 AP&#xff08;Access Point&#xff09;无线接入点 AP是无线接入点&#xff0c;是一个无线网络的创建者&#xff0c;是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。 STA&#xff08;Station&#xff09;站点 STA也可以理解为终端的意思&#xff…

进行性能压力测试的原因、目的和好处

性能压力测试是指在模拟高负载、高并发情况下对软件系统进行测试&#xff0c;以衡量系统在实际使用过程中的性能表现。这些测试可以为生产环境中的应用程序提供关键数据&#xff0c;并帮助开发人员从根本上了解系统的实际性能。在本文中&#xff0c;我们将探讨进行性能压力测试…

微信视频号视频可以下载吗?视频下载器安装使用教程

简介 最近小伙伴推荐了一款视频下载神器&#xff0c;它可以批量下载微信视频号中的视频到本地上&#xff0c;我试了一下非常简单方便&#xff0c;而且还支持预览等操作&#xff0c;今天分享给大家 软件下载 ➤ 微信视频号下载器下载 ⇲ 安装使用教程 安装 我们下载好对应…

Centos7安装配置MySQL 8.0.20

安装配置MySQL 8.0.20 步骤一&#xff1a;安装MySQL 8.0.20 使用wget命令从mysql官网下载MySQL8.0.20安装包&#xff1a; wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz解压安装包&#xff1a; tar -Jxvf mysql-8.0.20-…

QT 操作SQL

目录 一、QT SQL简介 (一&#xff09;、QT SQL对数据库支持 1、驱动层 2、SQL API层 3、用户接口层 &#xff08;二&#xff09;SQLite数据库初识 1、第一步&#xff1a;在项目管理文件&#xff08;.pro&#xff09;中增加数据库模块​编辑 2、第二步&#xff1a;查看…

用讯飞星火大模型1分钟写一个精美的PPT

文章目录 前言SparkDesk讯飞星火认知大模型简介利用讯飞星火写一个转正述职ppt1.告诉讯飞星火我想写一篇转正述职ppt2.利用MindShow一键生成ppt 申请体验写在最后 前言 随着ChatGPT迅速走红,国内各大企业纷纷发力认知大模型领域。经过一段时间的酝酿,讯飞“星火认知大模型”于…

家门口可以参加公益小天使活动啦

“我的布娃娃可以换你的书吗&#xff1f;” “发现有人晕倒&#xff0c;第1步要确认环境安全。” 这是5月14日上午&#xff0c;在武昌区水果湖街道滨湖社区&#xff0c;闲置互换应急科普活动上发生的对话 该活动由水果湖街道滨湖社区和武汉公益小天使联合发起。5月初&#x…

出现找不到msvcp140.dll无法继续执行代码要怎么解决?

出现找不到msvcp140.dll无法继续执行代码要怎么解决&#xff1f;当你尝试在Windows系统上运行某些程序或游戏时&#xff0c;可能会遇到“找不到msvcp140.dll无法继续执行代码”的错误提示。这个错误通常表示你的系统缺少了msvcp140.dll文件&#xff0c;而这个文件是Visual C Re…

SQL server 纵横报表查询

select warehouseid AS 仓库, case when Udf2 SAP THEN SAP WHEN Udf2 SNC THEN SNC ELSE 手工创建 end AS 创建来源 ,COUNT(isnull(UDF2,手工创建)) AS 数量 from DOC_Appointment_Header dah where convert(varchar(10),AddTime,120) > 2022-09-01 --and warehousei…