对set_input_delay和set_output_delay的理解

前言

在FPGA设计中,端口约束分为两种,一种是管脚约束,及时把顶层模块的端口port与板卡上的物理引脚进行映射。另一种就是IO端口延时约束,目的是告诉时序分析工具信号在器件之外的延时,让它能够在一个完整的路径上进行分析,此外还要注意端口延时约束并不具有让信号延时的作用。

set_input_delay

通常来说芯片不会是自己孤零零存在,总要与外部信号进行交互。那么对于从外部进入芯片的信号,我们需要知道信号在到达芯片输入端口之前经过了多长时间。也就是假设外部存在一个触发器,在时钟有效沿之后经过Tck->q+Tcomb+Tnet的延时到达芯片的输入端口。通常来说我们不能指定输入信号到达芯片输入端口的具体时间,所以set_input_delay这条命令给我们定义了两个参数max和min来指定信号到达的最迟时间和最快时间。

  • 对于set_input_delay -max:这条语句定义了输入信号到达端口的最迟时间,这里假设这个时间是5ns,另外假设从芯片输入端口到芯片内部第一级DFF之间存在一个延时为3ns的组合逻辑块。那么对于芯片内第一级DFF来说,只要时钟能在5+3+DFF的set_up time 之后到来就能准确采样到这个数据。设置max参数其实是为了是芯片内部第一级DFF的建立时间能够满足。
  • 对于set_input_delay -min:这条语句定义了输入信号到达芯片输入端口的最快时间,假设这个时间是1ns,芯片端口和第一级DFF之间同样存在延时为3ns的组合逻辑,那么只要DFF的保持时间大于4ns就能保证这个最快到来的数据不会冲走之前还在采样的数据。min参数实际上是保证了DFF的保持时间能满足要求。

set_output_delay

同样的,芯片的输出端口同样需要设置合适的延时值。与input_delay不同,output_delay设置了芯片输出端口信号在被另外的component采样之前所经过的时间。刚开始学习这块内容的时候对此很不理解,想当然的把output_delay当成了芯片内部DFF到输出端口的延时,显然这样想无法保证芯片外部的部件能否正确采样数据。同样的对于output_delay,我们也不能得到一个准确的值,所以set_output_delay也有两个参数用来表示。

  • set_output_delay -max:max参数指定了信号在芯片外部的最大延时,假设延时为3ns,想象一下,经过最慢3ns之后数据要被外部器件的DFF采样到,意思是不是说外部DFF的建立时间要求是3ns,数据如果3ns之后到来就会引起DFF保持时间不满足。换句话说,set_out_delay -max的设置要根据外部DFF的建立时间来设置。建立时间是多少,max就设多少。
  • set_output_delay -min:min参数指定了信号在芯片外部的最小延时,也就是信号的最快到达时间。假设外部DFF的保持时间为2ns。那output delay因该设置成这样:set_output_delay -min -2,注意这个负号。要怎么理解呢,回顾下保持时间的定义,时钟有效沿到来后数据还需要保持稳定的时间,这其实限制了数据不能变化太快,T0时刻DFF0发出的数据不能在T0时刻被DFF1采样到,在这里就是说芯片拍出的数据最快也要在2ns后才能稳定。假设在芯片输出端口处有一个保持时间为-2的DFF,是不是就保证了从芯片内部最后一级DFF发出的数据最快也要2ns后才能稳定,以此来保证这个触发器保持时间满足?

ps: input_delay 和 output_delay虽然是约束了芯片外部数据的延时,但是对芯片内部才真正的起作用,约束了不同的delay值,会使综合工具使用不同的综合策略,要只要约怎样的delay值,还是要看具体的器件手册,以上讨论的只是单沿采样的情况。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值