基于65 nm工艺的SOC物理设计中的关键技术研究
扫描二维码
随时随地手机看文章
引言
数字集成电路随集成度的提高需求,已经发展成为片上 系统(System On Chip,SOC),后端物理设计一直以来都是依 赖于EDA工具来实现的,在0.18 um工艺节点前,一般依靠 EDA流程,工具会帮我们解决大部分的后端设计问题,需要 人工干预的比较少,但是进入深亚微米,甚至超深亚微米阶 段,后端物理设计如果单纯地依靠EDA工具显然不能解决所 有问题,特别是当今时代电子产品竞争激烈,对芯片的性能、 功耗、成本等提出了更高的要求。如何才能做出一个有竞争力 的SOC芯片,如何适应新工艺的要求,已经成为后端物理设 计工程师需要思考的新问题,本文基于65GP (65nm General purpose plus)工艺的实际项目模块级物理设计,在现超深亚 微米下,针对低功耗、congestion、信号完整性等后端物理设 计的关键问题做细致研究,提出了一些新方法和新思想。
1低功耗设计理论研究
随着工艺特征尺寸的缩小以及复杂度的提高,IC设计面 临了很多挑战:速度越来越高,面积不断增大,噪声现象更 加严重等。其中,功耗问题尤为突出,工艺进入130 nm以下 节点后,单位面积上的功耗密度急剧上升,已经达到封装、散 热以及底层设备所能支持的极限。随着工艺进一步达到90nm 以下,漏电流呈指数级增加。在65 nm设计中,漏电流已经和 动态电流一样大,曾经可以忽略的静态功耗成为功耗的主要 部分。功耗已成为继传统二维要素(速度、面积)之后的第三 维要素。另外,目前飞速发展的手持电子设备市场,为了增强 自身产品的竞争力,也对低功耗提出了越来越高的要求;其次 散热问题、可靠性问题也要求IC的功耗越小越好;最后全球 都在倡导绿色环保科技理念,保护环境,节约能源。这些都 要求IC设计时必须采用低功耗技术,以有效应对这些挑战。
0.18 um及以上工艺,在低功耗设计手段上较为有限,主 要原因在于,静态功耗很小,基本不用关心。动态功耗方面, 主要的功耗来自于Switching Power,即与负载电容、电压以 及工作中的信号翻转频率相关。减小负载电容,就必须在设计 上下功夫,减少电路规模。减少信号翻转频率,除了降低时 钟频率外,只有在设计上考虑,能不翻转的信号就不翻转。至 于电压,由于0.18 um及以上工艺的阈值电压有一定的限制,因此,供电电压降低,势必影响工作频率。一般说来,在0.18 um 工艺下设计电路,主要有以下几种对低功耗设计的考虑。
图1给出了影响芯片功耗的因素。由图1可见,通常影响 芯片功耗的因素有电压、漏电流、工作频率、有效电容等。一 般可以通过降低工作电压、减少翻转负载以及降低电路翻转 率等来降低动态功耗;并通过减少工作电压以及减少漏电流 来降低静态功耗。当前,业界采用了各种方法来降低芯片的 动态功耗和静态功耗。传统的低功耗技术有时钟关断(Clock- Gating), 多域值电压(Multi-threshold libraries)等;较新的 技术有多电压(Multi-Voltage)、电源关断(MTCMOS Power Gating)、带状态保持功能的电源关断(Power Gating with State Retention),动态电压频率调整(Dynamic Voltage and Frequency Scaling)。
图1影响功耗的因素
2低功耗设计方法
电路优化(Gate-level Optimization)
在设计实现过程中,自动化的综合和布局布线工具可以 根据电路的时序特征,来综合优化每条路径中用到的所有标准 单元的时序、面积以及功耗。由于输出电容减小,可以减小动 态功耗;同时,由于标准单元功耗较小,根据负载将非关键路 径中的标准单元切换到具有较小驱动能力的单元MOS管和电 容变小,静态漏电流也同时减小。除了变化驱动能力之外,还 可以通过优化电路中的逻辑单元、移动单元物理位置等方法 来达到降低功耗的目的。
多域值电压库(Multi-Threshold)
图2所示是漏电流、单元速度与阈值电压三者之间的关系。 一般情况下,高域值电压的标准单元漏电流小但速度慢,低 域值电压的标准单元则速度快但漏电流大。所以,采用多域值 电压库作为设计实现的目标库,在设计中尽可能多地用高域值 电压的标准单元,仅在关键路径上为了满足时序要求采用低域 值电压的标准单元。这样就可以最大限度地减小标准单元的 漏电流,从而降低静态功耗。
图2漏电流、单元速度与阈值电压三者之间的关系
电源关断(Power-Gating)
芯片中某些模块在不工作时,可以关断其电源,在需要工 作时,再将其电源导通,这就是电源关断技术。它可以使电源 关断区域的漏电流降至接近零,极大地减小芯片的静态功耗。 现在电源关断的技术也很多,有片内关断、片外关断。顾名思 义,片外关断就是在芯片外部通过切断电源来关断芯片内部 的某些模块。片内关断又分为精细关断(fine-grain)和粗糙关 断(coarse-grain):精细关断需要特别库的支持,可以实现每 个标准单元的精细关断;而粗糙关断只需要一些门控单元就可 以实现对某些模块的电源或地的控制。图3所示是电源关断 (Power-Gating)原理图,该方法用pmos来控制电源,用nmos来控制地。
2.4 基于 UPF 的低功耗设计流程
IEEE1801 标准 Unified Power Format (UPF)是被用于 标准语句描述低功耗意图的的低功耗实现标准。图4所示是 Synopsys公司提供的完整的基于UPF的低功耗综合、物理实 现和验证流程。该流程始于寄存器传输级(RTL)描述的逻辑设计,加上一个独立的描述低功耗设计意图的UPF文件。
RTL和UPF描述分别放在独立的文件中,使它们可以单独维 护和修改。在这个示例中,UPF是用Design Compiler在综合阶段实现、描述低功耗设计意图,在IC Compiler中读入低功 耗意图的UPF文件,最终通过物理设计流程来实现。
基于UPF的设计流程与传统流程相比,需要一些库中 特殊单元的支持以及在lib时序库中添加电源地的信息。特殊 单元包括 Level-shifter、Isolation Cell、电源关断单元(Power Gating,也叫 MTCMOS)、Retention-Register 以及 Always-on 单元。下面分别阐述:对于多电压设计,需要用Level-shifter 来实现不同电压域之间信号的电平转换。根据信号电平由高到 低和由低到高的转换,Level-shifter分为两类,High to Low Level-shifters,Low to High Level-shifters。对于电源关断技术, 电源关断区域的输出信号在电源关断时处于不定态,这种不定 态会导致其负载单元出现内部电流,从而导致不期望的功耗, 所以需要在电源关断区域的输出信号上插入Isolation Cell来 实现对不定态的隔离。对于电源关断技术,需要Power-Gating Cell(也称MTCMOS)来实现电源的关断。可以选择断开电 源(VDD)或地(VSS)的连接来实现Power-Gating,这两 种 Power-Gating Cell 被形象地称为 Header-Switch 和 Footer- Switch。在电源关断模块,有可能要求register对关断前的数 据进行锁存,或者在电源打开后要求对锁存的数据进行恢复, 这就需要特殊的单元Retention-Register。它有两个电源,一 个用于模块电源未关断时的工作用电,一个用于模块电源关断 时的用电。它还有两个控制信号save和restore,用于控制是 否锁存数据或者恢复数据。在电源关断模块,还有可能需要 有些信号线或逻辑长期工作,比如MTCMOS单元的控制信号 线,Retention-register 的 save/restore 控制信号,isolation cell 的控制信号等。为了实现这种功能,这就需要另外的特殊单元 叫 always-on cell[2]。
3超深亚微米congestion解决方案研究
随着工艺尺寸降低,模块面积越来越小,而且单个模块 的逻辑量可达上亿门级别,芯片的绕线将面临巨大挑战,笔 者以65GP工艺的模块级物理设计为例来研究超深亚微米下的 congestion解决方案。
3.1 floorplan
一个好的floorplan是一个复杂物理设计成功的一半,好 的floorplan往往可以决定好的QOR (quality of result),往往 可以影响之后的IR drop和EM以及后期timing/drc/power修 复的复杂度,所以笔者在设计之初阶段把评估floorplan作为 工作的重点。在65GP工艺的模块物理设计中,笔者总结的 floorplan的经验如下:
floorlan的规划应该首先根据前端提供的数据流。笔者的 做法是在 IC Comiler 中 write_def 之后 defIn 到 EDI 中,EDI 看数据流比较直观,然后根据顶层大致定的I/O的位置开始, check哪些module的MACRO和I/O的交互比较多,首先处 理这些MACRO,然后依次查看和这个MACRO相关的其他 的module的交互,直到规划完所有的MACRO。floorplan图 如图5所示。在floorplan的过程中,要特别注意MACRO之 间的位置,MACRO不应该埋得太深,MACRO之间的间距 要尽量留够,以防止后期fix timing时没有足够的空间或者是 MACRO沟道内的noise严重。在根据数据流规划时要尽量控 制module间的跨层次连线,这样后期congestion可能会有影响。 总之,floorplan要根据多次的尝试的结果来做改进。
图 5 floorplan 图示
3.2 P&R流程下的congestion解决方案
有了一个好的floorplan,有了好的QOR的条件,接下来, 就是需要在P&R的各个流程中去严格控制并执行congestion 解决方案。根据项目中的模块级物理设计,可以从以下几个方 面来着手:
第一,在run之前,应该检查EDA工具的运行环境。一 是工具的版本,版本不同,route后的QOR会有很大的差 距。其次是要check工具的脚本环境。比如ICC中,要首先 确认绕线的最高层次,以及时钟线的绕线rule、层次,设 置正确的TOP_LAYER。比如,模块的是1p8m 5x2z,本 来是8层metal的绕线资源,但是,由于TOP_LAYER要用 于顶层的power规划,所以metal8不能用,这时候TOP_ LAYER 应该是 metal7,然后就要去 cts_setting,route_setting 中把metal8相关的信息改为metal7。由于ICC在place阶段 是使用的virtual global的绕线,这个时候可以基本决定后期 的congestion。如果在run之前没有注意,后来place之后改, 在route不一定有好的效果,一定要注意细节。再者就是检查 各种约束,包括sdc约束,uncertainty设置是否合理,drc约束, max_transion/cap 是否合理。为了使 place 后的 congestion 有 意义,必须要严格控制place之后利用率的过快增长,否则 place的congestion报告完全没有意义!
第二,在place之前可以首先设置一个option : set_congestion_options -max_ulti 0.75
这个option可以为工具提供导向,控制局部利用率,在 place阶段后用tcl脚本来了解初步的congestion情况:
set placer_enable_enhanced_router true
Route_zrt_globle -effort high -congestion_map_only true
Report_congestion -effort high
用此tcl脚本可以得出congestion的map图,map图中有 各个metal的overflow的信息。如果congestion出现在std_ cell区域,那么首先要看floorplan是否合理,如有不合理, 调整floorplan,之后如果逻辑分散,弓入了跨层次连线,则可 以把分散区域的hierachical层次加bound约束,然后可以加 适当的keepout_margin,这个值要多try几次,找到最合适的值, 还可以加hard_blockage阵列。如果congestion出现在mem, 则可以将mem附近区域加大hard_blockage,让std_cell尽量 远离mem。
第三,在place开始的各个阶段加上-congestion选项, 这样工具以congestion driven为导向,在psynopt阶段可以多 优化几次。对于模块较高的模块,可以加上-area_recovery 选项来对non_critical的path进行整合,可以优化局部cell_ dencity。
对于前三种解决方案,要根据实际结果来调整,因为 从模块规划初期到最后前端交付final的网表,可能会有比 较大的出入,时序、逻辑量都会有比较大的变化,这些时候 floorplan都可能要做细微的调整。再者,后期的约束也要根 据情况调整,congestion关乎整个后端物理设计!
4超深亚微米信号完整性方法学研究
4.1信号完整性理论研究
随工艺尺寸降低,芯片复杂度提高,时钟频率越来越 高,信号完整性(signal integrity,SI)已经同成本、功耗、 性能成为制约芯片设计的关键问题。信号完整性是指信号能 可靠地传输到目的地,并有能力抵抗周边线的电磁干扰。SI 主要影响因素有串扰(crosstalk)和信号电迁移(signal electron migration),笔者主要讨论串扰带来的影响及我们的应对策略。 串扰是两条net间由于电容耦合引起的噪声,随芯片特征尺寸 不断减小,互连线的物理间距也减小,导致互连线的耦合电 容增大,串扰状况现在深亚微米已经很严重,串扰往往会导 致芯片的信号延迟和毛刺,信号延迟对于setup/hold余量不大 的timing path后期有很大的violation风险,对于glitch可能 会引起芯片失效。笔者认为主要五个电学特性来影响noise : nets间的寄生耦合电容,aggressor/victim nets的驱动能力大小, 相对转换时间,nets间总电容,nets间总电阻。如何优化和修 复noise,也主要从以上几个电学特性着手。
4.2信号完整性应对策略 4.2.1流程控制优化noise
根据实际项目的模块级物理设计,从以下几个方面来探 讨在IC Compiler流程下优化noise。
第一,在floorplan规划初期应该将noise放在比较重要 的位置,noise同congestion、timing、power都是相互依赖、 相互影响的,所以在初期规划时要在这几个关键因素下折中 考虑。对于noise来说,高频发区域主要有两点,一个就是 congestion area, 一个就是mem沟道区域,在初期规划一定要 重视这两点。
第二,正确设置各种约束。在sdc约束中,为每个 input_port设置driving_cell,提高timing分析质量,并防止 其在 PT 中的 delta delay 偏悲观,一般不 set_input_transition 0, 会增大input_signal的侵略性。对于clock_path上的transion 约束要合理,因为clock_net频率高,翻转率也高,具有 很强的侵略性,但是这些设置又和利用率是矛盾的,所以 transition的设置要和利用率寻求tradeoff。如果利用率也允许, 那么可以适当地将uncertainty加严,使timing尽量去优化, 增大timing余量,后期由noise引起的timing fail风险将降低。
第三,在place阶段,要最大程度地解决congestion的 问题,丰富绕线资源空间。如果noise 一旦发生在congestion area,那么串扰的修复将是很困难的。
第四,在cts阶段,设置合理的transition/cap约束。ck_ cell尽量用X4-X16,不要太小,也不要太大。太小,驱动太弱; 太大,侵略性太强,而且功耗较大。时钟绕线用NDR(non_ default_routing)rule,对于频率高、翻转率高的时钟线,要单 独加shielding来防止串扰。脚本如下:
Remove_routing _rule CLK_NDR_shield
Define_routing _rule CLK_NDR_shield
-width{M1 0.18 M2 0.2 M3 0.2 M4 0.2 M5 0.2 M6 0.2 M7 0.4}
-space{Ml 0.18 M2 0.2 M3 0.2 M4 0.2 M5 0.2 M6 0.2 M7 0.4}
Icc_create_shielding VSS $net_list
第五,在route阶段也可以设置一些option来优化noise, 笔者以ICC中的route脚本为例来说明:
set_si_options -delta_delay true
-static_noise true
-timing_window false
-min_delta_delay false -static_noise_threshold_above_low 0.2 -static_noise_threshold_above_high 0.2 -route_xtalk_prevention true -route_xtalk_prevention_threshold 0.2
Route_opt -xtalk_deduction -incremental -effort high[3] 4.2.2信号完整性的修复策略
尽管在EDA流程中采用一切办法来优化noise,但是不 免在后期还是会出现一些引起timing violation或者是glitch 的noise,这些是必须要全部clean,不然芯片将有很大风险。 对于修复策略,笔者主要总结了以下几点:
第一,对于noise的修复,大多数都比较头疼,因为不 能完全地依靠EDA工具去fix,大多数需要人手动干预。对于 noise数量较多时,可以将noise nets采用double_spacing的 绕线,减少相互影响。具体首先remove_net_routing有noise 的 nets,然后设置 lw2s 的 rule,然后 route_zrt_eco -nets $net_ list。
第二,如果模块的congestion比较严重,那么第一种方 法也不会有特别明显的效果。这时候就要考虑手动干预,可 以将victim/aggressor net移动减少影响,还可以一方面upsize victim_net, 一方面 downsize aggressor_net,两者都有一定风险, upsize victim后如果处理不当,可能会成为aggressor,后者, 对timing/transion余量不大会有一定风险,所以noise fix过程 要反复迭代几次,才能达到很好的效果。比如在下面的例子 中如图6所示,两条线并行走线太长,导致noise,修复方式 是将其中一条net移开。
图 6 crosstalk fix 示意图
在后期noise修复时,要特别注意时钟树上的noise,这 时候修复往往对timing产生很大影响,时钟树上的noise和 transition/cap violation要尽早发现,尽早解决,到后期再解 决将使delay风险增大。
5结语
本文针对SOC进入超深亚微米阶段后端物理的几个挑战 性的关键问题进行了探讨,从理论研究再结合实际项目模块级 物理设计来总结了笔者对于这些问题的解决方案,提出了一些 新的方法、新的思想,对于65 nm以下工艺都可以尝试。限 于笔者水平,有些方法可能在不同模块不同条件下不一定适用, 这些限于篇幅没有一一做描述,希望各位同行能发现其中问 题,欢迎一起探讨,探索数字集成电路后端物理设计的奥秘, 迎接超深亚微米的挑战!
20211023_61742b3dab615__基于65 nmX艺的SOC物理设计中的关键技术研究