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

    文章

    1340

    浏览量

    109904
  • 代码
    +关注

    关注

    30

    文章

    4708

    浏览量

    68174
  • 编辑器
    +关注

    关注

    1

    文章

    800

    浏览量

    31032
收藏 人收藏

    评论

    相关推荐

    system verilog语言简介

    ICer需要System Verilog语言得加成,这是ICer深度的表现。
    发表于 11-01 10:44 0次下载

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识。
    的头像 发表于 10-24 15:00 111次阅读
    <b class='flag-5'>Verilog</b> HDL的基础知识

    如何利用Verilog-A开发器件模型

    如何用Verilog-A来开发器件模型在建模领域将尤为重要。今天就来以简单的例子来介绍如何开发一个Verilog-A Model。
    的头像 发表于 10-18 14:16 186次阅读
    如何利用<b class='flag-5'>Verilog</b>-A开发器件模型

    使用MODE引脚进行简单的恒压调节

    电子发烧友网站提供《使用MODE引脚进行简单的恒压调节.pdf》资料免费下载
    发表于 08-30 10:05 0次下载
    使用<b class='flag-5'>MODE</b>引脚进行简单的恒压调节

    Verilog的版本有哪些

    电子发烧友网站提供《Verilog的版本有哪些.docx》资料免费下载
    发表于 05-31 11:29 0次下载

    verilog中input和output作用

    以完成各种计算和控制任务。本文将详细介绍input和output在Verilog中的作用及其使用方式。 一、input的作用及使用方式 作用 在Verilog中,input用于定义模块的输入端口。它表示模块能够接收外部信号或者其
    的头像 发表于 02-23 10:29 2708次阅读

    verilog与其他编程语言的接口机制

    Verilog是一种硬件描述语言,用于描述数字电路的行为和结构。与其他编程语言相比,Verilog具有与硬件紧密结合的特点,因此其接口机制也有一些与众不同之处。本文将详细介绍Verilog
    的头像 发表于 02-23 10:22 582次阅读

    verilog调用模块端口对应方式

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

    verilog双向端口的使用

    输出信号。本文将详细介绍Verilog双向端口的使用,并提供示例说明其在实际应用中的作用。 第一部分:双向端口的定义和语法 在Verilog中,可以使用wire声明一个双向端口。例如:wire bidirectional_por
    的头像 发表于 02-23 10:18 1184次阅读

    verilog function函数的用法

    Verilog 中被广泛用于对电路进行模块化设计,以简化和组织代码。 本文将详细介绍 Verilog 函数的用法,并探讨函数在硬件设计中的重要性和实际应用场景。 一. Verilog
    的头像 发表于 02-22 15:49 4723次阅读

    verilog同步和异步的区别 verilog阻塞赋值和非阻塞赋值的区别

    Verilog是一种硬件描述语言,用于设计和模拟数字电路。在Verilog中,同步和异步是用来描述数据传输和信号处理的两种不同方式,而阻塞赋值和非阻塞赋值是两种不同的赋值方式。本文将详细解释
    的头像 发表于 02-22 15:33 1391次阅读

    verilog的135个经典实例

    verilog的135个经典实例
    发表于 02-02 10:17 14次下载

    verilog bug的利器—notepad++介绍

    相信大家写verilog代码的时候,都会用到notepad++,大家也知道notepad++可以和vivado关联使用,这样写起工程代码的时候,调试很方便。
    的头像 发表于 12-21 09:41 1901次阅读
    找<b class='flag-5'>verilog</b> bug的利器—notepad++<b class='flag-5'>介绍</b>

    例说Verilog HDL和VHDL区别

    Verilog和VHDL之间的区别将在本文中通过示例进行详细说明。对优点和缺点的Verilog和VHDL进行了讨论。
    的头像 发表于 12-20 09:03 2881次阅读
    例说<b class='flag-5'>Verilog</b> HDL和VHDL区别

    讲一讲芯片设计中的verilog是什么

    相信不少人都听过verilog这个词,今天我就想讲一讲我所理解的verilog是什么。
    的头像 发表于 12-04 13:52 1027次阅读