1. 数字IC后端设计中的floorplan基础
刚入行那会儿,我最头疼的就是floorplan这个环节。记得第一次独立负责模块时,盯着空荡荡的布局界面整整发呆了半小时——这玩意儿到底从哪下手啊?后来才发现,floorplan就像玩俄罗斯方块,既要严丝合缝地拼凑模块,又要给电源网络留好通道。
面积估算的实战技巧可不是简单做算术题。我习惯用Excel建个模板,把standard cell和memory分开统计。比如有个项目里memory占总面积35%,按80%利用率折算后,实际需要预留的面积就得放大到43.75%。有次没注意这个细节,结果后期绕线时发现memory周围拥挤得像早高峰地铁,不得不返工重来。
模块形状初始化时,create_floorplan命令里的-track参数特别容易踩坑。曾经有个多边形模块,我偷懒直接用了默认值,结果后期出现track不对齐的DRC错误。现在每次都会仔细检查:
create_floorplan \
-core_utilization 0.7 \
-flip_first_row \
-start_first_row \
-track_offset 0.096 \
-keep_io_place
IO摆放的自动化脚本我总结了个"三阶段法":先用Perl提取网表中的端口声明,再用TCL做拓扑排序,最后用create_fp_pins批量生成。有个项目遇到2000+个IO端口,手动操作的话估计得加班一周,用脚本半小时就搞定了。不过要特别注意时钟端口,我有次漏了设置skew group,导致时序怎么都收敛不了。
2. 内存与IP模块的智能摆放策略
遇到300+个memory的模块怎么办?去年做AI加速器项目时我就碰到这个挑战。set_fp_placement_strategy命令的-macros_on_edge参数是把双刃剑:虽然能节省面积,但过度使用会导致供电不均匀。我的经验是先用工具自动摆放,再用plan group做二次优化。
数据流分析

55

被折叠的 条评论
为什么被折叠?



