时钟树综合的理论知识总结在这里:http://www.cnblogs.com/IClearner/p/6580034.html

下面是实践环节:使用ICC进行时钟树综合。

这个实验的目标是:

  ·设置CTS的选项和例外

  ·综合时钟树

  ·生成和分析时钟树偏差和时序报告,以确定CTS的QoR

  ·修复保持时间违例并优化设计以获得更好的面积

  ·使用非默认布线规则对时钟网络进行布线

  ·分析布线后的时钟网络

在实验之前需要准备下面的文件:

圈圈那个文件是对标准单元布局好的设计,其他的三个脚本文件如上所述,需要我们进行自己编写。准备好数据后(库什么的就不用说了,自己解决),就可以开始实验了:

·打开设计,检查时钟树

--->打开库,再打开设计

--->查看时钟的偏移与一些属性:report_clock –skew  -attributes

--->查看时钟树的总体情况:report_clock_tree  -summary

--->检查是否有违规:report_constraint   -all

--->通过GUI查看是否有时序例外的端口

·时钟树综合前的准备

1--->把有时序例外的管脚设置为stop_pin:set_clock_tree_exceptions  -stop_pins

{I_SDRAM_TOP/I_SDRAM_IF/sd_mux_*/S}

2--->将所有时钟的时钟目标偏移设置为0.1。 从默认值0放宽偏斜目标将加快时钟树合成:set_clock_tree_options  -target_skew  0.1

3--->调整CTS后时序分析和优化的时钟不确定性指:set_clock_uncertainty 0.1 [all_clocks]

4--->指定在CTS的“DRC缓冲”阶段使用的缓冲区:set_clock_tree_references -references   {bufbd1 bufbd2 bufbd4 bufbd7 bufbdf}

5--->配置CTS使用非默认布线:

define_routing_rule  CLOCK_DOUBLE_SPACING \

-spacings {METAL3 0.42 METAL4 0.63 METAL5 0.82}

report_routing_rule CLOCK_DOUBLE_SPACING

set_clock_tree_options -routing_rule CLOCK_DOUBLE_SPACING \

-layer_list {METAL3 METAL5} -use_default_routing_for_sinks 1

6--->查看检查报告,验证已经进行了设置:

v report_clock_tree  -settings

7--->进行物理检查:

check_physical_design  -stage  pre_clock_opt  -display

8--->设置(时钟树)延迟计算模式:

set_delay_calculation –clock_arnoldi ;注意,在后面新的版本里面,已经不适合直接使用–clock_arnoldi的选项了,需要进行修改;这么修改可以进行man这个命令

9--->最后再检查一下:check_clock_tree

·进行时钟树综合

1--->合成所有时钟树,无需任何时序优化或布线:

clock_opt –only_cts –no_clock_route

2--->查看CTS之后的全局偏移总结:report_clock_tree -summary

使用clock timing命令生成不同的偏差报告:

report_clock_timing -type skew -significant_digits 3

3--->生成时序报告:v report_timing

4--->生成所有的违规报告,并查看:v  report_constraint -all

5--->保存设计:save_mw_cel -as clock_opt_cts

·进行保持时间优化

1--->启用保持时间修复:set_fix_hold [all_clocks]

2--->查看报告:report_qor

3--->进行面积范围设置:

set_max_area 0

## Set Area Critical Range

## Typical value: 5 percent of critical clock period

set physopt_area_critical_range 0.2

4--->RC参数的提取:extract_rc

5--->执行CTS后无时钟布线的时序、面积和扫描链优化:

clock_opt -only_psyn -area_recovery -optimize_dft -no_clock_route

6--->查看报告和违规:

report_qor

report_constraint -all

7--->保存设计:save_mw_cel -as clock_opt_psyn

·进行时钟树布线

1--->时钟树布线:route_zrt_group -all_clock_nets -reuse_existing_global_route true

2--->查看是否违规:report_constraint -all

3--->保持设计:save_mw_cel -as clock_opt_route

4--->查看物理设计:report_design -physical

