今天对procise的pack和ISE的map的结果进行了对比,比较方法是对两种结果都进行布局和布线,统计三个阶段(global place, detail place, route)的slack/require,ISE在三个阶段的slack/require比procise平均大分别1.3%,2.1%,0.96%。说明procise的pack算法不如ISE。
之前也提到packEdge函数的作用是负作用,procise将criticality和net share对pack的影响独立成两个步骤和T-vpack的思想有出入。我认为应该先修改pack算法,使结果要和ISE差不多,然后在该pack算法的基础上再加入layout-driven的思想,这样才有说服力。
所以我自己写了一个T-vpack算法:对所有sink pin根据criticality进行排序,由大到小选择pin所在的group作为种子,然后根据criticality和net share选择一个最优的group进行pack。调参后criticality的权重设为0.65最优(权重逐渐增大,增益的变化没有规律,不同的权重中增益为负的情况比较多),比原pack的slack/require平均大0.6%(太小)。