derive_pg_connection –reconnect
另外derive_pg_connection命令在ICC每一次优化后都要执行一次,以对新加入的cell进行电源、地 的连接。
? UPF里面虽然已经有了power domain的定义,但在物理上这些不同的电源域还没有固定的位置和形状。这就需要创建voltage area,每一个power domain都对应一个voltage area。但如何根据UPF文件中描述的power domain创建Voltage Area呢?我们这里也有些经验,在创建voltage area之前,我们可以用ICC里virtual-flat placement对全芯片进行一个快速的布局,然后根据布局的结果就可以知道与各个电源域相对应的各个模块的大体物理分布,从而帮助我们在这些区域来创 建相应的voltage area。在UPF里面定义了三个power domain(PD_TOP, PD_1和PD_2),不过对于PD_TOP,ICC会自动的创建一个默认的Voltage Area(DEFAULT_VA), 对于另外两个Power domain,我们利用create_voltage_area命令创建Voltage Area。Voltage area的位置确定了,但其形状也与很多因素有关,可以是矩形也可以是多边形,总之,其位置和形状的最后确定可能会经过一些反复,因为这与设计最终布局布 线的结果息息相关,创建不好,可能影响设计的时序,也可能影响设计的布线等。
? 所有voltage area都创建好后,就可以对关断电源区域插入电源关断单元(power gating cell)了。在我们这个设计里,PD_1是电源关断域,需要在这个电源模块里面插入MTCMOS(power gating cell)。在插入之前,用
map_power_switch命令指定要使用的MTCMOS单元名称及相对应的power domain名字。然后用add_header_footer_cell_array命令按指定的阵列插入MTCMOS单元,如图19所示。设计中有可能 因为voltage area形状的原因或者因为macro的影响,可能要求按不规则阵列插入MTCMOS单元,可以通过多个 add_header_footer_cell_array命令叠加来实现,或者手动移动MTCMOS的位置,然后再将其位置固定。如图22所示,在我们 的设计中电源关断区域就有个非常大的macro,为了照顾这个大macro上的供电充足,我们就在其周围插入了密度比较大的MTCMOS单元。所以 MTCMOS的插入和摆放跟整体规划中voltage area以及属于这个区域的macro的规划都有紧密关系。我们使用的是有一组控制信号(NSLEEPIN和NSLEEPOUT)的MTCMOS单元,其 结构如图20所示:NSLEEPIN是MTCMOS打开或者关断的控制输入信号,NSLEEPOUT是NSLEEPIN信号经过MTCMOS单元后输出的 响应信号。这些控制和响应信号在MTCMOS插入后还需要把他们都互相连接起来。连接的方法也有很多种,我们采用的是链状的连接方法。如图21所示。 ICC提供了命令connect_power_switch来自动的实现这个功能。
图19 Column placement of MTCMOS cells
图20: Single input header control signal connections
图21: MTCMOS cells chain connections
最后,MTCMOS单元在版图中的位置及控制信号连接关系如图22所示:
图22: MTCMOS placement in the layout map
? 现在voltage area已经创建,MTCMOS单元也已经摆放连接好了。下一步就开始做power plan了,也就是电源网络的规划。由于VSS在每个power domain
都是一样的。所以三个power domain的VSS mesh是连在一起。True VDD(VDD)在所有的power domain都会用到,所以在每个power domain都需要加上power mesh。而在掉电区PD_1,VDD通过MTCMOS得到VDD_1,由VDD_1来给掉电区供电。所以VDD_2在PD_2和VDD_1在PD_1的 power mesh不能连接到一起。ICC里面提供一个自动的电源网络综合的功能,用户可以告诉工具一些电源网络的约束以及要达到的电压降的目标,工具就可以自动产 生符合要求的电源网络。而且,它是支持带MTCMOS的综合,也可以一次综合多个电源、地。用户只要根据产生的电源网络作些精细的修改就可以了。电源网络 做好后,还要把MTCMOS的辅助电源连接好,如图23所示。连接辅助电源的方法主要有两种:一种是在“True” PG正好在MTCMOS上方的情况下,可以用create_preroute_vias命令来直接用过孔把MTCMOS的电源端口与”True” PG连接起来;另一种就是如果“True” PG不在MTCMOS上方,那就要用preroute_standard_cells命令里net连接的模式物理连接起来。至此,所有的电源、地网络都连 接好了,还可以借用ICC提供的PNA(Power Network Analysis)的功能对包含MTCMOS的电压降进行分析,以帮助判断MTCMOS单元数量是否足够以及其位置是否合理。
图23: MTCMOS辅助电源的连接
? 如果voltage area位置形状、macro的摆放以及电源网络都合理了,而且用check_mv_design来检查低功耗的规则还有电源、地的连接都没有问题 了,floorplan阶段的工作也就结束了。自此,设计中所有因为低功耗设计要引入的新的cell都已经插入到设计中了。在综合及DFT阶段插入了 isolation cell,在floorplan阶段我们又插入了MTCMOS。
Floorplan结束后,ICC里面的布局、时钟树综合以及布线都和传统非UPF流程没有太大区别了。这些步骤工具都是 可以自动理解low-power要求的,并会自动把isolation单元放到相对应的voltage area的边界。在我们这个设计中,
我们还用到了ICC对动态功耗和静态功耗的电路优化能力,只要把相应开关打开工具就可以自动进行电路方面的功耗优化 了。同样,在各个阶段都可以通过check_mv_design命令来检查是否有违反低功耗设计规则。
自此,在ICC里面的主要工作就结束了,为了给sign-off工具提供数据,我们还要写出带PG信息的netlist以 作理解low-power的形式验证、要写出最后的UPF以及不带PG信息的netlist以作最后的时序、SI及功耗分析。PrimeRail作IR- drop分析可以直接读取Milkyway的设计库。Star-rcxt作参数提取也可以直接读取Milkyway的设计库。
3.5 经验介绍
在上一节中已经介绍了一些物理实现的经验,比如如何确定Voltage Area的位置和形状,如何合理摆放MTCMOS等等。下面再就我们在实现过程中遇到的一些问题,以及一些需要注意的地方,在这里和大家分享:
1. UPF里面特殊cell的控制信号(比如Isolation cell和MTCMOS的控制信号)最好定义在leaf pin上,不要定义在hierarchy pin上,否则ICC可能不能正确的识别该控制信号。
2. DFT设计阶段会在UPF里定义的特殊cell的控制信号上插入mux,用于测试时控制这些信号,如果UPF里面定义的控制信号在插入的mux之前,则 ICC也会找不到这些特殊cell的控制信号。比如Isolation cell的控制信号,如图24所示,UPF中本来定义的Isolation cell控制信号是func_iso_en,但是加了DFT mux之后,UPF中就需要将Isolation cell的控制信号定义在iso_en上才行。
图24: DFT模式下的Isolation控制信号