基于IEEE1801(UPF)标准的低功耗设计实现流程 下载本文

内容发布更新时间 : 2024/11/5 5:06:33星期一 下面是文章的全部内容请认真阅读。

VSS –elements {BLOCKA/pin1 BLOCKA/pin2} –clamp_value 1

set_isolation_control pd1_iso_high –domain PD_1 –isolation_signal iso_en –isolation_sense \\ high –location parent

3.2.5 UPF对Power State的描述

在UPF里面,还有一个非常重要的部分,那就是描述电源状态表(Power State Table),简称PST,也就是说要描述各个电源有哪些工作模式。有了这个表格,工具就可以判断是否需要在各个电源模块之间插入特殊的单元。

本芯片共有三种工作模式,pst_pd1_ON是正常模式,三个domain都是1.2V供电;pst_pd1_OFF是掉电模式,PD_1掉电,其他两个domain是1.2V供电;pst_pd2_LOW是掉电降压模式,PD_1掉电,PD_2降压到0.8V供电,仅保持数据。

add_port_state VDD –state {NOR_VOL 1.2} add_port_state VDD_1 –state {NOR_VOL 1.2} add_port_state VDD_1 –state {OFF_VOL off} add_port_statte VDD_2 –state {NOR_VOL 1.2} add_port_state VDD_2 –state {LOW_VOL 0.8} create_ps top_pst –supplies [list VDD VDD_1 VDD_2]

add_pst_state pst_pd1_ON –pst top_pst –state {NOR_VOL NOR_VOL NOR_VOL} add_pst_state pst_pd1_OFF –pst top_pst –state {NOR_VOL OFF_VOL NOR_VOL} add_pst_state pst_pd2_LOW –pst top_pst –state {NOR_VOL OFF_VOL LOW_VOL} 完整的UPF请参考附件7.1。

3.3 UPF在Design Compiler中的应用

根据图14中的流程介绍,UPF准备好就可以进行综合和DFT的工作了。在这一步,Isolation cell、level shifters、Retention Registers等特殊单元都要正确的实现插入,而且也要插入clock gating来优化动态功耗以及用多个阈值电压的库来优化静态功耗。

如图17所示,在DC中,首先把所有不同阈值电压的标准单元库都设置到target_library以及link_library里面去,工具在综合优化的时候,就可以根据路径上timing的是否关键来尽量平衡标准单元速度与静态功耗的关系,关键路径上,尽量选择低阈值电压/速度快的单元,但在非关键路径上,就尽量选择高阈值电压/静态功耗小的单元。

在读入RTL后,需要用load_upf的命令读入 UPF文件,然后在compile时,工具会根据UPF的设置,自动插入Isolation cell、level shifters、Retention Registers等特殊单元(在我们这个设计中,仅需插入Isolation cells),并正确连接这些特殊单元的控制信号。

另外,为了优化动态功耗,我们在综合阶段让DC自动插入了Clock Gating。设置也很简单,只要在 compile_ultra命令后面加上clock_gating的选项就可以了。

图17: UPF flow in Design Compiler

综合完成后,除MTCMOS没有插入外,其他特殊单元都已经按UPF描述的设计意图插入并连接。 综合后我们还要插入DFT相关结构,再做一个增进式的优化。在这两个过程中,如果DFT引入的电路根据UPF的要求需要插入特殊单元的话,工具会自动判断并在insert_dft或者compile命令执行的时候自动插入。比如,DFT插入的扫描链从电源关断模块连接到了其它非关断模块,这个时候根据UPF里面的规定,从关断区到非关断区要经过isolation cell的过渡,工具会自动判断到这一点,在需要的地方插入这些单元。

在综合和DFT的各个阶段,可以利用DC提供的命令check_mv_design对低功耗设计进行规则检查,确保没有违反UPF里面定义的相关规则。

最后,DC输出网表和UPF。也可以直接输出DDC或者直接写入到Milkyway数据库里面去,这两种方式都包含了网表和UPF信息,可以直接作为物理实现工具ICC的输入。

在综合前后我们都用Formality对输入和输出的RTL或netlist进行了带UPF的比对,以确保每一步骤电路在形式上没有发生改变。

3.4 UPF在IC Compiler中的应用

图18: UPF flow in IC Compiler

IC Compiler的UPF流程如图18所示,可以直接用DC输出的mw库或ddc文件,里面已经包含了UPF信息。我们采用的是读入网表加UPF的方式。

首先我们需要在读入verilog网表以后,把UPF文件导入到ICC中: load_upf $ICC_IN_UPF_FILE

读入netlist以及upf后就可以作整体规划(floorplan)了,在这个阶段主要有下面的工作:

? 在floorplan之前,要正确设置芯片的工作条件(operating_condition)以及用set_voltage命令对所有的电源和地设置正确的工作电压值。工具会根据这些设置来选择正确的单元进行时序计算。

? 读入UPF之后,ICC已经知道设计中有哪些power domain以及每个power domain里面有哪些电源、地。但这个时候ICC还没有把各个power domain里面所有cell中电源、地的端口与UPF里面定义的电源、地连接起来。需要运行下面的命令,所有power net会根据UPF中的描述自动创建,所有cells的电源也会根据UPF中的描述自动连接:

derive_pg_connection –create_net 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所示: