对set_input_delay和set_output_delay的理解

这篇具有很好参考价值的文章主要介绍了对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值,还是要看具体的器件手册,以上讨论的只是单沿采样的情况。文章来源地址https://www.toymoban.com/news/detail-560850.html

到了这里,关于对set_input_delay和set_output_delay的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 时序约束——set_max_delay和set_min_delay用法

    set_max_delay:最大延迟约束 set_min_delay:最小延迟约束 约束原语: set_max_delay [-datapath_only] [-from node_list] [-to node_list] [-through node_list] set_min_delay [-from node_list] [-to node_list] [-through node_list] 一般在约束异步信号时可以使用。针对跨时钟域的异步信号,常使用set_false_path或者set_clock

    2023年04月08日
    浏览(5)
  • (FPGA时序约束)set_max_delay/set_min_delay详解

    (FPGA时序约束)set_max_delay/set_min_delay详解

           属于 时序例外 的一种。(时序例外是:某条路径在默认参数下没有被正确地分析时序,在这种情况下,需要告知时序分析工具这条路径是一个例外,需要按照我地特殊指示来执行这条路径地时序分析。举例:一个数据被一个寄存器同步采样,但不是每个时钟沿都采,

    2024年04月26日
    浏览(15)
  • systemverilog中的参数传递——ref、input、output

    sv中的静态数组、动态数组、队列都是用一块内存存放,而他们的名字作为该内存的地址,这点和c一致,但sv中没有指针的概念。 传递这种大片内存的值一般只有两种规则: 1.地址传递,函数内部修改可以改变函数调用的值。 2.值传递,将整片空间复制一份,函数内部修改不

    2024年02月15日
    浏览(10)
  • linux 服务器出现 Input/output error 处理

    今天突然出现 ls、ss 、 lsof 等命令报错 -bash: /bin/ss: Input/output error 其中有一个服务器上出现提示 *** System restart required *** Last login: Thu Sep 15 12:02:09 2022 from 192.168.0.135 .ssh/rc: 12: .ssh/rc: cannot create /var/log/zabbix-agent/ssh.log: Read-only file system reboot 之后,OK 另一个服务器上更严重 $ sudo

    2024年02月06日
    浏览(39)
  • verilog基础语法,wire,reg,input,output,inout

    概述: 输入输出是模块的端口,寄存器是数据存储介质,线用于把各个电路关联起来,形成一个数据流通通道,进行形成具有具体功能的电路模块。线是信息关联与传递的介质,也是可以称为信息流通的管道。在FPGA中的基本定义为wire,reg,input,output,inout。只有正确的认识到

    2024年04月24日
    浏览(8)
  • Vivado时序约束之—— set_max_delay、set_min_dealy(最大最小延迟约束)

    Vivado时序约束之—— set_max_delay、set_min_dealy(最大最小延迟约束)

    1. set_max_delay、set_min_delay约束的目的 最大最小延迟约束主要是为了解决异步信号之间的时序路径进行时序约束的问题。最大延迟约束(set_max_delay)将默认覆盖建立时间分析中的最大路径延迟;最小延迟约束(set_min_delay)将默认覆盖保持时间分析中的最小路径延迟。所谓的最

    2023年04月09日
    浏览(10)
  • 零基础学习CANoe Panel(8)—— 开关/显示控件(Input/Output Box )

    🍅 我是 蚂蚁小兵 ,专注于车载诊断领域,尤其擅长于对CANoe工具的使用 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】 🍅 零基础学习CANoe Panel设计目录汇总,点击跳转👉 🍅 Input/Output Box 控件也是一个常用控件,用来作为 单行 输入和输

    2024年02月12日
    浏览(11)
  • 【C语言】编写input()和output()函数输入,输出5个学生的数据记录

    【C语言】编写input()和output()函数输入,输出5个学生的数据记录

    以下代码定义了一个结构体 student ,具有姓名、学号和成绩三个成员,并先声明了一个存放5个学生信息的 struct student 类型的数组 stu 。my_ input() 函数通过循环提醒用户输入每个学生的信息,并将输入的数据存储到 struct student 类型的数组stu中去。my_ output() 函数用来输出这个数组

    2024年02月02日
    浏览(12)
  • Linux 磁盘坏块修复处理(错误:read error: Input/output error)

    当磁盘出现坏块时,你对所关联的文件进行读取时,一般会出现 read error: Input/output error 这样的错误。 反过来讲,当你看到 read error: Input/output error 这种错误时,很大可能就是磁盘出现了坏块问题。 解决步骤: 1、检测磁盘 我这个磁盘就出现了8个坏块,其中 /dev/sda 是你的磁

    2024年01月17日
    浏览(32)
  • nohup 命令之 nohup: ignoring input and appending output to ‘nohup.out’

    当我在linux中使用nohup 命令的时候,出现了这个错误: nohup  英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup  命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup

    2023年04月09日
    浏览(5)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包