一个实际例子,除了AHFS(High Fanout Synthesis)时选用的buffer/inverter范围有所不同,其他条件相同。得到的结果却差异很大——主要是Routing DRC的数目。
set bufs { TM7BUFXC TM7BUFXH TM7BUFXJ TM7BUFXL TM7BUFXM TM7BUFXN TM7BUFXP TM7BUFXQ } set invs { TM7INVXC TM7INVXH TM7INVXJ TM7INVXL TM7INVXM TM7INVXN TM7INVXP TM7INVXQ } set_ahfs_options -default_reference [concat $bufs ] ;# Flow A set_ahfs_options -default_reference [concat $bufs TM7INVXP ] ;# Flow B set_ahfs_options -default_reference [concat $bufs TM7INVXC ] ;# Flow C set_ahfs_options -default_reference [concat $bufs $invs ] ;# Flow D
下面是做完post-route hold fixing后的结果(timing结果相当):
Flow | A | B | C | D |
---|---|---|---|---|
Buf/inv cell count | 272534 | 285452 | 299507 | 267999 |
Route drc violations | 694 | 4327 | 115 | 91 |
从routing的角度来看,Flow D的结果最好,buffer/inverter的数目有较大的减少。
"Flow B"结果不好,是因为TM7INVXP的size太大了。换成小一些的之后,"Flow C"给出了还不错的结果。