使用VS Code进行Verilog HDL的编译和仿真

Icarus Verilog与GTKWave编译与仿真

Verilog的纠错和编译

首先在Icarus Verilog的官网下载对应版本。
https://bleyer.org/icarus/
这个软件提供了查错和仿真的功能。

这里提供Windows的教学。
安装很简单,记住选择Full installation并且添加路径到PATH变量里。

在VS code里安装这三个插件。
第一个是为了编译和快速仿真。
第二个是自动补全。
第三个是查错。
在这里插入图片描述

完成后进行配置。

左下角点击齿轮图标-Settings,在搜索框里输入Verilog Linter,找到下面选项更改为iverilog,此时.v文件就能实现补全和查错了。此时右上角的绿色图标就已经可以进行编译了。如果顺利编译,就会在目录中生成一个*.v.out文件。

可选配置:

运行PowerShell管理员,使用指令winget install 'Universal Ctags'安装ctags。成功后重启PowerShell窗口,输入ctags -v测试,查询到版本即证明安装成功。

安装好后,使用第三个插件即可按住ctrl点选变量后跳转到定义,但是对于module不能跨文件跳转。
如果需要跨文件跳转,继续安装vs code扩展,Ctags Companion。(未测试)

安装好后将如下命令添加到.vscode/settings.json里:

"ctags-companion.command": "ctags -R --fields=+nKz -f .vscode/.tags --langmap=SystemVerilog:+.v -R rtl /opt/uvm-1.2/src",
"ctags-companion.readtagsEnabled": true,

其中/opt/uvm-1.2/src为指定的source源码目录。
至此按照第三个插件的文档说明来看,应该可以实现跨文件跳转的功能。

2024.06.16更新:

当然上面的方法有点复杂。
推荐一个国人大佬写的插件:

在这里插入图片描述
https://1391074994.github.io/Verilog-Hdl-Format/#/

这个插件解决了上面第三个插件ctags功能无法跨文件跳转的问题。推荐使用此插件替换上面第二和第三个插件。

安装好后,配置查错软件:

在这里插入图片描述
修改这个选项,如果你已经安装了Icarus Verilog,这里就选iVerilog。我这里因为已经配置了下面介绍的TerosHDL的查错,这里就没有开启。

仿真

仿真的前提就是写好Testbench文件。这里假定tb文件测试内容已经写好,在此前提下,在initial语句块中插入:

    $dumpfile("*.vcd");
    $dumpvars;

这里的$dumpfile的参数就是生成的波形文件。

当然我们可以添加一个Snippet来便于我们后续的自动添加。
左下角设置-User Snippets,输入Verilog创建一个,将下面内容粘贴到大括号里。这样我们在下次编写tb时直接打出dum即可自动添加此段。

"Generate .vhd for GTKWave": {
		"prefix": ["$dum","dum"],
		"body": [
			"$$dumpfile(\"$TM_FILENAME_BASE.vcd\");",
			"$$dumpvars;"
		],
		"description": "Add this block to generate .vhd for GTKWave. Remember to put this in initial block."
	}

添加后,再次运行编译,即可得到.vcd波形文件。在对应.vcd文件右键即可选择打开波形查看器即可查看。
在这里插入图片描述
在这里插入图片描述GTKWave查看器窗口中点击tb后,选择需要查看的信号,点击Append添加到右边窗口,或者直接ctrl+a全选添加。

这个方法好处就是很快,但是iVerilog的仿真生成速度比Modelsim快不少,不知道对精度有没有影响。

使用TerosHDL插件调用第三方工具(Modelsim)仿真

这里非常推荐使用TerosHDL插件。这个插件功能很多,简单介绍一下。
基础的比如联想和纠错,进阶的自动规范格式、tb模板、生成说明文档、自动绘制原理图和状态机图以及调用第三方工具仿真。

官方说明文档:
https://terostechnology.github.io/terosHDLdoc/docs/intro

对于不想看官方文档的,可以看看我的简化版安装流程。

环境安装

首先安装Python 3,这个我就不赘述了,没安装的可以网上搜搜,现在官网好像也有一键安装的版本了。

然后安装Python3的支持包。

Ctrl + R运行cmd,输入pip install teroshdlpip install cocotb

接着安装make。

windows标志上右键,运行Windows PowerShell管理员模式,在窗口输入:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

安装好Chocolatey后,继续输入:

choco install make

完成后使用make --version可以测试是否安装成功。

基础环境安装好后,在VS code的扩展中搜索TerosHDL并安装。
在这里插入图片描述

在这里插入图片描述
安装完成后侧边栏就会出现Teros的图标,点击后拉到最下面,点击Check dependencies即可测试功能是否能够正常使用。如果没有报错,那么上面除了仿真以外的功能就可以使用了。

配置

使用查错仍然是调用第三方工具,需要提前安装好。
简单点可以使用上面提到的Icarus Verilog。然后在设置里Linter settings - General - Verilog/SV linter处修改为对应的软件。
当然如果你使用了前面已经介绍过的其他插件,也可以不用配置查错。

调用第三方工具仿真

这个插件可以调用很多软件进行仿真,基本主流软件都有。

这里简单讲讲Modelsim的配置,其他软件也应该大同小异。
使用此插件的好处就是可以减少操作界面卡顿的Modelsim的UI哈哈。

Modelsim的安装,我提供一个版本。理论上任何版本都可。

链接:https://pan.baidu.com/s/18qhnIzfXLNVq0iqZF0TpHw?pwd=e722
提取码:e722

对于插件设置,点击ACTIONS里的Open Configuration Menu - Tools - General,第一个选项选择你需要的第三方软件,这里是Modelsim。
下面的执行模式,因为没有其他查看器,这里仍然使用原本的GUI。

