Sublime Text 2 和 Verilog HDL

Date  Fri 04 July 2014 Tags Sublime Text / Vivado

Sublime Text


代码编辑器之于程序员,就如同剑之于战士。程序员关于代码编辑器的争论从来就没有停止过,每个程序员都有自己熟悉的编辑器,他们热爱自己的 “武器”,甚至可以形成 “宗教”,比如 Vim 和 Emac 的战争。

如今,这个无休止的争论中要加入一个新成员了,她就是 Sublime Text 。其实她也不是 “新” 成员了,早在 2011 年她就诞生了,不过经过不断的改进,终于人们不得不正视这个新人,不仅仅因为漂亮的外在美,还有强大的内在美 :-P

个人感觉,ST 的出现恰到好处,她兼具了 Vim 的强大功能和普通编辑器的易用性。虽然 Vim 轻巧、强大,但是 Vim 的门槛比较高,要想用好 Vim 是需要长期练习的,而 ST 可以说是老少皆宜,你是小白,不会用 Vim?没关系,她可以像普通的编辑器一样,即使你 0 基础也可以使用;你是老手,习惯 Vim?也没关系,她可以 开启 Vim 模式,还是原来的配方,还是熟悉的味道~

虽然她不是开源项目,有收费,但是我们有免费无限制无限期的试用权,而且她绿色小巧,不用安装,解压即可使用,跨平台,支持各种编程语言的代码补全和语法高亮。如果对现有的插件不满意,我们甚至可以自己定制插件。

简单说一下我在使用过程中的一些问题,更加详细的使用官方和非官方的网站上都有详细的说明,还有别人总结的技巧请自行 Google。

Official docs

Unofficial docs

Others: Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux

P.S. 我使用的是 Sublime Text 2,虽然已经有 3 了,但是 3 还在 Beta 阶段,大家貌似对 3 不是很满意

Vim Mode


ST 是自带 Vim 模式的(Vintage Mode),但是这个模式默认是没有开启的,毕竟对于大多数普通人来说, Vim 实在是不太友好...

打开 ST 的 Preferences/Setting - Defalut,在最后一行有句

  1. "ignored_packages": ["Vintage"]

只需要将方括号中的 Vintage 去掉就可以了。推荐在 Setting - User 中修改。

官方说明

Package Control


ST 的一个强大之处就在于可以安装各种插件,要安装插件有两种方法:

  1. 手动下载,解压到指定目录

  2. 安装 Package Control 插件,自动管理安装插件

第一种方法虽然麻烦,但是在没有网络的环境下,我们可以从别人那拷贝过来即可;第二种方法最方便了,不过要求有网络。

Installation

ST 默认是没有安装 Package Control 的,需要我们手动安装:

  1. Ctrl ~ 调出控制台

  2. 在控制台中粘贴以下命令

    1. import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
  3. 安装完成之后,重启 ST 即可

Using

按下 Ctrl + Shift + P,在弹出的命令面板,输入 package,就会自动弹出相关的命令,可以选择 InstallRemoveDisableEnableListUpdate 等命令。

sublime wbond 上列出了 Package Control 可以找到的所有的插件,有详细的安装和使用说明。

网上也有很多文章介绍了大量的常用插件,我们可以按照需求自己挑选需要的插件进行安装。

Verilog HDL


常用的插件,比如括号匹配、智能补全、自动对齐、Tags、注释生成、Terminal、Build、Git 等插件就不再赘述了,说一下网上介绍的比较少,但我自己使用比较多的关于 Verilog 的插件。

可以通过 Package 下载到两个插件,Verilog 和Verilog-Automatic。第一个插件主要功能是支持 Verilog 的代码高亮和补全,第二个插件可以帮助我们自动生成模块例化、端口添加连接等功能。

其中,第一个插件的 Snippet 并不太让人满意,在原 Snippet 的基础上,我添加了一些我常用到的 Snippets。

always

因为插件作者只添加了异步高有效复位方式的 always 块,而我们同步和异步两种方式都可能会用到,所以,我添加同步复位的 Snippet

ST 2 的 Package 都存放在 /home/.config/sublime-text-2/Packages 目录下面,我们需要修改的就是这个目录下的 Verilog/Snippets下的 .tmSnippet 文件。修改后的结果如下:

