做前端设计要考虑哪些后端问题?
前端设计中要考虑哪些布局布线的问题?
有哪位大牛给解解
谢谢
1. FE design should consider the design gate count and it will affect BE define a reasonable utilization and DIE size;
2. for high speed digital design, it is very important to understand the critical timing path location and pay attention to release them.
3. design a complex clock tree will hurt backend implementation, design the clock tree not only simple but also trying to level balance.
4. Provide enough information to BE, it will greatly reduce the timing closure time on BE.
5. if possbile, trying to set timing exception as much as you can, and considering reserve some timing margin for P&R.
6. ...
cloud出马了.. 我也补充几个:
对于无法进行flatten PR的大规模设计,前端需要在顶层进行有效的物理模块划分,而非简单的功能模块划分。要兼顾数据流逻辑关系、物理大小(一般不要超过1M instance)、顶层连线数量。这样可以为后端synthesis、partition、floorplan提供很大的便利,且简单的顶层划分和连线可以减少顶层时序收敛的迭代时间。
对于复杂设计,如果需要选择IP、IO等,不仅要考虑功能,同时也要考虑速度和物理实现。
如果芯片中的RAM数量和容量大到一定程度,RAM选型需要考虑Redundancy,前端需要考虑ECC。
另外前端最好对后端库有所了解,比如clock gating cell, cross domain synchronizer cell,如有必要可以在代码中直接例化。
最后,在不确定如何做的时候,前后端的有效沟通非常重要。。
I can not agree more! Design for physical is more important than design for logic function because of the damning schedule and damning iterations.
ignore clock buffer and invertor, the paths from root clock to all sinks have same clock function cell chain.
什么是cell technology
DE需要如何考虑cell technology?
不在其位,不谋其政。前端只要时序能过,管它后端洪水滔天。
后端人员很感动。。。
你说的这些东西
在我们原来做后端的时候
由后端组负责的
比如物理模块划分、PAD、手工例化cell等等
通过生成所谓的物理RTL来实现
no,no,no, if you want to design a high quality chip that can be a successful production, FE designers should work closely with BE designers. it will be helpful if FE designers understand BE flow.
身为后端人员,建议:
1. 少用管脚密度高的cell来做综合
2. high fanin/fanout逻辑比较集中的部分,以及MUX/AOI/OIA等门多的逻辑,多做clone
3. 考虑到大的模块内,门之间距离可能比较远,最好假设最差路径上要插好几级buffer
4. 多了解自己公司历史上同类型芯片后端实现难点在哪里,争取这一次RTL中能改善
5. 按逻辑连接数量来划分物理模块,而不是无脑的按逻辑模块转化为物理模块
6. macro越多,stdcell区域的利用率就越低
7. 后端的芯片利用率最终取决于routing情况,而不是你有多少ram和cell,那个只是一个初始影响值。所以芯片利用率和前端的逻辑连接做得混乱与否最直接相关
8. 修一些重要timing的时候,知道一个确定驱动能力的buffer驱动多长的线能有多大的transition和delay,是提高前端后期fix效率的重要方法,这个可以通过简单脚本和实验得到
0. 同楼上,沟通很重要,以上经验皆来自于沟通
one the other thing:
think about wiring when coding your logic.
In 45nm and beyond chips, wiring can easily dominate timing.
try to avoid high fanout nets, instead, instantiate it multiple times w/ a
little penalty of logic. sometimes, more logic is better than more wires.