ASIC设计流程-DC课件.ppt

上传人(卖家):三亚风情 文档编号:2928966 上传时间:2022-06-12 格式:PPT 页数:69 大小:1.71MB
下载 相关 举报
ASIC设计流程-DC课件.ppt_第1页
第1页 / 共69页
ASIC设计流程-DC课件.ppt_第2页
第2页 / 共69页
ASIC设计流程-DC课件.ppt_第3页
第3页 / 共69页
ASIC设计流程-DC课件.ppt_第4页
第4页 / 共69页
ASIC设计流程-DC课件.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、基于standcell的ASIC设计流程使用DC进行逻辑综合Setup Filesetup file是一个脚本文件,用来指定DC综合时所需的初始化信息,它也可以和约束文件写在一起,但建议分开写,方便脚本的管理。需要定义的变量有:target_library:综合用的目标库,它一般是由生产线提供的工艺相关的库,如slow_1v08c125.db是smic0.13um最坏情况下的目标库。synthetic_library:综合库,它包含了一些可综合的与工艺无关的IP。dw_foundation.sldb是Synopsys提供的名为Design Ware的综合库,它包含了基本的算术运算逻辑、控制逻辑

2、、可综合存储器等IP,在综合时调用这些IP有助于提高电路性能和减少综合时间。link_library:链接库,DC不使用该库中的cells进行映射,它是DC在读入综合后网表时用来参考的库,RAM,ROM,PAD,macros都应包含在这个库,目标库和综合库也必须包含在其中。 symbol_library:指定的符号库,使用GUI时会调用。search_path:指明库文件的位置,这样在添加上面的库时就不用写绝对路径。另外还有一些变量需要在setup file里进行设置,分别是:define_name_rules,bus_naming_style,verilogout_show_unconnec

3、ted_pins,verilogout_no_tri,后面会讲到。使用DC进行逻辑综合 Design Environment 功能:定义设计的工艺参数,I/O端口属性,统计wire-load模型。下图解释了描述设计环境约束的DC命令:set_max_capacitance set_max_transition &set_max_fanout on input &output ports or current_design; Block BClockDividerLogicBlock Aset_load on output set_operating_conditions on the whol

4、e designclkset_drive on Clock set_driving_cell on input signals set_load on inputs set_wire_load for each block,including top level 使用DC进行逻辑综合 Design Environmentset_min_library:允许同时设置worst-case和best-case libraries,从而在初步编译时,DC修正hold-time violations时,避免出现setup-time的violation。 例:set_min_library slow_1v

5、08c125.db -min_version fast_1v32cm40.dbset_operating_conditions:定义设计的工艺,电压,温度等参数。操作条件的名字每个库不同,到库中去查。cell和net的delay和这几个参数呈线性关系,delay的计算公式如下(smic0.13um为例):(1) (1)TPDprocessvoltddtemptypicaltKKVKTtint()typicalrinsicloadloadttKCTPDt总传递延时(ns),()typicaltCns。一般情况下的延时1.2v,25典型工艺intrinsictcell不带负载时的固有延时(ns)(

6、/),loadKns pF负载的乘积因子是工艺厂家为简化计算 公式而使用的,cell的datasheet中可查到loadC总的输出负载,processKslow typical fast工艺因子,包括(/)voltKV电压参数1.2ddddVVv(/)otempKC 温度因子25oTC 工作温度使用DC进行逻辑综合 Design Environment 命令set_operating_conditions min BEST max WORST用于指示DC对WORST和BEST条件,同时优化。WORST用于对setup-time进行优化,BEST用于对hold-time进行优化,当BEST和WO

7、RST都满足时,TYPICAL也就可以满足。 例:set_operating_conditions -min fast_1v32cm40 -max slow_1v08c125set_wire_load_model:用于设置线负载模型估计连线负载,线负载模型是根据cell的扇出数查表得到线长,再用线长乘以单位线长的电阻和电容值得到的负载电阻电容值的,如图:使用DC进行逻辑综合 Design Environment 线负载模型是一个统计模型,它估计出的负载是不准确的,尤其是0.35um以 下的工艺,因此,在布局布线前应使用较悲观的模型,对最坏的情况做综合, 线负载模型由目标库提供。 例:set_w

