DC静态时序分析之时钟篇
博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢!

引言介绍
在芯片设计或者FPGA设计里面,根据有无时钟,将电路设计分为时序逻辑电路设计跟组合逻辑电路设计两部分。对设计的电路进行时序分析来说,时钟是不可或缺的。本文主要介绍关于在静态时序分析中时钟的基础知识跟常用SDC指令。

基础知识
在介绍时钟的详细指令前,先介绍在静态时序分析中关于时钟的一些基础知识跟概念,例如clock tree(时钟树),clock jitter(时钟抖动),clock latency(时钟延迟),clock skew(时钟偏斜),clock uncertainty(时钟不确定),clock transition(时钟转化),clock gating(时钟门控),clock fanout(时钟扇出)。

clock tree(时钟树)
clock tree时钟树是指从时钟源source出发,经过布局布线通过各种buffer到达不同时序模块(时序器件)而形成类似一种树的网络结构就叫做时钟树。
作用:通常可以通过对时钟的布局布线来达到减少时钟对时序模块的skew影响,使时序更加收敛;也可以通过与clock gating结合,控制模块的打开关闭,起到节省电路功耗的作用。

clock latency(时钟延迟)
clock latency时钟延迟指的是在时钟源出发到某个时钟器件触发端的延迟,时钟源可以为芯片外部晶振或者芯片内部的PLL锁相环。例如下图所示这里的clock latency为单独指clka或者clkb。

clock jitter(时钟抖动)
clock jitter时钟抖动是指时钟在周期上存在频率的不确定性,叫做时钟抖动; 通常造成时钟抖动是因为时钟源晶振本身的稳定性,又或者工作环境的温度,电压对其造成了影响。
影响:通常clock jitter跟clock skew是影响时钟信号稳定性的主要因素,对电路的时序分析也存在影响。

clock skew(时钟偏斜)
clock skew时钟偏斜指的是从时钟源出发到不同时序器件之间的延迟。例如下图所示,clock latency单指的是clka或者clkb,而clock skew指的是时钟经过不同buffer跟走线到达不同时序器件rega跟clkb的延迟,这里的clock skew指的是clk到达寄存器触发端的clka与clkb的沿的相位差。
影响:skew 通常是时钟相位上的不确定,造成 skew 的原因很多。由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了skew。

clock uncertainty(时钟不确定)
clock uncertainty时钟不确定性通常指的是时钟在时序器件引脚的不确定性,可以直接理解为clock skew跟clock jitter的和。
影响:通常来说clock uncertainty越小,时钟的建立时间余量就越大。约容易满足时序路径上的建立时间,一般来说uncertainty一般为时钟周期的10%到30%。
一般可以设置set_clock_uncertainty 10%T(30%T)…

clock transition(时钟转化)
clock transition通常指的是clock 信号的 slew 时间。分为上升沿时间和下降沿时间。

clock gating(时钟门)
clock gating时钟门指的是,从时钟源到模块时钟的时钟树枝里“与”各模块的控制使能信号,通过使能信号来控制各模块的时钟是否打开。从而达到将一些不需要一直工作的模块停掉,达到节省电路功耗的目的。

clock fanout(时钟扇出)
clcok fanout时钟扇出指的是时钟源通过各级buff到达各时序模块的个数。
常用指令set_max_fanout 20 [get_clock clk] ##这里20指的是你电路设计扇出到了多少时序器件。

时钟约束
生成主时钟
create_clock -period 40 -waveform [0 20] -name clk [get_ports clk]
上述指令是生成周期为40ns频率为25MHZ的时钟clk;生成时钟指令的各参数介绍如下图所示:

如果生成多个主时钟时的相位是不一致异步的,那么就要用set_clock_groups来对不同主时钟之间的相位约束;
例如下图所示:当时钟wbClk跟bftClk两个主时钟的相位是异步的;应当这样子来进行约束:
create_clock -period 50 wbClk [get_ports wbClk]
create_clock -period 20 bftClk [get_ports bftClk]
set_clock_groups -asynchronous -group wbClk -group bftClk
当如果两个主时钟wbClk跟bftClk的相位是一致的,即可以不用set_clock_groups来进行约束。

生成同源时钟
正如上面介绍所说create_clock是生成主时钟的(顶层的),工程师也可以通过一种方式来生成自定义时钟给模块电路,好处就是可以使主时钟跟自定义时钟同源同相而避免了上面所说的存在时钟的skew的影响。如下所示apcnt_top为顶层,apcnt_clk为子模块。clkin到顶层跟clkin到子模块,存在skew的延迟。而通过create_generate_clock可以使顶层跟子模块同源同相。减少skew的影响。
module apcnt_top

apcnt_clk
u_apcnt_clk
();

endmdoule
module apcnt_clk(clkin ,clk_a);

always@(posedge clkin or negedge nrst)
begin
if(!nrst)
clk_a <= 0;
else
clk_a <= ~clk_a;
end
always@(posedge clk_a)

endmodule
具体约束指令如下所示:
create_clock -period 50 -name clk_in [get_ports clkin]
create_generate_clock -divide_by 1 -source clkin -name clk_in [get_pins u_apcnt_clk\clkin]
又或者
create_clock -period 50 -name clk_in [get_ports clkin]
create_generate_clock -multiple_by 1 -source clkin -name clk_in [get_pins u_apcnt_clk\clkin]

