如何在两个report文件找到相同的cell pin(已经解决)
时间:10-02
整理:3721RD
点击:
我现在有2个文件,一个文件A是所有cell pin(dff/D)的列表,一个文件文件是report_tiiming -to dff/D的时序信息。
我现在要做的是找到每个dff/D前一个cell,然后增加它的驱动能力。
使用perl处理了好久,没找到合适的方法,不知道大家有什么好的建议
PS:use strict/warnings没写,匹配判断的语法有误
我写过类似的perl脚本,给你的建议是:
1. 把Lib文件读进来,用来分别那个是inst 那个是net
2.利用哈希表来记录数据
3.利用哈希表做出一个链表,这个表可以完成从后往前trace的功能。
哈希表?hash吧,散列
我的问题可能问得太大了,简单点,一步一步问吧:
1、如何判断两个文件中的每行数据时等效的?
if($array1[0] == $array2[0])
$array1[0] 表示第一个列表文件中的数据,也就是每个dff/D,
$array2[0]同样的设置。
这样肯定是不行的,我试过了。
1)用linux命令tac把timing report反过来
2)在perl里面,先读入A文件里所有的pin,存到一个list里面,再读入反过来的timing report,遇到DFF,就到list里面搜索,如果匹配上了,就把下一行print出来
别问我如果下一行不是cell怎么办,自己去想办法
多谢各位了。
实际上在文件中找出每个dff/D来,我还是可以的。
问题是,如何判断找出的dff/D是否是文件A list 中所要求的dff/D,也就是如何判断两个文件中所找出的变量是否匹配,应该用perl的哪个功能呢?
以前我写过一个perl,找出时序报告中违反比较大的path时,我用过这样的匹配判断:
if ($line =~ /slack \(VIOLATED/)
。
现在的问题是:如果$line1是文件A的变量,$line2是文件B的变量,如何判断两个变量是否匹配?
写成if ($line1 =~ $line2)?还是if ($line1 == $line2)?还是。?