XDC

## Timing Assertions Section
# Primary clocks
# Virtual clocks
# Generated clocks
# Clock Groups
# Bus Skew constraints
# Input and output delay constraints
## Timing Exceptions Section
# False Paths
# Max Delay / Min Delay
# Multicycle Paths
# Case Analysis
# Disable Timing
## Physical Constraints Section
# located anywhere in the file, preferably before or after the timing constraints or stored in a separate constraint file

1. 基本时钟

1) 一个输入端口

2) 一个吉比特收发器输出引脚

2. 虚拟时钟

指的是没有物理连接设计中任何网表元器件的时钟

1) 外部设备IO参考时钟设计中的一个时钟

2) FPGA IO路径和一个内部生成时钟相关,但是不能正确地对该生成时钟进行定时。

3) 设计者只想为IO延迟约束相关的时钟致命不同的抖动和延迟,但是不修改内部时钟特性

3. 生成时钟

1) 通过命令create_generated_clock定义用户所需要的时钟

2) 将其连接到一个网表对象,最好是时钟树根引脚

Create_clock –name clkin –period 10 [get_ports clkin]

Create_generated_clock –name clkdiv2 –source [get_pins REGA/C] –divide_by 2 \

[get_pins REGA/Q] 或

Create_generated_clock –name clkdiv2 –source [get_ports clkin] –divide_by 2 \

[get_pins REGA/Q]

4. 时钟组

Set_clock_groups 命令禁止在所标识的时钟组之间,以及在一个时钟组内的时钟进行时序分析。

5. IO延迟约束

输入延迟

1) 最小和最大输入延迟命令选项

最小延迟分析(保持/去除)

最大延迟分析(建立/恢复)

Create_clock –name sysclk –period 10 [get_ports clk0]
Set_input_delay –clock sysclk –max 4 [get_clock DIN]
Set_input_delay –clock sysclk –min 1 [get_clock DIN]

2) 时钟下降输入延迟命令选项

-clock_fall

3) 添加输入延迟命令选项 –add_delay

1) 存在一个最大(最小)输入延迟约束

2) 设计者想在相同端口上添加第二个最大(最小)输入延迟

输出延迟

Create_clock –name clk_ddr –period 6 [get_ports DDR_CLK_IN]
Set_output_delay –clock clk_ddr –max 2.1 [get_ports DDR_DOUT]
Set_output_delay –clock clk_ddr –min 0.9 [get_ports DDR_DOUT]
Set_output_delay –clock clk_ddr –max 1.9 [get_ports DDR_DOUT]\
-clock_fall –add_delay
Set_output_delay –clock clk_ddr –min 1.1 [get_ports DDR_DOUT]\
-clock_fall –add_delay

6. 时序例外

多周期路径

命令

功能

Set_multicycle_path

指明将数据从路径开始传播到路径结束时,所需要的时钟周期数

Set_false_path

指明在设计中不进行分析的路径

Set_max_delaySet_min_delay

设置最小和最大路径延迟值,这将使用用户指定的最大和最小延迟值覆盖默认的建立保持约束

Set_case_analysis

使用逻辑常熟或者在端口/引脚的逻辑跳变执行时序分析,以限制通过设计的信号传播

源时钟(-start),发送沿移动

目的时钟(-end),接受沿移动

建立

向后

向前(默认)

保持

向前(默认)

向后

定义带有建立因子N的多周期路径

情景

多周期约束

相同时钟域或同步时钟域

Set_multicycle_path N –setup –from CLK1 –to CLK2Set_multicycle_path N-1 –hold –from CLK1 –to CLK2

从慢到快时钟的同步时钟域

Set_multicycle_path N –setup –from CLK1 to CLK2Set_multicycle_path N-1 –hold –end –from CLK1 to CLK2

从快到慢时钟的同步时钟域

Set_multicycle_path N –setup –start –from CLK1 to CLK2Set_multicycle_path N-1 –hold –from CLK1 to CLK2

伪路径

1) 没有起作用

2) 不需要确定时序

A. 跨时钟域,其中添加了2倍频合成器逻辑

B. 在上电时,可能被写一次的寄存器

