为了高效开发VHDL/Verilog,使用的编辑器一般会有很多的插件便于用户的开发,比如自动生成测试文件的插件(我当初也发过相关的脚本),语法的检测,模块的联想自动补充,这些插件提供的都属于通用的功能,那么如何设计自己定制化的模板和代码片段联想呢?Vscode提供了自己的接口,这个接口使用json写的。
Vscode提供非常方便的接口来供用户自己实现这些小的功能,相比较我之前发的生成TB脚本,这篇文章要讲的更加简单。我以VHDL的json文件为例(实现Verilog的联想一致)
模板的开头,实现调用文件名,调用当前年份,开始写代码的时间
![图片[1]-Vscode中自动生成Verilog/VHDL模板以及代码自动联想-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/31667647834.png)
代码如下:
{
"VHDL module": {
// "scope": "VHDL",
"prefix": "VHDL Aries",
"body": [
"------------------------------------------------------------------------------------------------",
"--",
"-- Coding: UTF-8",
"-- @File : $TM_FILENAME",
"-- @Version : 1.0",
"-- @Author : AriesOpenFPGA",
"-- @Email : 2577802337@qq.com",
"-- @License : (C)Copyright 2019-$CURRENT_YEAR,AriesOpenFPGA",
"-- @Time : $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND",
"-- Description:",
"--",
"------------------------------------------------------------------------------------------------",
" ",
"library ieee;",
"use ieee.std_logic_1164.all;",
"",
"",
"entity $TM_FILENAME_BASE$1 is",
"tgeneric (width :positive := 8);t-- ",
"tport (",
"ttclk : in std_logic;",
"ttrst : in std_logic;",
"ttDate_i : in std_logic_vector (width-1 downto 0);",
"ttDate_o : out std_logic_vector (width-1 downto 0)",
"t);",
"end $TM_FILENAME_BASE$1;",
"",
"architecture rtl$2 of $TM_FILENAME_BASE$1 is",
"signal",
"signal",
"",
"begin",
"end rtl$2;",
],
"description": "VHDL module"
},
部分命令:
调取文件名(包含扩展):
$TM_FILENAME
调取时间命令代码:
$CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND
调用文件名(不包含扩展)
$TM_FILENAME_BASE
光标定位处(主要为了方便修改文件内不同处的相同文本,摁Tab切换光标位置):
$1(第一处光标) $2(第二处光标)
例如:VHDL的实体名会多次在不同地方出现(如视频中所示)。
空格(有几个t就空几空格):
tt
有其它命令需求,请读者自行查阅资料。
如何插入到Vscode?
打开文件-首选项-用户片段
![图片[2]-Vscode中自动生成Verilog/VHDL模板以及代码自动联想-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/41667647835.png)
可以选择全局的文件,如下图提示,也可以选择为特定拓展名设置代码片段,我上面选的是全局,选择完会给一个简单的例子教你怎么做,然后就可以根据自己的需求写代码了。
![图片[3]-Vscode中自动生成Verilog/VHDL模板以及代码自动联想-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/51667647836.png)
总结
根据自己的习惯可以定义规范化的代码风格,比如,很多人都会写自己的模块库,每次例化可能都要重新敲一遍,但有这种联想的功能,只需要自己先写好json便可以在文件中非常快速的调用自己的子模块,当然这仅限于是自己写的接口。如果需要对别人的代码进行例化(命名规则和自己完全不同)或生成TB,则需要使用脚本文件,我之前发过关于Python 生成Verilog测试文件的脚本,感兴趣可以看看。





没有回复内容