原创 【博客大赛】4. Clock Groups(Timing Constraints in Vivado)

2014-3-31 10:18 3842 20 22 分类: FPGA/CPLD 文集: Timing Constraints in Vivado

       在第一节介绍过XDCUCF的不同之处:Vivado会分析所有XDC约束时钟间的时序路径。通过set_clock_groups约束不同的时钟组(clock group)Vivado在时序分析时,当source clockdestination clock属于同一个时钟组时,才会分析此时序路径;而source clockdestination clock属于不同时钟组时,则会略过此时序路径的分析。下面讲解一下set_clock_groups约束:

1.      Asynchronous Clock Groups

       为了判别划分时钟组,将不同的时钟划分成以下两类:

a.       Synchronous Clocks

   当两个时钟间的相位是固定的,则可以称这两个时钟为同步时钟(synchronous clock)。一般同源,如由同一个MMCM or PLL产生的两个时钟可以称为同步时钟。因此可以将主时钟和与之对应的衍生时钟约束成同一个时钟组。

b.       Asynchronous Clocks

   无法判定两个时钟间相位时,则可以称这两个时钟为异步时钟(asynchronous clocks)。两个来自不同晶振的时钟,一定是异步时钟。通常情况下设计中不同的主时钟肯定是异步时钟,因此可以将这两个主时钟及其衍生时钟约束成不同的时钟组。

 

   对于异步时钟,由于其两个时钟间相位不固定,时序分析的结果定然不确切,因此这部分的分析可以通过设置时钟组约束忽略,但是这并不意味着这部分的设计能工作正常;对于异步时钟间的设计,必须做跨时钟域处理,避免亚稳态的产生。

   异步时钟组约束命令如下:

 

以下是约束指令:
set_clock_groups -asynchronous -group [get_clocks {clk_A clk_B}] -group [get_clocks {clk_C}] -group …

   如图1中结构,串行AD1和串行AD2接口都带有随路时钟SCLK1SCLK2SCLK1SCLK2属于异步时钟;ADC串并转换后的数据需要经过跨时钟域处理(CDC),转到GCLK主时钟域,GCLKADC的时钟也属于异步时钟,因此约束命令如下:

 

以下是约束指令:
set_clock_groups -asynchronous -group [get_clocks {SCLK1}] -group [get_clocks {SCLK2}] -group [get_clocks {GCLK}]

20140331101423853001.jpg

如图1

2.      Exclusive Clock Groups

   在有些设计中,可能需要不同的工作模式,对应需要不同的时钟输入,通过时钟选择模块选择需要的时钟,如BUFGMUXBUFGCTRL or A LUT。但是这些输入的不同时钟间是互斥的,即一个模式只允许一个时钟输入,不同时钟间是没有时序关系,因此只需单独对每个时钟做时序分析即可,添加互斥时钟组可使Vivado进行时序分析时忽略互斥时钟组间的时序路径,约束命令如下:

 

以下是约束指令:
set_clock_groups -logically_exclusive -group {clk_A} -group {clk_B}

or

 

以下是约束指令:
set_clock_groups –physically_exclusive -group {clk_A} -group {clk_B}

如图2中结构,可将CLKMUX1CLKMUX2约束成互斥时钟组,约束命令如下:

 

以下是约束指令:
set_clock_groups - physically_exclusive -group [get_clocks {CLKMUX1}] -group [get_clocks {CLKMUX2}]

20140331101429340002.jpg

2

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2015-6-3 11:03

为什么提出的问题没人来回答呢

用户377235 2015-5-19 15:29

其中没有说明白asynchronous、logically和physically之间的关系和区别啊
相关推荐阅读
Hoki 2017-01-11 17:35
LX9开发板呼吸灯实现
对LX9开发板硬件评测后,从这一节开始真正进入FPGA开发的世界。很多开发板的例程中必有跑马灯实验,老跑马也没意思,咱来把新潮的,整一个呼吸灯。 呼吸灯最初是出现在apple公司的笔记本产品中,当合上...
Hoki 2017-01-11 16:47
LX9的microblaze配置
虽然XC6SLX9芯片资源比较少,但是嵌一个microblaze还是搓搓有余的,这一节就来评测一下在XC6SLX9上microblaze的配置。 有两种方法配置microblaze,一是在ISE软件中...
Hoki 2017-01-11 16:32
zynq评测
Zynq芯片是业界第一款在FPGA中集成ARM核的芯片,由FPGA的发明者xilinx公司推出的。Zynq严格来说不能以FPGA来定义它,因为其是以处理器为中心的平台,能够在单芯片上提供软、硬件和 I...
Hoki 2017-01-11 16:19
u-boot
Zyny芯片启动加载分为3步: 1. 芯片上电启动,首先读取BootROM中的程序,初始化一些必要的外设,然后根据专用引脚电平判断该从何处启动first stage Bootloader(FSBL),...
Hoki 2017-01-11 16:09
基于zynq的交叉编译平台
Zynq芯片的最大特点是其集成了双ARM Cortex-A9处理器,因此zynq的应用基本是以这个ARM核为核心,再配合FPGA逻辑作为协处理器,几乎能实现所有较复杂的应用。并且在ARM上可以跑操作系...
Hoki 2017-01-11 15:54
u-boot image生成
这节介绍一下如何生成u-boot image文件,在SDK软件中点击Xilinx Tools→Create Boot Image工具即可生成,但是生成image文件需要首先集齐3个文件:u-boot....
EE直播间
更多
我要评论
2
20
关闭 站长推荐上一条 /3 下一条