由于某些原因,原来调fpga的那台机器暂时使用不能,只好四处搜索verilog编译器,希望能在配置糟糕的第一台机器上完成前仿。后来就有了这篇文章,希望对于逃不掉linux+verilog的童鞋有点用

首先列出找到的两个比较上路子的编译器:
1.Icarus Verilog
2.VeriWell Verilog Simulator
两个项目都还活着,并且2009年都有更新,在sourceforge都能找到

然后列出的是查看波形图的软件:
1.gtkwave

我使用的是Icarus Verilog + gtkwave的组合,它们可以直接通过debian或者ubuntu的apt-get install安装,简单方便。
//我的Icarus是自己编译的最新的0.91,附件中是自己打的deb包...
//因为ubuntu源安装的Icarus Verilog[sudo apt-get install verilog]居然不支持lxt文件,会导致仿真文件比较大并且慢

Icarus Verilog的主页和wiki分别是:
http://www.icarus.com/eda/verilog/
http://iverilog.wikia.com
不幸的是后者被gfw了,需要翻墙...

这里给出一个看波形图的示例:
Icarus Verilog和gtkwave都是命令行工具,假设你要调一个D触发器的verilog模块,如下:

kana@wadarochi:~$ cat dff.v

//
// Copyleft (C) 1998 by Rajesh Bawankule
// This model is available for free distribution
//
// file name : dff.v
// last modified : 07/23/98
// function : d flip flop
//

module dff (data, clock, q);
// port list
input data, clock;
output q;

// reg / wire declaration for outputs / inouts
reg q;

// logic begins here
always @(posedge clock)
q <= data;
endmodule