8、ire_load_model -name smic13_wl10 -min set_wire_load_model -name smic13_wl30 maxset_wire_load_mode:有三种wire_load_modetop,enclosed,segmentedtop:所有层次子模块的wire_load和top-level相同,如果用户计划flatten设计去layout可选择此模式编译子模块。enclosed:子模块net的wire_load和enclosed 它的最小模块相同,推荐用于在layout后logical and physical hierarchy相似的设计;seg

9、mented:子模块之间net的wire_load和enclosed该net的模块相同,需技术库提供segmented wire_load,一般用于跨层次的net; 例:set_wire_load_mode top 图示:使用DC进行逻辑综合 Design Environment使用DC进行逻辑综合 Design Environmentset_drive:用来指定input port的驱动强度,它指定的是一个阻抗值,用来计算从这个port到被它驱动的cell之间的路径延时,0表示最大驱动,通常用于clock ports。 例:set_drive 0 $PROCLKset_driving_cel

10、l:用来模拟驱动input port的cell的驱动阻抗,用于计算输入信号的transition time做DRC的检查,一般在分模块综合时使用,顶层则设置为PAD或用buffer隔离。 例:set_driving_cell -lib_cell DFFRX2 -no_design_rule get_ports RX_DDC_PDC_SDAT_16B 选项-no_design_rule是指DFFRX2自身的DRC检查不做。set_load:用于定义net或port的电容负载,保证输出路径的时序,主要用input port和output port,在顶层则设置为PAD的电容值或用buffer隔离,

11、在库中获得。 例:set_load 0.4 get_ports TX_DDC_AOUT_18B -pin_loadDRC设计规则约束:set_max_transition set_max_capacitance set_max_fanout 使用DC进行逻辑综合 Design Environment DRC规则在厂家提供的库中有一个default值,不用人为的设置,如果在默认值无法满足时序的情况下可以人为约束。set_max_transition会影响setup-time,hold-time,recovery-time,removal-time,如图。 使用DC进行逻辑综合 Design En

12、vironment set_max_transition对时序的影响使用DC进行逻辑综合 Design Environmentset_max_fanout对design,net,output port进行操作,设定的不是具体的电容值。例如对一个design 我们设定set_max_fanout 12,表示在这个design中的一条net或一个port只能驱动12个fanout_load为1个单位的pin或6个fanout_load为2个单位的pin,在smic0.13um库中默认的fanout_load为1,我们可以用set_fanout_load自行设置,set_max_fanout和set

13、_fanout_load仅仅是用做DRC的检查,他们的值与时序无关。图示如下:使用DC进行逻辑综合 Design Environmentset_max_capacitance定义输出管脚可以驱动的最大电容值。set_max_transition和set_max_fanout间接的定义了output port可以驱动的最大电容,set_max_capacitance则是设定的一个真实的电容值,output port所带的容性负载不能超过这个值。一般情况下都通过set_max_transiti on来定义DRC规则,因为库里是使用transition time来计算动态延时。 DRC规则的优先级:

14、 transitionfanoutcapacitance例:set_max_transition 0.3 get_designs * set_max_capacitance 1.5 get_ports out1 set_max_fanout 3.0 all_outputs()使用DC进行逻辑综合 Design Constraints 功能:描述设计的目标,包括时序和面积约束,要注意约束必须是可实现的,否则会导致面积过大,功耗增加或时序不能满足要求。设计约束的DC命令如下: set_clock_latency set_clock_transitionset_output_delay on out

15、put Block BClockDividerLogicBlock AclkCreate_clock& set_clock_skewset_input_delay on input signals set_max_area for each block,Top level使用DC进行逻辑综合 Design Constraintscreate_clock:用于定义时钟的周期和波形(duty及起始沿); 例如:create_clock period 40 waveform0 20 CLK 周期40ns 上升沿0 ns,下降沿20 ns;如果不定义waveform,则默认占空比为50。set_clo

