大家好,欢迎来到IT知识分享网。
最近发现一个好玩的verilog解析和生成工具Pyverilog。
之所以会偶遇这个工具,是因为在做设计规则检查时,经常需要比较大的工作量。为了提高效率也尝试过一些方法:
- 最开始是尝试使用脚本来通过正则匹配来实现检查。但是使用范围有限,因为有些代码使用了参数,对于这种正则匹配就行不通了。
- 尝试通过编译器输出转译过得代码,我再二次处理。但是没有找到编译器输出的方法。搜索的时候偶然发现了pyverilog。
pyverilog能干什么?
简单的原理可以参考作者的论文。
论文:https://link.springer.com/chapter/10.1007/978-3-319-16214-0_42
其中主要是分为3大块:代码抽象树(AST)产生、通过AST产生verilog代码、通过AST解析信号关系。
主要是关注到AST代码解析,这个看起来很强大。能够以1个模块的输出引脚为起点,查找在一个模块内是受哪些信号、条件的影响。然后还能绘制一张树形图。但是这个树形图,初看比较晦涩,可能还不如自己看代码。但是可以通过pyverilog解析过的内容,来进行一些抽象判断,例如在某些信号满足某些条件下,输出引脚会被赋值某某。
这个工具生命力还比较顽强,作者一直在更新。顺带看了看相关项目,还有人用他的解析工具做了二次开发。感觉还是很有戏。
目前遇到的问题:尝试分析dataflow时,无法处理带function的verilog代码。目前我自己已经尝试修改了一下,可以正常输出解析文件,只是因为跳过了一些处理步骤避免报错,部分信息有误。还在完善中。感觉还是有挺多可玩性的。
后续,可以把设计规则用这个做一个抽象层次更高的检查工具。
关于function的处理问题,其实pyverilog工具转换成AST时,都是可以正常处理的。查看最终生成的AST是可以看到function信息。主要是我用了数据流分析功能,目前作者没有写解析function调用的处理分支,因此遇到此类型code时,就会自动报错。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/46293.html