always_async.tmSnippet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prop ertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>content</key>
  6. <string>always @(posedge clk or ${1:posedge} ${2:rst}) begin
  7. if ($2) begin
  8. // reset
  9. $3
  10. end
  11. else if ($4) begin
  12. $0
  13. end
  14. end</string>
  15. <key>name</key>
  16. <string>always_async</string>
  17. <key>scope</key>
  18. <string>source.verilog</string>
  19. <key>tabTrigger</key>
  20. <string>always_async</string>
  21. <key>uuid</key>
  22. <string>026B3DA6-E1B4-4F09-B7B6-9485ADEF34DC</string>
  23. </dict>
  24. </plist>

always_sync.tmSnippet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prop ertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>content</key>
  6. <string>always @(posedge clk) begin
  7. if (${1:rst}) begin
  8. // reset
  9. $2
  10. end
  11. else begin
  12. $0
  13. end
  14. end</string>
  15. <key>name</key>
  16. <string>always_sync</string>
  17. <key>scope</key>
  18. <string>source.verilog</string>
  19. <key>tabTrigger</key>
  20. <string>always_sync</string>
  21. <key>uuid</key>
  22. <string>026B3DA6-E1B4-4F09-B7B6-9485ADEF34DC</string>
  23. </dict>
  24. </plist>

修改之后的结果如下图所示:

if-else

原来的 if snippet 没有 else 分支,所以,添加了一个有 else 分支的 if 语句。

if.tmSnippet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prop ertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>content</key>
  6. <string>if ($1) begin
  7. $0
  8. end</string>
  9. <key>name</key>
  10. <string>if</string>
  11. <key>scope</key>
  12. <string>source.verilog</string>
  13. <key>tabTrigger</key>
  14. <string>if</string>
  15. <key>uuid</key>
  16. <string>1ADE2F84-DDB8-4878-8BFC-B7FC2F391C6C</string>
  17. </dict>
  18. </plist>

if-else.tmSnippet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prop ertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>content</key>
  6. <string>if ($1) begin
  7. $2
  8. end
  9. else begin
  10. $0
  11. end</string>
  12. <key>name</key>
  13. <string>if_else</string>
  14. <key>scope</key>
  15. <string>source.verilog</string>
  16. <key>tabTrigger</key>
  17. <string>if_else</string>
  18. <key>uuid</key>
  19. <string>1ADE2F84-DDB8-4878-8BFC-B7FC2F391C6C</string>
  20. </dict>
  21. </plist>

修改后的结果如下图:

parameter

原来是没有 parameter 的snippets 的,拷贝一份其他的 snippet,修改其中的一些设置,即可

parameter.tmSnippet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prop ertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>content</key>
  6. <string>parameter $1 = $2,
  7. $3 = $0
  8. </string>
  9. <key>name</key>
  10. <string>parameter</string>
  11. <key>scope</key>
  12. <string>source.verilog</string>
  13. <key>tabTrigger</key>
  14. <string>parameter</string>
  15. <key>uuid</key>
  16. <string>1ADE2F84-DDB8-4878-8BFC-B7FC2F391C6C</string>
  17. </dict>
  18. </plist>

修改后的结果如下图所示:

case

原来是没有 case 的 snippet,方法同上,可以修改出我们想要的 case snippet

case.tmSnippet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prop ertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>content</key>
  6. <string>case ($1)
  7. $2: begin
  8. $3
  9. end
  10. $4: begin
  11. $5
  12. end
  13. $6: begin
  14. $7
  15. end
  16. $8: begin
  17. $9
  18. end
  19. default: begin
  20. $10
  21. end
  22. endcase</string>
  23. <key>name</key>
  24. <string>case</string>
  25. <key>scope</key>
  26. <string>source.verilog</string>
  27. <key>tabTrigger</key>
  28. <string>case</string>
  29. <key>uuid</key>
  30. <string>026B3DA6-E1B4-4F09-B7B6-9485ADEF34DC</string>
  31. </dict>
  32. </plist>

修改后的效果如下:

SublimeText in Vivado


代码编辑器之于程序员就像武器之于战士,其重要性不需赘述,本文记录一下设置 SublimeText 为 Vivado 的代码编辑器的过程。

Ref: How to setup an external text editor in Xilinx ISE & EDK

是讲 ISE 和 EDK 的设置,同理可以将其推广到 Vivado 中,其实 Vivado 已经将常见的编辑器列出来了,其中就包含 Sublime,但是因为我没有将 Sublime 包含在系统路径中,所以需要选择 custom editor 选项:

  1. D:/Sublime_Text_3/sublime_text.exe [file name]:[line number]

即可。

