目录

  • 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. 合并本地Maven仓库
  2. Spring注解详解
  3. Unexpected key(s) in state_dict: “dense_block1.denselayer1.norm.1
  4. 深度学习核心技术精讲100篇(十五)-搜索引擎Indri系列之安装及使用
  5. vbs病毒分析神技——使用VS2017调试vbs脚本
  6. 【机器学习】微软出品!FLAML:一款可以自动化机器学习过程的神器!
  7. 指定特定的内容为首页
  8. 使用容器服务支持开发者快速搭建小程序后端服务
  9. 我画了35张图,就是为了让你深入 AQS!
  10. 机器学习正面临着可重现性危机!
  11. android 手机型号 命名规则,自己整理:各大品牌安卓手机的型号命名规律
  12. DMG计算机,dmg文件怎么打开?dmg是什么意思?
  13. DRM in Android详解--转
  14. Golang Beego框架之WebIM例子分析
  15. python随机生成三位数字_python3 随机生成数字
  16. Ngrok 实现内网穿透教程(Ngrok 和 Sunny-Ngrok )
  17. 简单平台用户信息管理系统
  18. 用云盘搭建自己的内容平台
  19. 农科院环发所张西美课组招聘博后和科研助手(土壤微生物生态学)
  20. 微信营销二(微信营销的意义)

热门文章

  1. html开发列表搜索,前端实例练习 - 可搜索列表
  2. linux 安装_Linux安装JDK
  3. Linux2个文件一起打包,Linux文件压缩和打包(二)
  4. 【Teradata】tdlocaledef修改默认日期配置
  5. 设计模式(1):工厂模式
  6. hdu 1078 FatMouse and Cheese(记忆化搜索)
  7. 零散的JavaScript公用方法
  8. stored to '*' during its initialization is never read
  9. android虚拟机的使用教程,Android 虚拟机可以这么用了 ?
  10. PyCharm安装步骤