自从Xilinx官方从ISE升级为Xilinx后,无法再用软件自动生成testbench文件了,给FPGA工程师带来不少麻烦。
不过Xilinx官方提供了tcl商店以丰富Xilinx软件功能,其中就有生成testbench的tcl脚本提供下载。但是使用起来还是比较麻烦,必须让那个模块成为顶层并进入Elaborate, Synthesize或者implement界面,然后用tcl指令生成。
网上也有生成testbench的Perl或者Python的脚本代码,但是使用起来还是有点麻烦,因为需要在命令行敲指令才能完成testbench的生成。
不过后来发现Vim,Sublime,Notepad++这几种比较主流的编辑器都有生成testbench的功能,直接按快捷键就可以生成了,只是自动生成的testbench比较简单,又无法自己修改插件而已。
后来本人发现VSCode是个颜值很高的编辑器,于是转投VSCode,而且VSCode具有snippets的功能,可以提高效率,Vivado也可以调用VSCode,在Tools->Setting->Text Editor选择Custom Editor,指令为"...(自己电脑的地址)//Microsoft VS Code//Code.exe" -g [file name]:[line number]。
很遗憾的是VSCode只有基础语法的插件,没有testbench自动生成插件,于是本人结合网上他人python生成testbench的脚本写了一个VSCode生成testbench的插件。由于VSCode目前只支持typescript和Javascript语言开发,但本人并不熟悉,而且官网提供的文档也并不完善,所以使用typescript建立一个命令行窗口调用python脚本生成testbench和模块例化代码。
在编写插件代码时,当前的窗口可以用下面语句获取:
let editor = vscode.window.activeTextEditor;
选取的内容为editor.selection; let text = editor.document.getText(selection);
其中文本长度text.length
当前操作的文件名为editor.document.fileName
工程目录的out目录绝对值为__dirname
创建命令行窗口并输入命令行指令
let terminal1 = vscode.window.createTerminal({name:'new'});
terminal1.show(true);
terminal1.sendText(`...`);
该插件的源代码可以在github上下载:https://github.com/truecrab/VSCode_Extension_Verilog。
现在该插件已经在VSCode的应用市场上架了,名字是Verilog_Testbench,欢迎大家下载使用,有问题可以在博客留言。
关于Vivado的其他技巧,可参考:Vivado工程经验与时序收敛技巧