后端在floorplan阶段,如何摆放macro是一个很重要的问题。如果采用层次化设计,对于每一个block来说都需要在block内部把所分配的macro摆好。如果某一个block里的macro很多,又很大,std cell再多一些,utilization就会很大,相应的这个block的floorplan就比较难做,而其他block的utilization很小,这样的design就不太好。我们总是希望所有的block都能有差不多的utilization,平均且充分地利用芯片的每一块面积,这就需要在block划分初期就做好预估。
这个问题需要前端与后端协调配合,block的划分是需要前端提供带有hierarchical结构的netlist,然而前端在做hierarchical的综合的时候,并不会过多考虑后端物理层面的信息,因此可能综合出的netlist各个block物理上不是那么均衡。当然,这种netlist也是可以物理实现的,只是对于有些要求比较高的design来说,最后出来的芯片性能可能会有所不足。这个时候后端工程师就可以反馈,比如说,把某个block的某个macro综合到另一个block里去,或者两个block就直接merge变为综合成一个block。收到反馈以后,前端工程师就可以重新综合,再给我们新的netlist来做物理实现。
以上这个过程可能需要迭代几次才能达到最佳效果,但这样会需要花费很多时间,导致芯片设计周期变长。一种更快速的方案是,前端首先综合出flatten的netlist,就是不带任何h