multicycle path:当FF之间的组合逻辑path propagate delay大于一个时钟cycle时,这条combinational path能被称为multicycle path。

create_clock -name CLKM -period 10 [get_ports CLKM]

set_multicycle_path 3 -setup -from [get_pins UFF0/Q] -to [get_pins UFF1/D]

set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]

-setup指定,对于setup check,新的setup check edge相对于默认的setup check edge(Capture FF)向后移动的时钟数。

-hold指定,对于hold check,新的hold check edge相比于默认的setup check edge(Capture FF前一时钟)向前移动的时钟数。

在多数的design中,一个N multicycle setup应该与一个N-1 multicycle hold相对应,以保证hold check维持在同一时钟,否则极容易slack

violated,因为hold check edge太晚于launch edge,使得data required time很大。

False Path:通过设置false path,可以turn off一些paths。

set_false_path -from [get_clocks SCAN_CLK] -to [get_clocks CORE_CLK] 任何从SCAN_CLK到CORE_CLK的path都为false path

set_false_path -through [get_pins UMAX0/S] 任何经过UMAX0这个节点的path都为false path

set_false_path -to [get_ports TEST_REG*] 任何以TEST_REG*为终点的path都为false path

Half-Cycle Path:当一个design中既有negative_edge FF又有positive_edge FF时,一个从positive_edge FF到negative_edge FF会设置为half-cycle

path。或者相反也可。

Half-cycle path使得setup check变的更为严峻,因为一个cycle变为半个cycle。但是hold check却得到了半个cycle的余量。

Removal Timing Check:异步信号的release必须在active clock edge后的一段时间,以便这个异步信号的变化在下一clock edge被识别。

这个时间称为removal time。

这是一个min path check,类似于hold check。Path group称为async_default

Recovery Timing Check:异步信号的inactive必须在active clock edge前的一段时间,以便这个clock edge能够识别这个异步信号的变化。

这个时间称为recovery time。

这是一个max path check,类似于setup check。Path group称为async_default。

首先设计异步复位,同步释放的逻辑,如果reg的clock可以先gate掉,再进行rst,recovery timing是可以不检查的,否则还是要检测sync FF输出到第一级FF的recovery time的。

但是removal是通过clock采样rst来的,所以需要检查removal timing

Slow to Fast Clock Domains:当design中有一个从Slow domain到Fast domain时,

create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]

create_clock -name CLKP -period 5 -waveform {0 2.5} [get_ports CLKP]

这时default setup check edge是在Fast domain中后一个clock。default hold check是setup check edge前一个时钟。

此时可以通过set_multicycle_path命令来设置新的setup check edge和hold check edge。保证setup和hold check以Slow clock为准。

-end表示以Fast clock为单位计数,setup后移clock数和hold前移的clock数。

Fast to Slow Clock Domains:此时应该check most restrictive路径。对于setup check,Capture FF前的一个Fast clock。

对于hold check,default hold check edge后的第一个Fast clock。 

此时应该使用-start表示以Fast clock为单位计数,setup后移clock数和hold前移的clock数。

STA分析(二) multi_cycle and false的更多相关文章

  1. Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题

    4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...

  2. MapReduce深度分析(二)

    MapReduce深度分析(二) 五.JobTracker分析 JobTracker是hadoop的重要的后台守护进程之一,主要的功能是管理任务调度.管理TaskTracker.监控作业执行.运行作业 ...

  3. Java线程池使用和分析(二) - execute()原理

    相关文章目录: Java线程池使用和分析(一) Java线程池使用和分析(二) - execute()原理 execute()是 java.util.concurrent.Executor接口中唯一的 ...

  4. Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理

    相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...

  5. 框架-springmvc源码分析(二)

    框架-springmvc源码分析(二) 参考: http://www.cnblogs.com/leftthen/p/5207787.html http://www.cnblogs.com/leftth ...

  6. Spring5源码深度分析(二)之理解@Conditional,@Import注解

    代码地址: 1.源码分析二主要分析的内容 1.使用@Condition多条件注册bean对象2.@Import注解快速注入第三方bean对象3.@EnableXXXX 开启原理4.基于ImportBe ...

  7. Vue源码分析(二) : Vue实例挂载

    Vue源码分析(二) : Vue实例挂载 author: @TiffanysBear 实例挂载主要是 $mount 方法的实现,在 src/platforms/web/entry-runtime-wi ...

  8. 多线程之美8一 AbstractQueuedSynchronizer源码分析<二>

    目录 AQS的源码分析 该篇主要分析AQS的ConditionObject,是AQS的内部类,实现等待通知机制. 1.条件队列 条件队列与AQS中的同步队列有所不同,结构图如下: 两者区别: 1.链表 ...

  9. SNMP报文抓取与分析(二)

    SNMP报文抓取与分析(二) SNMP报文抓取与分析(二) 1.SNMP报文表示简介 基本编码规则BER 标识域Tag表示 长度域length表示 2.SNMP报文详细分析(以一个get-respon ...

随机推荐

  1. Artech的MVC4框架学习——第六章Model的验证

    第一Model验证旨在为通过Model绑定生成参数进行检验以确保用户输入数据的有效性(p318) 第二Model验证分两种:服务器端(三种解决方案 p256)和客户端(ajax\jQuery) 第三服 ...

  2. 美团开源 SQL 优化工具 SQLAdvisor

    https://www.oschina.net/news/82725/sqladvisor-opensource https://github.com/Meituan-Dianping/SQLAdvi ...

  3. C++ Error: no appropriate default constructor available

    我定义了一个结构体,然后初始化它,结果编译报错 no appropriate default constructor available 代码如下: struct matrixXvect_func { ...

  4. python计算均值方差

    用Python求均值与方差,可以自己写,也可以借助于numpy,不过到底哪个快一点呢? 我做了个实验,首先生成9百万个样本: nlist=range(0,9000000) nlist=[float(i ...

  5. 7.20 python线程3

    2018-7-20 18:46:49 去俺弟家玩去 后天回来 1.复习 # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018 ...

  6. 利用javascript判断文件是否存在

    1 判断本地文件是否存在 var fso,s=filespec; // filespec="C:/path/myfile.txt" fso=new ActiveXObject(&q ...

  7. SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

    SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...

  8. Django的quarySet

    models.py 代码 from django.db import models # Create your models here. class Author(models.Model): nam ...

  9. intel笔记本cpu型号后缀详解(M,U,QM,MQ,HQ,XM)

    M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器. U:笔记本专用低电压CPU,一般为双核,U前面一位数字为8,则是28W功耗的低压处理器(标准 ...

  10. Iwconfig/aircrack-ng

    BT5 aircrack-ng破解无线密码(wpa/wep) - 星明月稀 - 博客频道 - CSDN.NET             BT5 aircrack-ng破解无线密码(wpa/wep) - ...