生成虚拟时钟
一般来说只有在创建输入输出约束的时候才会创建虚拟时钟。与主时钟不同的就是,虚拟时钟是自己内部电路设计产生的捕获时钟,所以没有对应的物理引脚。例如下面代码所示,clkin为有物理页脚的输入主时钟,而clk_a只是我们内部电路设计的捕获虚拟时钟,没有对应的port。
always@(posedge clkin or negedge nrst)
begin
if(!nrst)
clk_a <= 0;
else
clk_a <= ~clk_a;
end
always@(posedge clk_a)

也就是来说,对这类虚拟时钟在捕获数据时,应当考虑对他的约束,具体约束指令如下所示:
create_clock -period 10 -name clkin [get_ports clk_in]
create_clock -period 20 -name clk_a
set_input_delay 4 -clock clk_a [get_ports din]

————————————————
版权声明:本文为CSDN博主「凌云望远」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39015789/article/details/103315530

DC静态时序分析之时钟篇的更多相关文章

  1. TimeQuest 静态时序分析 基本概论

    静态时序分析 基本概念  [转载] 1.   背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高 ...

  2. 静态时序分析(static timing analysis)

    静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation).但STA只会去分析合适的时序,而不去管逻辑操作 ...

  3. FPGA STA(静态时序分析)

    1 FPGA设计过程中所遇到的路径有输入到触发器,触发器到触发器,触发器到输出,例如以下图所看到的: 这些路径与输入延时输出延时,建立和保持时序有关. 2. 应用背景 静态时序分析简称STA,它是一种 ...

  4. 静态时序分析基础STA

    静态时序分析SAT   1.   背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高系统工作主频 ...

  5. FPGA基础知识8(FPGA静态时序分析)

    任何学FPGA的人都跑不掉的一个问题就是进行静态时序分析.静态时序分析的公式,老实说很晦涩,而且总能看到不同的版本,内容又不那么一致,为了彻底解决这个问题,我研究了一天,终于找到了一种很简单的解读办法 ...

  6. FPGA静态时序分析基础

    FPGA静态时序分析基础 基本概念 Skew: 时钟偏移 Skew表示时钟到达不同触发器的延时差别,Tskew = 时钟到达2号触发器的时刻 - 时钟到达1号触发器的时刻. Jitter: 时钟抖动 ...

  7. 静态时序分析SAT

    1.   背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性.对 ...

  8. 静态时序分析(static timing analysis) --- 时序路径

    时序分析工具会找到且分析设计中的所有路径.每一个路径有一个起点(startpoint)和一个终点(endpoint).起点是设计中数据被时钟沿载入的那个时间点,而终点则是数据通过了组合逻辑被另一个时间 ...

  9. 【转载】FPGA静态时序分析——IO口时序

    转自:http://www.cnblogs.com/linjie-swust/archive/2012/03/01/FPGA.html 1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束 ...

  10. FPGA静态时序分析——IO口时序(Input Delay /output Delay)

    1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确 ...

随机推荐

  1. IDApython练习1-脚本去花

    IDApython练习1-脚本去花 这里主要是练习IDApython脚本去花 1 这里 jz跳转条件是zf=1, jnz跳转条件是zf=0, 但是zf就2种可能,所以无论如何都会跳转到loc_411D ...

  2. React请求机制优化思路

    说起数据加载的机制,有一个绕不开的话题就是前端性能,很多电商门户的首页其实都会做一些垂直的定制优化,比如让请求在页面最早加载,或者在前一个页面就进行预加载等等.随着react18的发布,请求机制这一块 ...

  3. 2、Spring之IOC概述

    2.1.IOC思想 2.1.1.传统方式获取资源 组件主动地从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式: 提高了学习成本,同时也降低了开发的效率. 2. ...

  4. Redis的五大数据类型的数据结构

    概述   Redis底层有六种数据类型包括:简单动态字符串.双向链表.压缩列表.哈希表.跳表和整数数组.这六种数据结构五大数据类型关系如下: String:简单动态字符串 List:双向链表.压缩列表 ...

  5. Python 基础面试第三弹

    1. 获取当前目录下所有文件名 import os def get_all_files(directory): file_list = [] # os.walk返回一个生成器,每次迭代时返回当前目录路 ...

  6. 虾皮shopee根据ID取商品详情 API 返回值说明

    ​ item_get-根据ID取商品详情  注册开通 shopee.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...

  7. PDF 补丁丁 1.0 正式版

    经过了一年多的测试和完善,PDF 补丁丁发布第一个开放源代码的正式版本了. PDF 补丁丁也是国内首先开放源代码.带有修改和阅读PDF的功能的 PDF 处理程序之一. 源代码网址:https://gi ...

  8. VB快速上手文档教程

    前言 本来我想可能不会接触到这个语言, 不过在用excel时需要用到VBA. 这就不得不专门去学习一番. 入了个门, 专门写个文档留着. 万一以后用得到呢- 论VB, 我还是初学者. 如有弄错了的地方 ...

  9. [Python] #!/usr/bin/python 与 #!/usr/bin/env python 的区别

    区别是什么呢? #!/usr/bin/python 系统在执行这个脚本的时候, 调用固定路径的python解释器 #!/usr/bin/env python 防止用户没有吧py安装到usr/bin目录 ...

  10. Binary String Copying

    Smiling & Weeping ----第一次见你的时候, 在我的心里已经炸成了烟花, 需要用一生来打扫灰炉. 题目链接:Problem - C - Codeforces 题目大意不难,就 ...