FPGA时序分析与时序约束(三)——I/O接口约束

        为了准确地对设计中的外部时序上下文进行建模,必须提供输入和输出端口的时序信息。因此要进行输入输出延时约束,延迟约束用的是set_input_delayset_output_delay,分别用于input端和output端,其时钟源可以是时钟输入管脚,也可以是虚拟时钟。

一、输入接口约束

set_input_delay -clock<args> -reference_pin<args> -clock_fall -rese -max -add_delay<delay><objects>
  • -clock用于指定约束引脚的同步时钟(源时钟),<args>为同步时钟的名称,可以是主时钟或虚拟时钟;
  • -reference_pin用于指定延时值<delay>的参考时钟,<args>为参考时钟名称;可选项,若不指定该选项则默认参考时钟为-clock指定的同步时钟;
  • -clock_fall指定输入延时约束取值相对于同步时钟的下降沿;可选项,若不指定则默认为-clock_rise;
  • -rise指定约束信号相对时钟边沿的关系是上升沿,也可以用-fall指定为下降沿;
  • -max表示设定最大延时值,也可以用-min设置最小延时值;若不指定-max或-min。则输入延时值同时用最大和最小延时值的时序分析路径;
  • <delay>指定将应用到目标输入引脚的延时值,有效值为大于或等于0的浮点数,默认为1.0;
  • <objects>用于指定约束的目标输入引脚名称。

以主时钟为同步时钟的输入引脚约束

        首先定义输入引脚为CLK0的主时钟sysCLK,然后约束了-max和-min值同2ns的输入延时约束

create_clock -name sysClk -period 10 [get_ports CLK0]
set_input_delay -clock sysClk 2 [get_ports DIN]

以虚拟时钟为同步时钟的输入引脚约束

        首先定义虚拟时钟clk_port_virt,然后约束了-max和-min值同2ns的输入延时约束

create_clock -name clk_port_virt -period 10
set_input_delay -clock clk_port_virt 2 [get_ports DIN]

指定最大和最小延时值得输入引脚约束

        首先定义输入引脚为CLK0的主时钟sysCLK,然后约束了-max和-min值分别为4ns和1ns的输入延时约束

create_clock -name sysClk -period 10 [get_ports CLK0]
set_input_delay -clock sysClk 4 [get_ports DIN]
set_output_delay -clock sysClk 1 [get_ports DOUT]

参考时钟下降沿的输入引脚约束

        对输入引脚DIN进行约束,指定其相对同步时钟clk1下降沿后2ns的输入延时

set_input_delay -clock_fall -clock clk1 2 [get_ports DIN]

同时指定同步时钟和参考时钟的输入引脚约束

        对输入引脚reset进行约束,指定其同步时钟为wbCLK,相对参考时钟wbCLK_IBUF_BUFG_inst/O上升沿后2ns的输入延时值

set_input_delay -clock wbCLK 2 -reference_pin [get_pin wbCLK_IBUF_BUFG_inst/0] [get_ports reset]

多组参考组合的输入引脚约束

        对输入时钟引脚DDR_CLK_IN做主时钟约束,命名为clk_ddr,以clk_ddr作为同步时钟,对输入数据引脚DDR_IN分别做同步时钟上升沿和下降沿的输入延时约束,并分别指定其输入延时的最大值和最小值。

create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
set_input_delay -clock clk_ddr -max 2.1 [get_ports DDR_IN]
set_input_delay -clock clk_ddr -max 1.9 [get_ports DDR_IN] -clock_fall -add_delay
set_input_delay -clock clk_ddr -min 0.9 [get_ports DDR_IN]
set_input_delay -clock clk_ddr -min 1.1 [get_ports DDR_IN] -clock_fall -add_delay

二、输出接口约束

        set_output_delay命令用于指定输出数据引脚相对于其时钟沿的路径延时。通常输出延时值包含了数据信号从FPGA引脚到外部芯片的板级延时、外部芯片的建立时间和保存时间等。输出延时值可以是正值或负值。

        set_output_delay以-max和-min参数分别表示约束的最大值和最小值,最大值用于建立时间检查,最小值用于保持时间检查。

        set_output_delay约束命令的语法与set_input_delay相似:

set_output_delay -clock<args> -reference_pin<args> -clock_fall -rese -max -add_delay<delay><objects>
  • -clock用于指定约束引脚的同步时钟(源时钟),<args>为同步时钟的名称,可以是主时钟或虚拟时钟;
  • -reference_pin用于指定延时值<delay>的参考时钟,<args>为参考时钟名称;可选项,若不指定该选项则默认参考时钟为-clock指定的同步时钟;
  • -clock_fall指定输入延时约束取值相对于同步时钟的下降沿;可选项,若不指定则默认为-clock_rise;
  • -rise指定约束信号相对时钟边沿的关系是上升沿,也可以用-fall指定为下降沿;
  • -max表示设定最大延时值,也可以用-min设置最小延时值;若不指定-max或-min。则输入延时值同时用最大和最小延时值的时序分析路径;
  • <delay>指定将应用到目标输入引脚的延时值,有效值为大于或等于0的浮点数,默认为1.0;
  • <objects>用于指定约束的目标输入引脚名称。

