当前位置:   article > 正文

自动例化verilog模块的脚本(第二版)_verilog里面嵌套shell脚本

verilog里面嵌套shell脚本

自动例化verilog模块的脚本(第二版)
  第一版:自动例化verilog模块的脚本

  这个脚本大概是我写的第一个比较大的脚本了,不过写好还没怎么用就离职了,空了一年,最近又有机会用了,发现确实有不少漏洞,而且第一版只支持符合verilog-2001标准的module,可实际使用中还是不可避免的会接触到旧版的module的定义,于是更新了目前了这一版:改bug+新增支持verilog-1995标准。
  改动还算多,再加上有不少朋友是奔着这个脚本来的,所以写篇文章简单介绍下。

我是缩小后并居中的图

一、修bug

  修了一些,比如注释被识别为端口、参数化端口中有逗号等等,具体记不清了,略。

二、新增内容

1.支持verilog-1995标准

我是缩小后并居中的图

  其实就是仿着之前的匹配verilog-2001的module头的正则regex_module_head_verilog_2001又写了一个匹配verilog-1995的regex_module_head_verilog_1995,然后正则的分组也做到一致,这样二者可复用,就不用改其他部分了。

我是缩小后并居中的图
我是缩小后并居中的图

  这样做就必须让这两个匹配模式互斥,即verilog-2001的module头只能被regex_module_head_verilog_2001匹配到,而verilog-1995的module头只能被regex_module_head_verilog_1995匹配到。
  这一点在regex_module_head_verilog_2001中通过module module_name(#parameter …)(input …);这个格式来保证其识别不出verilog-1995的module头,而在regex_module_head_verilog_1995则是靠module module_name( …);这个括号里不能有input|output|inout来保证其识别不出verilog-2001的module头。

  这样把改动全集中在匹配模式这里了。关于匹配模式顺便提一下,用之前Markdown脚本里用flag匹配代码块的思路应该也是行的通的,这里这种一下子匹配很多行的写起来有点费劲。

2.例化时参数的处理

  之前就是将默认值直接例化进去,现在改成将其声明为localparam,然后例化时用的就是参数名。对于TB而言,用那种方式其实无所谓,不过若是用于TOP中例化子模块,那着这种方式会好一点。

3.加入logging模块(对使用者无影响)

  之前一直在提用logging模块代替print,但都没有真正用起来,这次将其加入argparse,变成可传的参数,真正用起来了。这个可以参考下面的参考链接。

我是缩小后并居中的图
我是缩小后并居中的图

三、使用说明

  虽然改了些bug、加了点新东西,应该还是做不到很普遍的支持,若是使用中发现用不起来,可以:

  • 探索一下其他自动例化的工具,如gvim,vscode里的插件;
  • 自己动手debug一下脚本;
  • 将报的错以及被例化的文件截个图发给我,保密的部分可以打码,能看清结构就行;
  • 归一化:往“标准的”(其实是脚本能支持的)格式上凑,奇怪的部分可以先注释或者删掉,在没有其他工具可用的情况下,这样做还是比纯人工例化来的快;
      这里放一下能支持的格式:
我是缩小后并居中的图
  module module_name(#parameter ...)(input ...);,换不换行应该都支持的,见test。
我是缩小后并居中的图
  尤其注意,从module module_name( ...);到input ...声明,这中间只能有parameter、`define、`include,而且最好同一部分的内容放在一起,中间可以穿插注释行。且parameter只能是一样定义一个,下面这些是支持不了的,可以先注释掉或者删掉。
我是缩小后并居中的图
我是缩小后并居中的图

四、使用示例

我是缩小后并居中的图
我是缩小后并居中的图
我是缩小后并居中的图
我是缩小后并居中的图
我是缩小后并居中的图

五、源码获取

1 git库

  电脑操作方便的朋友,可以直接克隆git库,地址:git库

2 公众号

  不方便用电脑操作的朋友,可以在公众号内回复关键字:脚本,可获取git库最新版本的压缩包。

Reference

【更新完善】利用python自动生成verilog模块例化模板 - 没落骑士 - 博客园
Python在ASIC中的应用
[《Python 编程快速上手–让繁琐工作自动化》]
[《Python Cookbook》第三版]
[《Python 学习手册》第四版]
Python中使用logging模块代替print(logging简明指南)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/516659
推荐阅读
相关标签
  

闽ICP备14008679号