作为一名系统软件工程师,需要对verilog语言有一定的了解,学习verilog过程中免不了要进行仿真。工程上常见的verilog仿真软件基本就是国外EDA三大厂的:Mentor公司的ModelSim,cadence公司的NC-Sim/NC-Verilog和Synopsys公司的VCS。
对于个人学习来讲,这些收费的大型软件并不是很适合。在此推荐一款轻量版的verilog仿真平台,很适合初学者及小型化仿真需求者:Icarus Verilog + gtkwave。前者可以认为是个仿真器,后者是个看波形的软件。
Icarus Verilog开源,可支持windows和linux。官网下载地址: http://bleyer.org/icarus/
Icarus Verilog的详细使用教程 如下:

Windows环境

  1. 安装软件: 软件下载地址 http://bleyer.org/icarus/
    新版本中软件带的有gtkwave。安装时,会默认安装。
    安装后,确认iverilog是否已经添加到系统变量中,如果没有,则手动添加一下 C:\iverilog\gtkwave\bin 和 C:\iverilog\bin (此处默认安装在C盘)
    Windows下也可以免安装,直接将别人的安装文件拷贝过来也能用。但也需要在系统变量里添加安装文件的路径。

  2. 编写 Verilog代码和testbench。文章最后为一个应用实例。
    注意:testbench中需要以下两句,这两行主要是给gtkwave这个工具使用的,具体含义参考
    https://zhidao.baidu.com/question/13428173.html

  3. 编译仿真
    a) Windows系统下,win +R ,输入cmd 打开命令行; cd 进入 .v文件所在的文件夹(此步骤也可以省略,但在b步骤中需要指定 文件路径)
    b) 执行 iverilog -o dsn icarus_example.v得到文件dsn. (此处是将testbench和verilog源代码写在了同一个.v文件中 )
    c) 执行 vvp dsn

  4. 用gtkwave打开vcd仿真波形
    a) 执行 gtkwave test.vcd (vcd的名字是在testbench中命名的,此处为 test.vcd) 打开仿真波形

Ubuntu 环境

  1. 下载并安装软件,需要联网。在root权限下,
    执行 apt-get install Verilog
    执行 apt-get install gtkwave
  2. 编写 Verilog代码和testbench。
  3. 编译仿真 (同window环境)
    a) 执行 iverilog -o dsn icarus_example.v得到文件dsn.
    b) 执行 vvp dsn
  4. 用gtkwave打开vcd仿真波形
    a) 执行 gtkwave test.vcd (vcd的名字是在testbench中命名的,此处为 test.vcd) 打开仿真波形

附例源码 icarus_example.v

