收藏 分享(赏)

DC-PT-FM-ICC学习笔记.doc

上传人:精品资料 文档编号:10529917 上传时间:2019-11-26 格式:DOC 页数:38 大小:1.69MB
下载 相关 举报
DC-PT-FM-ICC学习笔记.doc_第1页
第1页 / 共38页
DC-PT-FM-ICC学习笔记.doc_第2页
第2页 / 共38页
DC-PT-FM-ICC学习笔记.doc_第3页
第3页 / 共38页
DC-PT-FM-ICC学习笔记.doc_第4页
第4页 / 共38页
DC-PT-FM-ICC学习笔记.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、- 0 -Backend Study NotesDC 综合学习笔记 .- 1 -一、verilog 编写 - 1 -二、DC 综合注意的地方 .- 2 -1.在同一个电路中不能同时含有触发器和锁存器两种电路单元。 - 2 -2.在电路中不能出现有反馈的组合逻辑。 - 2 -3.不能出现用一个触发器的输出作为另一个触发器的时钟。 - 2 -4.异步逻辑和模拟电路要单独处理。 - 2 -5.使用的单元电路没有映射到工艺库中。 - 2 -三、DC 综合名词解释及脚本 .- 2 -1.名词解释 - 2 -2.环境脚本说明 - 2 -3.约束脚本说明 - 2 -4.查看报告命令 - 3 -一些综合经验

2、.- 4 -附录 .- 4 -1.DC 的启动脚本 - 4 -2.组合电路优化脚本 - 5 -3.时序电路优化脚本 - 5 -PT STA 学习笔记 .- 6 -一、 一些注意的地方 .- 6 -二、常用的脚本 .- 7 -附录 .- 8 -时序分析范例 .- 8 -分析脚本(worst) - 8 -分析脚本(best) - 9 -Formality 学习笔记 - 9 -脚本范例 .- 9 -Encounter 学习比较 - 10 -一、理论 .- 10 -1、布图 .- 10 -1.1、I/O 单元 - 10 -1.2、层次化设计 - 10 -2、布局 .- 10 -2.1、电源规划 - 1

3、0 -2.2、标准单元和模块的放置 - 12 -3、CTS - 12 -4、布线 .- 12 -二、脚本运用 .- 13 -三、需要抽取和保存的文件 .- 14 -ICC 学习笔记 - 15 -一、ICC 基本流程 - 15 - 1 -二、文件准备 .- 15 -三、脚本运用 .- 16 -附录:脚本范例 .- 16 -启动脚本范例 .- 16 -Floorplan 脚本范例 .- 17 -无 PAD 脚本 .- 17 -有 PAD 脚本 .- 17 -Placement 脚本范例 - 18 -CTS 脚本范例 .- 18 -Route 脚本范例 .- 19 -文件导出范例 .- 19 -EC

4、O 脚本范例 - 19 -VCS 学习笔记 - 21 -DFT 学习笔记 .- 21 -Tcl 语言学习笔记 .- 21 -4Perl 语言学习笔记 - 22 -时序学习笔记 .- 22 -1、基本概念 .- 22 -2、ON-Chip Variations(OCV) - 29 -3、时间借用(Time Borrowing or cycle stealing).- 30 -4、Data to Data Check - 31 -其他学习笔记 .- 33 -一、低功耗学习笔记 .- 33 -1.Clock Gate - 33 -二、信号完整性分析 .- 33 -名词解释 .- 34 -后端工程师具

5、备的能力 .- 35 -附录 .- 35 - 1 -DC 综合学习笔记一、verilog 编写在使用if语句的时候,一定得把条件写全,不然会综合出锁存器。一个 if语句只能跟一个表达式。如果一个电路中出现两种时序电路结构(锁存器和触发器),会增加电路的测试难度。If语句对应的是选择器。If语句隐含这优先级别,这和case 语句不同。Case和If语句一样,都是用于选择输出的,但是case 语句隐含的是平行的电路结构。当case语句的条件没有完全译码时,会引起具有优先级的电路结构。在使用always语句描述组合电路时,在该语句中读入的所有变量都需要出现在事件列表中,否则可能会得不到期望的结果。

