1、ADVANCED ASIC CHIP SYNTHESIS,提纲,综合的定义ASIC design flowSynopsys Design Compiler的介绍Synopsys technology libraryLogic synthesis的过程Synthesis 和 layout的接口LTLPost_layout optimizationSDF文件的生成,综合的定义,逻辑综合:决定设计电路逻辑门的相互连接。逻辑综合的目的:决定电路门级结构、寻求时序和与面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。逻辑综合的过程:首先,综合工具分析HDL代码,用一种模型(GTECH) ,对HDL进行
2、映射,这个模型是与技术库无关的;然后,在设计者的控制下,对这个模型进行逻辑优化;最后一步,进行逻辑映射和门级优化,将逻辑根据约束,映射为专门的技术目标单元库(target cell library)中的cell,形成了综合后的网表。,ASIC design flow,Verified RTL,DesignConstraints,IP and LibraryModels,Logic Synthesis optimization&scan insertionStatic Timing Analysis,Formal verification,Floorplan placement,CT Inser
3、tion&Global routing,Transfer clock tree to DC,Post global routeStatic Timing Analysis,Detail routing,Post-layout Optimization(in-place optimization(IPO)Static Timing Analysis,Tape out,Time ok?,Time ok?,no,no,Time ok?,no,ASIC design flow,设计举例,tap控制器,已完成代码编写及功能仿真:Tap_controller.vTap_bypass.vTap_instru
4、ction.vTap_state.v完成全部设计还需经过如下几个步骤:Pre_layoutSynthesisSTA using PrimeTimeSDF generationVerificationFloorolanning and RoutingPost_layout反标来自layout tool的信息, STA using PrimeTimePost-layout OptimizationFix Hold-Time Violation,ASIC design flow,Initial Setup :建立设计环境,技术库文件及其它设计环境设置。 DC .synopsys_dc.setup 文
5、件 company =“zte corporation”; designer =“name”; technology=“0.25 micron” search_path=search_path+“.” “/usr/golden/library/std_cells” “/usr/golden /library/pads” target_library =std_cells_lib.db link_library =“*”,std_cells_lib.db,pad_lib.db symbol_library =std_cells.sdb,pad_lib.sdb,ASIC design flow,S
6、ynthesis:利用约束完成设计的门及实现及扫描插入Constrain scripts /* Create real clock if clock port is found */ if (find(port, clk) = clk) clk_name = clk create_clock -period clk_period clk /* Create virtual clock if clock port is not found */ if (find(port, clk) = ) clk_name = vclk create_clock -period clk_period -nam
7、e vclk,ASIC design flow,Constrain scripts(续) /* Apply default drive strengths and typical loads for I/O ports */ set_load 1.5 all_outputs() set_driving_cell -cell IV all_inputs() /* If real clock, set infinite drive strength */ if (find(port, clk) = clk) set_drive 0 clk /* Apply default timing const
8、raints for modules */ set_input_delay 1.2 all_inputs() -clock clk_name set_output_delay 1.5 all_outputs() -clock clk_name set_clock_skew -minus_uncertainty 0.45 clk_name /* Set operating conditions */ set_operating_conditions WCCOM /* Turn on Auto Wireload selection Library must support this feature
9、 */ auto_wire_load_selection = true,ASIC design flow,Compile and scan insert的scripts,采用bottom_up的编译方法 set_fix_multiple_port_net buffer_constants all compile scan check_test create_test_pattern sample 10 preview_scan insert_scan check_test 如果模块内的子模块具有dont_touch 属性需添加如下命令,因要插入扫描 remove_attribute find(
10、-hierarchy design,”*”)dont_touchWrite netlist remove_unconnected_ports find(-hierarchy cell,”*”) change_names hierarchy rules BORG set_dont_touch current_design write herarchy output active_design+”.db” write format verilog hierarchy output active_design+”.sv”,ASIC design flow,Pre_layout 的 STA :用DC的
11、静态时序分析引擎做block的STA,用PrimeTime做full_chip的STA。Setup_time分析Hold_time分析 其时序约束和提供给DC做逻辑综合的约束相同。静态时序分析同综合一样,是一个迭代的过程,和cell的位置及布线关系密切,通常都执行多次,直到满足需要。,ASIC design flow,SDF generation,pre_layout的SDF文件,用于pre_layout timing仿真,同时还需提供时序约束文件(SDF格式)给layout tool做布局布线。script文件如下: active_design=tap_controller read act
12、ive_design current_design active_design link Create_clock period 33 waveform 0 16.5 tck Set_dont_touch_network tck trst set_clock_skew delay 2.0 minus_uncertainty 3.0 tck set_driving_cell cell BUFF1X pin Z all_inputs() set_drive 0 tck trst set_input_delay 20.0 clock tck max all_inputs() set_output_d
13、elay 10.0 clock tck max all_outputs() write_timing format sdf-v2.1 -output active_design+”.sdf” write_constraints format sdf cover_design -output constraints.sdf,ASIC design flow,Verification利用SDF文件进行动态时序仿真:利用功能仿真时。用verilog 编写的test_bench 文件形式验证:利用数学算法检查设计的逻辑的等效性,静态验证,需要的时间比动态仿真少,验证全面。在这里验证RTL描述与gate
14、_level网表的逻辑等效性。Floorolanning and global Routing;Estimated 寄生电容和RC delay的抽取;利用抽取的参数静态时序分析,若时序不满足要求,生成custom wire_load 做incremental synthesis即post_layout的优化,采用reoptimize_design in_place命令,其script文件需反标抽取的参数到设计; Detail routing;real寄生电容和RC delay的抽取;利用抽取的参数静态时序分析,修正hold_time如需要做post_layout的优化;生成post_layou
15、t的SDF文件,做gate_level仿真验证;,ASIC design flow,ECOEngineering change order,不属于正常的ASIC流程,一般只有在ASIC设计的后期,需要改变网表,可利用ECO,例如,在tape-out(sign-off)以后,遇见设计的硬件bug。采用ECO可仅对设计的一小部分重新布线不影响chip其他部分的位置及时序,通常,修改不能大于10%。最新版本的DC提供由ECO compiler, 可使设计者手工修改网表,节省时间。一些layout工具也具有ECO功能。,DC介绍,Synopsys Design Compiler,是一个基于UNIX系统
16、,通过命令行进行交互的综合工具,除了综合之外,它还含有一个静态时序分析引擎及FPGA和LTL(links-to-layout)的解决方案。我们就以下几个方面对DC做以介绍:script文件:由DC的命令构成,可使DC自动完成综合的整个过程。DC支持的对象、变量、属性DC支持的文件格式及类型DC在HDL代码中的编译开关,控制综合过程Translate_off/translate_on:指示DC终止或开始verilog 源代码转换的位置。full_case:阻止case语句在不完全条件下生成latch。,Script 文件,Script 文件Script 文件的构成DC综合环境设置(.synops
17、ys_dc.setup);属性和约束信息;综合命令(read,compile);控制流命令; Conditional: Looping:if (expr) foreach(variable, list )dc_shell commands dc_shell commands else dc_shell commands while( expr) dc_shell commands Script 文件的检查:DC提供syntax and context checkers来检查Script文件的错误,DC支持的对象、变量、属性,对象,DC将设计对象分为8类,分别如下:Design:具有某种或多种逻
18、辑功能的电路描述;Cell:设计的instance;Reference:cell或instance在库中定义的名字;Port:design的输入、输出;Pin:design中cell的输入、输出;Net:ports和pins之间或pins之间的信号名;Clock:被定义为时钟源的pin或port;Library:cell的集合,如:target_library,link_library;,DC支持的对象、变量、属性,例如:,DC支持的对象、变量、属性,对象的查找命令格式 find -hierarchy type:DC支持的所有对象; name list:设计对象或库对象的清单; -hierar
19、chy:用于在设计的各层次寻找的对象; 该命令的返回值为List,list:一种字符串类型,例如:mylist=el1 el2 el3 例如:,DC支持的对象、变量、属性,变量,一种标识符,DC用于存储信息,可做为命令的操作参数。DC预定义的变量,可用它获得综合过程中的有关信息,如dc_shell_status; DC预定义的变量总有一个缺省值,用户可定义另外的值,如; dc_shellvhdlout_use_package=library IEEE.std_logic_1164; library STD_LIB; 用户定义的变量,用于自动化综合的过程。如,可定义一个变量,存储某个时钟域的fl
20、op的个数。定义变量:dc_shelldesigner=“myname”;获得UNIX的环境变量: dc_shelldesigner=get_unix_variable(“USER”)显示变量的值: dc_shellList target_library target_library=“cbacore.db”列出所有的变量: dc_shellList variable all移去变量: dc_shell remove_ variable designer,变量没有移去之前,不得重新定义。注:变量值不会被保存在设计数据库中。,DC支持的对象、变量、属性,属性,DC用于存储具体的设计对象,如:ne
21、ts,cells,clocks的信息,一般来说,属性都是DC预定义,命令如下: set_attribute get_attribute dc_shellget_attribute STD_LIB default_max_transition,DC的文件格式及类型,DC支持的文件格式*.db文件,DC的内部文件格式Verilog文件VHDLEDIF:electronic design interchange format,用于不同工具间门级网表的移植DC的文件类型Script files .scr RTL verilog file .v RTL VHDL file .vhdSynthesized
22、 VHDL netlist .svhd EDIF file .edfSynthesized verilog netlist .sv Synopsys database file .db report . rptLog files .log,Synopsys technology library,Synopsys technology library technology library由半导体制造商提供,定义cell的相关信息及设计标准约束,分为两类:target libraries:在门级优化及映射时,提供生成网表的cell;link libraries:提供设计网表中可引用的cell,DC
23、不利用link libraries的cell做综合; Synopsys technology library结构组织可看作实际上的技术库标准,它是一个文本文件(扩展名“.lib”),在使用之前,需被LC编译,产生一个“.db”文件,其构成如下:Library Group;Library level attributes;Environment description;Cell description;,Synopsys technology library,Library Group:定义库名 library(ex25)/* Library Group /*start of library*/
24、 /*end of library*/一般,一个库文件含有一个Library Group ,库文件和Library 名相同。,Synopsys technology library,Library level attributes:定义技术库的全局属性,如:技术库的类型(CMOS/TTL)、日期、版本及缺省值,例如: library (ex25) technology(cmos); delay_model :table_lookup; date :”feb 29,2000”; revision :”1.0”; current_unit :”1A”; time_unit :”1ns”; volt
25、age_unit :”1V”; pulling_resistance_unit :”1kohm”; capacitive_load_unit(1.0 pf); default_inout_pin_cap :1.5; default_input_pin_cap :1.0; default_output_pin_cap :0.0; default_max_fanout :10.0; default_max_transition :10.0; default_operating_condition :NOMINAL; in_place_swap_mode :match_footprint; ,Syn
26、opsys technology library,Environment description:主要包括:缩放因子(scaling factors)时序模型(timing rang models)操作条件(operation condition)线性负载模型(wire-load models)缩放因子(scaling factors 或K-factors):实际上是一个乘数因子,表示随着PVT的变化,对设计延时的修正。例如:K_process_fall_transition :1.0;K_process_rise_transition :1.2;K_temp_fall_transition
27、:0.03;K_temp_rise_transition :0.04;K_volt_fall_transition :0.02;K_volt_rise_transition :0.5;时序模型(timing rang models):根据操作条件的变化,修正信号到达时间,如:Timing_range(BEST) faster_factor :0.5; slower_factor :1.3;,Synopsys technology library,操作条件( operation condition):定义了PVT和RC树模型。DC根据操作条件缩放cell和net的delay;,Synopsys
28、technology library,tree_type:定义时序计算时内部连结的电阻、电容值的分配,有worst_case_tree, balance_tree, best_case_tree,三种类型可贡选择。我们利用Dc来表示driver pin和driven cell的input pin的内连延时,则它们的wire_load分别对因如下:,Synopsys technology library,线性负载模型(wire-load models):估计pre_layout电路中net的电容,电阻及面积。Synopsys 提供了几种不同的wire-load models以对相应的设计逻辑大小
29、,它给出了net fanout 和net length 的统计关系。例如:,Synopsys technology library,Cell description:描述cell的属性,包括:输入输出pin、时序等,例如: cell(BUFFD0) area:5.0; pin(Z) max_capacitive:2.2; max_fanout:4; function:”I”; direction:output; timing() related_pin: “I”; pin(I) direction:input; capacitive:0.04; fanout_load:2.0; max_tra
30、nsition:1.5; ,Synopsys technology library,Cell各pin相关的DRC属性Input pin的fanout_loadOutput pin的max_fanoutInput or output pin 的max_transitionInput or output pin的max_capacitance DRC属性定义了库中cell的操作条件,和制造厂家的工艺技术相关,设计不能超出这些条件的规定。Cell 的DRC属性可以用如下命令改动dc_shell set_attribute find(pin,ex25/BUFFD0/Z) max_fanout 2.0时
31、序cell通过将clock input pin的“clock”属性设置为true定义input pin为时钟。,Synopsys technology library,Good library所有的cell都有各种各样的驱动强度;Buffer和inverters的驱动强度变化范围大;Cell的rise和fall的delay较均衡;一个物理cell含有相同逻辑功能,但相位相反输出隔离,如:OR,NOR;两个物理cells,有相同逻辑功能,但相位相反如:AND,NAND;拥有各种高驱动强度的带有一个输入inverters复杂cells(AIO,OAI);拥有各种高驱动强度的高扇入的cells;拥有
32、各种驱动强度的,正沿负沿触发的flip_flop;拥有各种输出驱动强度的flip_flop;拥有各种不同的set,reset组合的Flop;拥有各种驱动强度的,正沿负沿触发的latch;拥有delay cell;,Synopsys technology library,Synopsys 支持如下集中延时模型:CMOS通用延时模型;CMOS线性延时模型;CMOS非线性查找表模型;前两种模型已不常用,我们现在采用非线性延时模型(non-linear delay model)计算cell的延时。所谓NLDM,是一个二维查找表,根据一个cell的input transition 和output loa
33、ding 查找cell的delay和output transition ,一般每一个cell都有两个表,一个用于cell delay,另一个用于output transition 。对于input transition 和output loading 没有在表中列出的cell,可用插入法计算得到。Cell的延时由input transition和output loading决定,但input transition就是driving cell的output transition,若driving cell有多个timing arc,则driven cell的延时计算会受影响。例如, U1有两个o
34、utput transition,对U2的延时计算如何选取input transition?我们可采用set_disable_timing U1 from A to Z,避免DC采用A to Z的timing arc.,reset,a,2ns,0.3ns,Z,Z,Affected gate,U2,U1,A,B,Partitioning for synthesis,划分的目的使设计易于管理,提高设计的重用性获得更好的综合结果简化约束和scripts,使综合操作更容易;提高编译速度划分应综合考虑以下几个方面逻辑的功能设计的目标编译的技术下面就以下几个方面做简单介绍划分的方法划分的原则RTL编码指南
35、,Partitioning for synthesis,划分的方法在编写HDL代码之前,根据功能做初步划分;DC可在综合和对划分进行修改;在DC中改变划分的命令:group,ungroup Group:将指定的实例组合为一个模块,生成新的层次划分; Ungroup:移去以前的模块划分。在执行group和ungroup命令之前,包含实例的设计模块需设置,命令如下: dc_shellcurrent_design top,U0,U1,U2,top,U0,U1,U2,sub1,top,Group U1 U2 design_name sub1,Ungroup -all,Partitioning for
36、synthesis,划分遵循的原则:相关的组合逻辑在一个模块内;设计可重用性;根据功能划分模块;结构逻辑 和随机逻辑分开;一个合理的尺寸(最大10K门);在顶层分为I/Opads,DFT,clock,core logic;在顶层不要加粘合逻辑;状态机和别的逻辑分开;在一个block中不要有多个时钟;用于时钟同步的块要隔离;划分时,应考虑Layout;与技术库相关的实例化的cell应在单独模块内;,Partitioning for synthesis,编码指南 RTL级的HDL描述实际是电路结构的文本描述,它是技术无关的,类似于网表。HDL语言先于综合工具出现,综合工具只能根据HDL代码进行逻辑
37、推断,对完成同一功能而书写方式不同的HDL代码,综合工具会产生不同逻辑电路。所以不能依靠DC去修正不符合规范的代码。写代码时,需清楚描述的硬件电路拓扑结构。RTL描述内容如下:寄存器的结构;电路的拓扑;寄存器之间的功能;DC仅对寄存器之间的逻辑进行优化,不会对寄存器的排列进行优化。,Partitioning for synthesis,编码指南HDL代码的编写应注意技术独立性,尽量减少引用在某些库中定义门的hard_coded。若必须引用,将这些引用门放在一个单独的模块内。Clock 逻辑Clock逻辑及reset生成应放在一个模块中,便于综合时对时钟约束的定义;Clock命名在设计的各层次应
38、保持一致性;在一个模块内不要由多个时钟;对于时钟源的mux,用于测试时控制时钟,最好人为实例化,便于set_disable_timing的使用;在top level不要有粘和逻辑;一个文件仅包含一个模块,模块名与文件名相同;I/O pad应为单独的模块;最小化不必要的层次,过多的层次会降低电路的性能,因DC逻辑优化不能跨越模块的层次;所有模块的输出直接来自寄存器的输出;状态机对verilog,State命名使用“parameters” ;组合逻辑和时序逻辑分开;,综合环境建立,在综合之前必须用setup文件配置综合的环境,下面,我们就以下几个方面对setup文件进行介绍:setup文件的位置s
39、etup文件的内容setup文件举例,综合环境建立,setup文件的位置: 由一个setup文件提供,文件名必须为“.synopsys_dc.setup”,通过向相关环境变量赋值,定义技术库的位置及综合需要参数。setup文件的位置如下:Synopsys installation directory:它用于卸载Synopsys 技术独立库及别的参数,不包含设计相关的数据。Users home director:用的setup信息。Project working directory:设计的setup信息 DC按以上顺序依次读取setup文件,最后一个读取的setup文件将覆盖前面读取的setup
40、文件。将设计相关的startup文件放于Project working directory下。,综合环境建立,Startup文件必须定义如下变量:Search_path:指明库文件的位置Target_library:既技术库,由生产厂家提供,该库中的cells,被 DC用于逻辑映射。 Target library的文件名应包含在Link library的文件清单中,用于DC读取门级网表。Link_ library:该库中的cells,DC无法进行映射,例如:RAM,ROM及Pad,在RTL设计中,这些cells以实例化的方式引用。Symbol_library:该库文件包含技术库中cells的图
41、形表示,用于DA生成门级示意图。 Target_library和Link _library为设计者提供了将门级网表从一种技术在映射 到另一种技术的方法,将旧的Target library文件名包含在Link_library的文件清单中,而Target_library包含新的Target library文件名,利用translate命令实现。,综合环境建立,设计相关的startup 文件的例子: .synopsys_dc.setup 文件 company =“zte corporation”; designer =“name”; technology=“0.25 micron” search_p
42、ath=search_path+“.” “/usr/golden/library/std_cells” “/usr/golden /library/pads” target_library =std_cells_lib.db link_library =“*”,std_cells_lib.db,pad_lib.db symbol_library =std_cells.sdb,pad_lib.sdb 其它的环境变量的设置参看DC的操作手册。,逻辑综合的过程,DC通过Script文件,自动完成模块的综合过程,其内容如下:RTL design entryEnvironment constraints
43、Design and clock constraintsCompile design into mapped gatesOptimizing designanalyze the synthesis results and debug potential problems. Save design netlistReport constraints (Optional) Apply critical path constraints (Optional) Second compile to improve critical paths (Optional) Second path compile constraint report,