数字后端简要流程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• set_max_delay: 1、对于仅包含组合逻辑的模块,用此命令约束所有输入到输出 的总延时。 例如: set_max_delay 5 -from all_inputs() -to all_outputs 2、对于含有多个时钟的模块,可用通常的方法定义一个时钟, 用此命令进行约束定义时钟和其他时钟之间的关系。 例如:set_max_delay 0 –from CLK2 –to all_register(clock_pin) • set_min_delay: 1、对于仅包含组合逻辑的模块,定义指定路径的最小延时。 例如:set_min_delay 3 -from all_inputs() 2、和set_fix_hold一起使用,只是DC添加一定的延迟,满足最 小延迟需求。
Mark The Hierarchy Attach TLU+ Model Save The Cell
• Design Setup:布局布线的准备工作,读入网表,跟Foundry提供的 STDCell、Pad库以及Macro库进行映射。
Floor Plan
Load TDF File Setup Floorplan Insert Pad Fillers Logic Connect PG Add P/G Rings Place Macro(Flylines)
• set_clock_transition:在pre_layout必须设置一个固定的transition值 (由技术库提供),因为时钟网有很大的fanout.这样可使DC根据该时 钟计算实际的延时值。
• set_clock_skew:设置时钟的skew及delay,pre_layout和 post_layout命令选项不一样。-propagated选项让DC计算时钟的 skew。
Design Setup
Reference Library Create Library Attach Ref Lib Read Netlist Expand Netlist Open Lib&Create Cell Bind Netlist To Cell Working Library
Preserve The Hierarchy
set_max_fanout。这些约束用于的input ports,output ports或
current_design,一般在技术库内部设置。当技术库的内部设置不能 满足时,可用以上命令设置。例如:
set_max_transition 0.3 current_design set_max_capacitance 1.5 current_design set_max_fanout 3.0 all_outputs()
Clock Divider Logic Block B Block A
set_output_delay on input signals
set_max_area
for each block
• set_max_area用于约束current_design的最大面积。0表示在满足时 序、功耗的前提下,尽可能的减小面积。例如:set_max_area 0
综合环境初始化
• 初始化设计环境,技术库文件及其它设计环境设置。 • search_path:指明文件的位置。 • target_library:既技术库,由生产厂家提供,该库中的cells,用于逻 辑映射。Target library的文件名应包含在Link library的文件清单中, 用于读取门级网表。
• set_multicycle_path:因为DC假设所有的路径都是单周期的,为了满 足时序,对多周期路径会做不必要的优化,从而影响相邻路径或面积。 所以这个命令用于隔离多周期路径,通知DC通过这条路径所需的周 期数。 • 例如:set_multicycle_path 2 -from FFA/CP \ -through Multyply/Out -to FFB/D
首先,综合工具分析HDL代码,用一种模型(GTECH) ,对HDL 进行映射,这个模型是与技术库无关的,也不包含Timing和Load信息;
然后,在设计者的控制下,对这个模型进行逻辑优化;
最后一步,进行逻辑映射和门级优化,将逻辑根据约束,映射为 专门的技术目标单元库(target cell library)中的cell,形成了综合后 的网表。
编译
• 编译就是将GETCH逻辑网络映射为技术库的gate cell,使设计满足用 户的约束。对于一个层次设计分两步实现: 1、映射各子模块到逻辑门,不考虑约束; 2、根据时序和面约束优化逻辑,修正模块分界间的违例。
布局布线
Design Setup
CTS
Floor Plan Route Timing Setup DFM&Data Out Placement
set_output_delay -min -0.5 -clock CLK {get_ports B}
• 时钟描述:时钟的描述在设计中非常关键,一般通过clock period和 clock source(port/pin) 、duty cycle、offset/skew和clock name进行描 述。 • DC时钟约束命令: create_clock:用于定义时钟的周期和波形(占空比及起始沿) 例如: create_clock -period 40 -waveform{0 20} 对于仅包含组合逻辑的模块,为了定义该模块的延时约束,需要创造 一个虚拟时钟定义。例如: create_clock -name V_clk -period 20
面积和时序约束
• 描述设计的目标,包括时序和面积约束,要注意约束必须是可实现的, 否则会导致面积超额,功耗增加或时序不能满足要求。设计约束的DC 命令如下:
Top level create_clock& set_clock_uncertainty set_input_delay on input signals
set_operating_conditions set_drive on Clock set_driving_cell on inputs
Clock Divider Logic Block B Block A
set_load on outputs set_max_capacitance set_max_transition &set_max_fanout on input &output ports or current_design;
• 时序约束包括3个部分:all inputs、register to register和all outputs。
• 输入路径的约束:
set_input_delay:定义信号相对于时钟的到达时间。指一个信号,在 时钟沿之后多少时间到达。
• 例如:
set_input_delay -max 20 -clock CLK {get_ports A} set_input_delay -min 0.8 -clock CLK {get_ports A} • 输出时序约束: set_output_delay:定义从输出端口数据不可用开始到后一个时钟有 效沿的时间。例如: set_output_delay -max 20 -clock CLK {get_ports B}
• link_library:该库中的cells,DC无法进行映射,例如:RAM,ROM 及Pad,在RTL设计中,这些cells以实例化的方式引用。
• symbol_library:该库文件包含技术库中cells的图形表示,用于生成 门级示意图。 • read:读入HDL代码
环境属性
• 定义设计的工艺参数,I/O端口属性,wire-load模型,下图解释了描 述设计环境约束的DC命令:
数字后端简要流程
HDL代码
逻辑综合
布局布线
形式验证
综合的定义
• 逻辑综合:决定设计电路逻辑门之间的相互连接。 • 逻辑综合的目的:决定电路门级结构,寻求时序、面积和功耗的平衡, 增强电路的测试性。 • 逻辑综合的过程(constraint_driven) : Synthesis = Translation + Logic Optimization + Mapping
• set_dont_touch应用于current_design,cell,net,references。阻止 DC对模块中的这些元素进行技术映射。
其它的一些约束条件
• set_dont_use用于将技术库中的某些设计中不需要的cell滤除,比如 Latch、Delay Cell,禁止DC映射; 例如: set_dont_use {mylib/SD*} • set_false_path指示DC对指定的路径不要按照时序约束优化。比如: 异步路径或约束不可实现的路径。false path路径的鉴别在设计中很 关键,如果不对false path路径进行标识,DC会对所有的路径进行优 化,从而影响关键时序路径。此命令也用于当因为有false path关键 逻辑,时序静态分析失败时。 set_false_path -from [get_clock CLKA] -to [get_clock CLKB]