module encoder(binary_out,encoder_in,enable);output [3:0] binary_out;
input enable;
input [15:0] encoder_in;
reg [3:0] binary_out;always @ (enable or encoder_in)beginbinary_out = 0;if(enable) beginif(encoder_in == 16'h0002) beginbinary_out = 1;end if(encoder_in == 16'h0004) beginbinary_out = 2;end if(encoder_in == 16'h0008) beginbinary_out = 3;end if(encoder_in == 16'h0010) beginbinary_out = 4;end if(encoder_in == 16'h0020) beginbinary_out = 5;end if(encoder_in == 16'h0040) beginbinary_out = 6;end if(encoder_in == 16'h0080) beginbinary_out = 7;end if(encoder_in == 16'h0100) beginbinary_out = 8;end if(encoder_in == 16'h0200) beginbinary_out = 9;end if(encoder_in == 16'h0400) beginbinary_out = 10;end if(encoder_in == 16'h0800) beginbinary_out = 11;end if(encoder_in == 16'h1000) beginbinary_out = 12;end if(encoder_in == 16'h2000) beginbinary_out = 13;end if(encoder_in == 16'h4000) begin            binary_out = 14;end if(encoder_in == 16'h8000) beginbinary_out = 15;endendend
endmodulemodule encoder_te();reg enable;reg [15:0] encoder_in; wire [3:0] binary_out;initial begin$dumpfile("test.vcd");  // vcd name   $dumpvars(0,encoder_te); // testbench module name$monitor("%g\t %b %b %b",$time,enable,encoder_in,binary_out);enable = 0;#5 enable = 1;#5 encoder_in = 16'h0004;#6 encoder_in = 16'h0040;#7 encoder_in = 16'h0400;#8 encoder_in = 16'h1000;#10 $finish;        endencoder en(binary_out,encoder_in,enable);endmodule

参考Wiki http://iverilog.wikia.com/wiki/Main_Page

参考 使用方法
http://www.cnblogs.com/zhuangzhuang1988/archive/2012/03/30/2425052.html

轻量版verilog仿真平台:icarus verilog使用简介相关推荐

  1. android地图画线,绘制折线-在地图上绘制-开发指南-Android 轻量版地图SDK | 高德地图API...

    地图上绘制的线是由 Polyline 类定义实现的,线由一组经纬度(LatLng对象)点连接而成. 绘制一条线 与点标记一样,Polyine的属性操作集中在PolylineOptions类中,添加一条 ...

  2. 厚积薄发--一文带您了解阿里云 RocketMQ 轻量版消息队列(MNS)

    作者: 周新宇&陈涛&李凯 阿里云 RocketMQ 轻量版(MNS)消息队列是一个轻量.可靠.可扩展且完全托管的分布式消息队列服务.MNS 能够帮助应用开发者在他们应用的分布式组件上 ...

  3. 谷歌联合印企狙击华为鸿蒙OS:推出轻量版安卓系统打造智能手机

    众所周知,华为鸿蒙OS2.0版在发布短短的几个月时间里,用户数直接突破了1.5亿,成为世界上发展最快的手机操作系统. 即使是苹果IOS.谷歌Android系统也只能望尘莫及,但是对于华为来说,研发鸿蒙 ...

  4. steam创建账号一直验证人工操作_绝地求生轻量版即将登陆STEAM:预约送M416皮肤...

    早在去年九月份,<绝地求生:轻量版>(PUBG LITE)就在泰国开启了测试.近日,PUBG LITE项目又发布了更多的信息. 目前官方已经放出了预约活动(阅读原文),在测试开启后,预约玩 ...

  5. pubg轻量版显示服务器繁忙,pubg轻量版出现服务器繁忙

    pubg轻量版出现服务器繁忙 内容精选 换一换 安装Linux版的迁移Agent时,您输入AK/SK并启动迁移Agent后,提示"No such file or directory: 'rs ...

  6. OpenGauss 3.0.0 (Lite 版)轻量版部署

    背景 openGauss 3.0.0 版本是openGauss社区继2.0.0之后发布的又一个Release版本,版本维护生命周期为3.5年.3.0.0版本在高性能.高可用.高安全.高智能.工具链等方 ...

  7. 突破置换模块计算瓶颈,MSRA开源轻量版HRNet,超越主流轻量化网络!|CVPR2021...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨happy 审稿丨邓富城 编辑丨极市平台 极市导读 本文从HRNet与轻量化网络ShuffleN ...

  8. 【论文解读】突破置换模块计算瓶颈,MSRA开源轻量版HRNet,超越主流轻量化网络!|CVPR2021...

    作者丨happy 审稿丨邓富城 编辑丨极市平台 极市导读 本文从HRNet与轻量化网络ShuffleNet的组合出发,针对置换模块存在的计算瓶颈问题,提出了一种高效条件通道加权单元替换1x1卷积,并得 ...

  9. MQTT 轻量版实例发布,满足更多移动互联场景

    简介:MQTT于4.29日正式发布的轻量级版本,可以满足客户业务规模与整体消息量大,消息可靠性要求不高,但业务连续性不受单条消息发送失败而影响的场景. 微消息队列MQTT版是阿里云推出的一款面向移动互 ...

最新文章

  1. centos7全离线安装redis3.2.8集群
  2. 辅助方法 @Html.Raw与 HtmlString区别
  3. 成功解决AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribute '__reduce_cython
  4. 实录分享 | 计算未来轻沙龙:对话系统研究进展(视频 + PPT)
  5. Nginx使用SSL配置HTTPS
  6. jenkins的历史
  7. famous javascript library.
  8. IEnumerable和IQueryable的区别
  9. B端产品如何应对个性化需求
  10. HTML5 - 搭建移动Web应用
  11. java jsonp网络爬虫_JSOUP 爬虫
  12. Django菜鸟入门笔记(1)
  13. 华硕win10键盘失灵_win10笔记本键盘失灵怎么办_win10笔记本电脑键盘失灵一键修复教程...
  14. hive  explode(split(split_feild,‘split_char‘)) split_feild为null 整条数据会丢掉
  15. k8s 一套代码部署两个实例
  16. Linux云计算学习教程,一个全新的世界—Linux
  17. 重庆博物馆的智慧公厕管理系统
  18. 芝诺数据高校产学研用成果展示|携程酒店(北京)数据分析报告
  19. 拼多多在海外暂时不会上线砍一刀功能;微软落户中国三十周年;JDK 19 GA发布|极客头条
  20. java —— 后台利用监听器统计在线人数

热门文章

  1. Zephyr (nrf)
  2. 论文投稿指南——中文核心期刊推荐(电工技术)
  3. 【C语言】【unix c】信号量集(system v ipc)
  4. [论文笔记] [2008] [ICML] Extracting and Composing Robust Features with Denoising Autoencoders
  5. Etcd Unable to attach or mount volumes
  6. [Java并发-14] Future: 优雅的使用多线程
  7. hadoop安装步骤
  8. 深度学习怎么跑代码?
  9. 如何查阅NLP资料 转自https://blog.csdn.net/qq_27009517/article/details/80841146
  10. SQL基础培训13-索引和优化