6、(/synopsys full_case parallel_case,如果case语句不写全可以加这个key word)在使用always语句描述时序电路的时候,都会引用触发器,使用” ./reports/power.rptra ./reports/area.rptrt ./reports/timing.rptrc ./reports/constraint.rpt write -format verilog -hierarchy -output ./outputs/adder.vwrite -format ddc -hierarchy -o ./outputs/adder.ddcwrite_s

7、df ./outputs/adder.sdfwrite_sdc ./outputs/adder.sdc3.时序电路优化脚本linkcreate_clock clk -period 5 -waveform 0 2.5set_dont_touch_network get_clocks clkset_fix_hold get_clocks clkset_clock_uncertainly 0.2 get_clocks clkset_clock_latency -source 0 get_clocks clkset_clock_latency 1 get_clocks clkset_input_tra

8、nsition 0.3 all_inputs #if you want dont a fix value,use set_driving_cell - 6 -set_clock_transition 0.3 all_clocksset_operating_conditions -min_library fast_1v32c0 -min fast_1v32c0 -max_library slow_1v08c125 -max slow_1v08c125set_wire_load_model -name smic13_wl10 -library slowset_wire_load_mode tops

9、et_wire_load “reference_area_1000000“-library “smic13“set_drive drive_of “slow_1v08c125/BUFX2/Y“ get_ports clkset_drive drive_of “slow_1v08c125/DFFX1/Q“ remove_from_collection all_inputs get_ports clkset_load load_of “slow_1v08c125/DFFX1/D“ all_outputsset_input_delay -max 1 -clock clk all_inputsset_

10、input_delay -min 0.2 -clock clk all_inputsset_output_delay -max 1 -clock clk all_outputsset_output_delay -min 0.1 -clock clk all_outputs#set_drive 0 reset,clk set_max_area 0set_max_fanout 2 all_inputsset_max_transition 0.3 all_inputsuniquifycompile -boundary_optimizationrp ./report/power.rptra ./rep

11、ort/area.rptrt ./report/timing.rptrc ./report/constraint.rpt write -format verilog -hierarchy -output ./outputs/.vwrite -format ddc -hierarchy -o ./outputs/.ddcwrite_sdf ./outputs/.sdfwrite_sdc ./outputs/.sdcPT STA 学习笔记一、 一些注意的地方report_transitive_fanout clock_tree 报告出的”unknown”的 clock network 可能计算出错

