数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)
下图所示为咱们社区T12nm A55低功耗实现项目。其实这个项目还可以根据产品的需求做一些改进。改进后项目实现的难度会大大增加。也希望通过今天的这个项目案例分享,帮助到今年IC秋招的同学。
芯片低功耗设计实现upf编写指南(附低功耗项目案例)
T12nm工艺数字IC后端实现难点都有哪些?
如何规避顶层Top到子模块接口的setup和hold violation?
Timing Signoff之check_timing检查(今晚19:10分直播)
这个T12nm A55低功耗项目使用的upf部分截图如下所示。
低功耗数字IC后端设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?
比如下图所示的A55包含三个Power Domain,分别是PDCPU(PD_PSO),PDSYS(PD_AW_ON)和PDCPU_MEM。
这里把PDCPU子power domain中的Memory又划了一个单独的power domain。如果想再复杂点,还可以按照不同memory划分成多个memory的power domain。
【思考题】PDCPU_mem这个Power Domain的powerplan应该如何设计?
这里的Memory需要选用自带power gating的memory类型,这些memory的端口也有类似power switch cell NSLEEP信号,用来控制memory的开和关。
所以这样的设计不仅要给PDCPU中的power switch cell串链,还需要给memory串链。
假如所有Memory是串在一条chain上,那么大体上串链的结果如下图所示。稍微有点sense的数字后端工程师看到这里就知道此时会有max transition violation。
低功耗设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?
图片
这些max transition violation主要出现在以下几个地方。
左侧memory和右侧memory进行chain连接的net
memory_req和memory_ack信号(第一颗memory和最后一颗memory)
【思考题】memory_req和memory_ack信号在PDSYS Domain中是否需要插always on buffer? Memory之间这根串链信号在PR阶段是否需要特殊处理?为什么?
对于两个power domain中的power switch cell串链,需要留意到PDSYS Power Domain也是需要power off的,只不过它比PDCPU更AON(PDCPU OFF,PDSYS ON)。所以这两个power domain内部的power switch cell链不能串在一起,串链控制信号也必须从外部单独提供。
此外,还可以时序要求,把PDCPU和PDSYS做成两个Voltage Domain即两边工作电压不一样。此时upf还需要描述这两个domain边界处的Level Shifter 的约束。
对于从PDCPU—> PDSYS这个方向的接口信号,需要让工具添加ELS(Isolation cell + LS)。
对于从PDSYS—> PDCPU这个方向的接口信号,只需要插普通的LS。
【思考题】Enable Level Shifter Cell是应该选用source还是destination类型的?
另外还需要注意isolation cell和level shifter cell的摆放要求。比如isolation cell到底应该放在哪个power domain?isolation cell或Enable Level Shifter Cell的input pin是否可以插普通buffer?
而且PR后端实现做完还需要去检查对于PD_PSO这个power domain所有输出的接口是否都有插上isolation cell。