以主时钟为同步时钟的输出引脚约束

        对输出引脚DOUT进行输出延时约束,首先定义主时钟sysCLK,然后约束了-max和-min值同6ns的输出延时约束

create_clock -name sysClk -period 10 [get_ports CLK0]
set_output_delay -clock sysClk 6 [get_ports DOUT]

以虚拟时钟为同步时钟的输出引脚约束

         对输出引脚DOUT进行输出延时约束,首先定义虚拟时钟clk_port_virt,然后约束了-max和-min值同6ns的输入延时约束

create_clock -name clk_port_virt -period 10
set_output_delay -clock clk_port_virt 6 [get_ports DOUT]

同时指定时钟上升沿和下降沿的输出引脚约束

         对DDR数据端口DDR_DOUT进行输出延时约束,参考时钟为主时钟clk_ddr。在约束中输出数据引脚DDR_OUT在时钟clk_ddr的上升沿和下降沿同时需要采样,所以使用-clock_fall -add -delay选项额外指定下降沿的输出延时(无-clock_fall -add -delay选项默认为上升沿的输出延时约束)

create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
set_output_delay -clock clk_ddr -max 2.1 [get_ports DDR_OUT]
set_output_delay -clock clk_ddr -max 1.9 [get_ports DDR_OUT] -clock_fall -add_delay
set_output_delay -clock clk_ddr -min 0.9 [get_ports DDR_OUT]
set_output_delay -clock clk_ddr -min 1.1 [get_ports DDR_OUT] -clock_fall -add_delay

FPGA时序分析与约束(13)——I/O接口约束-CSDN博客

参考文献:

《FPGA时序约束与分析》
《正点原子FPGA静态时序分析与时序约束》 
《Intel Quartus Prime Standard Edition用户指南: Timing Analyzer》
《Vivado Design Suite User Guide: Using Constraints(UG903)》
《Vivado Design Suite 用户指南: 设计分析与收敛技巧 (UG906)》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何向嵌入式设备中添加tcpdump工具

说明&#xff1a;tcpdump是一个在网络设备调试中一个非常重要的工具&#xff0c;它并不像hexdump等工具集成在busybox里面&#xff0c;也不像其他的软件一样只需要依赖linux标准的库就可以实现&#xff0c;它需要pcap相关的库和加密的相关库。 本文主要是基于realtek 83系列的…

文献阅读:Sparse Low-rank Adaptation of Pre-trained Language Models

文献阅读&#xff1a;Sparse Low-rank Adaptation of Pre-trained Language Models 1. 文章简介2. 具体方法介绍 1. SoRA具体结构2. 阈值选取考察 3. 实验 & 结论 1. 基础实验 1. 实验设置2. 结果分析 2. 细节讨论 1. 稀疏度分析2. rank分析3. 参数位置分析4. 效率考察 4.…

鸿蒙应用开发 给应用添加通知

通知介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景&#xff1a; 显示接…

【数据库原理】(12)SQL数据操纵功能

SQL 中,对基本表的数据操纵功能是指对基本表中数据的插入、修改和删除。 一.插入数据 SQL 的数据插人语句INSERT 有两种形式:一种是插入一个元组,另一种是插人子查询结果。 1.插入单个元组 插入单个元组&#xff08;或记录&#xff09;的 INSERT 语句用于向表中添加一行数据…

Qt 的流式布局 FlowLayout

一直苦寻于一个比较智能的布局方式&#xff0c;能够满足软件界面进行resize的时候&#xff0c;对已经存在的布局进行重新布局。能够合理的判断界面的size,在界面放大的时候&#xff0c;显示的item的行数减少&#xff0c;相反&#xff0c;界面缩小的时候&#xff0c;显示的 item…

软件测试|测试平台开发-Flask 入门:编写第一个简单 Web 应用

简介 Flask 是一个轻量级的 Python Web 框架&#xff0c;它使得创建 Web 应用变得简单快捷。相比于Django框架&#xff0c;它具有以下的优点&#xff1a; 轻&#xff1a;Flask 是一个轻量级的 Web 框架&#xff0c;使用 Python 语言编写易&#xff1a;较其他同类型框架更为灵…

Golang-strconv库学习笔记

