vscode全部报错_用VSCode编辑verilog代码、iverilog编译、自动例化、自动补全、自动格式化等常用插件...
------------2020.12.24------------windows10------------绪论一个好用的编辑器,就好比斧头之于伐木工,锋利的、自动化的,能极大的提高工作效率。能编辑verilog代码的工具有很多:notepad++、Sublime、VSCode、Vivado、Quartus等等。其中的VSCode就目前而言,未必是完美的编辑器,但一定是充满魅力的、有着无限潜力的
------------2020.12.24------------windows10------------
绪论
- 一个好用的编辑器,就好比斧头之于伐木工,锋利的、自动化的,能极大的提高工作效率。
- 能编辑verilog代码的工具有很多:notepad++、Sublime、VSCode、Vivado、Quartus等等。
- 其中的VSCode就目前而言,未必是完美的编辑器,但一定是充满魅力的、有着无限潜力的。
- 语法高亮、自动补全、自动检错、自动排版、版本管理,只有你想不到,没有vscode做不到。
第0章 熟悉VSCode
下载、安装、安装中文插件、首选项-设置、文件比较、快捷键、主题、编码、用户代码片段、配置python环境、git版本管理 等。
请参见:
ljgibbs:VSCode 布道指南 V1.0 (一)zhuanlan.zhihu.com
好的,到这里,你已经熟悉了VSCode。但想愉快的书写verilog代码却并不轻松。
下面我们让我们新建一个文件夹"folder",并在vscode中打开这个文件夹;然后新建一个"src"文件夹存放源代码,写两个简单的verilog代码"code.v"和"tb_code.v":
第一章 VSCode+iverilog+GTKWave
首先,在扩展里搜索"verilog",找到下载人数最多的这个插件:Verilog-HDL/System...
点一下“安装”按钮即可完成安装,此时我们发现code.v里面的代码有了颜色,但它并没有自动检错的功能。
这时候,我们需要阅读这个插件的说明了解插件的用途,并按照说明配置这个插件。
这样的英文说明可能对于您来说并不友好,您可以点击插件的名字前往"VS Code Marketplace":
插件的官网:
Visual Studio Marketplacemarketplace.visualstudio.com
这个时候chrome浏览器的网页翻译就能帮助您很多。
并且您还可以去插件的GitHub官网去寻求更多帮助。
您可能需要花些时间才能理解这个英文说明,但长话短说,首先我们需要安装ctags
并将ctags添加到环境变量path,例如 新建 D:ctags(根据你的实际情况)
然后打开这个插件的设置(小齿轮图标)
是的,这里不用修改,直接填默认的catgs就行
这个时候,我们可以右键-转到定义,来验证是否成功安装ctags
接下来,我们需要在设置里面选择一个合适的Linter,通常选择免费开源的iverilog,它的作用是编译文件,有了它才能实现自动检错。
我们需要去iverilog官网安装iverilog(iverilog附带gtkwave,而且安装的时候自己就添加了环境变量)。相信这对成功安装了ctags的你而言并不难。
全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程 - whik - 博客园www.cnblogs.com
vscode的插件,调用iverilog编译,生成.o文件。vvp命令可以生成.vcd文件,gtkwave可以直接打开.vcd文件查看波形。
下面通过自动检错功能,来验证您是否成功安装了iverilog:
(请注意,只有按下了Ctrl+S 保存按钮,才会检错,其他时候不会检错)
按下 Ctrl+~ 查看报错信息
但是,即使你代码全部正确,你会发现它依然有报错:
报错信息:Unknown module type
这是因为"编译"都是单个文件编译的,多个文件编译需要"链接",虽然都是iverilog一个人完成任务,但你至少要用命令告诉iverilog一些参数。显然vscode的这个Verilog-HDL/System...插件并没有这么智能。我们只能看这个插件的说明、去github询问插件开发者、去看iverilog的官方文档,看看如何设置配置文件来抑制此类错误。
iverilog的文档还是比较难找的......
Icarus Verilogiverilog.fandom.com
我们查阅到资料,使用"-i"命令可以抑制此类错误,即iverilog编译器不再检查模块实例化的时候引用的模块是否已经定义,不论正确与错误都不报错。显然这是权宜之计,但我也没有更好的办法。
打开Verilog-HDL/System...的设置界面,添加"-i"命令参数。
这个时候打开tb_code.v文件,按ctrl+s保存,发现检错功能正常。
下面我们摆脱vscode编辑器的束缚,在CMD敲命令行代码,调用iverilog编译生成.o文件,然后用vvp命令生成.vcd波形文件(需要在testbench仿真模块"tb_code"里添加下面的代码,不然不会生成.vcd文件),然后用gtkwave打开.vcd波形文件查看波形。
/* 生成vcd波形文件,用iverilog+GTKwave进行仿真所需的临时的vcd波形文件 */
initial begin
$dumpfile("./build/wave.vcd"); // 指定VCD文件的名字为wave.vcd,仿真信息将记录到此文件
$dumpvars(0, tb_code ); // 指定层次数为0,则tb_code 模块及其下面各层次的所有信号将被记录
#10000 $finish;
end
网上找资料也会看到有人在激励模块(仿真模块)添加这样的代码:
initial begin
$dumpfile("wave.vcd"); // 指定VCD文件的名字为wave.vcd,仿真信息将记录到此文件
$dumpvars(0, tb_code ); // 指定层次数为0,则tb_code 模块及其下面各层次的所有信号将被记录
end
我个人是因为希望把编译仿真生成的文件都放到"build"文件夹里,源代码都放到"src"文件夹里,所以我用的是"$dumpfile("./build/wave.vcd");"。
但是很多插件只能支持网上的那种最简单的写法,不然找不到.vcd文件。
还有就是"#10000 $finish;"是怕你一直仿真停不下来,按ctrl+c可强制结束。
然后我们在vscode按下" Ctrl+~ "打开cmd终端(或者点击开始菜单,搜索cmd,但是要cd到工程文件夹)
输入:
md build
iverilog -o ./build/a.out ./src/tb_code.v ./src/code.v
vvp -n ./build/a.out
gtkwave ./build/wave.vcd
这几个命令很好理解。
"md build"创建build文件夹用于存放编译仿真生成的文件
./src/或者说是.src 源代码source都放在了src文件夹里,"."(点)的意思是当前位置,也就是这个位置:
iverilog作用是编译文件,比如设计模块的代码和仿真模块的代码都在一个test.v文件里,那么编译这个文件只需要命令"iverilog test.v"
可是如果设计模块代码写在了code.v文件里,仿真模块的代码写在了tbcode.v文件里,那么只需要把所有的文件名字全都缀在后面即可"iverilog code.v tb_code.v"
iverilog的参数"-o <path>"是可以省略的,"-o"命令指定编译后生成的.out文件的名字,如果不指定会生成默认的名字,这里我们"-o ./build/a.out"命令生成的是build文件夹下的a.out文件。
"vvp a.out"命令是生成.vcd波形文件,需要在testbench仿真模块(激励模块)添加几行代码(前面有说)
vvp 的“ -n ”参数其实没啥用,因为在仿真模块里,"$finish"是结束仿真的意思,可是有的时候会用到"$stop"暂停仿真 ,暂停的话其实就没有结束,你需要输入"finish"才能结束,你输入"exit"、"exit()"、"ctrl+c"、"ESC"、"stop"、":exit"全都没有用!当然继续仿真100ns我其实不太清楚,在vivado却很方便。"-n"的意思就是把"$stop"当成"$finish"处理了,权宜之计,更多的仿真功能我也不太会。
"gtkwave wave.vcd"意思就是用gtkwave.exe打开.vcd文件,当然你也可以用其他的软件打开。然后就可以看到波形了
当然,你也可以右键.vcd文件,在资源管理器中显示
然后双击打开,或者选择打开方式gtkwave.exe
当然如果你安装了这个插件WaveTrave
你甚至可以在vscode中直接双击打开你得.vcd文件,是不是很酷呢~
只不过这个插件似乎要收费呢?...
当然有一些插件自动编译和仿真,但是我更推荐大家自己写命令(可以把命令保存在"代码片段"里面,很方便快速,方便修改更加灵活),而vscode有几个自动编译仿真的插件,我感觉挺憨憨的。当然这只是权宜之计,随着设计变得更大,它们会散布在数十个甚至数百个文件中。(你不可能iverilog命令后面跟着几百个文件名字,这些文件还在不同的文件夹内)。当设计是如此复杂时,就需要更高级的源代码管理技术。(简称其他高级设计管理技术)。当然,我个人感觉这个时候直接用vivado、quartus好了,用什么vscode。
As designs get even larger, they become spread across many dozens or even hundreds of files. When designs are that complex, more advanced source code management techniques become necessary. These are described in later chapters, along with other advanced design management techniques supported by Icarus Verilog.
第二章 自动生成例化,自动生成testbench
是的,您第一章安装的第一个插件Verilog-HDL/System...就有自动例化功能
按F1或者Ctrl+Shift+P,输入
verilog:instantiate
非常的好用,但是不够完美。
当然还有一个插件Verilog_Testbench,直接把整个testbench仿真模块(激励模块)的框架(例子)给你写好,而且非常的智能,你所需要的仅仅是复制。
它有自动例化、自动生成testbench功能,但您在安装这个插件的时候可能会遇到不小的困难。
第一点,它需要您的电脑安装python3以上,并且添加环境变量。您可以在cmd输入python命令来检查是否成功。
第二点,您可能只能得到乱码的输出,为此您需要获取额外的帮助在该插件的GitHub上。
请参阅博客
Vscode自动生成verilog例化 - 小翁同学 - 博客园www.cnblogs.com
第三章 自动排版、自动格式化
安装插件Verilog Format
首先,您需要去Visual Studio Marketplace阅读说明,发现您需要去该插件的GitHub下载并安装verilog-format-WIN.zip,
然后去设置选项里面正确填写刚刚安装的“.exe”路径和配置文件“.properties”的路径。
然后你就可以右键格式化文档了
但是你会被链接到一个下载Java的网页...
是的,你需要手动安装 jdk-8u271-windows-x64
注意是8u271版本哦
这里的下载过程、安装过程、添加环境变量过程都非常复杂
请参阅博客
windows系统安装Java(详细版) - Windows_XP - 博客园www.cnblogs.com最后,你右键格式化,发现中文注释会乱码......
然后你百思不得其解,网上的帮助也少的可怜。
然后你只能去github向作者寻求帮助
是的,您的jdk-8u271-windows-x64默认编码并不是UTF-8
请参阅博客:
将JDK默认编码设置为UTF-8 - 你啊347 - 博客园www.cnblogs.com
好的,这把可以正常自动格式化排版了,但是排版排的比较丑,不是我想要的。怎么办呢,看说明,编辑配置文件,发现配置文件无效!
其实因为这个插件有个小bug,作者漏了一个"s",见GitHub大神解答
https://github.com/ericsonj/vscode-verilogformar/issues/1github.com第四章 其他编码问题
你得CMD默认编码不是UTF-8
解决 VS Code输出字符串乱码问题blog.csdn.net
你的电脑默认编码不是UTF-8
vscode输出窗口中文乱码 | AMAHVblog.amahv.cn
第五章 其他插件
TabOut帮助您无需点击鼠标即可跳出括号
Better Comments可以让你得注释有突出颜色的标记,例如 标记 todo
Rainbow Brackets可以使得您的括号拥有更清楚的色彩
Verilog Snippet可以提供更多的自动补全。
虽然Verilog-HDL/System...自带部分自自动补全,并且Verilog Snippet显得更加冗余,但后者的自动补全功能更丰富些
我们可以前往Verilog-HDL/System...插件的安装位置修改插件的配置
C:Users用户名.vscodeextensionsmshr-h.veriloghdl-1.3.6snippets
因为Verilog-HDL/System...与Verilog Snippet俩插件,有些代码片段是重复的。
其实关于自动补全,您可以前往"文件-首选项-用户片段",来添加您自己的代码,虽然这个操作目前还是比较麻烦的。
vscode可能自带了设置同步(不确定)
你最好还需要一个插件用于设置同步Settings Sync
无论如何你都需要一个github账号,后者还需要你手动创建一个Gist(类似于文件夹,存放设置和配置的地方),甚至可能需要手动创建一个token(类似密码,不是谁都可以访问你的GitHub的)(也可能用不着手动复制粘贴token,你只需要登录一下你的github并授权),具体的请自行百度吧,万一配置丢了我可不敢负责QAQ。
第六章 总结
最近也在尝试Sublime Text 3,发现和vscode大同小异。
我装了Sublime一些基础功能(比如语法高亮、自动检错、ctags转到定义、设置同步、代码片段)的插件,但是更高效的自动化插件(比如一键格式化排版,一键自动生成testbench)我就不是很清楚了。
iverilog+GTKwave编译仿真,其实和用什么的编辑器(vscode编辑器、sublime编辑器)没什么太大关系,只不过自动检错的时候需要用到iverilog。iverilog+GTKwave编译仿真只需要在cmd终端输入简单的几行命令,又快又方便面,比vivado和quartus方便多了,正所谓:开源的能解决90%的工作,付费的能解决100%的工作,但你只需要付出10%的license。
但是我感觉,免费的插件靠的是热情,可能不是完美的,但具有高度的可拓展性,你可以调教成为最适合自己的。
最后,工具而已,洗洗睡了。明天开始正式学习verilog基础语法,踏上FPGA征途的第一步。
更多推荐
所有评论(0)