FPGA设计时序约束十四、Set_External_Delay

一、序言

    在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。

二、Set External Delay

2.1 设置界面

进入Timing Constraints界面,在左侧Clock栏中选中Set External Delay,右侧即显示Set External Delay

 

设置界面中需设置反馈路径中的输出端口output port和输入端口input port,delay value为设置的时延值。勾选“Specify min/max values”后可设置max和min,即指进行setup或hold分析,“Add to existing external delay”勾选后对于约束的端口如果存在其他的外部时延约束,则会将其覆盖。

 

2.2 命令语法

命令格式

set_external_delay ‑from <args> ‑to <args> [‑min] [‑max] [‑add] [‑quiet] [‑verbose] <delay_value>

参数含义

 

三、工程示例

3.1 工程代码

设计中以PLL的反馈时钟输入输出为例设置set_external_delay

module set_external_delay(d1,rst,clk,clkfb,clkfb_out,out);
output out;
input d1,rst;
input clk,clkfb;
output clkfb_out;
reg ff1,ff2;
wire feedback,clk1;PLLE2_BASE #(.BANDWIDTH("OPTIMIZED"),  // OPTIMIZED, HIGH, LOW.CLKFBOUT_MULT(5),        // Multiply value for all CLKOUT, (2-64).CLKFBOUT_PHASE(0.0),     // Phase offset in degrees of CLKFB, (-360.000-360.000)..CLKIN1_PERIOD(0.0),      // Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz).// CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for each CLKOUT (1-128).CLKOUT0_DIVIDE(1),.CLKOUT1_DIVIDE(1),.CLKOUT2_DIVIDE(1),.CLKOUT3_DIVIDE(1),.CLKOUT4_DIVIDE(1),.CLKOUT5_DIVIDE(1),// CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for each CLKOUT (0.001-0.999)..CLKOUT0_DUTY_CYCLE(0.5),.CLKOUT1_DUTY_CYCLE(0.5),.CLKOUT2_DUTY_CYCLE(0.5),.CLKOUT3_DUTY_CYCLE(0.5),.CLKOUT4_DUTY_CYCLE(0.5),.CLKOUT5_DUTY_CYCLE(0.5),// CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for each CLKOUT (-360.000-360.000)..CLKOUT0_PHASE(0.0),.CLKOUT1_PHASE(0.0),.CLKOUT2_PHASE(0.0),.CLKOUT3_PHASE(0.0),.CLKOUT4_PHASE(0.0),.CLKOUT5_PHASE(0.0),.DIVCLK_DIVIDE(1),        // Master division value, (1-56).REF_JITTER1(0.0),        // Reference input jitter in UI, (0.000-0.999)..STARTUP_WAIT("FALSE")    // Delay DONE until PLL Locks, ("TRUE"/"FALSE"))PLLE2_BASE_inst (// Clock Outputs: 1-bit (each) output: User configurable clock outputs.CLKOUT0(),   // 1-bit output: CLKOUT0.CLKOUT1(clk1),   // 1-bit output: CLKOUT1.CLKOUT2(),   // 1-bit output: CLKOUT2.CLKOUT3(),   // 1-bit output: CLKOUT3.CLKOUT4(),   // 1-bit output: CLKOUT4.CLKOUT5(),   // 1-bit output: CLKOUT5// Feedback Clocks: 1-bit (each) output: Clock feedback ports.CLKFBOUT(clkfb_out), // 1-bit output: Feedback clock.LOCKED(LOCKED),     // 1-bit output: LOCK.CLKIN1(clk),     // 1-bit input: Input clock// Control Ports: 1-bit (each) input: PLL control ports.PWRDWN(PWRDWN),     // 1-bit input: Power-down.RST(rst),           // 1-bit input: Reset// Feedback Clocks: 1-bit (each) input: Clock feedback ports.CLKFBIN(clkfb)    // 1-bit input: Feedback clock);always@(posedge clk1)
begin
if(!rst)ff1<=1'b0;
else ff1<=d1;
endalways@(posedge clk1)
begin
if(!rst)ff2<=1'b0;
else ff2<=ff1; 
end 
assign out=ff2;endmodule

综合网表连接图如下图所示

 

输入输出引脚设置set_input_delay/set_output_delay,再是对PLL的反馈时钟输入端口和输出端口设置set_external_delay

create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]
create_generated_clock -name clk1_gen -source [get_pins PLLE2_BASE_inst/CLKIN1] -divide_by 2 -add -master_clock clk [get_pins PLLE2_BASE_inst/CLKOUT1]
create_clock -period 6.000 -name clkfb -waveform {1.000 3.000} [get_ports clkfb]
set_input_delay -clock [get_clocks clkfb] 2.220 [get_ports d1]
set_output_delay -clock [get_clocks -of_objects [get_pins PLLE2_BASE_inst/CLKFBOUT]] 1.110 [get_ports clkfb_out]
set_external_delay -from [get_ports clkfb_out] -to [get_ports clkfb] -min 1.330

