结合 OpenROAD 对 floorplan 的粗略概括:
ifp
):
ppl
, pad
)
mpl
, mpl2
)
pdn
)
Floorplan 是芯片物理设计的第一步,用于确定核心区域、宏单元、IO 单元的位置以及布线资源和电源规划,以优化芯片性能和面积。
floorplan 的目标主要包括:
在做 floorplan 之前,会通过零线负载模型对综合后的网表做延迟分析,以评估时序。如果时序较差则应当优化网表。
而在 floorplan 阶段的时序与延迟预估方法,取决于芯片设计方法,即 1. 自下而上展平式(flatten)的硅虚拟原型设计方法(SVP, silicon virtual prototyping);2. 自上而下的层次化设计方法 (hierarchical)
PS: 当 design 在 500 万门左右时,考虑采用层次化设计方案。
在展平式设计中,对多个 floorplan 进行 place 后,采用 STA 对整个芯片进行延迟估算,然后使用时序违例(negative slack)来评估不同 floorplan 效果。
由于此阶段尚未建立互连线,只能通过 WLM 估算延迟(书中描述的"只能"存疑,WLM 为一种统计模型,估算负载电容及线长,从而初步预测线延迟)。
WLM(Wire Load Model, 线负载模型) 是一种在 RTL-to-GDSII 流程早期(如综合阶段)用于估算信号网线电容、电阻和延迟的模型,主要基于电路规模、网线扇出和统计数据。
层次化设计大致可分为三个步骤:芯片顶层设计规划,子模块分割(partition)与实现以及芯片顶层组装实现。
在时序预算(time budgeting),首先需要对整个芯片的时序进行分析。
模块布放位置是建立在布图规划基础上的,模块布局的结果又会对前期布图规划的期望目标产生直接影响,其中,能否保证布线的完成是通过布线通道的分析来进行。
routing channel 是每两条或多条 track 的空间, channel 上不可以摆放标准单元。而在 macro 四周通常还预留不允许摆放标准单元的 halo(仅供专门布线)。
在层次化设计中,channel 按照形状分为 T 和 L 形两种。当两个子模块相聚跨度较大时,还需要定义 feedthrough channel 来满足时序和布线要求。
在层次化设计中引入了基于行的布线方法,即图 b 中的无通道分割法 (channel-less)。图 a 为基于 channel 的分割,图 c 为混合法。