DC使用教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
False Path(伪路径)是指电路中的一 些不需要考虑时序约束的路径,它一般 出现在异步逻辑之中。 在异步多时钟网络中,时钟是不同的晶 振产生的时钟。但是在默认情况下, DC并不知道,它会认为它们是同步的 时钟网络而尽量去找两个时钟之间的最 小捕捉时间,不但浪费了时间而且会产 生出不符合要求的电路。
如何看时序报告:
通过产生的时序报告读出以下信息: 1)是setup time report还是hold time report? 2)时钟频率多少?
确定是setup time report还是hold time report? 看oprating conditions:worst(建立 时间),best(保持时间)。为什么? 看path type:max(建立时间), min(保持时间)。为什么? 时钟频率多少: 通过上升沿和下降沿的时间来确定
Set_load 设置输出负载
估计模块输出的时序——transition time DC默认输出负载为0. 单位由Foundry厂提供,一般是pf.
Set_max_transition 设置最大传 输时间
Transition time 是指改变某线所驱动 的pin所需要的时间,该时间的计算方 法是基于工艺库的。 输出的传输时间是输入传输时间以及输 出负载的函数关系。 DC在优化的过程中就是确保设计的所 有net的对应的传输时间小于所设定的 最大传输时间。
DC时序路径:
时间通路的划分
几个概念
数据传输需要的时间(Data Arrival Time):信号到达时间是指信号到达电 路中某一点的真实时间,一般等于信号 到达时序路径起点的时间加上信号在该 时序路径上传播所用的时间。 要求到达时间(Data Required Time): 指期望信号到达电路中某一点的时间。 时序裕度(slack):指电路中某点处要求 到达时间与实际信号到达时间的差值
起点 终点
1> 所有的基本输入端(Primary Input) 2> 所有时序单元的时钟输入端
1> 所有的基本输出端(Primary Output) 2> 所有时序单元的数据输入端
DC四种时序路径的划分
四种路径: 基本输入到寄存器 触发器到触发器 触发器到输出 基本输入到基本输出
DC的启动:
图形界面:在unix下面输入 dv –db_mode就进入dc的图形界面。 命令行界面: Shell模式:dc_shell Tcl模式:dc_shell-t
Set_operating_conditions 设置 工作条件命令
工作条件包括三方面的内容——温度 、电压以及工艺。 在Foundry提供的工艺库里,它的各个 单元的延时是在一个标准(nominal)条 件下得到的,比如说温度25.0度、工艺 参数1.0和工作电压1.8V。 工作条件一般分为三种:最好情况 (best case)、典型情况(typical case) 以及最差情况(worst case)。
建立时间和保持时间
建立时间(setup time):数据在时钟信号源 到达之前必须要稳定的时间,如果建立时间 不满足,数据不能正确打进时序逻辑单元 保持时间(hold time):数据在时钟信号源 到达之后必须要稳定的时间,如果保持时间 不够,数据被时序逻辑单元正确锁存 基本单元的延时(Tcq):门延时是指信号 通过实际的标准单元所需要的时间.在时序逻 辑单元中,反映为从时钟沿开始,到数据输 出需要的时间 . 线延时:线延时是指由于导线的阻持时间的slacks: 例:建立时间: --------------------------------------------------data required time 31.74 data arrived time -19.80 ----------------------------------------------------slack 11.94 arrived time应比required time提前 ,这样才能保证建立时间不违例。
转译(translation):
DC综合的三个阶段:
Translation 是指用HDL语言描述的电路转化为用 GTECH库元件组成的逻辑电路的过程。GTECH是 Synopsys的通用工艺库,它仅表示了逻辑函数的功 能,并没有映射到具体的厂家工艺库,也就是说独 立于厂家工艺的。 优化(optimization)和映射(mapping) : Optimization是根据设计者对电路设定延时和面积 等约束条件对电路进行优化设计的过程。它通过各 种方法尽量满足设计者对电路的要求。 Mapping把用GTECH库元件构成的电路映射到某 一固定厂家的工艺库上,此时的电路包含了厂家的 工艺参数Library Cells;
Set_max_delay 设置最大延迟
对于异步逻辑来说,异步的置位和清零 信号,并通过锁存器以及寄存器实现的, 因为reset的信号穿过一些BLOCK,因而 需要在顶层约束这个信号,约束方法如 下面的例子. 例如我们现在要设置RESET的最大时延 为5
Set_max_delay 设置最大延 迟
实际的时钟达到各个触发器的时间不是 一样的,它们之间有一个偏差,称为时 钟偏差(Clock Skew)。 为了反映这个偏差,我们在综合的时候 可以用一个命令来模拟它,即 set_clock_uncertainty。
Set_clock_uncertainty 设置时钟 不确定性
Set_false_path 设置虚假路径
例二, 规定一个从EN到RDN的 最小延迟为10的路径,设置步骤 如下: 首先选定EN &RDN两个端口( 用Ctrl键), Attribute--> Optimization Constraints->Timing Constraints… 设置相应的延迟时间点击OK, 完成设置. 对应的脚本命令为: dc_shell> set_max_delay 10 -from EN -to RDN
Set_driving_cell 设置输入驱 动
为了更加准确的估计模块输入的时序, 我们同样需要知道输入端口所接单元的 驱动能力。在默认的情况下,DC认为 驱动输入的单元的驱动能力为无穷大, 也就是说,transition time为0。 按照该单元的输出电阻来计算 transition time,从而计算输入端口到 门单元电路的延迟。
工艺库的格式
DC用到的工艺库是.db或者是.lib格式 的 .lib格式的文件是可读得,通过此文件 可以了解库的详细信息,比如说工作电 压,操作温度,工艺偏差等等。 .db格式的库是二进制的,不可读。.db 格式的库由.lib格式的库通过命令 read_lib生成。
工艺库的分类
逻辑库 物理库
Set_max_fanout设置最大扇出负 载
设置最大扇出负载约束就是指设置了某 线所能驱动的负载数量上限。 如果某线的扇出负载过重,DC可以通 过改变单元的驱动强度来修正该约束违 例的情况。
Set_clock_uncertainty 设置 时钟不确定性
理想、don’t touch
实际
Set_clock_uncertainty 设置时钟 不确定性
Set_wire_load_model设置连线 负载模型
在DC综合的过程中,连线延时是通过 设置连线负载模型(wire load model) 确定的。 连线负载模型基于连线的扇出,估计它 的电阻电容等寄生参数,它是也是由 Foundry提供的。 我们可以让DC自动根据综合出来的模 块的大小选择负载模型,这个选项在默 认下是打开的。
综合的目标
得到一个功能和时序都满足的网表: 面积最小化 功耗最小化 性能最大化
SME 授课教案 2019年2月 12日星期二
如何保证时序满足?
将电路划分为各种时序路径 计算电路中关键路径的setup time 与 hold time是否满足
DC时序通路(timing path)的 划分原理:
首先选定reset端口 ,Attribute-->Optimization Constraints-->Timing Constraints… 点击OK,完成reset的延迟设置 . 相对应的脚本命令是: dc_shell> set_max_delay 5 -from RESET
Set_max_delay 设置最大延 迟
DC的作用
DC的使用流程 DC时序报告
DC在设计流程中的位置
什么是综合
实现在满足设计电路的功能、速度及面积等 限制条件下,将行为级描述转化为指定的技 术库中单元电路的连接。
逻辑设计
约束
逻辑综合
库
门级网表
为什么要进行DC
RTL代码是理想的情况 B. 实际电路
A.
1>门的延时 2>导线的延时 3>信号的转换时间 4>时钟信号到达各个触发器的时间不相等
输入延时
那么,从输入端口经过路径N到触发器 DFF2的输入端所用的时间=时钟周期 -输入延时
输出延时
那么,数据从触发器DFF3的D端到输 出端口所用的时间=时钟周期-输出延 时 这样,整个设计的路径就全部被约束了 。
DC的使用流程
库文件简单说明
目标工艺库(Target_library): 是指将RTL级的HDL描述到门级时所需的标准单元综合库,它 是由芯片制造商(Foundry)提供的,包含了物理信息的单元 模型。 链接库(link_library): 链接库可以是同target_library一样的单元库,或者是已综合 到门级的底层模块设计,其作用如下:在由下而上的综合过程 中,上一层的设计调用底层已综合模块时,将从link_library中 寻找并链接起来。 符号库(symbol_libray): 显示电路时,用于标识器件,单元的符号库。
时序分析
示意图
Thold
d DFF ck
q
d ck q Tset Td
建立时间约束
保持时间约束
端口延时
• 定义了时钟也就定义了两个触发器之间 的时间约束,因为在DC中默认两个触 发器之间的时间路径是一个周期,通过设 置时钟周期可以约束设计内部触发器之 间的路径X,但是还有路径N和T没有约束 。
Set_max_capacitance 设置线负 载电容
Transition time不能提供对net(线) 的电容的直接控制,我们可以使用 set_max_capacitance命令实现独立于 传输时间约束的最大容值的约束。 对于连接到输出pin上的net,其对应的 容值是net本身的电容加上所连接的pin 的容值,DC将这个计算结果与所设定 的Max_capacitance比较,决定是否违 反设计规则约束。
工艺库的分类
逻辑库
只包含与综合过程有关的信息且通过DC用于设计 的综合和优化。 它一般包括:引脚到引脚的时序,面积,引脚类 型,功耗等等!
逻辑库
它包含单元的物理特征:物理尺寸,层信息,单 元方位相关的数据
DC中的工艺库及其配置
GTECH库 GTECH库是Synopsys的通用工 艺库。它由DC自带,是独立于厂家工艺的 。该库中包含的元件仅代表一定的逻辑功 能而不带有任何工艺参数。DC在转译时会 先将HDL描述转化为GTECH库单元组成的 电路。
Set_multicycle_path 设置多 周期路径
在FF1和FF2之前,存在一个BIG_LOGIC,假设我 们允许它的延时在两个周期之内。
Set_multicycle_path 设置多 周期路径
第一个语句说明建立时间是在FF1触发后的第二个 周期后检查,第二个语句说明保持时间在FF1触发 后的第一个周期检查。可得此时的波形图如下:
Set_wire_load_model设置连线 负载模型
Set_wire_load_model设置连线 负载模型
如果连线连接的是不同的模块就要用到 连线负载模式(set_wire_load_mode) 这个命令了。 这有三种wire-load mode: top,enclosed,segmented,用于模拟各 设计层次的net wire_load的关系。
如何看时序报告:
通过产生的时序报告读出以下信息: 1)是setup time report还是hold time report? 2)时钟频率多少?
确定是setup time report还是hold time report? 看oprating conditions:worst(建立 时间),best(保持时间)。为什么? 看path type:max(建立时间), min(保持时间)。为什么? 时钟频率多少: 通过上升沿和下降沿的时间来确定
Set_load 设置输出负载
估计模块输出的时序——transition time DC默认输出负载为0. 单位由Foundry厂提供,一般是pf.
Set_max_transition 设置最大传 输时间
Transition time 是指改变某线所驱动 的pin所需要的时间,该时间的计算方 法是基于工艺库的。 输出的传输时间是输入传输时间以及输 出负载的函数关系。 DC在优化的过程中就是确保设计的所 有net的对应的传输时间小于所设定的 最大传输时间。
DC时序路径:
时间通路的划分
几个概念
数据传输需要的时间(Data Arrival Time):信号到达时间是指信号到达电 路中某一点的真实时间,一般等于信号 到达时序路径起点的时间加上信号在该 时序路径上传播所用的时间。 要求到达时间(Data Required Time): 指期望信号到达电路中某一点的时间。 时序裕度(slack):指电路中某点处要求 到达时间与实际信号到达时间的差值
起点 终点
1> 所有的基本输入端(Primary Input) 2> 所有时序单元的时钟输入端
1> 所有的基本输出端(Primary Output) 2> 所有时序单元的数据输入端
DC四种时序路径的划分
四种路径: 基本输入到寄存器 触发器到触发器 触发器到输出 基本输入到基本输出
DC的启动:
图形界面:在unix下面输入 dv –db_mode就进入dc的图形界面。 命令行界面: Shell模式:dc_shell Tcl模式:dc_shell-t
Set_operating_conditions 设置 工作条件命令
工作条件包括三方面的内容——温度 、电压以及工艺。 在Foundry提供的工艺库里,它的各个 单元的延时是在一个标准(nominal)条 件下得到的,比如说温度25.0度、工艺 参数1.0和工作电压1.8V。 工作条件一般分为三种:最好情况 (best case)、典型情况(typical case) 以及最差情况(worst case)。
建立时间和保持时间
建立时间(setup time):数据在时钟信号源 到达之前必须要稳定的时间,如果建立时间 不满足,数据不能正确打进时序逻辑单元 保持时间(hold time):数据在时钟信号源 到达之后必须要稳定的时间,如果保持时间 不够,数据被时序逻辑单元正确锁存 基本单元的延时(Tcq):门延时是指信号 通过实际的标准单元所需要的时间.在时序逻 辑单元中,反映为从时钟沿开始,到数据输 出需要的时间 . 线延时:线延时是指由于导线的阻持时间的slacks: 例:建立时间: --------------------------------------------------data required time 31.74 data arrived time -19.80 ----------------------------------------------------slack 11.94 arrived time应比required time提前 ,这样才能保证建立时间不违例。
转译(translation):
DC综合的三个阶段:
Translation 是指用HDL语言描述的电路转化为用 GTECH库元件组成的逻辑电路的过程。GTECH是 Synopsys的通用工艺库,它仅表示了逻辑函数的功 能,并没有映射到具体的厂家工艺库,也就是说独 立于厂家工艺的。 优化(optimization)和映射(mapping) : Optimization是根据设计者对电路设定延时和面积 等约束条件对电路进行优化设计的过程。它通过各 种方法尽量满足设计者对电路的要求。 Mapping把用GTECH库元件构成的电路映射到某 一固定厂家的工艺库上,此时的电路包含了厂家的 工艺参数Library Cells;
Set_max_delay 设置最大延迟
对于异步逻辑来说,异步的置位和清零 信号,并通过锁存器以及寄存器实现的, 因为reset的信号穿过一些BLOCK,因而 需要在顶层约束这个信号,约束方法如 下面的例子. 例如我们现在要设置RESET的最大时延 为5
Set_max_delay 设置最大延 迟
实际的时钟达到各个触发器的时间不是 一样的,它们之间有一个偏差,称为时 钟偏差(Clock Skew)。 为了反映这个偏差,我们在综合的时候 可以用一个命令来模拟它,即 set_clock_uncertainty。
Set_clock_uncertainty 设置时钟 不确定性
Set_false_path 设置虚假路径
例二, 规定一个从EN到RDN的 最小延迟为10的路径,设置步骤 如下: 首先选定EN &RDN两个端口( 用Ctrl键), Attribute--> Optimization Constraints->Timing Constraints… 设置相应的延迟时间点击OK, 完成设置. 对应的脚本命令为: dc_shell> set_max_delay 10 -from EN -to RDN
Set_driving_cell 设置输入驱 动
为了更加准确的估计模块输入的时序, 我们同样需要知道输入端口所接单元的 驱动能力。在默认的情况下,DC认为 驱动输入的单元的驱动能力为无穷大, 也就是说,transition time为0。 按照该单元的输出电阻来计算 transition time,从而计算输入端口到 门单元电路的延迟。
工艺库的格式
DC用到的工艺库是.db或者是.lib格式 的 .lib格式的文件是可读得,通过此文件 可以了解库的详细信息,比如说工作电 压,操作温度,工艺偏差等等。 .db格式的库是二进制的,不可读。.db 格式的库由.lib格式的库通过命令 read_lib生成。
工艺库的分类
逻辑库 物理库
Set_max_fanout设置最大扇出负 载
设置最大扇出负载约束就是指设置了某 线所能驱动的负载数量上限。 如果某线的扇出负载过重,DC可以通 过改变单元的驱动强度来修正该约束违 例的情况。
Set_clock_uncertainty 设置 时钟不确定性
理想、don’t touch
实际
Set_clock_uncertainty 设置时钟 不确定性
Set_wire_load_model设置连线 负载模型
在DC综合的过程中,连线延时是通过 设置连线负载模型(wire load model) 确定的。 连线负载模型基于连线的扇出,估计它 的电阻电容等寄生参数,它是也是由 Foundry提供的。 我们可以让DC自动根据综合出来的模 块的大小选择负载模型,这个选项在默 认下是打开的。
综合的目标
得到一个功能和时序都满足的网表: 面积最小化 功耗最小化 性能最大化
SME 授课教案 2019年2月 12日星期二
如何保证时序满足?
将电路划分为各种时序路径 计算电路中关键路径的setup time 与 hold time是否满足
DC时序通路(timing path)的 划分原理:
首先选定reset端口 ,Attribute-->Optimization Constraints-->Timing Constraints… 点击OK,完成reset的延迟设置 . 相对应的脚本命令是: dc_shell> set_max_delay 5 -from RESET
Set_max_delay 设置最大延 迟
DC的作用
DC的使用流程 DC时序报告
DC在设计流程中的位置
什么是综合
实现在满足设计电路的功能、速度及面积等 限制条件下,将行为级描述转化为指定的技 术库中单元电路的连接。
逻辑设计
约束
逻辑综合
库
门级网表
为什么要进行DC
RTL代码是理想的情况 B. 实际电路
A.
1>门的延时 2>导线的延时 3>信号的转换时间 4>时钟信号到达各个触发器的时间不相等
输入延时
那么,从输入端口经过路径N到触发器 DFF2的输入端所用的时间=时钟周期 -输入延时
输出延时
那么,数据从触发器DFF3的D端到输 出端口所用的时间=时钟周期-输出延 时 这样,整个设计的路径就全部被约束了 。
DC的使用流程
库文件简单说明
目标工艺库(Target_library): 是指将RTL级的HDL描述到门级时所需的标准单元综合库,它 是由芯片制造商(Foundry)提供的,包含了物理信息的单元 模型。 链接库(link_library): 链接库可以是同target_library一样的单元库,或者是已综合 到门级的底层模块设计,其作用如下:在由下而上的综合过程 中,上一层的设计调用底层已综合模块时,将从link_library中 寻找并链接起来。 符号库(symbol_libray): 显示电路时,用于标识器件,单元的符号库。
时序分析
示意图
Thold
d DFF ck
q
d ck q Tset Td
建立时间约束
保持时间约束
端口延时
• 定义了时钟也就定义了两个触发器之间 的时间约束,因为在DC中默认两个触 发器之间的时间路径是一个周期,通过设 置时钟周期可以约束设计内部触发器之 间的路径X,但是还有路径N和T没有约束 。
Set_max_capacitance 设置线负 载电容
Transition time不能提供对net(线) 的电容的直接控制,我们可以使用 set_max_capacitance命令实现独立于 传输时间约束的最大容值的约束。 对于连接到输出pin上的net,其对应的 容值是net本身的电容加上所连接的pin 的容值,DC将这个计算结果与所设定 的Max_capacitance比较,决定是否违 反设计规则约束。
工艺库的分类
逻辑库
只包含与综合过程有关的信息且通过DC用于设计 的综合和优化。 它一般包括:引脚到引脚的时序,面积,引脚类 型,功耗等等!
逻辑库
它包含单元的物理特征:物理尺寸,层信息,单 元方位相关的数据
DC中的工艺库及其配置
GTECH库 GTECH库是Synopsys的通用工 艺库。它由DC自带,是独立于厂家工艺的 。该库中包含的元件仅代表一定的逻辑功 能而不带有任何工艺参数。DC在转译时会 先将HDL描述转化为GTECH库单元组成的 电路。
Set_multicycle_path 设置多 周期路径
在FF1和FF2之前,存在一个BIG_LOGIC,假设我 们允许它的延时在两个周期之内。
Set_multicycle_path 设置多 周期路径
第一个语句说明建立时间是在FF1触发后的第二个 周期后检查,第二个语句说明保持时间在FF1触发 后的第一个周期检查。可得此时的波形图如下:
Set_wire_load_model设置连线 负载模型
Set_wire_load_model设置连线 负载模型
如果连线连接的是不同的模块就要用到 连线负载模式(set_wire_load_mode) 这个命令了。 这有三种wire-load mode: top,enclosed,segmented,用于模拟各 设计层次的net wire_load的关系。