例如:
set_clock_skew -delay 2.5 -minus_uncertainty 2.0 \ -plus_uncertainty 0.2 CLK
-minus_uncertainty用于setup-time的计算,-plus_uncertainty用于holdtime的计算。 一个cell的delay是根据input signal的斜率和output pin的电容负载决定。 对于时钟信号,因为clock network的fanout很大,从而造成clock network末 端门的时钟信号的clock transition time很慢,是DC计算的门延迟失真。 • set_dont_touch_network常用于port或net阻止DC隔离该net,和该net向连的 门具有dont_touch属性,常用于CLK和RST。 例如:set_dont_touch_network [CLK,RST] 当一个电路包含门时钟逻辑时,若在时钟的输入设置 set_dont_touch_network,则阻止DC隔离该门逻辑,导致DRC发现时钟信号冲 突,对门RESET同样。
• set_drive用于定义模块的input ports,0表示最大的驱动强度,通常用 于clock ports和reset,例如:set_drive 0 {clk,rst}。
• set_driving_cell用于定义input ports,模拟cell的驱动阻抗,为了保证 输入路径的时序和输入信号的transition time。例如: set_driving_cell -lib_cell BUFX2 -pin Y -library slow all_inputs() • set_min_library允许用户同时设置worst-case和best-case libraries, 从而在初步编译时,DC修正hold-time冲突时,验证setup-time冲突。 也可用于在编译时修正hold-time冲突。例如: set_min_library slow.db -min_version fast.db • DRC的设计规则约束:set_max_transition、set_max_capacitance和
wenku.baidu.com
set_wire_load_model
• set_operating_conditions用于描述cells操作条件: process、voltage 和temperature。例如:set_operating_conditions -max slow
• set_wire_load_model用于设置Nets的寄生RC模型,一般选用悲观的 模型。例如:set_wire_load_model -name smic18_slow • set_load用于定义nets或ports的电容负载,为了保证输出路径的时序, default条件下为0。例如:set_load 0.6 all_outputs()
相关文档
最新文档