16、ck_transition:在pre_layout必须设置一个固定的transition值(技术库提供有一个值),因为时钟网络有很大的fanout,这样可使DC根据该时钟计算实际的延时值。 例:set_clock_transition 0.1 get_clocks $SCLKcreat_generated_clock:用于定义内部产生的时钟信号,比如分频和倍频的时钟信号。 creat_generated_clock name -source -divide_by set_dont_touch_network:在net或port上设置dont touch属性,主要用于clock和reset信号,

17、使DC不对这些nets插buffer,留到布局布线时综合。 例:set_dont_touch_network get_clocks $SCLK set_dont_touch_network get_pins masterrst*/Q使用DC进行逻辑综合 Design Constraintsset_dont_touch:用于对current_design,cells,references,nets设置dont touch属性,阻止DC对它们进行映射或优化,一般在分模块综合和综合后优化时使用。 例:set_dont_touch get_cells X_DATA_N_1_33B_reg0 set_d

18、ont_use:指示DC在进行映射时将目标库的某些cells滤除不用,比如一些驱动能力很小的cell就可以不用,以满足时序。通常将它写在setup file里。 例:set_dont_use slow_1v08c125/DFFRXL使用DC进行逻辑综合 Design Constraintsset_input_delay:定义信号相对于时钟的到达时间。指一个信号,在时钟沿之后多少时间到达input ports。 下图中input_delay=Tclk-q + Tm使用DC进行逻辑综合 Design Constraintsset_output_delay:定义从输出端口数据不可用开始距离后一个时钟

19、沿的时间,既时钟周期减去cell从上一个时钟沿开始的工作时间。 下图中output_delay=Tt + Tsetup 使用DC进行逻辑综合 Design ConstraintsConstraint for hold-time设寄存器的hold-time为0.5ns,则寄存器间的组合逻辑X的最小延时为0.5ns使用DC进行逻辑综合 Design Constraints设clock有0.5ns的skew,hold-time为0.5ns,则X最小应为1ns使用DC进行逻辑综合 Design Constraints设FF2hold-time为1ns,N的延时为0.7ns,为保证hold-time而设

20、置的最小input_delay就应为0.3ns使用DC进行逻辑综合 Design Constraints设hold-time为0.5ns,FF3+S的延时为0.2ns,则T的最小延时应为0.3ns set_output_delay max (Tmax + Tsetup) set_output_delay min (Tmin - Thold)使用DC进行逻辑综合 Design Constraintsset_clock_latency:模拟时钟树插入后从时钟输入端口到寄存器clock端口的延时,用于布局布线前的综合和时序分析,一般设0.3-0.8。 例:set_clock_latency 0.3

21、get_clocks $PROCLKset_clock_uncertainty:由于工艺制造的原因,时钟到达各个触发器clock端口时会有一定的偏差,set_clock_uncertainty就是为这种偏差留一定的余量以保证setup-time和hold-time,一般设为0.2-0.3。 例:set_clock_uncertainty 0.3 get_clocks $PROCLK使用DC进行逻辑综合 Design Constraints使用DC进行逻辑综合 Design Constraints setup-time check:(假设lib setup-time 为 1ns) creat_c

22、lock period 10 waveform 0 5 get_ports CLK set_clock_latency rise 1 fall 2 get_ports CLK set_clock_uncertainty rise 0.5 fall 0.7 get_ports CLK setup time check=(clock_edge+edge_delay-uncertainty-lib_setup)使用DC进行逻辑综合 Design Constraints hold-time check:(假设lib hold-time 为 1ns) creat_clock period 10 wave

