Xilinx建议把时序约束和物理约束分开来写。(但是必须有一个作为target)
时序约束用于综合和实现,物理约束用于实现。
1时钟周期
2占空比
3相位
Waveform={上升沿时刻,下降沿时刻}
1.Primary clock
首先确定Primary clock指的是板子上提供的晶振的时钟,通常连接到FPGA的cc引脚上,另外一种情况就是吉比特收发器。后面所有的时序约束都来源于Primary clock。
Primary clock 指的是引脚上的时钟,创建一个时钟周期为10ns的代码
create_clock -period 10 [get_ports sysclk] //分配到sysclk这个管脚
2.生成时钟clock
2.1用户自定义生成时钟 命令:create_generated_clock
2.2自动推断出来的时钟 比如MMCM或者PLL或者BUFR(分频产生时钟)
这些都是不需要做约束的,只需要对primary时钟做约束
首先创建primary clock:
create_clock -name clkin -period 10 [get_ports clkin]
然后使用两种方法指定generate时钟:
第一种方式:create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins rega/q]
第二种方式:create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -divide_by 2 [get_pins rega/q]
第三种方式:create_generated_clock -name clkdiv2 -source [get_pins REGA/C]
-edges {1 3 5} [get_pins rega/q]
可以对MMCM生成的时钟进行重命名:
create_generated_clock -name clk_rx [get_pins clk_gen_i0/clk_core_i0/inst
/mmcm_adv_inst/clkout0]
3.时钟分组
3.1同步时钟
3.2异步时钟
3.3不可扩展时钟