在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: zhangguo1286

[原创] vim auto script for verilog & RtlTree - (like Emacs, Verdi)

[复制链接]
发表于 2016-9-16 11:37:59 | 显示全部楼层
太猛啦,顶一个谢谢楼主分享
发表于 2016-12-31 21:52:44 | 显示全部楼层
顶一下,先下载试试
发表于 2016-12-31 22:13:56 | 显示全部楼层
下载看看。
 楼主| 发表于 2017-1-1 14:28:28 | 显示全部楼层
automatic_vim_2017_01_01.tar.gz (58.73 KB, 下载次数: 95 )

Date: 2017-01-01 upload.

UPDATE:
1. get sub-instance algorithm modify, use verilog 2001 syntax Module instantiation
   replace old algorithm (use keywords autoinst)
2. function ShowCall & ShowDef update
3. rtltree little upgrade, support `ifdef `ifndef `elsif `else `endif in rtltree
   window
      -- can close this feature, by
            let t:RtlTreeVlogDefine = 0
        in .vimrc file
发表于 2017-6-29 09:55:39 | 显示全部楼层
非常感謝~~~~
发表于 2017-6-30 09:28:20 | 显示全部楼层
 楼主| 发表于 2017-8-27 13:16:56 | 显示全部楼层
本帖最后由 zhangguo1286 于 2017-8-28 20:09 编辑

automatic_vim_2017_08_28.tar.gz (61.58 KB, 下载次数: 84 )

===============================================================

Date: 2017-08-28 upload.

UPDATE:
1. Add New AutoInstUpdate series function
        a) AutoInstUpdate
               Update module instance, detect the Newst append and have deleted module ports
               It is very useful for RTL code module instance update.
        
        b) AutoInstUpdateOrder
               Update module instance, instance port order same with module port.
               It is very useful for RTL code module instance update.
        
        c) AutoInstPortReAlign
               Auto Inst Port signal auto Re-Align format, only Re-Align port connection
        
        d) AppendPortDriectionToInst
               Append port direction info(comment) to have instanced module port instanced line

2. CreateRtlTree update
        use verilog "()" & "{}" pair to skip module define block, skip always block, Concatenate block and so on




================================
有关verilog RTL代码coding自动化方面的想法或IDEA,欢迎一起探讨。
欢迎来信:zhangguo1286@163.com 或站内留言。
 楼主| 发表于 2017-9-11 00:14:20 | 显示全部楼层
本帖最后由 zhangguo1286 于 2017-9-11 00:59 编辑

依论坛朋友需求,简单讲下脚本的安装和使用方法。写得比较简陋,请大家见谅哈,后面可能会更新,如果大家不清楚,可以回贴。



安装方法:
将压缩包解压后,将其中.vim/plugin/automatic.vim 拷贝到你home目录下相同目录中(.vim/plugin/),同时也拷贝.vim/after将home目录下.vim/, after目录下是一些图标,默认是linux平台下的图标。

重新打开gvim,会发现gvim会多几个菜单,其中就有一个verilog菜单,点开后会有一系列子菜单,其中就有Autoinst


-- 约束:verilog文件名与模块名保持一致, 一个verilog文件只定义一个模块。
-- 如果大量依赖本脚本的话,建议每个.v文件用模板的方式产生(模块的添加Header可以自行修改,搜索automatic.vim文件AddHeader,请比照相同的语法格式自行根据情况修改),然后用ctags_gen *.v , *.v为所有工程用到的.v文件,生成tags文件,使用脚本时,需要该tags文件。
-- 因为脚本是使用tags文件来寻找文件,所以需要这个东西,ctags_gen是用perl写的一个简单脚本,用于寻找module name,注意只有module name后面带有autoarg,才会把它添加进来。


使用:
1. 自动模块例化功能
        a) 首先需要被例化模块和调用模块的.v文件需要在同一个目录,然后在调用模块.v文件添加如下行:
              a u_a (【autoinst】);   // a 为模块名,  请将autoinst两边【】修改为多行注释符,论坛不允许使用那个字符
             注:如果例化时必须要修改parameter,而导致模块名a与实例化名u_a(【autoinst】)不处在同一行,请在autoinst行添加辅助模块名a后再使用,使用完成后将模块名a再删除,以简化脚本的设计复杂度。
        b) 鼠标点中模块实例化行(autoinst关键字所在行),然后选择菜单Verilog -> AutoInst, 即完成自动例化功能

2. 自动模块例化连线更新功能:   此功能用于提示当子模块有接口改变后,快速的知道有哪些模块被添加或者被删除
        提示会用注释的方式在模块port例化行的末尾加上,修改连线代码后,请自行删除。
        // INST_NEW  表示当前行,为子模块新增加的信号
        // INST_DEL   表示当前行,子模块已经将此信号删除,
       a)  鼠标点中模块实例化行(autoinst关键字所在行),然后选择菜单 Verilog -> AutoInstUpdate,       AutoInstUpdateOrder 是将连线顺序重新排布为子模块接口定义的顺序,方便对应

3. 添加例化模块的端口方向
      a)   鼠标点中模块实例化行(autoinst关键字所在行),然后选择菜单 Verilog -> AppendPortDirectionToInst

4. 自动定义wire / reg类型功能,
           此功能强烈依赖用户良好的verilog编码习惯,自己尝试后请慎重选择试用。   菜单Verilog -> AutoDef, 脚本会在autodef(请用注释符包起来)位置开始自动定义数据类型,当然不能识别所有的结构,未完全定义部分(会有提示,但测试中有遇到没有完全提示的情况)请自行添加到autodef {{{   }}} 结构之外, 避免重新autodef时被脚本删除。

5. 其它功能可以尝试摸索一下,应该是挺简单的。

友情提醒:请养成备份verilog文件的习惯(比如使用svn, git),避免意外操作导致工作白费。
发表于 2017-9-12 00:52:59 | 显示全部楼层
非常感謝~~~~
发表于 2017-9-12 09:47:21 | 显示全部楼层
恩恩 懂了 请问可以用.f 去扫裡面所有的.v让他auto instance吗?
像是这篇这样做?还是只能一个个点? 我想要用script让他直接调用函数 在folder内的全部自动instance
http://zhouchuanrui.github.io/20 ... cs/writing_verilog/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 02:29 , Processed in 0.022566 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表