STA 静态时序分析 第七章——STA环境的配置(2)

接上文--STA 静态时序分析 第七章——STA环境的配置(1)


目录

7.5 输出路径的约束

7.6 时序路径组

7.7 外部因素的建模

7.7.1对于驱动能力建模

7.7.2 容性负载的建模

7.8 设计规则检查

7.9 虚拟时钟

7.10 时序分析的完善

7.10.1 指定不活跃的信号

7.10.2 打破时序弧

7.11 点对点指定

7.12 路径的分段


7.5 输出路径的约束

例子A

下图中展示了待分析设计的输出路径例子。Tc1、Tc2分别是组合逻辑延时。

CLKQ的周期,决定了UFF0与UFF1之间有多少的可用时间。外部逻辑的延时为Tc2+Tsetup,需要被指定为外部延时。请注意,外部延时是依据捕获时钟来指定的。数据必须及时到达外部寄存器UFF1,从而满足建立时间的要求。

set Tc2 3.9
set Tsetup 1.1
set_output_delay -clock CLKQ -max [expr Tc2 + Tsetup] \
[get_ports OUTB]

这里指定了最大的外部延时,值为5ns。最小外部延时同样也可以用类似的方法指定。

例子B

下图的例子展示了,既有最小延时、也有最大延时的情况。最大路径延时为7.4ns,最小路径延时为-0.2ns。以上两个延时分别对应于max的Tc2+Tsetup,min的Tc2-Thold因此代码:

create_clock -period 20 -waveform {0 15} [get_ports CLKQ]
set_output_delay -clock CLKQ -min -0.2 [get_ports OUTC]
set_output_delay -clock CLKQ -max 7.4 [get_ports OUTC]

图中的波形展示了OUTC的数据需要保持稳定才能被外部的捕获寄存器捕捉到。这也就说明,数据输出端口必须在稳定区域开始前就准备好,并且需要保持稳定直到稳定区域结束。这转化为对逻辑时序的要求,即DUA内部输出端口OUTC的时序要求。

例子C

在下面的这个例子中,模块有两个输入DATAIN和MCLK,一个输出DATAOUT。下图中也有波形。

create_clock -period 100 -waveform {5 55} [get_ports MCLK]
set_input_delay 25 -max -clock MCLK [get_ports DATAIN]
set_input_delay 5 -min -clock MCLK [get_ports DATAIN]
set_output_delay 20 -max -clock MCLK [get_ports DATAOUT]
set_output_delay -5 -min -clock MCLK [get_ports DATAOUT]

对于代码解释:首先创建了周期100,边沿在5  55处的时钟。然后设置了输入延时最大为25ns,最小为5ns。设置输出延时最大为20ns,最小为5ns。


7.6 时序路径组

每个路径都有起点和终点。静态时序分析中,路径是根据有效的起始点和终点进行计时的。有效的起始点有:输入端口以及同步时序器件(寄存器、内存)的时钟引脚。有效的终点有:输出端口以及同步时序器件的数据输入引脚。因此一个有效的时序路径可以是:

  • 从输入端口到输出端口;
  • 从输入端口到触发器或存储器的数据输入引脚;
  • 从触发器或存储器的时钟引脚到触发器或存储器的数据输入引脚;
  • 从触发器的时钟引脚到输出端口;
  • 从存储器的时钟引脚到输出端口

上图中有效的时序路径有:

  • 输入端口A到UFFA的D输入端口
  • 输入端口A到输出端口Z
  • UFFA的时钟引脚CLK到UFFB的D输入端口
  • UFFB的时钟引脚CLK到输出引脚Z

时序路径根据这条路径的终点,分类到不同的时序路径组中。因此,每个时钟都有一套与之相关联的路径。这里也存在一条默认路径(default path group),包含了所有的异步时序路径。在下图中的不同组为:

  • 时钟A组:由输入端口A到UFFA的D引脚。
  • 时钟B组:由UFFA的时钟引脚,到UFFB的D引脚。
  • 默认组:输入端口A到输出引脚Z的路径以及UFFB的时钟引脚到输出端口Z。

对于每条路径的分析以及报告通常是分开的。


7.7 外部因素的建模

虽然使用 create_clockset_input_delay set_output_delay 足以约束设计中所有路径以执行时序分析,但这些方法不足以获得模块 I/O 引脚的准确时序。接下来的因素也需要,以此来模拟设计所处的环境。对于输入引脚,我们需要指定压摆,这可以使用:

  • set_drive(不推荐)
  • set_driving_cell
  • set_input_transition

对于输出引脚,我们只需要指定由它所看到的负载电容的大小:

  • set_load
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值