linux下开发verilog环境,iverilog_module

2023-10-21 09:30

本文主要是介绍linux下开发verilog环境,iverilog_module,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux下使用iverilog仿真verilog易用版本

该项目是提供一个在linux使用iverilog+gtkwave的项目模板,用于快速新建项目和仿真项目。

没使用过的iverilog的请点击此处

优势

虽然iverilog只能仿真,但是仿真速度很快,对于比较小的模块或者中型项目的验证,完全可以使用iverilog进行前期开发,以提高开发效率。

轻量

免费

环境配置简单

在本模板上易用

文件说明

.

├── db.dat 记录上次仿真项目,用于重复仿真时直接运行仿真项目

├── imgs 一些图片

│   ├── 20200415-140023.png

│   ├── 20200421-231449.png

│   ├── 20200421-232012.png

│   ├── 20200421-232053.png

│   └── 20200421-232159.png

├── LICENSE

├── main 提供仿真项目引导的shell脚本

├── module 所有仿真项目放在该路径下,一个项目一个文件夹

│   ├── counter 计数器项目

│   │   ├── counter.v

│   │   ├── readme.md

│   │   └── tb.v

│   ├── crc crc循环冗余校验项目呢

│   │   ├── CRC_7.v

│   │   ├── readme.md

│   │   └── tb_crc7.v

│   ├── decode38 38译码器项目

│   │   ├── decode38.v

│   │   ├── readme.md

│   │   └── tb_decode38.v

│   ├── idata 测试项目

│   │   ├── idata1.v

│   │   ├── idata2.v

│   │   ├── tb_idata.v

│   │   └── topdata.v

│   ├── led 简单分频器项目

│   │   ├── readme.md

│   │   ├── tb_led.v

│   │   └── top.v

│   └── 说明.txt

├── README.md

├── run 命令执行仿真指定项目

├── .shell 存放一些其他的shell脚本

│   └── test.sh

├── sim 仿真文件和结果

│   ├── ans.txt

│   ├── tb

│   ├── tb_led.v

│   ├── tb.lxt2

│   └── top.v

└── .TCL 存放一些其他tcl脚本

├── clk.tcl

├── main.tcl

├── verilog2tcl.tcl

└── vfile.v

上面的 .TCL 和 .shell 是隐藏文件夹!

环境安装

在deepin或者ubuntu上,使用命令安装。

使用sudo apt-get install iverilog安装iverilog。

使用sudo apt-get install gtkwave安装波形查看工具。

vscode选择性安装

使用

cd iverilog_module

./main

根据提示选择需要仿真的项目

772c1dd53a8134f559e8aa868352474a.png

c3631d93a1ec53b839a269187f8e7000.png

run脚本方式使用

例如我们要仿真crc7,crc7所在路径为./module/crc ,则使用方法为

cd iverilog_module

执行脚本 ./run -d ./module/crc

这样项目就会开始仿真

8b89703a4278f306f0f6d8811834a0b3.png

终端输入./run -h显示帮助

1d61e3fb84ccf799d073092579d814bc.png

格式说明

每个仿真项目可添加一个readme.md文件作为自身项目的说明,如果项目要在main脚本下显示简短功能说明则要按一下方式写。

0a7a21a498b8944b1269c2ae2244cd78.png

fab0930938b1dd3492d1610fcd5f9cd5.png

修改说明

2020.6.4修改说明

1.添加在分项目中子文件夹下面放置verilog的文件,仿真时将会一并拷贝到sim文件夹。

2.添加隐藏除了正在调试的工程之外的所有工程,减少调试时视觉上的影响。

Usage: run [para]

run -d dir 仿真dir目录

run -i dir 在指定文件夹生成testbech模板,不存在路径则先创建路径

run -f file 运行单.v文件分析

run 仿真上次仿真的目录

run -h 显示帮助

run -r 刷新仿真数据,不在重新开启新的gtkwave

run -hide 隐藏除了正在调试所有工程问价夹(module路径下的文件夹)

run -unhide 显示所有隐藏的工程文件夹(module路径下的)

没有加入环境变量时,上面的run用 ./run代替。

2020.6.24

增加任意分频器的模板,使用方法同 生成testbech模板一样。

yhp@yhp-PC /m/y/_/F/iverilog_module> ./run -h

Usage: run [para]

run -d dir仿真dir目录

run -i dir在指定文件夹生成testbech模板,不存在路径则先创建路径

run -f file 运行单.v文件分析

run 仿真上次仿真的目录

run -h 显示帮助

run -r 刷新仿真数据,不在重新开启新的gtkwave

run -clk dir在指定文件夹生成任意分频器的模板divide.v,不存在路径则先创建路径

run -hide 隐藏除了正在调试所有工程问价夹(module路径下的文件夹)

run -unhide 显示所有隐藏的工程文件夹(module路径下的)

例如我要在module/mclk下生成分频器,则执行./run -clk module/mclk,当然首先得在项目路径下!

78ce2348818b7c70de364ab9c4fcd840.png

生成的divide.v这个分频器文件,将会时钟输出50%占空比的波形,设置分频数N和分频器计数器位宽可以实现1-N分频。以下为其中的部分代码:

`timescale 1ns / 1ps

// ********************************************************************

//FileName: divide.v

//Author:hpy

//Email:yuan_hp@qq.com

//Date:2020年06月18日

//Description:任意整数时钟分频

// --------------------------------------------------------------------

module divide#(

parameter WIDTH = 3, //计数器的位数,计数的最大值为 2**WIDTH-1

parameter N = 3 //分频系数,请确保 N < 2**WIDTH-1,否则计数会溢出

) (

input clk,

input rst_n,

output clkout

);

我们再使用./run -i module/mclk生成testbech仿真模板,对其稍加修改,将divide.v进行例化!

8d91be5e6e3bf39190b87bd308e9abc1.png

然后在 module/mclk路径下的tb.v中例化divide模块,如下:

//生成始时钟

parameter NCLK = 4;

initial begin

clk=0;

forever clk=#(NCLK/2) ~clk;

end

/****************** BEGIN ADD module inst ******************/

//Modulenamme top (rst,clk);

divide divide(

.clk(clk),

.rst_n(rst)

);

/****************** BEGIN END module inst ******************/

然后执行 ./run -d module/mclk对该项目进行仿真,并打开gtkwave查看波形!

yhp@yhp-PC /m/y/_/F/iverilog_module> ./run -d module/mclk

INFO: 当前仿真的目录为 module/mclk

LXT2 info: dumpfile wave.lxt2 opened foroutput.

运行结束!

8157f0acda051b4734a4f7a04f9d33c4.png

2020.12.1

添加了一个使用verilog实现的cpu,在module文件夹下的mini-mcu的readme.md文件有比较详细的介绍。能够实现汇编编译代码,生成带有数据的程序存储器,并自动根据使用的命令裁剪cpu。

项目下存在的仿真模块

---------------iverilog仿真项目menu---------------

1.任意bcd计数器

2.呼吸灯

3.仿真计数器

4.仿真7位CRC

5.仿真38译码器

6.led流水灯

7.序列检测状态机示例

8.这是一个简单的分频器

9.模板生成任意分频器的示例

10.自动售货机(三段式状态机)

11.三人表决器

12.FIFO实现

13.这是一个学习verilog基础语法的例子合集

14.实现一个可裁剪的处理器(mini-mcu)

15.单脉冲发生器

----------------

这篇关于linux下开发verilog环境,iverilog_module的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/253471

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.