3.3 时序报告

    查看时序报告结果,会查找不到设置的约束值,因为该反馈路径时延值需在有外部逻辑时才会进行分析

 

四、参考资料

用户手册:ug903-vivado-using-constraints-en-us-2022.2.pdf

链接:https://pan.baidu.com/s/17AK_-J4wRXiFLtLTorlrwg?pwd=mylt 

提取码:mylt   

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

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

相关文章

如何文件从电脑传到iPhone,这里提供几个方法

本文介绍了如何使用Finder应用程序、iTunes for Windows、iCloud和谷歌照片将照片从Mac或PC传输到iPhone。 如何将照片从Mac传输到iPhone 如果你有一台Mac电脑&#xff0c;里面装满了你想转移到iPhone的照片&#xff0c;这是一件非常简单的事情。只需遵循以下步骤&#xff1a…

AI大模型时代下运维开发探索第二篇:基于大模型(LLM)的数据仓库

在SREWorks社区聚集了很多进行运维数仓建设的同学&#xff0c;大家都会遇到类似的挑战和问题&#xff1a; 数仓中存储大量数据消耗成本&#xff0c;但很多存储的数据却并没有消费。进数仓的ETL学习成本高、管理成本高&#xff0c;相关同学配合度低&#xff0c;以及上游结构改动…

手写Spring与基本原理--简易版

文章目录 手写Spring与基本原理解析简介写一个简单的Bean加载容器定义一个抽象所有类的BeanDefinition定义一个工厂存储所有的类测试 实现Bean的注册定义和获取基于Cglib实现含构造函数的类实例化策略Bean对象注入属性和依赖Bean的功能Spring.xml解析和注册Bean对象实现应用上下…

数据结构--二叉搜索树的实现

目录 1.二叉搜索树的概念 2.二叉搜索树的操作 二叉搜索树的插入 中序遍历(常用于排序) 二叉搜索树的查找 二叉搜索树的删除 完整二叉树代码&#xff1a; 二叉搜索树的应用 key/value搜索模型整体代码 1.二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一…

写实风格3D模型材质贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 写实3D模型的制作过程包括建模、材质贴图、灯光设置和渲染等步骤。首…

java spring boot 自定义 aop

以一个锁的加锁和释放为例 1、先定义注解 /*** 锁切面* author fmj*/ Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface VersionLockAOP { }2、然后定义切面类以及切点 /*** 切面*/ Component Aspect Slf4j public class VersionLockAOPAspe…

详解“量子极限下运行的光学神经网络”——相干伊辛机

量子计算和量子启发计算可能成为解答复杂优化问题的新前沿&#xff0c;而经典计算机在历史上是无法解决这些问题的。 当今最快的计算机可能需要数千年才能完成高度复杂的计算&#xff0c;包括涉及许多变量的组合优化问题&#xff1b;研究人员正在努力将解决这些问题所需的时间缩…

基于PyQt5自定义UI的详细教程

PyQt5和Qt designer的详细安装教程&#xff1a;https://blog.csdn.net/qq_43811536/article/details/135185233?spm1001.2014.3001.5501Qt designer界面和所有组件功能的详细介绍&#xff1a;https://blog.csdn.net/qq_43811536/article/details/135186862?spm1001.2014.3001…

提升数据库性能的关键指南-Oracle AWR报告

文章目录 一、了解AWR报告&#xff1a;数据库性能的仪表盘二、生成AWR报告三、解读AWR报告的关键部分1.报告开头的系统基础信息2.ADDM发现3.负载概览(Load Profile)4.参数文件5.顶级前台等待事件6.SQL 统计信息-顶级SQL7.SGA Advisory AND PAG Advisory 一、了解AWR报告&#x…

MYSQL二主二从集群部署

目录 一、环境描述 二、安装mysql 2.1 卸载mysql(如果没安装过&#xff0c;可忽略) 2.1.1 列出安装的mysql 2.1.2 卸载mysql 2.1.3 删除mysql文件目录 2.1.3.1 查看mysql 目录 2.1.3.2 依次删除 2.2 在线安装 2.2.1 下载安装源 2.2.2 安装源rpm 2.2.3 加入rpm密钥 …

uniapp路由

1、路由登记 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配置每个路由页面的路径及页面样式。 类似小程序在 app.json 中配置页面路由一样。 所以 uni-app 的路由用法与 Vue Router 不同&#xff0c;如仍希望采用 Vue Router 方式管理路由&#xff0c;…

7.6分割回文串(LC131-M)

算法&#xff1a; 有很多分割结果&#xff0c;按照for循环去做肯定做不来 这个时候就要想到回溯&#xff01;那就要画树&#xff01; 画树 分割的画树过程其实和组合很像。 例如对于字符串aab&#xff1a; 组合问题&#xff1a;选取一个a之后&#xff0c;在ab中再去选取第…