23、form 0 5 get_ports CLK set_clock_latency rise 1 fall 2 get_ports CLK set_clock_uncertainty rise 0.5 fall 0.7 get_ports CLK hold time check=(clock_edge+edge_delay+uncertainty+lib_hold)使用DC进行逻辑综合 Design Constraints对多时钟域或不可实现的路径的处理:用set_false_path指示DC不对这些路径进行时序优化,如果不对false path路径进行标识,DC会对所有的路径进行优化,从而影响

24、关键时序路径。 例:多时钟域:set_false_path -from $SCLK -to $PROCLK set_false_path -from $PROCLK -to $SCLK 不可实现路径: set_false_path through mux1/A through mux2/A set_false_path through mux1/B through mux2/B 使用DC进行逻辑综合 Design Constraints 对high-fanout信号的处理:对于高扇出的信号,比如clock,reset,和其他的扇出上千的控制信号,如果不进行处理,DC会对这些信号路径加buffe

25、r进行时序优化,但综合时的线延时是不准确的。DC会浪费大量的综合时间在这些路径上,对这些信号时序的优化应放到后端布局布线时给后端工具来做,因此要对这些信号进行处理。clock信号:对时钟端口使用creat_clock命令后,DC就不会对这个时钟net插buffer,DC对时钟net内置有ideal net的属性,也就是说如果你没有set_clock_transition,那么DC就默认为0。reset信号:reset信号也是一个高扇出信号,应做如下处理 set_dont_touch_network让DC不对reset net插buffer, set_ideal_net_work让DC忽略对re

26、set net的DRC检查,但这样DC还是会检查reset net的时序,显然是不满足的,会花大量时间优化时序,因此还应设置一个变量set_high_fanout_net_threshold ,既不论fanout为多少,DC都按这个设定的number值计算延时。使用DC进行逻辑综合 RTL描述的读入read和analyze&elaborate都可以用来读入RTL代码,推荐使用analyze&elaborateanalyze&elaborate允许设计者在设计的GTECH建立之前,首先去分析设计的语法错误和进行HDL代码转换。GTECH由“soft macros” 比如adders, compa

27、rators等组成,这些组件来自synopsys 的synthetic lib,每种组件具有多种结构。 Analyze做语法的检查并产生一个“.syn”文件,存储于work路径下的定义的设计库内,可供后来elaborate使用。对于一个analyzed过的设计,只需用elaborate重新输入,节省时间。Read就不行。以下是两个命令的比较:使用DC进行逻辑综合 类别 analyze&elaborate read 格式 verilog 或VHDLverilog 、VHDL、EDIF、db等所有格式 用途综合verilog 或VHDL的RTL设计读网表,设计预编译 设计库用-library选项定

28、义设计库名,存储“.syn”文件用缺省的设置,不能存储中间结果Generics(vhdl)可以对parameter进行操作不能对parameter进行操作Architecture(vhdl)可以进行结构化的操作不可用RTL描述的读入使用DC进行逻辑综合 RTL描述的读入 elaborate对parameter的操作: 例:module DFF (in,clock,out,rst); parameter SIZE = 8; input SIZE-1 : 0 in; input clock; input rst; output SIZE-1 : 0 out; reg SIZE-1 : 0 out;

29、 always (posedge clk,negedge rst) if (rst = 1b0) out = 0; else out = in; endmodule 如果要指定parameter为16,可以这样操作:elaborate DFF param SIZE=16使用DC进行逻辑综合 编码指南RTL级的HDL描述实际是电路结构的文本描述,它是技术无关的,类似于网表。HDL语言先于综合工具出现,综合工具只能根据HDL代码进行逻辑推断,对完成同一功能而书写方式不同的HDL代码,综合工具会产生不同逻辑电路。所以不能依靠DC去修正不符合规范的代码。写代码时,需清楚描述的硬件电路拓扑结构。为提高D