Tools选项里的Modelsim设置,第一个就是安装目录,注意选择安装的主目录而不是下面那个win64的文件夹。
最下面的Additional run options for vsim选项,给vsim仿真命令加入-vopt -voptargs=+acc的选项,否则可能出现仿真Objects里面没有端口的问题。也可以在这里的选项添加其他命令来实现更多的限定和功能,比方说脚本自动化。具体命令选项可以查看Modelsim安装目录下面的说明文档。

所有设置完成后,即可使用此插件调用Modelsim进行仿真。

使用此插件仿真首先得创建一个工程,然后将所需代码添加到SOURCES里,将仿真的testbench设置为toplevel,即可在下方的RUNS里看到tb,点击Run就会调用Modelsim仿真。

在这里插入图片描述

  • 48
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: quartus是一种用于数字逻辑设计的软件工具,它主要用于FPGA设计和仿真Verilog HDL是一种硬件描述语言,它可以描述数字电路的行为和结构。 在数电课设中,我们可以使用quartus和Verilog HDL来设计和仿真交通灯。交通灯通常由红、黄、绿三个灯组成,每个灯有不同的显示状态。 首先,我们可以用Verilog HDL来描述交通灯的行为。我们可以定义三个灯的状态变量,使用一个计数器来控制灯的状态转换。例如,当计数器的值为0时,红灯亮,计数器的值为10时,绿灯亮,计数器的值为20时,黄灯亮。然后,我们可以通过更改计数器的值来模拟交通灯的状态变换。在Verilog HDL中,我们可以使用if语句和时钟信号来实现这些逻辑。 接下来,我们可以使用quartus来创建一个FPGA项目,并将我们的Verilog HDL代码添加到项目中。然后,我们可以进行逻辑编译、映射和布线,以及对设计进行时序仿真。在时序仿真中,我们可以模拟交通灯的行为,并观察灯的状态变化是否符合我们的设计。 最后,我们可以使用ModelSim作为仿真工具,结合quartus进行仿真。在ModelSim中,我们可以加载我们的设计文件,并设置仿真时钟。然后,我们可以运行仿真,并观察灯的状态变化以及整个交通灯系统的工作情况。 通过quartus和Verilog HDL的组合,我们可以很好地实现交通灯的设计和仿真。这样,我们就可以验证我们的设计是否正确,以及我们的交通灯系统的功能是否正常。这对于提高我们的数电课设水平和实践能力非常有帮助。 ### 回答2: Quartus是一种主要用于FPGA开发的设计软件,Verilog HDL是一种硬件描述语言,而ModelSim是一款大型数字电路仿真工具。下面将介绍如何使用Quartus和ModelSim仿真数电课设交通灯。 首先,我们需要使用Quartus来设计交通灯的电路。在Quartus中,我们可以使用原理图编辑器或者Verilog HDL进行电路设计。根据课设要求,我们需要设计一个有三个灯的交通红绿灯,包括红灯、黄灯和绿灯,以及根据交通信号控制它们变化的电路。在Quartus中,我们可以使用逻辑门、时钟等资源来实现交通灯电路的功能。 设计完成后,我们需要将设计导出到ModelSim中进行仿真。在ModelSim中,我们可以创建一个仿真模型,并向其添加所需的仿真源文件,其中包括我们在Quartus中设计的交通灯电路的源文件。然后,我们可以设置仿真的时钟频率和仿真结束时间,并执行仿真操作。 当仿真运行时,ModelSim将会模拟交通灯电路的行为,并生成相应的仿真波形图。通过查看这些波形图,我们可以检查交通灯是否按照预期进行切换,并且可以验证电路设计的正确性。如果需要,我们还可以对交通灯电路进行调试,并通过在仿真中添加信号触发器或者警示器来定位问题。 总结来说,使用Quartus和ModelSim可以方便地设计和仿真数电课设交通灯。通过Quartus进行电路设计,然后将设计导出到ModelSim中进行仿真,我们可以验证交通灯的功能和正确性。这种仿真方法可以帮助我们在实际实施之前发现和纠正潜在的问题,提高电路设计的可靠性和效率。 ### 回答3: quartus是一种集成开发环境,用于设计和仿真FPGA(现场可编程门阵列)的数字逻辑电路。Verilog HDL是一种硬件描述语言,用于描述和建立数字系统的模型。ModelSim是一种强大的模拟工具,可用于验证硬件设计。 在数电课设中,我们可以使用Quartus和Verilog HDL来设计和模拟一个交通灯系统。该系统可以包含交通灯的控制逻辑和状态转换。 首先,我们使用Quartus来建立一个新的项目,并选择适当的设备和引脚设置。然后,我们创建一个新的Verilog HDL模块,用于描述交通灯的行为。 在Verilog HDL代码中,我们定义三个状态变量:红灯(Red Light)、黄灯(Yellow Light)和绿灯(Green Light)。然后,我们使用条件语句和时钟周期控制状态变量的转换。 在模拟过程中,我们初始化状态变量,并使用时钟信号和触发事件来更新状态。我们可以使用ModelSim来模拟这个设计,并查看每个状态的变化和交通灯的行为。 例如,当红灯亮时,我们等待一定的时间后将其关闭,并将黄灯亮起一定的时间。然后,黄灯关闭后,我们将绿灯亮起一定时间,然后再切换回红灯。这样,我们可以模拟一个简单的交通灯系统的行为。 在模拟过程中,我们还可以进行时序分析和波形捕获,以确保交通灯系统的设计满足要求,并检测任何可能的问题或错误。 总之,使用Quartus、Verilog HDL和ModelSim,我们可以设计和模拟一个交通灯系统,以验证其行为和功能。这种方法可以帮助我们在实际制作交通灯系统之前进行仿真和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值