set_input_delay/set_output_delay

6 篇文章 9 订阅

 

input delay和output delay是在SDC中经常会遇到的问题,看似简单其实还有很多模棱两可的问题的。特别是为什要设置input delay和output delay?常用的30%和70%的原因以及input delay和output delay有些情况下回设置负值。针对这些问题,我通过研究,把自己的一些总结进行记录,如有问题欢迎留言交流。

目录

 

为什么需要设置input delay和output delay

如何设置设置input delay和output delay

命令介绍

常用70%设置

output delay值为负值

input delay值为负值



对于一个芯片设计来说,芯片的外部都会有一些器件和芯片进行数据的交换,简单的示意图如下所示。DUA是我们的设计芯片,外部的器件从STA的角度被简化为两个寄存器和一些组合逻辑。

如上图所示,如果在design设计上没有对DATAIN DATAOUT的数据进行约束,那么STA工具并不能够得到有外部寄存器经过组合逻辑到达DATAIN的时间,同时也不知道DATAIN信号和输入的MCLK是什么关系(如果有多个时钟,到底和哪个时钟是有关的??)和内部采样reg的关系。input delay和output delay就是告诉STA工具芯片外部的信号的delay信息。如果知道芯片外部器件的data sheet,那么input delay和output delay要严格按照data sheet的要求去设置,如果没有就需要和designer确认具体的时序图,根据design的要求合理设置。

为什么需要设置input delay和output delay

如果不设置input delay和output delay,那么工具并不知道上述信息,也就是说工具并不会分析这条path。由于大多数信号进入芯片内部都是需要和芯片内部进行数据传递的,所以必须通过设计input delay和output delay的方式告诉工具此处的timing信息,这样才能保证输入的信号能够被芯片内部正确的采样,从而保证芯片工作正常。

反之,如果某些信号是一些在芯片正常工作之前就稳定的常值信号(bist en 等),那么实际上是没有必要对这些信号进行timing 分析的,所以这些信号可以不用设计input delay来简化约束。

如何设置设置input delay和output delay

对于input delay和output delay关键是理解下面两句话的含义

set_input_delay是说该输入信号是在时钟沿后多长时间到达模块的port上的 。

set_output_delay是说该输出信号在后级模块中需要在时钟沿之前提前多长时间准备好。

命令介绍

这里以input delay为例,output delay设置大同小异。set_input_delay命令语法如下

SYNTAX
status set_input_delay
delay_value
[-reference_pin pin_port_name]
[-clock clock_name]
[-clock_fall]
[-level_sensitive]
[-network_latency_included]
[-source_latency_included]
[-rise]
[-fall]
[-max]
[-min]
[-add_delay]
port_pin_list
Data Types
delay_value float
clock_name collection of 1 object
port_pin_list collection

这里讲解几个主要的参数

port_pin_list        指定设置input delay的port是哪些

-clock                  指定设置input delay的port是相对于哪个时钟设置的,即由port进入的signal信号是有哪个clock采样的,例如                                组APB总线的信号,进入芯片内部采样时钟应该是APB clk。

-max/min            指定input delay的最大值和最小值,分别用于STA的setup check和hold check计算。

-clock_fall          如果外部时钟是下降沿发送数据,需要指定该参数,让工具进行下降沿check。默认都是进行上升沿check的。

常用70%设置

input delay最常用的设置是对一组信号设置为采样时钟的70%.例如APB总线的输入时钟是apb_clk,对于apb的pwdata pradata port的input delay和output delay约束为

  set_input_delay -max [expr 0.7 * apb_clk]     -clock    apb_clk     [get_ports  apb_pwdata]

  set_output_delay -max [expr 0.7 * apb_clk]     -clock    apb_clk     [get_ports  apb_prdata]

为什么要设置70%?因为input delay是约束芯片外部的delay 情况,也就是外部约束70%,内部剩余30%的余量,因为外部的情况并不太清楚,所以估计的悲观一些,output delay原因同理。如果估计的过于乐观,那么如果都是这么设置的有可能导致两个block接上之后timing设置都不能满足timing check要求

有时,我们还会看到一些对于input delay的特别设置,如

  set_input_delay -min  2    -clock    apb_clk     [get_ports  apb_pwdata]

这样设置一般出现在block的顶层模块和TOP交互的信号,由于这是从外部传进来的信号如果不设置input delay的min,那么往往接口处会出现大量的hold violation,但是由于顶层到block的path delay并不准确,所以这些hold往往在block时并不去处理,但是在auto fix hold时,如果不指定group,那么工具会在接口处插一些buffer,有可能这些buffer是不需要的,为了减少对顶层的影响,所以此处设置一个比较大的input delay min,不让工具报出这些violation,从而也就避免了去插buffer fix hold。

output delay值为负值

考虑如下的timing path

假定都是相对于时钟的上升沿采样数据,同时假定所有的net delay为0

对于input delay,可以看到数据在片外的reg上升沿25ns之后,数据才从Q端发出,即到达DATAIN port时外部的delay已经有25ns;同时上一个数据能够在MCLK上升沿之后保持5ns,即数据如果被芯片内部clk采样那么数据也会保持5ns,也就是说对于DUA的第一个寄存器来说天然就有5ns的hold margin。所以对应的input delay应该按照如下设置

set_input_delay 25 -max -clock MCLK [get_ports DATAIN]

set_input_delay 5 -min -clock MCLK [get_ports DATAIN]

对于output delay,可以看到外部的寄存器要求的setup time是20ns,hold time是5ns。由于output delay的含义是说数据在时钟沿前什么时候稳定。所以为了满足要求,output delay应该按照如下设置

set_output_delay 20 -max -clock MCLK [get_ports DATAOUT]

set_output_delay -5 -min -clock MCLK [get_ports DATAOUT]

input delay值为负值

考虑如下的timing path

即片外的CLKA在到达UFF1的clk path明显比data path的delay要长(由于CTS等原因导致)1ns,即在UFF1来看数据提前CLKA到达UFF1/D.假设

Tclk2q=2ns

Tc1=3ns

UFF1 Tsetup=1ns Thold=0.5ns

那么对于DUA的INP1来说应该如何设置input delay

set_input_delay 6 -max -clock CLKA  [get_ports INP1]

set_input_delay -1 -min -clock CLKA  [get_ports INP1]

  • 68
    点赞
  • 451
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值