修改了packEdge的算法,每次group后更新当前path的criticality(=10 / (1 + slack - wns)),计算方法如下:
1. 计算group前的edge delay(ed1)
2. 计算group之后的edge delay(ed2)
3. 计算差值edoffset = ed1 - ed2,其中必有ed1 >= ed2
4. 计算新的criticality = 10 / (10 / old cirt + edoffset)
5. 找出当前path上的所有pin,修改criticality为新的值,重新对当前队列中的pin根据criticality和distance进行排序。
该算法(不做预布局)比原算法有1.2%的增益。
然后我修改了该算法的一些参数做了200组测试,正在等待结果,先确定不做预布局的新算法的最优参数,然后再修改预布局的参数进行测试,找出最优参数,观察结果。