30、C综合的质量和减少综合时间,应注意以下几个方面:联系紧密的组合逻辑应在同一个模块内 DC无法对跨越模块层次的组合逻辑进行有效优化,因此联系紧密的逻辑被分开放在两个子模块内就很可能造成关键路径。把相关联的组合逻辑以及它的目的寄存器放在一个模块内模块与模块之间不要出现胶粘逻辑,把胶粘逻辑放到其中一个模块中compile的-boundary_optimization对边界的优化仅对一些常量的引脚,未连接的引脚等进行优化,对时序的优化并不显著,如下图。使用DC进行逻辑综合 编码指南使用DC进行逻辑综合 编码指南 左图的两个联系紧密的组合逻辑被划分到两个模块,DC无法进行有效的优化,导致出现关键路径,右

31、图合在一个模块后就可以对关键路径进行有效的优化,去除关键路径。使用DC进行逻辑综合 编码指南对所有的输出进行寄存 这样在分模块综合时,可以很方便的设置本模块的drive strength, driving_cell,input_delay,output_delay input_delay=path_delay output_delay=clock cycle path_delay 使用DC进行逻辑综合 编码指南I/O管脚与内部电路用寄存器隔离IO管脚尽可能与内部电路用触发器隔离,以保证内部电路高速运行,并隔离毛刺的影响。如不能,则尽量减少对IO运算。原因:IO管脚速度较低。CHIPACHIPB

32、PCBLineT= Touta + Tpcb + Tinb;使用DC进行逻辑综合 编码指南禁止使用异步触发器,慎用latch。Latch虽然面积仅为触发器的1/3,功率消耗也小于触发器,但latch并不是同步元件,异步存储元件在时序分析时会带来很大的困难,在可测试性上也不易做,所以尽量不要在设计中使用latch。禁止使用含有组合逻辑反馈的电路。组合逻辑反馈时异步设计,会给STA和DFT带来困难,应予以避免,如需要应使用时序反馈。如图使用DC进行逻辑综合 编码指南合理的规划端口数,能够复用的端口进行复用,可以使设计更经济。决定一个芯片die大小的因素有两个,一个为pin的数目,另一个为core的

33、大小,分别成为PAD Limited和core Limited。使用DC进行逻辑综合 编码指南PAD Limited虽然留给了core更大的布局布线空间,易于满足时序,但是并不经济,一般布线面积占整个core的面积的1520就足够了。所以端口能够复用的话尽量复用,以防止PAD Limited来决定整个die的大小。使用DC进行逻辑综合 编码指南clock逻辑及reset生成应放在一个模块中,便于综合时对时钟约束的定义I/O PAD,异步逻辑,边界扫面电路应为单独的模块内部模块之间不要有inout port状态机 对verilog,State命名使用“parameters” ; 组合逻辑和时序逻

34、辑分开;尽量使用同一种类型的寄存器所有寄存器都必须有复位端,最好使用异步复位,不要既使用异步复位又使用同步复位。使用DC进行逻辑综合 DC的三种综合策略Top-down compile:就是将整个设计作为一个模块进行编译,仅需top level约束。对一些设计如:单时钟的设计,很适用。允许一次编译大于100K gate的设计。对于大型设计,可使用ungroup命令将子模块合并成一组,然后展开进行编译,可以改善时序。 优点: 仅需对top_level的约束; 将整个设计作为整体优化,可获得较好的结果; 缺点 编译时间长,占用的内存多; 子模块的改变需要整个设计再综合,可重用性不好; 如果设计包含

35、多个时钟或生成时钟逻辑,则不能很好执行。使用DC进行逻辑综合 DC的三种综合策略Bottom-up compile:各自模块可独立编译,适合于划分合理,各自模块的时序约束能够被明确定义的设计。优点: 每一个子模块都由自己的Scripts文件,便于管理; 子模块的改变不需要整个设计全部重新综合,可重用性好; 不需要关心设计类型,如:多时钟或产生时钟; 一般来说,可获得好的结果;缺点 需要更新维护多个scripts; Top的关键路径也许在子模块并非关键路径; 需要incrementally编译,用于DRCs;使用DC进行逻辑综合 DC的三种综合策略mixed compile:同时使用前两种综合策

