ICC叫Coarse Placement;Innovus叫 global place
学习目标- 在Placement前了解检查项目
- 了解Coarse Placement做什么
- 可以执行Coarse Placement
- Pre-Placement 设置和检查
- 在coarse placement期间工具怎么做
- coarse placement类型
- Coarse placement 提示建议
指定未使用的布线层(指出哪些绕线资源可以用,place时,可以很好的评估congestion)
检查placement可读性
防止clock/data信号缓冲(阻止clock和data上buffer的插入。例如,place时先把buffer删掉。工具也可以做restructure。做完place_opt_design时,在保证功能一样的情况下,逻辑重组)
创建 I/O path groups
check/read scandef (scan reorder - >scandef +option,如果要做scan reorder,必须要读入scandef。read时间很短。建议不管做不做scan reorder,先读入scandef。不要等发现问题,再读入scandef)
标记 Clock Networks(例如是ideal)
保留现有层次结构的port端口
为优化定义cell名称前缀
coarse placement期间工具行为coarse placement也称为initial placement/global placement,它是相对于detail placement的。
这是placement的第一阶段。(先把cell塞进来,再去做优化)
所述place engine 根据timing、congestion、module distribution和 multivoltage constraints确定每个cell的近似位置。
放置的cell不会落在placement grid上,并且可能overlap。
大型cell(如RAM和IP blocks),充当较小的leaf-level cell的 placement blockages。(这些大cell是在floorplan阶段摆好位置的,最好不要动)
coarse placement速度快,并且对于初始timing 和 congestion分析足够准确。
coarse placement 类型该过程可以是timing驱动的,也可以是 congestion驱动的。
Timing-Driven Placement (TDP)
placer(place 引擎) 尝试减少设计的 Total Negative Slack (TNS) 和Worst Negative Slack (WNS)
Congestion-Driven Placement
placer 可以通过有针对性的white space分配,自动修复congestion。
做global place,多考虑timing 还是congestion?
默认情况下,是不开timing driven和congestion driven的,工具会做一个auto,自己评估侧重优化哪个。
但是,一些特殊模块例如:
CPU,跑2、3个G频率的,开auto 力度不是很大,要使用timing driven。
Demo功能模块IP,只有100M,data path很长,timing基本不会有问题,一般绕线有问题,congestion比较严重,开congestion driven。
一般,大部分design,使用auto偏 timing driven的比较多。一般design timing没有问题,工具也会做的相对比较好。



