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

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

3天内不再提示

自动连线的神器——emacs verilog mode

li5236 来源:ExASIC 作者:ExASIC 2022-03-29 14:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

emacs是什么?

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

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

verilog-mode是什么

简单点说就是支持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.png

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

    关注

    31

    文章

    1374

    浏览量

    114723
  • 编辑器
    +关注

    关注

    1

    文章

    829

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CNC连线自动化新突破:具身智能如何破解多品种小批量装配难题?

    ,“工业具身智能”概念的提出,为CNC连线自动化带来了革命性的解决方案。 具身智能(Embodied AI)强调智能体通过物理实体与环境进行交互感知并执行任务。在工业场景中,这体现为具备高度自适应能力的机器人系统。清华大学深圳国际
    的头像 发表于 03-17 16:51 334次阅读

    Verilog HDL语法学习笔记

    Verilog HDL 语 言 最 初 是 作为 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后来被著名的 Cadence Design Systems 公司收购)模拟器产品开发的硬件建模语言。
    的头像 发表于 03-04 15:04 5783次阅读
    <b class='flag-5'>Verilog</b> HDL语法学习笔记

    深入剖析MAX6639/MAX6639F:双路温度监控与自动PWM风扇调速神器

    深入剖析MAX6639/MAX6639F:双路温度监控与自动PWM风扇调速神器 引言 在电子设备的设计中,温度控制和风扇调速是至关重要的环节。有效的温度管理不仅能确保设备稳定运行,还能延长其使用寿命
    的头像 发表于 02-28 16:30 855次阅读

    Cicoil 高柔性扁平电缆在工业自动化与晶圆制造中的设计优势

    在高端制造、自动化控制与半导体装备领域,线缆不仅只是“连线”,而是长期反复运动、空间受限与高可靠传输环境的系统组成部分。
    的头像 发表于 12-29 14:09 383次阅读

    原理图手动连线太繁琐,自动连线来救场!

    原理图绘图中有比较多且繁琐的操作,还极其容易出错。比如:1.逐条网络命名:在原理图中为大量重要的电源、时钟、差分对网络手动添加有意义的名称(如DDR_DQ[0],PCIe_CLK100M_P),极其耗时。2.总线(Bus)创建与连接:手动将几十个甚至上百个信号线(如DATA0~DATA63)组合成总线,并确保原理图符号和PCB布局中的连接正确无误,非常容易出
    的头像 发表于 11-10 18:30 806次阅读
    原理图手动<b class='flag-5'>连线</b>太繁琐,<b class='flag-5'>自动</b><b class='flag-5'>连线</b>来救场!

    请问verilog文件开头部分的@00080000是什么意思?

    请问verilog文件开头部分的@00080000是什么意思??
    发表于 11-06 08:10

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

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

    语法纠错和testbench的自动生成

    在编写Verilog代码时,我一般都是先在编辑器上写完,因为编辑器vscode或者notepad++可以提供语法高亮和自动补全等功能,然后用仿真器跑仿真,但是在编写过程中不可避免的会有一些语法的错误
    发表于 10-27 07:07

    构建适用于三维集成系统的互连线长分布模型

    在三维集成电路设计中,TSV技术通过垂直互连显著优化了互连线长分布特性。基于伦特定律的经典分析框架,可构建适用于三维集成系统的互连线长分布模型。
    的头像 发表于 08-21 10:41 1332次阅读
    构建适用于三维集成系统的互<b class='flag-5'>连线</b>长分布模型

    如何在Linux系统开启Persistence Mode

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

    高密度互连线路板的应用领域

    在科技飞速发展的今天,电子设备正以前所未有的速度迭代更新,从尖端工业控制系统到精密医疗成像设备,从高速通信基站到航空航天器,每一个领域都对电子设备的性能、可靠性和集成度提出了更高的要求。而在这些电子设备的背后,有一种核心组件正发挥着至关重要的作用,那就是高密度互连线路板(HDI)。
    的头像 发表于 07-17 14:43 1163次阅读

    鑫金晖 | 0.3毫米pcb薄板智能丝印及薄板全自动连线解决方案分享

    鑫金晖科技是一家专业生产丝网印刷设备、隧道炉烘干设备以及提供自动连线解决方案的科技型、高新技术型、专精特新型企业。在pcb丝印设备方面,鑫金晖旗下现有:半自动丝印机:垂直式丝印机、左右(单/双)跑
    的头像 发表于 06-20 19:48 1301次阅读
    鑫金晖 | 0.3毫米pcb薄板智能丝印及薄板全<b class='flag-5'>自动</b><b class='flag-5'>连线</b>解决方案分享

    (ST大赛三等奖作品)超声波自拍神器实例项目

    (ST大赛三等奖作品)超声波自拍神器电路图:
    发表于 05-28 21:04

    CCLINKIE转PROFINET:电机的“网络冲浪神器”!

    家人们谁懂啊!在工业自动化这个“江湖”里,CCLINKIE和PROFINET就像两位身怀绝技的大侠,各有各的厉害之处。CCLINKIE是日本电产公司推出的开放式网络协议,数据传输那叫一个麻溜
    发表于 05-28 15:21

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

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