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
    +关注

    关注

    30

    文章

    1370

    浏览量

    114153
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73156
  • 编辑器
    +关注

    关注

    1

    文章

    826

    浏览量

    32653
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    如何利用Verilog HDL在FPGA上实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA上实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在FPGA中实现SRAM读写测试,包括设计SRAM接口模块
    的头像 发表于 10-22 17:21 3966次阅读
    如何利用<b class='flag-5'>Verilog</b> HDL在FPGA上实现SRAM的读写测试

    如何在Linux系统开启Persistence Mode

    难道是驱动老旧?资源不足?系统问题?都不是——真相藏在一个容易被忽略的小设置里:Persistence Mode(持久模式)。
    的头像 发表于 08-13 14:27 826次阅读
    如何在Linux系统开启Persistence <b class='flag-5'>Mode</b>

    verilog模块的调用、任务和函数

    在做模块划分时,通常会出现这种情形,某个大的模块中包含了一个或多个功能子模块,verilog是通过模块调用或称为模块实例化的方式来实现这些子模块与高层模块的连接的.
    的头像 发表于 05-03 10:29 1292次阅读
    <b class='flag-5'>verilog</b>模块的调用、任务和函数

    PIN_MODE_0工作模式是什么

    BLINKY_TASK_PRIO (osPriority_t)(17) static void *blinky_task(const char *arg) { unused(arg); uapi_pin_set_mode
    发表于 04-04 09:21

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般
    的头像 发表于 03-27 13:30 1089次阅读
    FPGA <b class='flag-5'>Verilog</b> HDL语法之编译预处理

    Nexperia扩展E-mode GaN FET产品组合

    Nexperia近日宣布其E-mode GaN FET产品组合新增12款新器件。本次产品发布旨在满足市场对更高效、更紧凑系统日益增长的需求。这些新型低压和高压E-mode GaN FET适用于多个
    的头像 发表于 03-19 17:16 1113次阅读

    一文详解Verilog HDL

    Verilog HDL(Hardware Description Language)是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。现实生活中多用于专用集成电路
    的头像 发表于 03-17 15:17 3787次阅读
    一文详解<b class='flag-5'>Verilog</b> HDL

    Verilog中signed和$signed()的用法

    1、在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法
    的头像 发表于 02-17 17:47 1191次阅读
    <b class='flag-5'>Verilog</b>中signed和$signed()的用法

    浅谈Verilog和VHDL的区别

    Verilog和VHDL是两种广泛使用的硬件描述语言(HDL),它们用于描述和模拟数字电路系统的行为和结构。这两种语言的主要作用是帮助工程师设计、仿真和验证集成电路(IC)和系统级芯片(SoC)中的硬件模块。
    的头像 发表于 02-17 14:20 2644次阅读
    浅谈<b class='flag-5'>Verilog</b>和VHDL的区别

    Verilog 电路仿真常见问题 Verilog 在芯片设计中的应用

    在现代电子设计自动化(EDA)领域,Verilog作为一种硬件描述语言,已经成为数字电路设计和验证的标准工具。它允许设计师以高级抽象的方式定义电路的行为和结构,从而简化了从概念到硅片的整个设计流程
    的头像 发表于 12-17 09:53 1613次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言(HDL),在ASIC设计中扮演着至关重要的角色。ASIC(Application Specific Integrated
    的头像 发表于 12-17 09:52 1455次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法是Verilog FPGA开发中的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的Verilog测试平台设计方法及
    的头像 发表于 12-17 09:50 1562次阅读

    如何使用 Verilog 进行数字电路设计

    使用Verilog进行数字电路设计是一个复杂但有序的过程,它涉及从概念设计到实现、验证和优化的多个阶段。以下是一个基本的步骤指南,帮助你理解如何使用Verilog来设计数字电路: 1. 明确设计需求
    的头像 发表于 12-17 09:47 1759次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代码更直观,易于
    的头像 发表于 12-17 09:44 2697次阅读