DC简明教程 下载本文

使用set_dont_use 命令

/******** Part 2 Compile stategy **************/

2.1 约束一个设计分为几个方面?

总的分为,面积约束和时序约束。

2.2 面积约束的命令是什么? set_max_area

2.3 如何对时钟进行约束?

对时钟进行约束是对时钟的周期,波形进行描述。 使用create_clock 建立时钟约束

2.4 如何对pll进行约束?

如果存在PLL,那么首先对输入的初始时钟用create_clock进行约束。 再用create_propagated_clock 对PLL输出时钟在基于输入时钟进行约束。

2.5 什么叫虚拟时钟约束?

虚拟时钟是指在当前要综合的模块中不存在的物理时钟。比如,设计外的DFF的时钟。 建立这样的时钟有益于描述异步电路间的约束关系。

2.6 DC可以对时钟的哪些特性进行约束?

DC支持对时钟的周期,波形,jitter,skew,latency 描述

2.7 如何约束时钟的jitter?

使用set_clock_uncertainty -setup(-hold) 约束时钟的jitter

2.8 如何约束时钟的skew?

使用set_clock_uncertainty 约束时钟网络的skew

2.9 如何约束时钟的latency?

使用 set_clock_latency -option ,option is source or network,the default is network。

2.10 如何对当前设计的端口外部条件进行约束?

端口的外部条件包括输入驱动大小,输出负载的大小,扇出大小。

2.11 输入端口被多大的驱动所驱动? 可以使用set_dirive 和set_driving_cell

2.12 输出端口要驱动多大的负载?

使用set_load 对输出电容值进行约束,单位根据工艺库的define所定。

2.13 DC是基于path的综合,那么在约束时如何体现?

我们知道,基于path会有四种路径形式,DC中提供 create_clock 定义寄存器和寄存器之间的路径; set_input_delay 定义输入与寄存器之间的路径; set_output_delay 定义寄存器与输出之间的路径;

set_max_delay和 set_min_delay定义输入和输出的组合路径;

2.14 set_input_delay 的目的是什么?

定义输入延时,来约束设计中输入逻辑的时序

2.15 set_output_delay 的目的是什么?

定义输出延时,来约束设计中的输出逻辑的时序

2.16 如何对组合电路进行约束?

组合电路有set_max_delay 和set_min_delay进行约束 2.17 如何对电路的速度进行约束?

采用对电路时钟周期的约束的方式来约束电路的速度,使用create_clock

2.18 当一个组合电路超过了时钟周期约束,那么该如何处理?

如果必须要满足时钟周期约束,那必须修改设计,如果不必要严格要求,那么可以set_false_path可以躲过path check。

2.19 当出现环路电路时,如何约束电路? 对某一路径使用set_false_path

2.20 如何加强设计规则的约束?

DRC是电路必须满足的设计规则,使用 set_max_capcitance set_max_fanout set_max_tansition

2.21 在添加了4种路径约束后,如何为某些路径移除约束呢? 使用set_flase_path使得某些路径不进行timing check

2.22 对于某些路径需要在固定的几个周期内完成,如何对这些路径进行约束? 使用set_multicycle_path 对路径进行约束

2.23 在添加这些特殊的路径约束,如何恢复原来通用的时序约束? 使用reset_path

2.24 如何对三态门进行约束?

由于综合时,默认三态门是enable的,所以对某些路径要设置set_false_path

2.25 如何对门控时钟进行约束,以保证功能正常?

对门控时钟电路进行setup和hold检查,使用set_gating_clock_check

2.26 设置对某些网络比如时钟或者复位不进行添加buffer等操作,应该怎么约束? 使用set_dont_touch_network 2.27 如何修正hold 时间冲突? 加入set_fix_hold约束

/************ Part 3 Compile stategy ******************/ 3.1 综合时,有多少选择综合策略呢? 可以使用top-down 和bottom-top。

3.2 top-down 方式有何优点? 仅需提供单一TOP的script

将设计作为一个整体,可得到较好的结果

3.3 bottom-up方式有什么优点? 对多时钟的综合更为适合

每个子模块都有自己的script,便于管理 当一个模块改变时,不用重新综合所有设计

3.4 如何进行time-budge? 使用characteristic

3.5 top-down 方式有何缺点? 编译时间长

子模块改变则整个设计都要重新综合 对多时钟设计综合效果不好 3.6 bottom-up方式有什么缺点? 需要维护多个script

3.7 编译时的 -incremental 是什么意思? 设计映射为门之后,时序和面积约束可以再定义,incremental确保维持以前的电路结构,只作改善时序和性能,不添加不必要的逻辑。 3.8 ...

/******* Part 4 Analyze the report ******************/ 4.1 如何看面积报告? report_area

4.2 如何看时序报告? report_timing

4.3 想对单独的单元看面积报告, 用什么命令?

report_cell 但是缺省的report_cell只能看current_design下面的一级的cell的面积.因此就有两种方法解决这个问题:

1. 用report_cell [get_cells -hier *]可以看所有的cells面积

2. 用list_design列出所有的design, 然后改变current_design到你所想要看的那一级的cell, 然后直接用report_cell.

4.4 如何看设计环境和线载模型? report_design

4.5 若设计规则和时序违反约束,如何查看? 使用report_constraint -all_violators

4.6 如何查看连线的扇入,扇出,负载,电容和跳变时间? 使用report_net

4.6 如何看整个综合后的网表中使用多少种类型的电路门? 使用report_hierarchy

4.7 如何查看timing exception的时序约束? 使用report_timing_requirements