C. 复位或者测试逻辑

D. 当可应用的时候,忽略一个分布式RAM写和异步读时钟之间的路径

去除从reset端口到所有寄存器的时序路径

Set_false_path –from [get_ports reset] to [all_registers]

禁止两个异步时钟域之间的时序路径

Set_false_path –from [get_clocks CLKA] to [get_clocks CLKB]

禁止两个时钟域任何方向的所有路径

Set_false_path –from [get_clocks CLKA] to [get_clocks CLKB]

Set_false_path –from [get_clocks CLKB] to [get_clocks CLKA]

从RAM前的写寄存器到RAM后接收读时钟的寄存器之间定义假路径

Set_false_path –from [get_cells <wirte_registers>] –to \

[get_cells <read_registers>]

从RAM写引脚开始定义假路径

Set_false_path –from [get_cells –hier –filter

REF_NAME=~RAM*&&IS_SEQUENTIAL&&NAME=~

PATTERN_FOR_DISTRIBUTED_RAMS>}]

最大/最小延迟

1) 使用最大延迟约束覆盖一个路径上的默认建立要求

2) 使用最小延迟约束覆盖默认保持要求

Case分析

在一些设计中,某些信号在特定模式下是一个常数。

set_case_analysis <value><pins or ports objects>

value 的值可以是0、1、rise、rising、fall、falling

例子:

Create_clock –name clk_1 –period 10 [get_pins clock_sel/I0]
Create_clock –name clk_2 –period 5 [get_pins clock_sel/I1]
Set_case_analysis 1 [get_pins clock_sel/S]        //选择信号S为固定值

本文分享自微信公众号 - 瓜大三哥(xiguazai_tortoise)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏崔庆才的专栏

你的 Mac 用对了吗?推荐一些 Mac 上比较好用的软件

最近有一个朋友刚入手了 Mac,准备专门搞开发用,让我给他推荐几款软件,然后我就把我的 Launchpad 截图发给了他,他看到这密密麻麻的软件完全不知所措,如...

65400
来自专栏跟着阿笨一起玩NET

C#中的串口通信

串行接口按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出...

70320
来自专栏小白课代表

犀牛Rhino5.0安装教程

14820
来自专栏北京马哥教育

最全Linux的发行版简介,一文读懂各发行版之间的联系和区别

? 发行版及版本比较 三大家族: ? Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比...

1.1K70
来自专栏FreeBuf

使用各种扫描工具的你,不但踩了“蜜罐”可能还要被团灭了

*本文原创作者:evil7,本文属FreeBuf原创奖励计划,未经许可禁止转载 ? 工作后,越来越没有时间挖洞和写东西了(被世俗的纷争与微弱的工资束缚着),真是...

32580
来自专栏张戈的专栏

JuiceSSH:超好用的安卓移动端Linux系统运维终端工具

去年年底,我考虑到回老家之后可能会有工作上的紧急运维事务需要处理,家里没电脑网络,又不想背笔记本,所以考虑入手一个平板。安卓、IOS、Win8 板子,考虑良久之...

1.7K80
来自专栏web前端教室

[前端常见病] 之 后端数据还没有,前端怎么进行?

标题所描述的情况,一般出现在后端进度滞后,前端又积累了一些工作量的情况下。在业务需求已经基本清晰的时候,前端的进度是很快的,UI设计出设计图,前端小兄弟切页面,...

258100
来自专栏Zchannel

核武按钮终被劫持?Meltdown与Spectre攻击深入解析

21020
来自专栏张戈的专栏

博客集成Hitokoto·一言经典语句功能

Hitokoto·一言是一个挺有意思的项目,官方的自我介绍如下: 一言网(Hitokoto.cn)创立于 2016 年,隶属于萌创 Team,目前网站主要提供一...

369120
来自专栏FreeBuf

帮女神修手机的意外发现:隐匿在iOS文件系统中的隐私信息

说明: 1. 本文仅供安全学习及教学用途,提及的部分技术带有攻击性,请确保合法使用。 2. “这些都不是我干的,我就负责说出来。” 3. 图片仅供参考。 4. ...

53090

扫码关注云+社区

领取腾讯云代金券