Piefly: 处理coding style的脚本
Piefly: 处理coding style的脚本

Piefly: 处理coding style的脚本

工作中有时拿到第三方IP,会有不同的coding style;或者有些新手写的代码/赶工出来的代码,coding style会比较糙。

为了快速统一coding style,我写了脚本来处理。

大致思路如下:

  1. [pie_flist]读入input目录,遍历input文件夹下全部代码文件,返回名字列表(filelist)和内容(字符串)列表;
    • 单独抛出重名的文件列表,供设计人员手动确认。
  2. [pie_retab]遍历内容列表,对每个文件做retab操作(用4个空格替换tab,删除行尾空白,删除文件最前面和最后面的空行)。
  3. [pie_uniform]遍历内容列表,逐行匹配正则表达式,识别下面几种pattern并做对齐处理:
    • module声明:parameter以及input/output/inout类型;(v2001)
    • input/output/inout类型;(v1995)
    • wire/reg类型;
    • submodule instance声明;
  4. [pie_stat]统计每个文件并累计所有文件的代码行数/注释行数/注释占比,记录全部文件数,全部有效module数,并写出到csv文件中。
    • (对于操作1-4,写出文件及filelist存到output/datetime/input/ 目录下面。)
  5. [pie_lint]提供简陋的自动lint纠正,并保存到output/datetime/input/after_lint/目录下:
    • 对于同一module内重复定义的wire/reg变量,会自动注释掉行号较靠后的重复定义。
    • 如果重复定义的同名变量有着不同的类型或位宽,会单独打印log提示设计人员手动确认。
  6. [pie_egg]对于一个文件中定义多个module的情况,会自动按module名称把一个文件分成多个文件。输出文件会写到output/datatime/input/egg/目录下面。
    • TBD:按照hierachy建立写出的目录。

以上1~6条可以通过一个alias命令[piefly]一次完成。其中每一条又可以设置单独的命令去执行。

所有处理后的文件都会写出到新的目录,原始文件不会被改变,这样比较方便设计人员去进行比对,手动确认要修改的地方。

有一些暂时还没想到或者应用不那么频繁的RTL操作需求,打算等以后再来慢慢补充。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注