时序分析基本概念介绍<min pulse width>

640?wx_fmt=gif

今天我们要介绍的时序分析概念是min pulse width,全称为最小脉冲宽度检查。这也是一种非常重要的timing arc check,经常用在时序器件或者memory上面。

一般情况下,由于cell本身有变异,rise和fall delay不相同,这样可能会造成时钟信号脉冲宽度减小。

如下图一个周期为1ns,duty cycle 为50%的clock信号

640?wx_fmt=jpeg

在经过一个buffer(rise delay: 0.05, fall delay:0.03)

640?wx_fmt=jpeg

clock信号波形变成如下图所示:

640?wx_fmt=jpeg

因此,可以知道,如果某个cell的rise delay大于fall delay,那么输出时钟的脉冲宽度要比输入时钟小。如果时钟信号经过一系列相同类型的单元,则时钟信号的脉冲宽度将会持续减小。如果小于某个最小宽度,可能会导致器件不能正常的捕获数据。

因此,在做timing分析时,我们是必须对cell的pin做min pulse width检查。通常有两类方法:

1) sdc里面定义

set_min_pulse_width 2.0 [get_clocks CK1]

2)library里面定义

640?wx_fmt=jpeg


640?wx_fmt=jpeg

往期回顾

简历请戳邮箱:taozhang3260@163.com

  • 4
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是<Arduino.h>头文件的代码示例: ```c++ #ifndef Arduino_h #define Arduino_h #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <stdint.h> #include <stdio.h> #include <stdarg.h> #include "binary.h" #include "itoa.h" #include "pins_arduino.h" #include "wiring.h" #include "wiring_analog.h" #include "wiring_digital.h" #include "wiring_pulse.h" #include "wiring_shift.h" #include "WInterrupts.h" #ifdef __cplusplus extern "C"{ #endif void setup(void); void loop(void); #ifdef __cplusplus } // extern "C" #endif #endif ``` 以下是<inttypes.h>头文件的代码示例: ```c++ #ifndef _INTTYPES_H_ #define _INTTYPES_H_ #include <stdint.h> #define PRId8 "d" #define PRId16 "d" #define PRId32 "ld" #define PRId64 "lld" #define PRIi8 "i" #define PRIi16 "i" #define PRIi32 "li" #define PRIi64 "lli" #define PRIo8 "o" #define PRIo16 "o" #define PRIo32 "lo" #define PRIo64 "llo" #define PRIu8 "u" #define PRIu16 "u" #define PRIu32 "lu" #define PRIu64 "llu" #define PRIx8 "x" #define PRIx16 "x" #define PRIx32 "lx" #define PRIx64 "llx" #define PRIX8 "X" #define PRIX16 "X" #define PRIX32 "lX" #define PRIX64 "llX" #define PRIdPTR "ld" #define PRIiPTR "li" #define PRIoPTR "lo" #define PRIuPTR "lu" #define PRIxPTR "lx" #define PRIXPTR "lX" #define SCNd8 "hhd" #define SCNd16 "hd" #define SCNd32 "ld" #define SCNd64 "lld" #define SCNi8 "hhi" #define SCNi16 "hi" #define SCNi32 "li" #define SCNi64 "lli" #define SCNo8 "hho" #define SCNo16 "ho" #define SCNo32 "lo" #define SCNo64 "llo" #define SCNu8 "hhu" #define SCNu16 "hu" #define SCNu32 "lu" #define SCNu64 "llu" #define SCNx8 "hhx" #define SCNx16 "hx" #define SCNx32 "lx" #define SCNx64 "llx" #define SCNdPTR "ld" #define SCNiPTR "li" #define SCNoPTR "lo" #define SCNuPTR "lu" #define SCNxPTR "lx" #endif ``` 以下是<Stream.h>头文件的代码示例: ```c++ /* Stream.h - library for stream base class Copyright (C) 2006-2009 David A. Mellis Modified 23 November 2010 by Mark Sproul Modified 3 December 2017 by Chuck Todd */ #ifndef Stream_h #define Stream_h #include "Print.h" #define DEC 10 #define HEX 16 #define OCT 8 #define BIN 2 class Stream : public Print { public: virtual int available() = 0; virtual int read() = 0; virtual int peek() = 0; virtual void flush() = 0; }; #endif ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值