开发工具:
文件大小: 930kb
下载次数: 0
上传时间: 2019-07-28
详细说明:XDC 约束技巧之时钟篇推荐的做法是,由用户来指定这类衍生时钟的名字,其余频率等都由
自动推
导。这样就只需写明
的三个,其余不写即可。如上所示
当然,此类情况下用户也可以选择完全由自己定义衍生时钟,只需补上其余表示频
率相位关系的,包括
等等。需要注意的是,一旦
在
的输出检测到用户自定义的衍生时钟,就会报告一个
提
醒用户这个约束会覆盖工具自动推导出的衍生时钟(例外的情况见文章下半段重叠时钟部
分的描述),用户须保证自己创建的衍生钟的频率等属性正确
用户自定义的衍生时钟
工具不能自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等
必须由用户使用
来创建。举例如下,
create_clock-name clk1-period 4 [ get_ports CKP1
create_generated_clock -name clk2 [get_pins reGA/QJ
source [get_ports CKPl-divide_ by 2
l/0约東
在设计的初级阶段,可以不加约束,让工具专注于满足
内部的时序要求。
当时序要求基本满足后,再加上约束跑实现。中的约束有以下几点需要注意
不加任何约束的端口时序要求被视作无穷大。
中的
对应于中
但视角相反。
是从
内部延时的角度来约東端凵时序,
则是从系统角度来约東。
典型的时序,包括系统同步、源同步、和等等,在
图形界面的
中都有示例
版后还有一个
可供使用。
Page 3
时序例外约束
时序例外约束包括
等,这类约束除了要满足的先后顺序优先缴外,还受到自身优先级的限制。一个总
的原则就是针对同一条路径,对约束目标描述越具体的优先级越高。不同的时序例外约東
以及同一约束中不同条件的优先级如下所示:
优先级最高
from pin
set_false_path
-to pin
set_max_delay /set_min_delay
through pin
from clock
set multicycle path
-to clock
优先级最低
举例来说,依次执行如下两条,尽管第二条较晚执行,但工具仍然认定第一条
约束设定的为到之间路径的
值
Winner
set_max_ delay 15-from get_clocks clk1]-to get _clocks clk2
delay 12 -from [get_clocks clk1
再比如,对图示路径依次进行如下四条时序例外约束,优胜者将是第二条。但如果
再加入最后一条约束,
的优先级最高,会取代之前所有的时序例外约束。
REGA
REGB
CLKA
CLKB
Winner
set_multicyle_path
rough lut/A
set_ multicycle_path 3-from REGA/Q
set_multicycle_path 3-to REGB/D
Take precedence
set_multicycle_path 2-from CLKA-to CLKB
set_false_path-through lut/0
Page 4
高级时钟约束
约束最终是为了设计服务,所以要用好就需要深入理解电路结构和设计需求
接下来我们就以常见
设计中的时钟结构来举例,详细阐述的约束技巧。
时序的零起点
定义的主时钟的起点即时序的“零起点”,在这之前的上游路径延时
都被工具自动忽略。所以主时钟创建在哪个“点”很重要,以下图所示结构来举例,分别
于
输入端口和
输出端口创建一个主时钟,在时序报告中体现出的路径延时完
全不同,很明显
的报告中缺少了之前一段的延时,时序报告不可信。
SYs Clk
sysclk bad
clk infra i
sys clk buf
E
sysrst sync reg[2]
kinl_buf CLR o
sys clk□
IBUFG
BUFR
PRE
ck infra
DPE
create clock -name sysclk -period 10 get ports sys clk
Delay type
Incr(ns) Path(ns) Netlist Resource(s)
(clock sysclk rise edge)
0.000
0.000y
0.000
0.000 r sys clk
0.000
0.000
clk infra i/sys clk
IBUFG (Prop ibufg I o)
0.766
0.756 r clk infra i/clkin1 buf/o
ne- (fo=3, unplaced)
⊥.⊥09
clk infra i/clkinl
BUFR Prop bufr I o)
0.314
2.189r clk infra i/sys clk buf/o
net (fo=10, unplaced)
1.109
3.298
s clk int
ysrst sync reg[2]/c
create clock -name sysclk bad -period 10 [get pins clk infra i/sys clk buf/o]
De t
Incr(ns)
lk bad r
R
clk buf/o
net (fo=10, unplaced)
1.109
1.109
lk int
r sysrst sync reg[2]/c
Page 5
时钟定义的先后顺序
时钟的定义也遵从
的一般优先级,即:在同一个点上,由用户定义的时钟
会覆盖工具自动推导的时钟,且后定义的时钟会覆盖先定义的时钟。若要二者并存,必须
使用
选项
clk infra
sysclk
sys dk buf
CE
sysrst_sync_reg[2]
clkinl buf
CLR
sys_elkO sys_ck
CE
IBUFG
BUFR
clkbufr°
clkfsm buf
PRE
I CEO
FDPE
C[1
IGNOREO
write error_reg
GNOREl
1
clkbufg
CLR
51
FDCE
BUFGCTRL
clk infra
create clock -rame sysclk -period 10 [cet ports sys clk]
create generated clock -name clkbufg -source get ports sys clk] -divide by 1\
[get pins clk infra i/clkfsm buf/o]
create generated clock -name clkbufr -source get ports sys clk] -divide by 1
[get pins clk infra i/sys clk buf/o] -add -master clock sysclk
上述例子中
的输出端由用户自定义了一个衍生钟
,这个衍生钟便会覆
盖此处原有的
。此外,图示
工作在
模式,其输出不会自动创建衍生钟,
但在
的输出端定义一个衍生钟
,并使用和
选项后,这
点上会存在
和
两个重叠的时钟。如下的命令验证了我们的推论。
o get clocks -of [get pins sysrst sync reg[2]/C]
sysclk clkbufr
o get clocks -of [get pins write error reg/c1
clkbufg
Page 6
同步时钟和异步时钟
Generated clock ssclkdivout
nstpins[o. iserdese2 maste
Primary Clock ssclkin
Asynchronous
k infr
YNCLKDIVSEL o
Clocks
Ikin uf
SERDESE2
Primary Clock Generated Clock
selectio wiz w4 2
car itt
sys clk int
Asynchronous
Clocks
不同于约東,在中,所有的时钟都会被缺省认为是相关的,也就是说,网
表中所有存在的时序路径都会被
分析。这也意味着
设计人员必须通过约束
告诉工具,哪些路径是无需分析的,哪些时钟域之间是异步的
如上图所示,两个主时钟
和
由不同的端口进入,再经由不同的
时钟网络传递,要将它们设成异步时钟,可以使用如下约束:
set clock grcups -name sys ss async -asynchronous
gr。up[ get clocks- include generated cl。 cks SysC⊥k]
group [get clocks -include generated clocks ssclkin]
其中,
表示所有衍生钟自动跟其主时钟一组,从而与其它
组的时钟之间为异步关系。不加这个选项则仅仅将时钟关系的约束应用在主时钟层面。
重叠(单点多个)时钟
重叠时钟是指多个时钟共享完全相同的时钟传输网络,例如两个时钟经过一个
选择后输出的时钟,在有多种运行模式的设计中很常见。
如下图所示,
和
是
的两个输入时钟,不约束时钟关系的情
况下
会对图示路径做跨时钟域(重叠时钟之间)分析。这样的时序报告即便没有
违例,也是不可信的,因为
和
不可能同时驱动这条路径上的时序元件。这
么做也会增加运行时间,并影响最终的实现效果。
Page 7
clk infra i
d inst
CLROUTD
DADOR 60] CLKOUT
FD_ pod
LUre oa
CLKOUT
pt5:。]
CLKOVT2B
CLKOUT3
已GC|HL
Ps↑
CLKOUT4
LUTE
pot15]下
LOCKED
CME2 ADV
Delay type
incr(ns patr (ns)
Netlist Resource(s)
(clock(c1l125 rise)edge) C000 0.000 r
0.000
7s clk
BUEGCIRL(Pyop bufyct..)C093
3.307
lk infra i/clkoore buf
net (fo=4
1.109
Different clocks
r gila i/FD paa
FDCE (Prop fdic c
C.249
1.949 r gola i/FD pda/
IDC (Getup face C D?
C 003 -1.092 gola i/FD ag /D
Same cleek-tree
(clock(clr250_ rise)edge)4.000
4.000y
C.0U0
4.000 r sys C⊥k
BUEGCTRL (Prop bufgct..) C 083
416r clk infra i/clkcore buf/0
net (fo=4900, unplaced)
1.109
2.525 gola i/clk
r gola i/
clock pessinisIL
C.733
1.792
clock uncertainty
C.191
1.601
aY⊥va1t1me
slack
2.693
如果
和
除了通过
后一模一样的扇出外没有驱动其它时序元
件,我们要做的仅仅是补齐时钟关系的约束
sct clock groups -physically exclusive
group [get clocks clk125]\
group [get clocks clk250]
Page 8
在很多情况下,除了共同的扇出,其中一个时钟或两个都还驱动其它的时序元件,
此时建议的做法是在
的输出端上创建两个重叠的衍生钟,并将其时钟关系约束
为
表示不可能同时通过。这样做可以最大化约束覆盖率,也是和
中无法做到的
create generated clock -name clk125 bufgctrl
ivide
Y
ns bufgctrl 1/0]\
source [cet ports bufgctrl i/IO]
create generated clock -name clk250 bufactrl
divide by 1 [get pins bufgctrl i/0]
source [cet ports bufgctrl i/Il]\
-add -master clock clk250
CLK125
set clock groups -physically exclusive
CLK250
group clk-25 bufgctrl V
-group clk250 bufgctrl
其它高级约束
时钟的约束是的基础,熟练掌握时钟约朿,也是约束技巧的基础。其它
高级约束技巧,包括复杂的
)约束和接口时序
系统同步接凵和源同步接凵)约束等方面还有很多值得注意的地方。
这一系列《约束技巧》文章还会继续就上述所列方向分篇详述,敬请关注作者
的后续更新,以及官方网站和中文论坛上的更多技术文章。
上海
age
《XDC约束技巧之时钟篇》版本更新
日期版本作者
备注
2014092511 Ally Zhou初始版本,发布于xx中文论坛va专区
201411271.2 Ally Zhou修订笔误
XDC的基本语法一时钟约束:增加差分时钟约束;
增加衍生时钟语法举例
Page 10
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.