上面仅仅说了非常基本的几个设置,和我在写 Verilog 时自己添加的几个 snippet,其他的 ST 的使用技巧官方和非官方的 ref 有非常详细的介绍,另外其他人也有很多文章介绍~

转载自:http://guqian110.github.io/pages/2014/07/04/sublime_text_2_and_verilog.html

Sublime Text 2 和 Verilog HDL的更多相关文章

  1. 用Sublime Text搭建简易IDE编写Verilog代码

    前言 Verilog是一种硬件描述语言(HDL),该语言在Windows上有集成开发环境可以使用,如ModelSim,但ModelSim的编辑器不太好用因此笔者萌生了用Sublime Text3来编写 ...

  2. 【编辑器】【Sublime Text】使用笔记

    1.安装 官网下载即可 2.插件 sublime-text - Sublime Text 怎么高亮 Markdown 的文件语法 设置Sublime为VIM模式 如何在sublime 里面设置 ver ...

  3. 如何高效的编写Verilog HDL——进阶版

    博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad++来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟 ...

  4. sublime text 2使用方法

    笔者用过的一些软件用来写Verilog代码,比如notepad+,ultra,editplus等,近日在群里看到大家在讨论一个比较有意思的软件,sublime text,才发现有种相见恨晚的感觉,其实 ...

  5. 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...

  6. 环境搭建基础知识2(sublime text3中配置verilog语法高亮)

    需求说明:Verilog设计 内容       :verilog开发环境搭建 来自       :时间的诗 1 软件下载 1.1 官方下载 地址http://www.sublimetext.com/3 ...

  7. 流水线cpu —Verilog HDL

    一.准备工作 先看看书(<计算机原理与设计 Verilog HDL版>),搞懂一点原理.然后照着书上的代码写一写(用8.4的就可以了,不用8.6的). 注意mux2x32,mux4,cla ...

  8. Sublime Text 3中文乱码解决方法以及安装包管理器方法

    一般出现乱码是因为文本采用了GBK编码格式,Sublime Text默认不支持GBK编码. 安装包管理器 简单安装 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令 ...

  9. 在Sublime Text 3上安装代码格式化插件CodeFormatter

    1.了解CodeFormatter插件 在Sublime Text 3中编写代码,为了能让我们的代码格式变得漂亮整洁,需要一个能自动格式代码的插件.这里发现CodeFormatter插件不错,它能支持 ...

随机推荐

  1. Lua-简洁、轻量、可扩展的脚本语言

    转自:http://rmingwang.com/The-Programming-Language-Lua.html 1. 一.Lua安装及常用库的安装 2. 1.1 Ubuntu $ sudo apt ...

  2. Mac系统使用VS Code编译Bootstrap 4

    环境: macOS 10.13.6 node.js 8.11.3 sass 1.10.3 bootstrap 4.1.3 vs code 1.25.1 Bootstrap3为我们提供了在线编译工具,可 ...

  3. jQuery中,选择器既匹配开头又匹配结尾

    jQuery中,选择器既匹配开头又匹配结尾的方法: [attr^=val]attr$=val [attr^=val][attr$=val]

  4. Dev之ribbon设置

  5. 一步一步学RenderMonkey(4)--点光源光照模型 【转】

    转载请注明出处:http://blog.csdn.net/tianhai110 点光源光照模型: 公式: I = Icolor*attenuation;                        ...

  6. 《大规模web服务开发技术》笔记

    前段时间趁空把<大规模web服务开发技术>这本书看完了,今天用一下午时间重新翻了一遍,把其中的要点记了下来,权当复习和备忘.由于自己对数据压缩.全文检索等还算比较熟,所以笔记内容主要涉及前 ...

  7. centos关于vsftpd的配置、配置说明及常见问题

    一.安装vsftpd 安装yum install -y vsftpd 开机启动 chkconfig vsftpd on 启动 service vsftpd start 加入防火墙 vi /etc/sy ...

  8. mybatis paramType String Error

    我这么写的 <select id="getHotPlayersByDate" parameterType="java.lang.String" resul ...

  9. Silverlight 安装失败 提示 消息 ID 1603 的解决方法

    消息 ID: 1603 安装过程中出现错误.请执行以下步骤 原因是在以前安装过silverlight,没有安装成功或者没有彻底卸载干净,遗留了一些文件,尤其是安装时突然中断的时候会出现这个问题. 解决 ...

  10. 动态网站技术CGI

    递信息的规程.CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静三种主流的动态网站技术: ASP JSP PHP 除之外,此还要了解的动态网站技术 ...