Floorplan --blocklevel 爱芯人课堂/QQ群187291154 爱芯人课堂/QQ群187291154 Floorplan DFT RTL Floorplan Netlist 数字逻辑综合 Placement CTS/Opt GDS 物理实现 Route DFM 形式验证/Fonrmality STA Signoff DRC/LVS/Antenna Power Signoff 爱芯人课堂/QQ群187291154 DFT RTL Floorplan Netlist 数字逻辑综合 Placement CTS/Opt GDS 物理实现 Route DFM 形式验证/Fonrmality STA Signoff Notes: 1.物理实现:physical implementation,physical design,PD,PR,PnR,P&R; DRC/LVS/Antenna Power Signoff 爱芯人课堂/QQ群187291154 内容 0.ICC基本使用 1.Design setup 2.floorplan 爱芯人课堂/QQ群187291154 目标: 1.Icc基本使用 2.DesignSetup:创建milkyway library,设置物理实现阶段所需要的数据,包括 逻辑库,物理库,工艺文件等;读入design; 3.Initialize floorplan:创建形状,创建row,track等; 4.Macros & Pins摆放,tapcell & endcap insertion; 5.添加物理约束; 6.Power/Ground network创建; 7.Write floorplan; 爱芯人课堂/QQ群187291154 0.ICC基本使用 爱芯人课堂/QQ群187291154 详情见演示课 内容 0.ICC基本使用 1.Design setup 2.floorplan 爱芯人课堂/QQ群187291154 1.DesignSetup:物理实现需要的数据 爱芯人课堂/QQ群187291154 1.DesignSetup:Logical Libraries 爱芯人课堂/QQ群187291154 1.DesignSetup:Logical Libraries library ("saed90nm_max_hth_lvt") { saed90nm_hth_lvt.lib …… operating_conditions (WORST) { process : 1.000000; temperature : 125.000000; voltage : 1.080000; tree_type : "worst_case_tree"; } wire_load (ForQA) { capacitance : 0.029396; resistance : 2.273000e-03; slope : 30.285426; fanout_length("1", \ "8.2750360"); …… } cell(“AND2”){ …… } …… Notes: } 爱芯人课堂/QQ群187291154PVT=Process + Temp + Volt 1.DesignSetup:Logical Libraries 爱芯人课堂/QQ群187291154 1.DesignSetup:Physical Libraries .tf中定义 爱芯人课堂/QQ群187291154 1.DesignSetup:Physical Libraries Icc>open_mw_lib Vendor_XYZ_std_cell_90nm Icc>open_mw_cel and2a1.CEL Icc>open_mw_cel and2a1.FRAM 1.DesignSetup:Physical Libraries Milkyway:CEL View vs. FRAM View INV.CEL 爱芯人课堂/QQ群187291154 INV.FRAM 1.DesignSetup:Physical Libraries Milkyway:CEL View vs. FRAM View SRAM8x16.CEL Top Metal = M5; 包括所有的物理信息; 爱芯人课堂/QQ群187291154 1.DesignSetup:Physical Libraries Milkyway:CEL View vs. FRAM View SRAM8x16.FRAM Top Metal = M5; 包括pin的位置和形状, routing blockage; 爱芯人课堂/QQ群187291154 把blockage去掉后 1.DesignSetup:Physical Libraries 细节 抽象 Encounter GDS LEF IC Compiler CEL View FRAM View Notes: 1.Stdcel:一般IP厂商同时提供CEL View+FRAM View, GDS+LEF; 2.Macro (包括Memory,PLL,IO等) :一般IP厂商只提供GDS+LEF,需要转 换到CEL View和FRAM View, 以便ICC使用; 3.LEFFRAM View,GDSCEL View:这个转换可以通过synopsys的 Milkyway工具; 爱芯人课堂/QQ群187291154 1.DesignSetup:Physical Libraries Milkyway:CEL View vs. FRAM View Notes: 物理实现阶段 1.物理实现阶段只需要FRAM View(不能缺),不需要CEL View; 2.工具只需要知道单元的物理尺寸多大,什么形状,端口从哪里连接,内部用了哪 些layer,什么地方不能让工具走线等等(FRAM View); 3.至于内部的细节(CEL View),不需要让工具知道,CEL View不需要被读入ICC ,节省内存,加快处理速度; Notes:物理验证/流片 1.流片需要所有Cell的全部细节,要包括所有内部调用到Cell的GDS; 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Technology File: .tf .tf文件来定义物理规则; create_mw_lib \ -tech $TECH_FILE \ -mw_reference_library $MW_REFERENCE_LIB_DIRS \ …… 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Technology File: .tf 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Technology File: .tf unit tile (site) BUF FF NOR INV 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Technology File: .tf pitch spacing width 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Parasitic RC Model: TLU+ 0.5 ns Rnet Cnet Cpin 需要计算/估算RC信息… 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Parasitic RC Model: TLU+ • IC Compiler calculates C and R using the net geometry and the TLU+ look-up tables TLU+ ICC, PC, Astro™ Single Process File (ITF),Fab提供 nxtgrd Star-RCXT™ 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Parasitic RC Model: TLU+ • • • ITF (process file) provided by the vendor/fab TLU+ model is generally not provided Generate TLU+ from ITF unix% grdgenxo -itf2TLUPlus -i <ITF file> -o <TLU+ file> Where: -itf2TLUPlus -i -o generates TLU+ instead of nxtgrd file is the ITF file is the output, binary TLU+ model file Always use the latest Star-RCXT release to generate the models. 爱芯人课堂/QQ群187291154 1.DesignSetup:Technology File + TLU+ Parasitic RC Model: TLU+ U2 R3 C3 U1 C1 R2 C4 R1 C2 set_tlu_plus_files -max_tluplus abc_max.tlup -min_tluplus abc_min.tlup -tech2itf_map abc.map TLU+用于计算wire的寄生参数的,包括电阻,电容,耦合电容等等; 1.DesignSetup:Technology File + TLU+ The Mapping File maps the .tf (MW technology file) layer/via names to Star-RCXT .itf layer/via names. abc.tf Layer "METAL" { layerNumber maskName … abc.itf/tlu+ DIELECTRIC cm_extra3 { THICKNESS=0.06 ER=4.2 } CONDUCTOR cm { THICKNESS=0.26 WMIN=0.16 …} DIELECTRIC diel1d { THICKNESS=0.435 ER=4.2 } … = 14 = "metal1" abc.map conducting_layers poly metal1 metal2 … poly cm cm2 爱芯人课堂/QQ群187291154 1.DesignSetup:①创建Milkyway Library set target_library "$stdcel_libs" set link_library "* $target_library $memory_libs" create_mw_lib \ -tech $TECH_FILE \ -mw_reference_library $MW_REFERENCE_LIB_DIRS \ oc8051_LIB set_tlu_plus_files -max_tluplus abc_max.tlup -min_tluplus abc_min.tlup -tech2itf_map abc.map 如果有多个scenario,需要对每个scenario指定tlu+; 一个tlu+就是一个RC Corner; Notes: 1.Scenario:Mode + Delay Coner (PVT + RC Corner) 爱芯人课堂/QQ群187291154 1.DesignSetup:②读入Design open_mw_lib $MW_DESIGN_LIBRARY #read_verilog -top $DESIGN_NAME $ICC_IN_VERILOG_NETLIST_FILE import_designs $ICC_IN_DDC_FILE -format ddc -top $DESIGN_NAME cel $DESIGN_NAME current_design $DESIGN_NAME uniquify_fp_mw_cel link Notes: 1.ddc中包括netlist,sdc,还可以包括一些物理信息,如placement blockage, -spg 信息信息等; 2.Spg flow中:除了用ddc传递spg信息之外,还可以使用netlist + def; 2.ddc中的sdc信息在icc中一般不被使用,而是重新读入sdc(新的margin和一些 其他设置); 爱芯人课堂/QQ群187291154 1.DesignSetup:②读入Design 爱芯人课堂/QQ群187291154 1.DesignSetup 爱芯人课堂/QQ群187291154 请在icc中使用copy_mw_cel 内容 0.ICC基本使用 1.Design setup 2.floorplan 爱芯人课堂/QQ群187291154 2.floorplan 爱芯人课堂/QQ群187291154 2.floorplan 切换到design planing状态 : File Tasks Design Planing Notes: 1.Floorplan之前,请阅读IP的doc,查看使用ip时是否有特别的要求; 2.Floorplan的很多工作跟stdcel/macro的设计风格有关,跟tf等也有关; 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状 ① icc_shell> create_floorplan -left_io2core 10 -bottom_io2core 10 -right_io2core 10 top_io2core 10 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状 ① Core to top Core to right Core to left CORE Core to bottom 注意:Core Area/Die Area 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状 ② create_floorplan \ -control_type width_and_height \ -core_width 500 -core_height 300 -left_io2core 10 -bottom_io2core 10 \ -right_io2core 10 -top_io2core 10 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状 ③多边形 initialize_rectilinear_block -shape L -control_type ratio -core_side_dim {100.0 100.0 200.0 200.0 1.0 1.0} -orientation N -core_utilization 0.700132 -row_core_ratio 1.00 -left_io2core 10.0 -right_io2core 10.0 top_io2core 10.0 -bottom_io2core 10.0 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状 ③多边形 其他… … (见演示课) Notes: 1.形状和面积怎么来? 例如:第一次使用util=72%,大概知道了所需要的面积; 基本保持这个面积不变,根据top的需求调整形状; 或:直接由top工程师给sub-module物理设计工程师一个形状; 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状:效果 Stdcel row 爱芯人课堂/QQ群187291154 2.floorplan:floorplan initialization 定义大小和形状:效果 Metal track Metal的方向在tf中定义 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 Macro摆放考虑: 1.有利于timing; 2.有利于congestion; 3.IR Drop考虑:robust + area4decaps Macro摆放建议: 1.靠边摆放; 2.同一个hierarchy的macro尽量靠近摆放; 3.注意signal pin的方向,注意PG pin的分布; 4.注意Macro之间的连接关系,Hierarchy分析,DataFlow分析; 5.Macro的堆叠要考虑到对congestion、timing、si等的影响; 6.Leave some room for decap insertion; 7.可让工具自动粗略摆放,得到一个初始参考; 8.floorplanplace_opt refine floorplan 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 Hierarchy: 常用 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 Hierarchy: 常用 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 可让工具摆放一个初始参考 FileTasksDesignPlaning… 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 可让工具摆放一个初始参考 爱芯人课堂/QQ群187291154 create_fp_placement 2.floorplan:Macro Cell的摆放 可让工具摆放一个初始参考: 可添加macro摆放约束 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 DFA:Data Flow Analysis 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 DFA:Data Flow Analysis 用的少 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 DFA:Data Flow Analysis 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 DFA:Data Flow Analysis 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 细节 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 细节 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 细节 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 常用手工工具 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 常用手工工具 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 常用手工工具 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 常用手工工具 爱芯人课堂/QQ群187291154 2.floorplan:Macro Cell的摆放 可以把Macro的摆放信息写出来,保存为脚本,以便下一次直接使用; 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 Ports: logical object Terminal:physical object port get_ports terminal get_terminals 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 位置根据需求决定; layer呢? :考虑Metal的方向 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 实现方法:① 需要约束 place_fp_pins –block_level 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 实现方法:① place_fp_pins –block_level 约束:Pin constraints 得到一个模板修改读入 write_pin_pad_physical_constraints read_pin_pad_physical_constraints 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 实现方法:① place_fp_pins –block_level 约束:Pin placement blockages 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 实现方法:① place_fp_pins –block_level 约束: Pin Guide create_pin_guide –bbox {170 20 180 50} \[get_ports Addr*] 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 实现方法:② 手工+脚本 set_attribute [get_terminals hdata_1_] bbox {{0 0} {0.1 0.1}} set_attribute [get_terminals hdata_1_] layer M2 爱芯人课堂/QQ群187291154 2.floorplan:Ports/Terminals的摆放 可以把Port/Terminal的摆放信息写出来,保存为脚本,以便下一次直接使用; 爱芯人课堂/QQ群187291154 2.floorplan:EndCap 为什么要endcap? 爱芯人课堂/QQ群187291154 2.floorplan:EndCap set_keepout_margin -all_macros -outer {5 5 5 5} 爱芯人课堂/QQ群187291154 2.floorplan:EndCap RAM5 Pins are on left and right set_keepout_margin -type hard -outer {10 0 10 0} RAM5 爱芯人课堂/QQ群187291154 2.floorplan:TapCell 为什么要tapcel? 爱芯人课堂/QQ群187291154 2.floorplan:TapCell INV 为什么要tapcel? Taped stdcel library:不再需要tapcel 爱芯人课堂/QQ群187291154 2.floorplan:TapCell 为什么要tapcel? INV Tapless stdcel library:需要tapcel 爱芯人课堂/QQ群187291154 2.floorplan:TapCell 按照什么规则来添加tapcel? Fab的DesignRule中有要求. 爱芯人课堂/QQ群187291154 2.floorplan:TapCell 按照什么规则来添加tapcel? 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 原则: 1.给所有Macro供上电; 2.给所有stdcel供上电; 3.As robust as possible; 4.最终评估标准要看:IR Drop; 建议: 1.查看stdcel的metal使用和方向,关注tf中各layer的方向; 2.查看macro的PG Pin的使用和方向(同时要注意macro的摆放方向); 3.确认当前使用的metal层数(M1-M6?); 4.考虑Top如何给当前block供电,连接关系; 5.注意macro之间的channel的供电; 6.基于以上因素,制定形成一个整体供电方案; 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 1.查看stdcel的metal使用和方向; PG Rail:M2 Direction: H:M2,M4,M6,… V:M1,M3,M5,… 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 2.查看macro的PG Pin的使用和方向(同时要注意macro的摆放方向); PG Pin:H/M4 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 1.查看stdcel的metal使用和方向; PG Rail:M1 Direction: V:M2,M4,M6,… H:M1,M3,M5,… 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 2.查看macro的PG Pin的使用和方向(同时要注意macro的摆放方向); PG Pin:H/M5 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 3.确认当前使用的metal层数(假设M1-M6?); 4.考虑Top如何给当前block供电,连接关系; M6 M7 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 总体供电方案:一个例子 PG Rail:M1 Direction: V:M2,M4,M6,… H:M1,M3,M5,… Metal Layers: M1-M6 Macro PG Pin: H/M5 Top: supply block with H/M7 M4 M5 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 总体供电方案:一个例子 PG Rail:M1 Direction: V:M2,M4,M6,… H:M1,M3,M5,… Metal Layers: M1-M6 Macro PG Pin: H/M5 Top: supply block with H/M7 M4 M5 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 总体供电方案:一个例子 PG Rail:M1 Direction: V:M2,M4,M6,… H:M1,M3,M5,… Metal Layers: M1-M6 Macro PG Pin: H/M5 Top: supply block with H/M7 M4 M5 M6 爱芯人课堂/QQ群187291154 2.floorplan:PG Network 总体供电方案:一个例子 PG Rail:M1 Direction: V:M2,M4,M6,… H:M1,M3,M5,… Metal Layers: M1-M6 Macro PG Pin: H/M5 Top: supply block with H/M7 M4 M5 M6 M7 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现:① Logically Connect PG Pins with PG Nets derive_pg_connection -power_net VDD -ground_net VSS -create_ports top derive_pg_connection -power_net VDD -power_pin VDD -cells [get_flat_cells *] -reconnect derive_pg_connection -ground_net VSS -ground_pin VSS -cells [get_flat_cells *] -reconnect 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现:② Macro Ring 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ② Macro Ring create_rectangular_rings -nets {VDD VSS} -around specified -cells {oc8051_rom1_u_sram0 oc8051_rom1_u_sram1 oc8051_rom1_u_sram2 oc8051_ram_top1_oc8051_ram1_u_ram_wrap_u_sram0 oc8051_ram_top1_oc8051_ram1_u_ram_wrap_u_sram1 oc8051_ram_top1_oc8051_ram1_u_ram_wrap_u_sram2 oc8051_ram_top1_oc8051_ram1_u_ram_wrap_u_sram3} -left_offset 0.5 left_segment_layer M4 -left_segment_width 1 -right_offset 0.5 right_segment_layer M4 -right_segment_width 1 -bottom_offset 0.5 bottom_segment_layer M5 -bottom_segment_width 1 -top_offset 0.5 top_segment_layer M5 -top_segment_width 1 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ② Macro Ring 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ③ PG Strap, M4 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ③ PG Strap, M4 create_power_straps -direction vertical -start_at 10 num_placement_strap 999 -increment_x_or_y 50 -nets {VDD VSS} layer M4 -width 3 -pitch_within_group 25 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ③ PG Strap, M4 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ④ PG Strap, M5 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ④ PG Strap, M5 set_preroute_drc_strategy -max_layer M5 -min_layer M4 create_power_straps -direction horizontal -start_at 10 num_placement_strap 999 -increment_x_or_y 50 -nets {VDD VSS} layer M5 -width 3 -pitch_within_group 25 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ④ PG Strap, M5 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ④ PG Strap, M5 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑤ PG Strap, M6 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑤ PG Strap, M6 set_preroute_drc_strategy -max_layer M6 -min_layer M5 create_power_straps -direction vertical -start_at 20 num_placement_strap 999 -increment_x_or_y 100 -nets {VDD VSS} layer M6 -width 6 -pitch_within_group 50 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑤ PG Strap, M6 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑤ PG Strap, M6 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑥ Preroute Macros 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑥ Preroute Macros 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑥ Preroute Macros preroute_instances 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑥ Preroute Macros 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑦ Preroute Rail 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑦ Preroute Rail preroute_standard_cells -nets {VDD VSS} -connect horizontal port_fillter_mode off cell_instance_filter_mode off voltage_area_filter_mode off route_type {P/G Std. Cell Pin爱芯人课堂/QQ群187291154 Conn} 2.floorplan:PG Network PG Network实现: ⑦ Preroute Rail 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑦ Preroute Rail set_preroute_drc_strategy -max_layer M4 -min_layer M1 preroute_standard_cells -nets {VDD VSS} -connect horizontal port_fillter_mode off -cell_instance_filter_mode off voltage_area_filter_mode off -route_type {P/G Std. Cell Pin Conn} 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑦ Preroute Rail 爱芯人课堂/QQ群187291154 2.floorplan:PG Network PG Network实现: ⑦ verify PG connection verify_pg_nets 能检查出未供上电的cell/区域 爱芯人课堂/QQ群187291154 2.floorplan:Extra Physical Constraints 爱芯人课堂/QQ群187291154 2.floorplan:Extra Physical Constraints 爱芯人课堂/QQ群187291154 2.floorplan:Extra Physical Constraints 爱芯人课堂/QQ群187291154 2.floorplan:Extra Physical Constraints 爱芯人课堂/QQ群187291154 2.floorplan:Extra Physical Constraints 爱芯人课堂/QQ群187291154 2.floorplan:write floorplan 爱芯人课堂/QQ群187291154 2.floorplan:write floorplan 爱芯人课堂/QQ群187291154 谢谢! 爱芯人课堂/QQ群187291154 Floorplan 爱芯人课堂/QQ群187291154