36、略。使用DC进行逻辑综合 DC的优化过程使用DC进行逻辑综合 DC的优化过程结构优化(Architechural Optimization) 结构优化是对RTL描述进行优化,最后把RTL代码转化为GTECH网表,它包括以下几个方面:共享子表达式 例:原RTL代码为X B; Y B) & C; 共享子表达式后变为 temp B; X = temp; Y remove_attribute get_designs hier * dont_touch对网表的信号命名做修改。有些layout工具不能读取一些含有不常用的信号命名的verilog网表,例如含有*的网表,或是对信号名的字符数有限制,因此在导出

37、网表前要对网表命名做适当的修改。网表的命名规则最好写在setup_file里。使用DC进行逻辑综合 为Layout生成网表例:define_name_rules verilog -allowed A-Z a-z 0-9 _ -first_restricted 0-9 _ -case_insensitive -max_length 30 -target_bus_naming_style %s%d -type net -prefix N -replacement_char _ -map _,_,reg_reg,r_reg 对总线的命名规则为:set bus_naming_style %s%d 写出

38、网表之前执行以下命令:change_names hier rules verilog规则名最好使用verilog,verilog是DC默认的命名规则,自己定义的规则会只接加入到这个规则里,不会覆盖原来的规则。使用DC进行逻辑综合 为Layout生成网表移除未连接的端口。设计中会有很多时候遇到没有连接的端口信号,比如中间的一些截位运算。如果不对这些端口进行处理,DC会报很多的warning,有可能使我们忽略掉一些有用的warning。 例:remove_unconnected_ports get_cells hier *使std cell的端口名可见。综合时,有些cell的一些port可能没有用

39、到,DC在写出网表时就不会把这些端口写出来,在layout时,就会出现端口数不匹配的warning。例如一个4端口的DFF(D,CLK,Q,QN),可能会用以下连接DFF(.D(data_in),.CLK(clock),.Q(data_out); 这里QN端口就没有用到,DC就不会把QN写出来,layout时就会报出warning。应在setup_file里进行如下设置 set verilogout_show_unconnected_pins ture使用DC进行逻辑综合 为Layout生成网表去除网表中的assign语句和tri等线网在设计中使用了inout端口时,DC会产生tri或tran

40、型的线网,而有的layout工具不支持这两种类型的线网,应在setup_file里让DC对三态线网都声明为wire型: 例:set verilogout_no_tri ture如果一个模块的输入端口直接连到输出口或是输出端口接地或输出端口被一个常量驱动时,都会导致DC在网表中写出assign语句,而layout工具不支持assign这样的行为语句。去除assign的方法是在这条net上加入buffer。 例:foreach_in_collection design get_designs * current_design $design set_fix_multiple_port_nets -

41、all -buffer_constants current_design $active_design set_fix_multiple_port_nets -all -buffer_constants 如果没有去除干净,在综合后对还有assign的design使用set_isolate_ports使用DC进行逻辑综合 为Layout生成SDC文件写出网表后还需要写出SDC文件给后端工具使用,SDC文件就是你在综合时设置的约束,得到verilog网表和SDC文件后就可以交给Astro做布局布线了。另外还需要写出SDF文件给PT做时序分析。 例:write_sdc DDC_TOP.sdc wri

42、te_sdf -version 2.1 DDC_TOP.sdf使用DC进行逻辑综合 一些必要的报告report_constraint:对违约的情况进行报告,以方便再综合。report_power:报告功耗的情况,提供给后端电源分配的依据,主要看cell的功耗。report_timing:报告时序情况,找出关键路径。report_area:报告面积的使用情况,主要看cell所占的面积,线面积并不准确,不用考虑。使用DC进行逻辑综合 用PT和FORMALITY做验证 综合完得到verilog网表和SDF文件后,用Formality和PT做一次形式验证和静态时序分析,有问题的话就要重新综合甚至修改RTL代码,没有问题就可以交给后端工具做下一步的布局布线了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(ASIC设计流程-DC课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|