ICC_lab总结——ICC_lab4:时钟树综合的更多相关文章

  1. 【stm32】时钟树解析

    有时候会突然忘了这个重要的时钟树,这里转载一个比较好的,以防忘记. STM32时钟系统 在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频 ...

  2. Linux下时钟框架实践---一款芯片的时钟树配置

    关键词:时钟.PLL.Mux.Divider.Gate.clk_summary等. 时钟和电源是各种设备的基础设施,整个时钟框架可以抽象为几种基本的元器件:负责提供晶振 Linux内核提供了良好的CC ...

  3. STM32学习笔记:【001】时钟树与RCC

    导言 如果学过单片机的同学应该不会陌生,学习51单片机时最经常听到的就是“最小系统”. 最小系统里面少不了晶振,否则单片机无法工作. 单片机需要晶振(时钟源)来工作,那么对于STM32芯片同样如此. ...

  4. EFM32G232F64时钟树

    1.为了熟悉MCU的时钟树,先看看EFM32G232F64的CMU(ClockManagementUnit) 时钟管理单元(CMU)用于管控晶振(时钟源)和各个时钟节点.出于降低功耗和启动时间的目的, ...

  5. RCC—使用 HSE/HSI 配置时钟 ---时钟树

    本章参考资料:< STM32F4xx 中文参考手册> RCC 章节.学习本章时,配合< STM32F4xx 中文参考手册> RCC 章节一起阅读,效果会更佳,特别是涉及到寄存器 ...

  6. RK3288 查看时钟树

    主控端可以通过指令查看时钟树,enable_cnt为1,表示时钟已使能. # cat d/clk/clk_summary cat d/clk/clk_summary clock enable_cnt ...

  7. NUCLEO-L053R8 RCC时钟树 MCO输出

    RCC时钟配置实验 最近玩了一下Nucleo-L053R8板子,即STM32L053R8T6.浏览了RCC章节后,顺便做了个小实验,现在给大伙分享一下. 实验非常简单,配置一下系统时钟,可以通过肉眼观 ...

  8. STM32 时钟树配置快速入门

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 为什么要了解时钟树? ...

  9. STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

随机推荐

  1. vue.js学习第一节

    <div id="app" class="app"> <p>{{ message }}</p> <p>{{ in ...

  2. C++编程练习(3)----“实现简单的栈的顺序存储结构“

    栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 栈又称为后进先出(Last In First Out)的线性表,简 ...

  3. Jenkins学习——Jenkins是什么

    Jenkins是什么 对于Jenkins是什么,百度百科给的答案是这样的:Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 通过这句话,我们可以得到这样的一 ...

  4. .NET 十五岁,谈谈我眼中的.NET

    2002年2月13日,第一个版本随着visual studio.net的发布,今天已经走过15年, .net团队写了一篇文章,里面有一个视频,Anders Hejlsberg已是白发苍苍的老人,我也从 ...

  5. 用9种办法解决 JS 闭包经典面试题之 for 循环取 i

    2017-01-06 Tomson JavaScript 转自 https://segmentfault.com/a/1190000003818163 闭包 1.正确的说,应该是指一个闭包域,每当声明 ...

  6. 读书笔记 effective c++ Item 18 使接口容易被正确使用,不容易被误用

    1. 什么样的接口才是好的接口 C++中充斥着接口:函数接口,类接口,模板接口.每个接口都是客户同你的代码进行交互的一种方法.假设你正在面对的是一些“讲道理”的人员,这些客户尝试把工作做好,他们希望能 ...

  7. BZOJ 3527: [Zjoi2014]力(FFT)

    我们看一下这个函数,很容易就把他化为 E=sigma(aj/(i-j)/(i-j))(i>j)-sigma(aj/(i-j)/(i-j))(j>i) 把它拆成两半,可以发现分子与分母下标相 ...

  8. NSRunLoop原理详解——不再有盲点

    编程最怕的就是有盲点,不确定,而runloop官网对其提及的又很少:那么看完这篇应该使你有底气很多~ RunLoop整体介绍 An event-processing loop, during whic ...

  9. 每天一个linux命令(49)--diff命令

    diff 命令是 Linux 上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff 在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件,diff ...

  10. RHL 6.0学习日记, 先记下来,以后整理。

    今天又遇到哪些问题呢? 1.配置网络的问题,我把网络配置文件胡乱改了,然后就上不了网了 因为一直都没怎么用到网络,网线都不怎么连接的,今天只是突然想ping一下,于是就Ping 了一下,一开始ping ...