1、SoC设计方法与实现设计方法与实现第八章综合策略与静态时序分析方法 郭炜 魏继增 郭筝 谢憬内容大纲逻辑综合物理综合静态时序分析内容大纲逻辑综合物理综合静态时序分析逻辑综合 利用工具将RTL代码转化为门级网表的过程称为逻辑综合。综合一个设计的过程,从读取RTL代码开始,通过时序约束关系,映射产生一个门级网表。流程介绍(1)用硬件描述语言进行设计读入的设计,通常是采用硬件描述语言(HDL)编写的,如Verilog和VHDL。(2)指定工艺库 在根据约束条件进行逻辑综合时,对于选择的流片工艺,工艺库将提供综合工具所需要的标准单元的全部信息,即工艺库含有特定工艺下的标准单元的逻辑功能、单元的面积、输
2、入到输出的时序关系、输出的扇出限制和对单元时序检查所需的信息等。流程介绍(3)读入设计 把HDL描述的设计,即RTL代码输入给综合工具,由综合工具进行编译,综合工具在综合时会首先检查代码的可综合性。(4)定义环境约束条件 定义本设计要综合时的环境,包括设计的工艺参数(温度、制造工艺、电压)、I/O端口属性等。(5)设定设计的约束条件约束条件将指定综合工具按照什么样的原则来综合电路,该电路所要达到的指标是什么。定义时钟 定义芯片所需的内部时钟信号。通常时钟网络在综合过程中是不做处理的,会在后续的布局布线中插入时钟树,减小其时钟偏斜。输入/输出延时 为保证片外的触发器可以正确地输入/输出,不仅要保
3、证片内的延时要满足时序要求,而且要保证片内外延时总和要满足时序要求 输入/输出延时示意设定设计规则约束 设定设计规则约束包括节点上信号最大跳变时间(Max Transition)、最大扇出(Max Fanout)、最大电容(Max Capacitance)等。合理的设定这些约束条件将有利于控制功耗,保证信号完整性。这3个约束可以设置在输入端口、输出端口及当前设计上。通常这些约束在工艺库内已经设定,由工艺参数决定大小。如果库内设定的值不够恰当或者过于乐观,可以根据设计需要专门设置。面积约束 面积约束是指定设计的最大面积值,如果设计超过了这一面积就违反了约束。在将设计实体转换成门级电路时,通常要加
4、面积约束条件。这一设计指标,也是逻辑综合过程中进行优化的依据之一。多数的逻辑综合工具允许设计者按工艺库中门级宏单元所用的单位来指定面积的约束条件。优化设计 优化的主要目的是在满足时序要求的前提下尽量减小芯片面积。与工艺无关的优化缺乏非常准确的时序信息,因而注意力往往集中在优化面积上。等到映射之后时序信息比较准确时再进行修正更有效。架构优化:如选择DesignWare实现所需功能等。逻辑优化:重构(优化面积)与展平(优化速度)。门级优化:映射、延时优化、设计规则修正、面积优化。SoC设计中常用的综合策略 有两种基本的综合策略可以选择,即自顶向下(Top-down)与自底向上(Bottom-up)
5、。在自顶向下综合策略里,顶层设计与其子模块同时编译,仅需要施加顶层约束。自底向上的综合策略是指先单独地对各个子模块进行约束与综合,完成后,赋予它们不再优化(Dont_touch)属性,将它们整合到上一层模块中,进行综合,重复这一过程,直至综合最顶层的模块。内容大纲逻辑综合物理综合静态时序分析物理综合的概念 传统的逻辑综合方法是依赖于连线负载模型(Wire-load Model)的,随着工艺尺寸的不断缩小及芯片复杂性的增加,整个电路的延时信息更多取决于互连线延时。在物理综合时,就在物理综合时,就考虑布局布线的问考虑布局布线的问题了题了 操作模式 物理综合要求的约束条件通常有芯片尺寸、引脚位置、线
6、上负载信息、版图规划信息等。一般使用以下两种操作模式。RTL到门级模式:在RTL到门级模式下,物理综合的输入信息是RTL级的设计电路、版图规划信息及含有版图信息的物理综合的库文件。门级到布局后门级模式:在这一模式下,与RTL到门级模式的唯一区别是物理综合的输入信息是门级网表,而不是RTL级的设计电路。物理综合的流程图 相对而言,RTL到门级模式所花费的时间要比门级到门级模式的时间长。实例用Design Compiler 进行逻辑综合 在综合的各个步骤中所经常用到的命令(1)指定库文件 在综合之前,需要用一个名为“.synopsys_dc.setup”的初始化文件建立综合的环境。在该文件中,通过
7、向相关环境变量赋值,来定义工艺库的位置及综合所需要的参数。synopsys的安装目录下:对于UNIX系统来说,它通常位于“$SYNOPSYS/admin/setup”目录下。用于卸载synopsys工艺独立库及别的参数,不包含设计相关的数据。用户根目录下:这里的setup文件包含用户对于自己DC工作环境的参数设置。启动DC的当前目录:这里的setup文件包含因项目与设计而异的变量设置。Setup文件的内容 search_path:由目录列表组成。当DC搜索某个未指定路径的文件(如库、设计文件等)时,将由search_path中定义的路径中去搜索该文件。通常将其定义为某个主要的库文件所在的目录路
8、径。target_library:指定对设计进行综合时采用的工艺库,由厂家提供。该库中的器件被DC用于逻辑映射。本变量指定的库文件名,应该也包含在link_library所列出的内容中,用于供DC读取门级网表。link_library:该变量指定的库文件中的器件将不会被DC用来进行综合,如RAM、ROM及I/O。在RTL设计中,将以实例化的方式进行引用。symbol_library:该变量指定的库文件包含有工艺库中器件的图形化信息,用于生成图形化原理图。(2)读入设计 类类 别别analyze&elaborateRead格格 式式以以Verilog或或VHDL编编写的写的RTL代代码码
9、Verilog、VHDL、EDIF、db等等所有格式所有格式用用 途途综综合以合以Verilog或者或者VHDL写成写成的的RTL读读入网表、入网表、预编译设计预编译设计等等设计库设计库以以library选项选项指定指定库库文件名文件名用默用默认认的的设设置,不能存置,不能存储储中中间间结结果果Generics(VHDL)可用可用不可用不可用Architecture(VHDL)可用可用不可用不可用(3)定义工作环境 设置环境条件(set_operating_conditions)设置线负载模型(set_wire_load_model)设置驱动强度(set_drive与set_driving_c
10、ell)设置电容负载 设置扇出负载(set_fanout_load)(4)设置约束条件设置设计规则约束(set_max_transition、set_max_fanout、set_max_capacitance)例如:set_max_transition 0.3 current_design例如:set_max_capacitance 1.5get_ports out1例如:set_max_fanout 3.0all_outputs时钟定义的相关命令create_clock用来定义一个时钟的周期和波形set_clock_latency定义时钟网络的延时 set_clock_uncertaint
11、y定义时钟偏斜值 时钟定义create_generated_clock定义一个内部生成的时钟。可以将内部分频或者倍频产生的时钟定义为初级时钟的函数。例如:create_generated_clock-name GENCLK-source CLKIN-divide_by 2get_pins idiv/div_reg/Q对于只含有组合逻辑的模块,为了定义该模块的延时约束,可以创建一个虚拟时钟,再相对于虚拟时钟定义输入/输出延时。设置输入/输出端口的延时 输入延时定义了信号相对于时钟的到达时间,指一个信号在时钟沿之后多少时间到达。输出延时则定义输出信号相对于时钟所需要的到达时间,指一个信号在时钟沿之
12、前多少时间输出。特别路径的约束 虚假路径(set_false_path)是指由于逻辑功能、数据顺序或操作模式等原因,从来不会激活或者不需要考虑的路径。设置多周期路径 设置多周期路径(set_multicycle_path),指设计中从发送数据到采样到数据的时间允许多于一个时钟周期的路径。虚线标出了多周期路径。(5)设定综合优化策略 通过使用compile命令调用DC,对设计进行综合与优化。该命令有许多选项可以选择,其中,映射努力(map_effort)即要求工具优化的程度,可以设置为低、中、高。在初次编译时,如果需要对整个设计的性能和面积等有一个大致的了解,可以将map_effort设置为低。
13、默认的map_effort级别为中,而在最后一次编译中,可以将map_effort设置为高。通常,将map_effort设置为中即可。内容大纲逻辑综合物理综合静态时序分析静态时序分析 传统的电路设计分析方法是仅仅采用动态仿真的方法来验证设计的正确性。随着集成电路的发展,这一验证方法就成为了大规模复杂的设计验证时的瓶颈。相对于动态仿真方法,静态时序分析方法要快很多,而且它能够验证所有的门级电路设计的时序关系。静态时序分析最大的特点是不需要加入输入测试向量,每一个时序路径都自动被检测到。静态时序分析的内容 静态时序分析工具主要对设计电路中以下路径进行分析:从原始输入端到设计电路中的所有触发器;从触
14、发器到触发器;从触发器到设计电路的原始输出端口;从设计电路的原始输入端口到原始输出端口。静态时序分析中用到的基本概念 时序路径(Timing Path)路径1:从设计电路的原始输入端口A到触发器的数据端口D。路径2:从触发器的CLK端到触发器的数据输入端口D。路径3:从触发器的CLK端到设计电路的原始输出端口Z。路径4:从设计电路的原始输入端口A到设计电路的原始输出端口Z。静态时序分析中用到的基本概念触发器的建立时间(Setup Time):指的是时钟信号变化之前数据保持不变的时间 触发器的保持时间(Hold Time):指的是时钟信号变化之后数据保持不变的时间 时间裕量(Slack)Slac
15、k是指信号在时序路径上要求的时间和实际花费的时间之差。时钟偏斜(Clock Skew)时钟偏斜是指从时钟定义点到不同触发器时钟引脚的延时差。在可综合的同步设计电路中,在一个时钟沿第一个触发器放出数据,此数据在另一个时钟沿(通常是接下来的那个时钟沿)被第二个触发器接收到。如果这两个时钟沿(发出数据的时钟沿和接收数据的时钟沿)是同一个时钟源放出的,则在理想状态下,两个时钟沿相差一个时钟周期。但是由于两个触发器的时钟路径的不同,路径上的延时会有一定的差别,接收数据的时钟沿可能早到或晚到,这样的话就会产生时钟偏斜。实例用PrimeTime进行时序分析Primetime,缩写为PT,是一个独立的STA工
16、具。它不仅能够在设计电路所要求的约束条件下检查时序,还能对设计电路进行全面的静态时序分析。(1)读取设计电路数据 阶段把电路的设计代码文件读入PT中,以便PT进行分析。值得注意的是,PT做静态时序分析的时候只能读映射过的文件。read_db-netlist_only.db#db formatread_verilog.sv#verilog formatread_vhdl.svhd#vhdl formatread_edif.edf#EDIF format(2)创建设计电路的约束条件 对设计电路设置约束条件,这样才能得到接近实际情况的分析结果。通常需要设置相关的时钟信号和输入/输出延时 create
17、_clock-period 40-waveform 0 20 CLKset_clock_latency-source 0.2 CLKset_clock_uncertainty-setup 0.5 -hold 0.5 CLKset_dont_touch_network CLKset_ideal_network CLK(3)指定环境分析条件 除了一些语法上轻微的差别,PT的环境的设置命令与DC一致。下面是常用的设置环境的命令:set_wire_load_model-name set_wire_load_mode set_operating_conditions set_load 50all_out
18、putsset_input_delay 10.0-clock all_inputsset_output_delay 10.0-clock all_outputs(4)进行静态时序分析 report_timing:显示时序路径信息。report_timing-delay max-from a-to z2 report_timing-delay min-from a-to z2上述第一条命令用于建立时间冲突的检查,第二条命令用于保持时间冲突的检查。report_constraint:显示设计电路的相关约束信息。report_constraint-all_violators检查时序冲突和修正冲突 由
19、于静态时序工具把整个设计电路打散成时序路径,分析不同路径的时序信息,得到建立时间和保持时间的计算结果。而静态时序分析的精髓就在于判断和分析这两个参数的结果。消除建立、保持时间的冲突方法 消除建立时间的冲突方法如下:加强约束条件重新综合设计电路或对产生冲突的时序路径进行进一步的优化;通过做ECO(Engineering Change Order)来消除冲突;如果以上方法都不能产生效果,那可能只好通过修改RTL代码来实现。消除保持时间冲突方法如下:绝大多数的布局布线工具都具有自动消除保持时间冲突的功能,可以通过这些工具来实现;如果工具不能实现的话,可以在产生冲突的时序路径上通过ECO添加缓冲器逻辑
20、,使得数据到达的时间符合保持时间的检查,以此消除冲突。统计静态时序分析 静态时序分析很久以来都被看作是百万门级芯片时序分析的基本方法及设计完成的检验。然而,随着深亚微米技术进一步下降到90 nm及其以下的线宽,设计者在进行静态时序分析时面临着太多的不确定性。用统计表态时序分析(SSTA,Statistical Static Timing Analysis)的方法有可能估计出许多不确定的现象,帮助设计者精调设计,减少不必要的过度设计,使得设计更可靠,进而提高良率。传统的时序分析的局限 制程变异的来源有很多,主要包括每批晶圆的差异、晶圆与晶圆间的差异、裸片间的差异,以及裸片上的差异等。将电路置于最
21、好条件(Best Case)、最坏条件(Worst Case)等多种情况下进行分析,但是对于晶片上的制程变异却无能为力。因为在最坏条件分析时,静态时序分析总是假定一个晶圆上的电路同时都处于最坏情况下,而实际上,同一个晶圆上的电路不可能同时都处于最坏的条件下(这可由分析版图或者工艺得来)。在一个芯片上不同位置上画了两个完全一样的MOS管,制造出来后,两只MOS管的性能很难保证完全一样。当工艺在90 nm以下时,误差会高达2030。传统式的静态时序分析是将芯片上所有器件按同一个工艺及工作条件下的时间路径上的延时加起来,因而传统式的静态时序分析对于延迟的估计过于悲观。统计静态时序分析的概念 在静态时序分析中,信号的到达时间和门延迟都是确定的数值。在统计静态时序分析中,当工艺参数的偏差用随机变量建模后,作为工艺参数函数的门延迟、互连线延迟和门输入端信号的到达时间自然也需要用带有概率分布的随机变量来描述。统计静态时序分析的步骤 首先,要有用于统计静态时序分析的标准单元库。通过统计静态时序分析,找出合适的时序窗(Timing Window),在此窗中,良率可以达到最高。总之,统计静态时序分析通过对制程变异进行恰当的建模,更好地解决了延迟的不确定性问题,避免了过度的余量,提高了设计的性能及制造的良品率。Q&A
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100