前言&#xff1a; strconv库是go官方提供的一个标准包&#xff0c;主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具&#xff0c;进行学习记录。学习重点是其中的内置方法。 本文分为Atoi&#xff0c;Format系列&#xff0c;Parse系列&#xff0c;Append系列,…

obs推流失败问题解决

点击开始直播&#xff0c;出现上图的问题 【解决办法】需要升级显卡驱动 使用360驱动大师升级 点击升级 他会先备份再升级 安装完成需要重启

【LMM 014】NExT-GPT:能够输入和生成任意模态的多模态大模型

论文标题&#xff1a;NExT-GPT:Any-to-Any Multimodal Large Language Model 论文作者&#xff1a;Shengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji, Tat-Seng Chua 作者单位&#xff1a; NExT Lab, National University of Singapore 论文原文&#xff1a;https://arxiv.org/abs…

Veeam Backup Replication介绍

新钛云服已累计为您分享781篇技术干货 veeam 提供了一种全面、灵活和高效的数据保护解决方案&#xff0c;可以使用 VeeamBackup & Replication 执行以下数据保护和灾难恢复任务&#xff1a; 创建 VM 和物理机备份 还原物理机、VM、 磁盘和文件 验证备份并准备恢复 创建…

Hive SQL / SQL

1. 建表 & 拉取表2. 插入数据 insert select3. 查询3.1 查询语句语法/顺序3.2 关系操作符3.3 聚合函数3.4 where3.5 分组聚合3.6 having 筛选分组后结果3.7 显式类型转换 & select产生指定值的列 4. join 横向拼接4.1 等值连接 & 不等值连接4.2 两表连接4.2.1 内连…

synchronized、volatile关键字

Java中的synchronized关键字 synchronized关键字介绍 synchronized块是Java提供的一种原子性内置锁&#xff0c;Java中的每个对象都可以把它当作一个同步锁来使用&#xff0c;这些Java内置的使用者看不到的锁被称为内部锁&#xff0c;也叫作监视器锁。 线程的执行代码在进入…

Linux之Ubuntu环境Jenkins部署前端项目

今天分享Ubuntu环境Jenkins部署前端vue项目 一、插件安装 1、前端项目依赖nodejs&#xff0c;需要安装相关插件 点击插件管理&#xff0c;输入node模糊查询 选择NodeJS安装 安装成功 2、配置nodejs 点击后进入 点击新增 NodeJS 配置脚手架类型&#xff1a;如果不填 默认npm …

XAgent调研

文章目录 1 简介2 快速测试 Quick Start3 结构分析 1 简介 XAgent&#xff08;链接&#xff09;是一个开源的&#xff0c;基于大语言模型的agent构建框架&#xff1b;其目标是构建出能够辅助人类处理各类任务的自动助手 定位&#xff1a;一个全能的&#xff0c;自动的辅助agen…

Transformer - Attention is all you need 论文阅读

虽然是跑路来NLP&#xff0c;但是还是立flag说要做个project&#xff0c;结果kaggle上的入门project给的例子用的是BERT&#xff0c;还提到这一方法属于transformer&#xff0c;所以大概率读完这一篇之后&#xff0c;会再看BERT的论文这个样子。 在李宏毅的NLP课程中多次提到了…

【LeetCode】1341. 电影评分

表&#xff1a;Movies ------------------------ | Column Name | Type | ------------------------ | movie_id | int | | title | varchar | ------------------------ movie_id 是这个表的主键(具有唯一值的列)。 title 是电影的名字。表&#xff1a…

深入浅出XTTS:Oracle数据库迁移升级利器

演讲大纲&#xff1a; 1. 什么是XTTS 2. 适用场景 3. XTTS的基本操作步骤 4. XTTS案例分享 今天主要跟大家分享一下XTTS,在网上曾看过相关讨论,但发现按网上讲的那些去实际操作的话,还是会遇到一些坑,并不能实际落下来,所以今天想跟大家分享一些实战干货. 一、什么是XTTS …

LeetCode 29. 两数相除

两数相除 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。例如&#xff0c;8.345 将被截断为 8 &#xff0c;-…

linux高级管理——Squid代理

一、squid服务基础&#xff1a; 1.1缓存代理的概述&#xff1a; 代理的工作机制 当客户机通过代理来请求Web页面时&#xff0e;指定的代理服务器会先检查自己的缓存&#xff0c;如果缓存中已经有客户机需要的页面&#xff0c;则直接将缓存中的页面内容反馈给客户机:如果缓存中…

web学习笔记(十一)

目录 1.数据类型 1.1数据类型分类 &#xff08;1&#xff09;简单&#xff08;基本&#xff09;数据类型 &#xff08;2&#xff09;复杂&#xff08;特殊&#xff09;数据类型 1.2判断数据类型的方法 &#xff08;1&#xff09;常规判断方法&#xff1a; &#xff08;2…