TTA下的clocks的报告说的是当前工程各个时钟信号的属性。
这些是软件自动分析出来的工程中的一些时钟属性的信号。即有些信号不是预想的时钟信号,而是像时钟一样老是翻转,被认为是时钟的信号。
如果某个被认为是时钟的信号没相关的频率周期定义,软件会自动将其按照1000M的频率来进行分析。
clk信号,Fmax=149.77MHz,指的是当前设计中,由clk信号驱动的寄存器,在clk频率为149.77MHz的时候,刚好还能正常工作。
SDC文件作用:编译器用来优化设计。
create clock(约束):
create_clock -name{clk} -period 20.000 -waveform{0.000 10.000}[get_ports{clk}]
创建一个名为clk的时钟约束,这个时钟的周期是10ns,波形是0ns时上升,10ns时下降,该时钟依附在具体的物理节点是名为clk的端口上。
create generated clock(约束):创建生成时钟
create_generated_clock -name {pll|altpll_component|auto_generated|pll1|clk[0]} -source [get_pins {pll|altpll_component|auto_generated|pll1|inclk[0] -duty_cycle 50.000 -multiply_by 2 -master_clock{clk} [get_pins {pll|altpll_component|auto_generated|pll1|clk[0]}]
创建一个名为pll|altpll_component|auto_generated|pll1|clk[0]的生成时钟,这个生成时钟的源为pll|altpll_component|auto_generated|pll1|inclk[0],占空比为50%,将源时钟信号乘以2,母时钟为clk,该生成的时钟信号依附的具体物理节点为pll的clk0端口。
如果你的工程没有添加任何约束文件,或者约束文件没有任何有效的内容,软件自动分析并加入软件自动分析出来的时钟信号并加以合理的约束。
一旦工程中加入了有效的sdc文件后,软件就一切以sdc文件中的约束为准,不再自动分析和加入其他信号的约束。当然,可以用assignment向导创建。
向导出的PLL出来的时钟约束语句与sdc直接手写有点区别 可以用derive pll clocks -create_base_clocks来实现对所有pll输出的约束,derive是派生的意思。
一个工程中添加当多个sdc文件,并同时生效的话,那么软件会依次按照这俩文件中的内容进行约束和报告,如果对某一个节点在多个约束文件里都添加了约束信息,则后执行的约束内容会覆盖先执行的约束内容。
第三种约束方法:
Tools > TimeQuest Timing Analyzer > 双击Create Timing Netlist与Read SDC File > 可以点下边Diagnostic下边的Report Clocks来看时钟信号
然后TimeQuest Timing Analyzer > Constraints > Create Clock >…>Run>找到下面Write SDC File点击
对于PLL,Constraints > Derive PLL Clocks>Write SDC File