12、误的延迟,report_reference 查看 cell 的属性也可看使用了多少 register。当出现这样的问题我们可以使用 Stamp模型来解决或者使用 virtual clock 旁通 clkbuf(create_clock name VCLK p 2 w 0 1 find(pin,U49/NQ)set_clock_latancy 0.2 source VCLKset_ideal_net find(net,VCLK)。在时序分析中,经常会检查 setup/hold、removal/recovery 和 min pulse width。然而有些会是 untested。- 7 -这使用

13、report_analysis_coverage status_details untested sort_by slack check_type setup|hold去查看。报告结果可能会出现”no_clock” ,找到原因。一般是时钟没有到达,或者 case_analysis 分析;上面修复后会有一部分 hold 也修复了这是因为 register 的 clk 没有 clock。然后还有一部分 hold 是 untested 可能会是对 input/output 没有 min_delay 的约束。报告结果可能会出现”no_paths” ,这意味着 endpoints 没有约束。这可能是设置

14、了 set_false_path 或者 set_multicycle_path 的原因先使用 report_timing 查看。二、常用的脚本report_analysis_converage 查看设计所有的 setup.hold 等情况的比例swap_cell 用这个命令去用相同的 cell 去代替,这个代替只是虚拟代替。如果设计符合要求了,还得手动去修改 netlists。set_disable_timing 禁止个别单元的时序弧有用。有些违例路径共享的共同的叶单元的能力。这称为瓶颈分析且通过使用命令 report_bottleneck 来进行查看。如果一个时钟延迟是 30.5 则指令为c

15、reate_clock -period 10 get_ports CLKset_clock_latency 2.5 -source -early get_clocks CLKset_clock_latency 3.5 -source -late get_clocks CLK 这个指令只能是 source clockset_min_pulse_width -high 1.5 all_clocksset_min_pulse_width -low 1.0 all_clocksreport_min_pulse_width 这个主要是在有时钟门控的时候set_clock_gating_check -se

16、tup 0.5 -hold 0.4 get_clocks CLKreport_clock_gating_checkset_disable_clock_gating_check to disable specific clock gating checks in a designreport_exceptions ignoredcheck_timing 当设置了时序例外后我们检查是不是有用了用set_case_analysis 0(or edge(rising) get_ports sel 一般用于选择器report_case_analysis remove_case_analysis get_

17、ports selreport_delay_calculation from U1/A to U1/Z 用于计算 cell 或 net 的时序弧当使用 read_sdf 读入延迟文件时报没有某端口时序弧错时使用 read_sdf path 和 read_sdf strip_path检查,以及 report_annotated_delay list_not_annotated 查看。drive_clocks 检查所有 clock 的类型,像 gated clock、internal generated clock 和 muxed clocks。然后用- 8 -report_clock。附录时序分

18、析范例pt_shell report_timing -path full_clockPoint Incr Path-clock clk (rise edge) 0.00 0.00clock source latency 0.00 0.00clk(in) 0.00 0.00S_2/Z (BUF2) 0.40 * 0.40 fA_reg1/CP (FD1) 0.02 * 0.42A_reg1/Q (FD1) 0.12 * 0.54 fresult_reg0/D (FD1) 0.00 1.96 rdata arrival time 1.96clock clk (rise edge) 4.00 4.0

19、0clk (in) 0.00 0.00 rS_1/Z (BUF1) 1.06 * 5.06 rresult_reg0/CP (FD1) 0.01 * 5.07 rlibrary setup time -0.80 * 4.27data required time 4.27从红色标记看出 clock skew(uncertainy) 是 1.07-0.42分析脚本(worst)read_verilog ./verilog/pr_cnt10.vcurrent_design cnt10.vset_operating_conditions slow_1v08c125 read_timing ./inpu

20、t_file/cnt10.sdf read_parasitic ./input_file/cnt10_w.spefcreate_clock clk -period 2 -waveform 0 1set_dont_touch_network get_clocks clkset_dont_touch_network get_ports resetset_propagated_clock get_clocks clk#if you want dont a fix value,use set_driving_cell set_drive drive_of “slow_1v08c125/INVX1/Y“

21、 get_ports clkset_drive drive_of “slow_1v08c125/INVX1/Y“ remove_from_collection all_inputs get_ports clkset_load load_of “slow_1v08c125/INVX2/Y“ all_outputsset_input_transition 0.2 all_inputs set_input_delay -max 1.0 -clock clk all_inputsset_input_delay -min 0.2 -clock clk all_inputsset_output_delay

22、 -max 1.0 -clock clk all_outputsset_output_delay -min 0.1 -clock clk all_outputsset_drive 0 reset,clk set_max_area 0set_max_fanout 5 all_inputs- 9 -set_max_transition 2 all_inputsreport_constraint -all_violators分析脚本(best)read_verilog ./verilog/pr_cnt10.vcurrent_design cnt10.vset_operating_conditions

23、 fast_1v32c0 read_timing ./input_file/cnt10.sdfread_parasitic ./input_file/cnt10_b.spef create_clock clk -period 2 -waveform 0 1set_dont_touch_network get_clocks clkset_dont_touch_network get_ports resetset_propagated_clock get_clocks clk#if you want dont a fix value,use set_driving_cell set_drive d

24、rive_of “slow_1v08c125/INVX1/Y“ get_ports clkset_drive drive_of “slow_1v08c125/INVX1/Y“ remove_from_collection all_inputs get_ports clkset_load load_of “slow_1v08c125/INVX2/Y“ all_outputsset_input_transition 0.2 all_inputs set_input_delay -max 1.0 -clock clk all_inputsset_input_delay -min 0.2 -clock

25、 clk all_inputsset_output_delay -max 1.0 -clock clk all_outputsset_output_delay -min 0.1 -clock clk all_outputsset_drive 0 reset,clk set_max_area 0set_max_fanout 5 all_inputsset_max_transition 2 all_inputsreport_constraint -all_violatorsFormality 学习笔记脚本范例set search_path “./core ./rtl ./netlist“set_s

26、vf default.svfread_verilog -r “cnt10.v“set_top cnt10read_db -i fast_1v32c0.dbread_verilog -i pr_cnt10.vset_top cnt10matchverify- 10 -Encounter 学习比较一、理论1、布图1.1、I/O 单元I/O 单元主要是保证信号从芯片内部传递到外部时其路径最短,同时要求从 I/O 单元关键引线到封装点时,避免信号交叉,方便封装基板的制作,减少基板上的走线层数。当芯片的输入输出单元较多而内部逻辑单元较少且一般为 I/O 单元限制型设计时,则一般选用狭窄的 I/O 单元;

27、当芯片的输入输出单元较少而内部逻辑单元较大时,则一般选用宽的 I/O 单元。但设计子模块时,I/O 单元的形式为接点(pin)而不是接口(pad)。I/O 单元分为信号接口和电源两种类型,信号 I/O 单元关键是选择驱动的大小,而电源 I/O 单元需要重点考虑的是供电电源的数量计算和摆放。电源 I/O 单元分为:模拟的、数字的、隔离数字模拟供电的。数字 I/O 供电单元分为给 I/O 单元供电的和给核内标准单元供电的。给核内单元供电的 I/O 单元的数量 m 根据芯片的功耗、I/O 单元的供电电压以及电流来估计: kIVPpadvg*m其中:Pavg 为芯片的平均功耗;Vpad、Ipad 为供

28、电 I/O 单元的电压和最大电流;k 为调整因子,min(12),max(510)。给 I/O 单元供电的供电单元输了也由多种因素决定,I/O 单元的功耗、输出 I/O 单元的驱动能力等,经验做法是给 I/O 单元供电的单元数量与给输出信号端口的比例为 1:(510)的关系,与给内核供电的 I/O 单元的数量是 1:2 的关系。供电单元位置摆放还需要考虑电压降(IR drop)的大小,一般需要在电源环设计完成后,做功耗分析,从而选择一个最佳的布局。1.2、层次化设计层次化设计大致可分为三个步骤:芯片顶层设计规划、子模块分割(partition)与实现以及芯片顶层组装实现。布线通道按照形状分有典

29、型的 T 形通道和 L 形通道两种。当两个子模块在芯片内部的空间跨度比较大时,有时还需要定义直通 (feedthrough) 布线通道,从而满足时序和布线的要求。2、布局2.1、电源规划供电网络设计主要内容有:(1) 电源连接关系的定义,又称为 global net connect。(2) 芯片核内部分的电源环设计,又称为 power ring。(3) 芯片内所包含的硬核(RAM、ROM and IP、COT)的电源环设计。(4) 芯片核内纵横交错的电源网格的设计,又称为 power stripe。(5) 芯片的供电单元与电源环的连接,又称为 I/O 单元 power。(6) 芯片内部电源网格

30、和硬核电源环连接部分的设计,又称为 ring pins。(7) 将标准单元的供电网络与核内电源网格总连接设计,又称为 followpins。(8) I/O 供电单元电源环的设计,又称为 I/O 单元 power ring。电源网格是为了平均分布电流,缩短电流回路,在有效减小电压降的同时,避免由于电流分布不均时造成的热点(hot spot)现象以及电迁移 (EM,electromi-gration)为问题。电源环的设计主要有 3 个参数:电源环的宽度 w、电源环的间距 d 以及电源环的对数 n。估算方法为:- 11 -*knCIwdp4其中 Ip 为芯片的峰值电流; Cd 为厂家工衣库给出的电流

31、密度的上限;n 为电源环对数;k 为调整因子。电源网格(power grid) 通常是均匀分布,电源条线(power stripes)通常是不规则或不均匀分布。HWS2S1V D D V S S V D DV D DV S SWs t r i p e _ VWs t r i p e _ H其中 power stripes 的宽度 Wstripe_V 与纵向 power stripes 的间距 S1 成正比关系,同理可得 Wstripe_H与 S2 的关系。对于 Wstripe_V 和 Wstripe_H 的设定,有以下几个经验规则:(1) Wstripe_V 的分布间隔一般取垂直分布间距(pi

32、tch)的整数倍,一般最大情况下不超过最小NAND2X1 宽度的 4 倍。(2) Wstripe_V 的最大值取标准单元库中 NAND2X1 宽度的 4 倍。(3) Wstripe_H 的取值一般是标准单元高度的整数倍,通常选择 12 倍。在确定了 power stripe 的宽度后,需要计算其间距 S1、S2 。在估算出内部纵/横供电金属宽度基础上,我们可以求出功耗为 P 的总电流Itotal。假设图中 A 点有 5%的电压降,那么位于A 点其有效电阻分别为 leftDHefctivopVIR/)2(*05. )H(V2211方 向 的 参 考 方 块 电 阻是 方 向 的 参 考 方 块

33、电 阻是RWstripestripetiti 假设 N 为纵向 power stripes 的对数,M 为横向 power stripes 的对数,则其值分别为:最后得出纵向电源网格的间距 S1 和横向电源网格的间距 S2 分别是:HefctsripVefctsripR,S1=W/N, S2=H/M。在数字和模拟混合供电,布图前一般需要作如下几点考虑:(1) 模拟模块的工作区域一般放置于芯片的某个角落。(2) 模拟区域需要单独供电,给模拟信号供电的 I/O 单元应放在模拟模块别上,尽量缩短供电线路的长度。H WIleft IrightItopIdownA WIIVPItoalrighleftt

34、ldwnoptDtal - 12 -(3) 在模拟模块的周围布置保护隔离环(guarding ring),从而实现数字信号和模拟信号电源之间的隔离。当设计中存在被关闭的电压域,为了不使关闭区域与非关闭区域相互影响,必须在所有的接口处添加隔离单元(isolation cell),并要: 1 检查出所有需要添加格力网络的信号端口;2 在相应的接口处添加隔离单元。2.2、标准单元和模块的放置展平式设计包括两个部分:1 模块的摆放与布局。2 标准单元的摆放和优化。层次化布局有三个过程:1 先分配子模块,这是与展平式布局最大的不同之处;2 作子模块级的布局,他的方法与展平式一样;3 所有子模块完成后在顶

35、层组装,其布局方法与展平式一样。层次化设计中子模块的约束类型一般有三中:向导约束(guide)、区域约束(region)和限制约束(fence),其中向导约束为模块指定向导范围,属于该模块的标准单元可以放置在该向导范围内,也可以放置在向导范围外。不属于该模块的标准单元可以放置在该区域之内。区域约束中,属于该模块的单元只能放在指定的区域内,该区域还可以放置其他模块单元。限制约束中,属于该模块的单元只能放在指定的区域内,该区域不可以放置其他模块单元。在标准单元布局优化后,需要对设计进行拥塞(congestion)分析、静态时序分析、噪声分析和电源分析从而确定布局的好坏。布局目标:1 各模块的位置相

36、对确定;2 满足设计规则要求,出时钟网络,其他高扇出网络都插入了驱动单元。3 芯片的时序和供电较为良好。在布局完成后需要评估的目标主要有:拥塞(congestion)程度(当实际需要的通道超过先游的通道的 5%时,表面拥塞程度比较大)、延迟和时序、供电预估 (可以引用 VCD 文件,对芯片的功耗、IR drop 及 EM进行评估。由于时钟树还没综合功耗会偏小)。如果一个 fence 或 region 的 EU 值达到或超过了 100%,placement changes the fence or region to a guide。为了避免这种情况,在进行 placement 之前,如有必要,

37、应确保核对和更新 EU 值。总密度 Core size 的计算:Core size=(standard cell area/core utilization)+(macro area+halo)标准单元密度 StdCell size 的计算: StdCell size=(standard cell area/StdCell utilization)+(macro area+halo)一旦使用 StdCell size 定义 floorplan,则 Core 的大小将会变小。3、CTS时钟信号通常是整个芯片中有最大扇出、通过最长距离、以最高速度运行的信号。时钟源通常有 RC时钟、晶振时钟和锁相环

38、(PLL) 时钟。时钟信号的延迟 (latency)又称为插入延迟(insert delay),它包括时钟源延迟和时钟网络延迟。次两种延迟分别用命令表示为:set_clock_latency 2.0 source get_clocks CLKset_clock_latency 2.0 get_clocks CLK时钟信号的抖动又称为时钟的不确定性。时钟的偏差(skew)指的是同一时钟到达该时钟域内的不同寄存器之间的时间偏差。它是衡量时钟树性能的重要参数,时钟树综合的目的就是为了减小偏差,它的值有正负两种。增加寄存器的时钟延迟而并不影响时钟树的功能叫做时钟树的有用偏差。时钟树综合对同步电路实现的

39、优点是电路结构简单明朗,具有较好的鲁棒性,验证简单。缺点是较大的时钟在物理实施时具有一定的难度,封装电感和电源电阻会在时钟跳变瞬间产生很大噪声。异步电路不规则但速度快,功耗低。门控时钟技术是降低功耗最常用的方法。门控时钟可以用 create_clock 和 generated_clock 来定义。create-clock name lcd_gating_clk period 10 waveform 0 5 get_pins main_gate/Y。门控时钟上的 setup 并不是关注的焦点,而 hold 的问题则是需要特别关注的。时钟树是芯片中频率和翻转率最高的,降低时钟树的噪声( 主要是耦合

40、电容)非常重要,其方法有:1 局部电源地保护;2 增加驱动能力;3 高层金属多倍间- 13 -隔走线。4、布线消除布线拥塞、优化时序、减小耦合效用(coupling)、消除串扰(crosstalk)、降低功耗、保证信号完整性(SI, signal integrity)、预防 DFM 问题和提高良品率等是衡量布线质量的重要指标。全局布线速度快、时间短,能加快收敛;主要目标有:1 使总连接线最短;2 布线分散均匀以不至于引起局部拥塞;3 使关键路径延迟最小,遵守时序规则;4 理解信号完整性的要求,避免串扰;5 保持将 BUS 总线聚集相连等。二、脚本运用captbl_file 写入 RC 查找表文

41、件,此文件由 foundry 提供,或者用户自己由 ITF 转来,从lef 中提取 RC 寄生信息,方法如下:setExtractRCMode -useLEFResistancesetExtractRCMode -useLEFCapImport Design 完成后网表要唯一化:checkUnique verbose,显示 1 则 ok;setAnalysisMode setuptimeDesign prefix plc preCTS idealClock numPaths 20 outDir ./ouput/plcPlace 可以分三步:#placeDesign -prePlaceOptpl

42、aceDesign #placeDesign inPlaceOptsetAnalysisMode -setup write_sdf max.sdf setAnalysisMode -hold write_sdf min.sdf在抽取寄生参数的时候要按此顺序:1.extractRC 2. rcOut worst|best -spef /output_file/cnt10.spef在 encounter 的流程里面,是不允许 CTS 之前 fix hold 的:optDesign -postCTS -hold -prefix ppo_holdcheckDesign all 检测设计的相关信息。sn

43、apRoute 建立 45布线到只招的栅格。report_timing check_type setup|hold 检查建立和保持时间spliteRoute 分割大于最大宽度的 45布线。如果没哟用 45布线,可以使用 ExtractRC 来提取 parasitics;如果用了可用 Fire# global skew reportredirect -file $REPORTS_DIR/$ICC_POST_ECO_CEL.clock_timing report_clock_timing -type skew ;# local skew reportif $ICC_REPORTING_EFFORT

44、 != “OFF“ redirect -tee -file $REPORTS_DIR/$ICC_POST_ECO_CEL.qor report_qorredirect -file $REPORTS_DIR/$ICC_POST_ECO_CEL.con report_constraintsif $ICC_REPORTING_EFFORT != “OFF“ redirect -file $REPORTS_DIR/$ICC_POST_ECO_CEL.max.tim report_timing -capacitance -transition_time -input_pins -nets -delay

45、max redirect -file $REPORTS_DIR/$ICC_POST_ECO_CEL.min.tim report_timing -capacitance -transition_time -input_pins -nets -delay min save_mw_cel -as $ICC_POST_ECO_CEL- 21 -if $ICC_REPORTING_EFFORT != “OFF“ create_qor_snapshot -clock_tree -name $ICC_POST_ECO_CELredirect -file $REPORTS_DIR/$ICC_POST_ECO

46、_CEL.qor_snapshot.rpt report_qor_snapshot -no_displayVCS 学习笔记DFT 学习笔记Tcl 语言学习笔记- 22 -Perl 语言学习笔记时序学习笔记1、基本概念静态时序分析的前提是同步逻辑设计。关键路径通常是指通路逻辑电路中,组合逻辑延迟最大的路径。也就是说关键路径是对设计性能起决定性影响的时序路径。D F F 1D F F 2C o m bC L K设 DFF1 的延迟为 Tcq,组合电路 Comb 的延迟为 Tc,DFF2 的建立时间为 Tsetup,那么这个电路的时钟周期为:T clk=Tcq+Tc+Tsetup(如果 Tclk 小

47、于这个值就有可能对数据采样一次以上,这便产生了数据紊乱) 。如果 DFF2 的保持时间很长而组合电路的延迟很小,那么可能数据在一个周期内穿过两个时序单元,所以最小组合电路延迟约束为:T c=Thold-Tcq(在理想状况下,要求只要时钟采样到数据,数据就可以变化了,也就是说数据的变化边沿和时钟的有效边沿可以重合,但实际上是不可能的,如果 Tc 和 Tcq 之和小于 Thold那就意味着不满足保持时间) 。M i n _ d e l a yM a x _ d e l a yC L KC L KD a t aD a t a- 23 -同样逻辑功能的单元,面积越大,其驱动能力越强。将关键路径上的单元

48、变大,可以改善输出的transition,减小下一级单元的延迟,同时本身的延迟也会变小。同样逻辑功能的单元,面积越小,其负载电容越小,将大的单元换成小单元,可以改善前级单元的延迟和输出 transition,同时也减小了此单元本身的延迟。F F 1F F 2C o m bC L KF F 3C o m b在图中,FF1 到 FF2 的路径有-300ps 的 iolation,FF2 到 FF3 有 100ps 的余量,那么在调整 FF2 的时钟延迟来优化时序时,有几种选择:1、增加 50ps,给后级留少量的余量;2、增加 100ps,给后级的余量为 0;3、增加 200ps。是两集都有-100ps 的 violation;4、增加

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报