0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Emacs的verilog-mode介绍

微云疏影 来源:ExASIC 作者:ExASIC 2023-01-24 17:01 次阅读

RTL顶层自动连线听说过吗?想学吗?我们今天就来介绍自动连线的神器——emacs verilog-mode。

emacs是什么?

江湖流传版:传说中神的编辑器。

维基百科版:Emacs(Editor MACroS,宏编辑器),最初由Richard Stallman于1975年在MIT协同Guy Lewis Steele Jr.共同完成。

verilog-mode是什么

官网的介绍:

Verilog-mode.el is the extremely popular free Verilog mode for Emacs which provides context-sensitive highlighting, auto indenting, and provides macro expansion capabilities to greatly reduce Verilog coding time. It supports AUTOs and indentation in Emacs for traditional Verilog (1394-2005), the Open Verification Methodology (OVM) and SystemVerilog (1800-2005/1800-2009).
Recent versions allow you to insert AUTOS in non-AUTO designs, so IP interconnect can be easily modified. You can also expand SystemVerilog ".*" port instantiations, to see what ports will be connected by the simulators.

简单点说就是支持Verilog、SystemVerilog(包括UVM)的emacs语法高亮文件。其中提到Verilog-mode支持Autos——这就是今天的重点。

Verilog-mode是由Michael McNamara mac@verilog.com和Wilson Snyder wsnyder@wsnyder.org编写。难能可贵的是,这个verilog-mode保持着每月都有更新。

值得一提的是Wilson Snyder就是SystemVerilog开源仿真器Verilator的作者。

verilog-mode Autos有哪些功能

手动编写的verilog代码:

image.png

由Autos处理后的Verilog代码:

image.pngimage.png

大家可以看到,verilog-mode自动分析出:

· 模块的端口输入和输出

· 内部变量

· 敏感信号列表

· 提取子模块的端口定义

自动提取子模块的端口定义来连线是今天的重点中的重点。一般来讲,我们实例化模块时大部分的信号名与子模块定义的名字一致即可。如上面代码中的:

image.png

特殊连接关系的处理

但常常我们顶层连接时会换一个名字。比如module A有一个输出端口dat_o,module B有一个输入端口dat_i,这两者怎么连?定义模版AUTO_TEMPLATE,如下:

手动编写的verilog:

image.png

由Autos处理后的verilog代码:

image.png

在哪里找子模块定义?

默认规则:

· 当前文件夹下找

· 当前找不到怎么办,指定搜索路径(与verilog仿真器的参数-y一样)

使用方法:在顶层endmodule后面指定verilog-library-directories,如下:

image.png

除了写模版还需要做什么?

只需要Ctrl-C Ctrl-A,仅此而已。

如果修改了子模块或者模版,再按一次Ctrl-C Ctrl-A。

更多功能

verilog-auto-arg for AUTOARG module instantiations

verilog-auto-ascii-enum for AUTOASCIIENUM enumeration decoding

verilog-auto-assign-modport for AUTOASSIGNMODPORT assignment to/from modport

verilog-auto-inout for AUTOINOUT making hierarchy inouts

verilog-auto-inout-comp for AUTOINOUTCOMP copy complemented i/o

verilog-auto-inout-in for AUTOINOUTIN inputs for all i/o

verilog-auto-inout-modport for AUTOINOUTMODPORT i/o from an interface modport

verilog-auto-inout-module for AUTOINOUTMODULE copying i/o from elsewhere

verilog-auto-inout-param for AUTOINOUTPARAM copying params from elsewhere

verilog-auto-input for AUTOINPUT making hierarchy inputs

verilog-auto-insert-lisp for AUTOINSERTLISP insert code from lisp function

verilog-auto-insert-last for AUTOINSERTLAST insert code from lisp function

verilog-auto-inst for AUTOINST instantiation pins

verilog-auto-star for AUTOINST .* SystemVerilog pins

verilog-auto-inst-param for AUTOINSTPARAM instantiation params

verilog-auto-logic for AUTOLOGIC declaring logic signals

verilog-auto-output for AUTOOUTPUT making hierarchy outputs

verilog-auto-output-every for AUTOOUTPUTEVERY making all outputs

verilog-auto-reg for AUTOREG registers

verilog-auto-reg-input for AUTOREGINPUT instantiation registers

verilog-auto-reset for AUTORESET flop resets

verilog-auto-sense for AUTOSENSE or AS always sensitivity lists

verilog-auto-tieoff for AUTOTIEOFF output tieoffs

verilog-auto-undef for AUTOUNDEF =`undef of local =`defines

verilog-auto-unused for AUTOUNUSED unused inputs/inouts

verilog-auto-wire for AUTOWIRE instantiation wires

verilog-read-defines for reading =`define values

verilog-read-includes for reading =`includes

verilog-mode下载、安装

新版的GNU Emacs自带verilog-mode,如果需要最新的verilog-mode可以在官网下载

VIM用户咋办?

可以用VIM调动shell命令执行(emacs批处理模式),例如:

:!emacs --batch <filenames.v> -f verilog-batch-auto

是不是很简单!

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1324

    浏览量

    109285
  • 代码
    +关注

    关注

    30

    文章

    4553

    浏览量

    66645
  • 编辑器
    +关注

    关注

    1

    文章

    787

    浏览量

    30124
