python抽取cdl网表的连线关系

在模拟芯片开发的最后集成后的检视中,大部分是人工检视模块之间的连线是否正确。

但是在EDA工具中进行检视,往往比较费时费力——需要大量的鼠标操作。而且检视结束,没有办法输出检视的交付件。

为了解决这个问题,制作了一个cdl网表的解析工具,能输出模块于模块间连线的报表。

表格中1列放置起点模块的引脚,另外一列放置相连的终点模块的终点。

1、谈一下对cdl网表的理解

本文所处理的cdl网表来自于模拟EDA工具导出。

cdl文件定义了所有模块的定义。模块之间的例化关系,也都在模块内的例化模块表述。

.SUBCKT my_module input1 input2 output
R1 input1 net1 / 10k
R2 net1 input2 net2 / 20k
C1 net2 output / 1nF
.ENDS my_module

cdl网表中使用.SUBCKT和.ENDS定义一个module。

示例中my_module就是定义的模块名。它内部例化了R1、R2、C1三个模块。R1为例化名,对应的module名为10k。

试着从input1看一下,它是如何连接到内部的例化模块:my_module的input1连接到了R1的第一个引脚,R1的第二个引脚连接net1的连线;顺着net1搜索,可以看到R2的第一个引脚连接到net1。cdl网表中就是这样表述模块之间的连接。每一个连线都是单bit的(这比分析verilog代码变的容易很多)。

这样我们就可以遵照这种追踪的方法,搜索起点到终点的连线(先从简单的直接连接的来分析,文章最后再说一下,穿透部分模块的思路)

 

2、解析cdl网表

解析的代码可以使用IA辅助生成,然后修改。

AI的提示词如下:

写一个脚本,读取cdl网表文件,并能提取里面模块名,以及模块之间的嵌套关系。脚本使用argparse,输入cdl文件路径。代码注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flashman911

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值