(很弱智吧......

然后你应该怎么做?当然是写一个testbench,然后测试几个情况,简单起见,如下:
kana@wadarochi:~$ cat test.v
`timescale 10ns/1ns
module TB;
parameter START_DELAY = 5;
parameter SECOND_DELAY= 5;
parameter LAST_DELAY = 5;
// For clock
parameter ON_DELAY = 1;

parameter OFF_DELAY = 1;

// input of dff
reg Clock;
reg iD;
wire oQ;

// Instantial dff
dff D1(iD, Clock, oQ);

initial
begin
$dumpfile("test.vcd");
$dumpvars(0, TB);
$dumpvars(0, D1.data, D1.clock, D1.q);
end

// Clock partition
always
begin
#ON_DELAY;
Clock = 1;
#OFF_DELAY;
Clock = 0;
end

initial
begin
iD = 0;
#START_DELAY;
iD = 1;
#SECOND_DELAY;
iD = 0;
#LAST_DELAY;
iD = 1;
# 100;
$dumpflush;

$stop;
end
endmodule

很简单,在不同的时间点给D传入不同的电平,观察结果。
在test.v中比较重要的内容是:
$dumpfile
$dumpvars
$dumpflush
$stop
这几个系统任务[verilog语言内置],用于向特定VCD文件中写入各个变量值,然后你才你能通过gtkwave看到波形图。听起来有点麻烦,演示一下,在命令行下:

kana@wadarochi:~$ iverilog -o my_test dff.v test.v

这个命令行参数给的很像gcc,生成一个名为my_test的文件,可以在vvp这个运行时环境中运行,很晕吧,别管它,接着往下看:

kana@wadarochi:~$ vvp -n my_test -lxt2
kana@wadarochi:~$ mv test.vcd test.lxt

现在,你就得到了一个可以看得见的波形文件,只需要最后一条命令,就解决问题了:

kana@wadarochi:~$ gtkwave test.lxt

结果如图:
[img]Screenshot-GTKWave_-_test.lxt.png[/img]
略微有些简陋,不方便随时更改各个引脚的值。但是,这两个软件加起来也没有多大,跑起来很快,作几个模块的前仿还是没有问题,另外,由于是命令行操作,能够批量测试,自己定制一下会很强。如果你不想为了verilog作业装几百M甚至上G的盗版IDE,就试试这个吧。

至于上面涉及到的几个系统任务还有VCD文件的概念,可以参考手头的verilog书,一般都有讲的。需要注意的是,$dumpfinish没有被Icarus Verilog支持,使用不了

如果你不需要看波形图,那就更方便了,两条命令解决问题:

kana@wadarochi:~$ iverilog -o xxxx a.v b.v
kana@wadarochi:~$ vvp xxxx 
就能观察输出,或者得到包含输出向量的文件。调试的时候,这种方法用的也多,方便使用大规模数据验证模块的正确性。

如果你真的对linux下使用free software开发verilog感兴趣,不妨把Icarus Verilog的wiki看看,真的很棒,强烈推荐

对于自己画板子的同学,这里顺带推荐一下gEDA;帮老板打工的话,还是听师兄师姐的话比较好...

See Also:
man iverilog
man vvp
man gtkwave

其它:
http://www.asic-world.com/verilog/index.html
http://www.faqs.org/faqs/verilog-faq/
http://iverilog.wikia.com/wiki/FAQ
http://www.bawankule.com/verilogfaq/page3.html

--
memento mori
Cogito,ergo sum
sub specie aeternitatis

verilog的免费编译器相关推荐

  1. 免费C/C++编译器

    不好意思,等到现在才想到要写这篇文章.怎么说呢?情况是这样的,刚开始我学习C语言时,是想在机器上安装visual c++的,因为Turbo C太古老了,用起来不方便,所以很自然地想安装vc++.不过不 ...

  2. 编译器发展史5个十年3大人物及编译器知识(公号回复“编译器”下载PDF资料,欢迎转发、赞赏、支持科普)

    编译器发展史5个十年3大人物及编译器知识(公号回复"编译器"下载PDF资料,欢迎转发.赞赏.支持科普) 原创: 秦陇纪 科学Sciences 今天 科学Sciences导读:继本号 ...

  3. 编译器-FORTRAN(公式翻译)语言,第一个全球正式推广的高级语言,Pascal(帕斯卡)可称为第一个结构化程序设计语言Pascal基于ALGOL编程语言BASIC初学者通用符号指令代码17语句微软

    编译器-FORTRAN(公式翻译)语言,第一个全球正式推广的高级语言,Pascal(帕斯卡)它可称为第一个结构化程序设计语言,Pascal基于ALGOL编程语言,ALGOL是算法语言(ALGOrith ...

  4. HDL4SE:软件工程师学习Verilog语言(二)

    2 词法和预处理器 2.1 定个小目标 作为一个软件工程师,学习一种语言,最暴力的办法就是做一个这种语言的编译器(或解释器),如果没有做过某种语言的编译器,至少也得仔细看过这种语言的编译器实现,最不济 ...

  5. Fortran编程:(二)编译器的选择及安装和使用

    一.编译器的选择 目前对于Fortran编译编译器的选择比较多,并且它们之间没有统一的规范,即在某个编译器下的代码能正常运行,但在另一个编译器下运行却会报错,没有形成一个统一的良好的Fortran编译 ...

  6. 100个LINUX站点

    100个LINUX站点    100个最佳Linux站点 一) 软件下载 (1) Freshmeat站点 网址:[url]http://www.freshmeat.net[/url] 评介:如果你绝对 ...

  7. vs安装 c语言编译环境,Visual Studio Code安装与C/C++开发调试环境搭建

    目录 简介 VSCode安装 VSCode语言设置 安装开发套件 构建C/C++编译环境 安装Clang 安装MinGW VSCode工程配置 launch.json tasks.json 测试 简介 ...

  8. 100个最佳Linux站点

    100个最佳Linux站点 (一) 网络中遍布着大量的Linux相关站点: (二) 用户无须详细了解每一个此类站点,实际上,一百个站点足够你使用了. 评选出的这100个优秀站点,将按照下述20个类别作 ...

  9. 人工智能编程语言介绍

    本文将介绍10多种不同的程序设计语言,以及如何下载它们的免费的编译器(注意:不是盗版) 20 年后,我们用什么样的语言?也许现在谁都不好回答,20年前的程序员们会告诉你用汇编吧,今天人们也许会告诉你用 ...

最新文章

  1. AS3 Socket 基础知识(很全面)
  2. python变量按其作用域可分为_python变量的作用域一
  3. Android9.0 新特性
  4. 详记一次MySQL千万级大表优化过程!
  5. ?类型 ,?类型(值)
  6. 《零基础看得懂的C语言入门教程 》——(五)C语言的变量、常量及运算
  7. COM, COM+ and .NET 的区别
  8. android开机自动开启zram,低内存配置  |  Android 开源项目  |  Android Open Source Project...
  9. confirm的意思中文翻译_confirm的中文意思
  10. 8599元起!三星Galaxy Z Fold3/Flip3 5G折叠手机国行即将发货
  11. Linux学习笔记---移植官方uboot步骤(一)
  12. 苹果Mac 3D 模型展开工具:Unfolder
  13. 人工智能在安全漏洞方面的应用_智慧消防平台的智慧在哪方面?
  14. PyTorch实现的ResNet50、ResNet101和ResNet152
  15. android one a2,小米第二代 Android One 机种小米 A2 与平价版小米 A2 Lite 于西班牙发表...
  16. 用Jplayer做的一个带动画的播放器
  17. T9键盘[用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表]
  18. VR技术与生态:大咖跟你聊VR未来
  19. MyBatis中的resultMap两个association
  20. h20r1203功率管参数_电磁炉功率管H20R1203用什么代换

热门文章

  1. 禁用Win10截屏快捷键Win+Shift+S,改用Snipaste
  2. Linux如何配置ssh key
  3. Flutter 制霸全平台?这事儿我看有戏。
  4. IDEA 中 使用 git 进行上传和下载项目
  5. 使用C++ 编写嵌入式应用程序
  6. html5论文期刊类参考文献,杂志论文参考文献格式
  7. 支付账户体系(分账接口)的9大价值
  8. 《ANSYS 14热力学/电磁学/耦合场分析自学手册》——2.6 主菜单
  9. Idea主菜单不见了(File,View等工具栏隐藏了)
  10. 游戏设计艺术 第2版 第30章 读书笔记