目录

  • Defining Clock Constraints 时钟约束:
    • Identifying Clock Sources
      • Clock Networks Report 报告工程中的时钟网络:
      • Check Timing Report
    • Creating Primary Clocks
      • Input Ports
      • Gigabit Transceiver Output Pins in 7 Series Devices
      • Certain Hardware Primitive Output Pins
    • Creating Generated Clocks
    • Adjusting Clock Characteristics
      • Jitter
      • Additional Uncertainty
      • Clock Latency at the Source
      • MMCM or PLL External Feedback Loop Delay
  • Defining Clock Groups and CDC Constraints
  • Constraining Input and Output Ports (约束输入输出端口)
  • Specifying Timing Exceptions
    • Timing Exceptions Guidelines
      • Adding False Path Constraints

学习手册 UG949
对更加详细的约束信息参照 UG906 UG903

1.组织管理约束文件
对于简单的工程,我们可以按照下面的方法组织我们的约束文件:

  • 直接采用一个约束文件;
  • 物理约束+时序约束
  • 物理约束+时序约束(综合)+ 时序约束(实现)

对于大型的项目或者是多个团队合作实现的约束可以采用下面的方法:

  • 一个顶层的物理约束+一个顶层的时序约束+对每个IP的约束或者每个模块的时序约束

如果一个工程中存在多个约束文件,那么此时需要注意约束文件的编译顺序:

  • 在工程模式下可以使用reorder_files tcl命令改变约束文件的编译顺序,
  • 在非工程模式下约束文件的执行顺序直接由read_xdc和source 的顺序所决定。

ug949 P151 打开实际的工程进行测试

Defining Clock Constraints 时钟约束:

Identifying Clock Sources

Clock Networks Report 报告工程中的时钟网络:

其中包括可以报告未添加约束的时钟!!!
命令:

report_clock_networks

这个命令可以报告出未添加约束的时钟网络,
example:

Clock Networks ReportConstrained Clocks
-------------------Clock clk_fpga_0 (50MHz)(endpoints: 0 clock, 1 nonclock)
PS7/FCLKCLK[0] (processing_system_i/processing_system7_0/inst/PS7_i)Unconstrained Clocks
-------------------
Clock osc_clk (endpoints: 38 clock, 0 nonclock)
Port osc_clk

在上面的例子中可以看到在报告中已经指出哪些时钟已经添加了约束,哪一些没有添加约束(osc_clk)。

Check Timing Report

在这个报告中的no_clock 不懂

check_timing -override_defaults no_clock

result:

check_timing reportTable of Contents
-----------------
1. checking no_clock1. checking no_clock
--------------------There are 38 register/latch pins with no clock driven by root clock pin: osc_clk (HIGH)

在上面的这个例子中我猜测这个no_clock 与我没有约束osc_clk 有关。后面添加一下约束后再测试一下。

Creating Primary Clocks

Input Ports

Constraint example:

create_clock -period 20.000 -name osc_clk -waveform {0.000 10.000} -add [get_ports osc_clk]

Gigabit Transceiver Output Pins in 7 Series Devices

如下图所示:
Constraint example:

create_clock -name txclk -period 6.667 [get_pins gt0/TXOUTCLK]

推荐:对于目标7系列设备的设计,Xilinx也建议定义 GT incoming clocks,因为Vivado工具计算GT输出引脚上的预期时钟,并比较这些时钟用户创建的时钟。如果时钟缺少或缺少GT的传入时钟,则该工具发出了机理方法检查警告。
对于目标UltraScale™设备的设计,Xilinx不建议在GT的输出上定义primary 时钟,因为GT时钟是自动的当相关的电路板输入时钟被占用时衍生。

Certain Hardware Primitive Output Pins