收藏 人收藏

    评论

    相关推荐

    verilog调用模块端口对应方式

    Verilog是一种硬件描述语言(HDL),广泛应用于数字电路设计和硬件验证。在Verilog中,模块是构建电路的基本单元,而模块端口对应方式则用于描述模块之间信号传递的方式。本文将介绍
    的头像 发表于 02-23 10:20 364次阅读

    二十进制编码器及Verilog HDL描述 Verilog HDL程序的基本结构及特点

    节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。
    的头像 发表于 08-28 09:54 1309次阅读
    二十进制编码器及<b class='flag-5'>Verilog</b> HDL描述 <b class='flag-5'>Verilog</b> HDL程序的基本结构及特点

    SAS3808N Tri-Mode IOC产品介绍

    电子发烧友网站提供《SAS3808N Tri-Mode IOC产品介绍.pdf》资料免费下载
    发表于 08-23 15:13 0次下载
    SAS3808N Tri-<b class='flag-5'>Mode</b> IOC产品<b class='flag-5'>介绍</b>

    SAS3816 Tri-Mode IOC产品介绍

    电子发烧友网站提供《SAS3816 Tri-Mode IOC产品介绍.pdf》资料免费下载
    发表于 08-23 14:12 0次下载
    SAS3816 Tri-<b class='flag-5'>Mode</b> IOC产品<b class='flag-5'>介绍</b>

    SAS3516 Tri-Mode ROC产品介绍

    电子发烧友网站提供《SAS3516 Tri-Mode ROC产品介绍.pdf》资料免费下载
    发表于 08-23 10:54 0次下载
    SAS3516 Tri-<b class='flag-5'>Mode</b> ROC产品<b class='flag-5'>介绍</b>

    SAS3408 Tri-Mode IOC产品介绍

    电子发烧友网站提供《SAS3408 Tri-Mode IOC产品介绍.pdf》资料免费下载
    发表于 08-22 16:37 0次下载
    SAS3408 Tri-<b class='flag-5'>Mode</b> IOC产品<b class='flag-5'>介绍</b>

    SAS3908 Tri-Mode ROC产品介绍

    电子发烧友网站提供《SAS3908 Tri-Mode ROC产品介绍.pdf》资料免费下载
    发表于 08-22 14:44 0次下载
    SAS3908 Tri-<b class='flag-5'>Mode</b> ROC产品<b class='flag-5'>介绍</b>

    SAS3808 Tri-Mode IOC产品介绍

    电子发烧友网站提供《SAS3808 Tri-Mode IOC产品介绍.pdf》资料免费下载
    发表于 08-22 10:36 0次下载
    SAS3808 Tri-<b class='flag-5'>Mode</b> IOC产品<b class='flag-5'>介绍</b>

    介绍Verilog系统完整的8种编译指令

    以反引号(`)开始的某些标识符是 Verilog 系统编译指令。编译指令为 Verilog 代码的撰写、编译、调试等提供了极大的便利。
    的头像 发表于 05-29 16:43 1148次阅读

    Verilog的设计方法介绍

    Verilog 的设计多采用自上而下的设计方法(top-down)。即先定义顶层模块功能,进而分析要构成顶层模块的必要子模块;
    的头像 发表于 05-29 15:44 1020次阅读
    <b class='flag-5'>Verilog</b>的设计方法<b class='flag-5'>介绍</b>

    从仿真器的角度理解Verilog语言2

    只作为语法设定来介绍,忽略了Verilog语言的软件特性和仿真特性。使得初学者无法理解Verilog语言在行为级语法(过程块、赋值和延迟)背后隐藏的设计思想。本文尝试从仿真器的角度对Veril
    的头像 发表于 05-25 15:10 617次阅读
    从仿真器的角度理解<b class='flag-5'>Verilog</b>语言2

    从仿真器的角度理解Verilog语言1

    只作为语法设定来介绍,忽略了Verilog语言的软件特性和仿真特性。使得初学者无法理解Verilog语言在行为级语法(过程块、赋值和延迟)背后隐藏的设计思想。本文尝试从仿真器的角度对Veril
    的头像 发表于 05-25 15:10 669次阅读
    从仿真器的角度理解<b class='flag-5'>Verilog</b>语言1

    Verilog常用的循环语句及用途

    本文主要介绍verilog常用的循环语句,循环语句的用途,主要是可以多次执行相同的代码或逻辑。
    的头像 发表于 05-12 18:26 1220次阅读

    Verilog边沿检测的基本原理和代码实现

    本文将从Verilog和边沿检测的基本概念入手,介绍Verilog边沿检测的原理和应用代码示例。
    的头像 发表于 05-12 17:05 2292次阅读
    <b class='flag-5'>Verilog</b>边沿检测的基本原理和代码实现

    Verilog中的If语句和case语句介绍

    我们在上一篇文章中已经看到了如何使用程序块(例如 always 块来编写按顺序执行的 verilog 代码。 我们还可以在程序块中使用许多语句来控制在我们的verilog设计中信号赋值的方式
    的头像 发表于 05-11 15:37 3043次阅读
    <b class='flag-5'>Verilog</b>中的If语句和case语句<b class='flag-5'>介绍</b>