不推荐使用扇出的时钟进行约束![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328193039209.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk3NDg5,size_16,color_FFFFFF,t_70

Creating Generated Clocks

生成的时钟是从称为主时钟的另一个现有时钟导出的时钟。它通常通过逻辑块在主时钟上执行的波形变换。

生成时钟分为自动生成时钟和用户自定义生成时钟:

  • Auto-Derived Clocks
    Most generated clocks are automatically derived by the Vivado timing engine which recognizesthe clock modifying blocks (CMB) and the transformation they perform on the master clocks.In the Xilinx 7 series device family, the CMBs are:
    • MMCM*/ PLL*
    • BUFR
    • PHASER*
  • User-Defined Generated Clocks
    例如用已经进行了时序约束的一个primary clock 通过一个逻辑产生一个二分频时钟,约束应该这样写:

    create_generated_clock -name clkDiv2 -divide_by 2 \
    -source [get_pins fd/C] [get_pins fd/Q]
    

Adjusting Clock Characteristics

Jitter

For jitter, it is best to use the default values used by the Vivado Design Suite. You can modify thedefault computation as follows:
• If a primary clock enters the device with a random jitter greater than zero, use theset_input_jitter command to specify the peak-to-peak jitter value in nanoseconds.
• To adjust the global jitter if the device power supply is noisy, use set_system_jitter.Xilinx does not recommend increasing the default system jitter value.For generated clocks, the jitter is derived from the master clock and the characteristics of theclock modifying block. You do not need to adjust these numbers.

Additional Uncertainty

For example, the margin on all intra-clock paths of the design clock clk0 needs to be tightenedby 500 ps to make the design more robust to noise for both setup and hold:

set_clock_uncertainty -from clk0 -to clk0 0.500

Clock Latency at the Source

MMCM or PLL External Feedback Loop Delay

Defining Clock Groups and CDC Constraints

example

create_clock -name clk_mode0 -period 10 [get_ports clkin]
create_clock -name clk_mode1 -period 13.334 -add [get_ports clkin]
set_clock_groups -physically_exclusive -group clk_mode0 -group clk_mode1

If the clk_mode0 and clk_mode1 clocks generate other clocks, the same constraint needs tobe applied to their generated clocks as well, which can be done as follows:

set_clock_groups -physically_exclusive \
-group [get_clocks -include_generated_clock clk_mode0] \
-group [get_clocks -include_generated_clock clk_mode1]

Global Constraints Between Clocks in Both Directions

When there is no need to limit the maximum latency, the clock groups can be used. Following isan example to ignore paths between clkA and clkB:

set_clock_groups -asynchronous -group clkA -group clkB

When two master clocks and their respective generated clocks form two asynchronous domainsbetween which all the paths are properly synchronized, the clock groups constraint can beapplied to several clocks at once:

set_clock_groups -asynchronous \
-group {clkA clkA_gen0 clkA_gen1 } \
-group {clkB clkB_gen0 clkB_gen1 }

Constraining Input and Output Ports (约束输入输出端口)

在工程中需要一些高级的参数设置,平时没有设置过,暂时跳过,后面遇到再补充……

Specifying Timing Exceptions

Timing Exceptions Guidelines

Adding False Path Constraints

vivado 设计约束学习笔记1相关推荐

  1. FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇尾

    FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇一 FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇二 ...

  2. FPGA 学习笔记:Vivado 2018.2 MicroBlaze Uartlite 配置

    前言 Vivado 版本: Vivado 2018.2 + Vivado HLS 2018.2, Vivado HLS 2018.2 用于 SDK 开发,C语言开发 创建基于MicroBlaze的 [ ...

  3. FPGA 学习笔记:Vivado 2019.1 添加 IP MicroBlaze

    前言 当前 FPGA 无所不能,能添加 MCU的核,也就是可以嵌入一个单片机的内核,当个单片机使用,这里添加 MicroBlaze,这个是RISC的核,还没有开始熟悉,估计与 ARM 或者 RISC- ...

  4. Vivado System Generator学习笔记

    环境:win7 64   vivado 2014.1 开发板:zedboard version d    xc7z020clg484-1 串口软件:SecureCRT 注意:本文中所有的源码.工程文件 ...

  5. linux之awk命令学习笔记

    Linux之awk命令学习笔记 前言 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, ...

  6. 3级调度 fpga_Vivado HLS学习笔记——1.了解FPGA架构

    本篇文章为本人学习Xilinx的Vivado HLS教程记录的学习笔记,仅供学习参考. Vivado HLS官方视频教程: 优酷视频​v.youku.com 目录: Vivado HLS课程简介 FP ...

  7. FPGA学习笔记(七): DSB调制解调的仿真

    笔记七是DSB调制解调的仿真实现. DSB调制解调的实现原理:首先使用DDS产生低频正弦波信号作为调制信号,再用DDS产生高频信号作为载波信号,然后使用乘法器将两者相乘产生DSB信号,DSB信号与载波 ...

  8. 【Verilog学习笔记】D触发器(门级和行为级)+4位寄存器+一个完整的激励程序

    [Verilog学习笔记]D触发器(门级和行为级)+4位寄存器+一个完整的激励程序 首先展示以下完整的程序 `timescale 1ns / 1psmodule hardreg( input wire ...

  9. Xilinx AXI GPIO学习笔记以及问题点

    Xilinx AXI GPIO学习笔记以及问题点 1.问题总结 如上图,在Vivado中设置的GPIO IP只有一个,但是使用的两个Channel,此时在SDK中初始化和设置就容易出现问题. 1.1 ...

最新文章

  1. UITabBarController+UINavigationController+UIToolBar
  2. Imagine,is real crazy!
  3. Three.js中自定义控制几何体的点和面的属性
  4. 递归下降语法分析器的构建_一文了解函数式查询优化器Spark SQL Catalyst
  5. git merge与rebase
  6. 12家存在低俗内容的网络文学企业被约谈:严肃查处 深入整改
  7. 【数据结构基础复习】二叉树的非递归遍历(二)
  8. 手机logging什么意思_手机三轴稳定器的“三轴”是什么意思?
  9. 如何通过jQuery动态设置元素CSS的样式,以及HTML中CSS “内联式”、“嵌套式”、“外联式”使用方法
  10. openDrive has Free Direct Linking !
  11. 计算机导论大一第四章,计算机导论-第四章.ppt
  12. 牛客网--23803--DongDong认亲戚
  13. 剪了 20% 的刘海、120Hz 刷新率、1TB 存储,最高售价为 12999 元的 iPhone 13 系列来了!
  14. 3DMAX到底该如何布线?
  15. 【SQL SERVER】将查询结果转换为字符串
  16. 名帖35 吴叡 隶书《离骚》
  17. cap分析zk是cp还是ap
  18. 保姆级使用PyTorch训练与评估自己的MobileNetV2网络教程
  19. 2021年值得推荐的企业管理系统crm软件
  20. Android系统升级流程

热门文章

  1. IDEIDEA 如何搭建maven 安装、下载、配置A 如何搭建maven 安装、下载、配置
  2. int和Integer的区别,哪个在定义变量好
  3. java盛最多水的容器_Leetcode刷题java之11. 盛最多水的容器(top100)
  4. python头像右上角加红色数字_利用python实现微信头像加红色数字功能
  5. linux完全卸载mysql_mysql完全卸载教程(图文详细)
  6. ajax 实时进度_三分钟搭建websocket实时在线聊天,项目经理也不敢这么写
  7. 工厂模式三部曲之工厂方法模式
  8. easyui datagrid 动态绑定列
  9. Groovy 转换JSON和生产JSON
  10. 机器学习面试题目整理