数字部分可以有5个时钟,分别是SPI的clk时钟, 可编程分频器P/S的clk_pre 时钟,输出clk_out 以及 DSM 的 clk_dsm 和chirp的clk_chirp的时钟,这两个时钟接output clk_out。所以对clk_out 约束就可以了。
输出时钟clk_out 约束,这个multicycle_path是不是设置到 clk_pre 和clk_out这个两个时钟上,但multicycle_path的个数是由分频数决定的,clk_pre最高频率的时候1.25G,而clk_out的时钟是接近240M,由于DSM的引入,会导致分频数发生变化,这样clk_out的最大频率为430M(这个时候clk_pre不是最高频率),但是这个时钟是clk_pre 的2.9分频。所以取分频数最小应该是2。但是在clk_pre频率最高的时候,clk_out的最大频率为340M,分频数为3.6。 现在就有个疑问:比如现在约束的2个multicycle,但实际上是3个或者4个或者更多。这样是否会有影响? 因为这个时钟接在clk_out 上的,所以对clk_out进行约束就可以了。 #*********************************************************************** #***** set the timing conwstraint ********************************** #*********************************************************************** set CLK1 clk_pre set CLK2 clk set CLK3 clk_chirp set CLK4 clk_dsm set CLK5 clk_out set RESET rst_n
set clk2_input [list [get_ports sdi] [get_ports csn]] set CLK3_input [list [get_ports start] [get_ports fixed_point ] [get_ports state]]
set clk1_output [list [get_ports mc] [get_ports clk_out] ] set clk2_output [list [get_ports sdo] [get_ports control ] [get_ports TestPin ]] set CLK3_output [list [get_ports DAC_code ] ]
################# clk1 p/s ####################### create_clock -name $CLK1 -p 0.8 [get_ports $CLK1] -waveform {0 0.3}
set_clock_uncertainty 0.05 -setup [get_clocks $CLK1]
set_clock_transition 0.03 [get_clocks $CLK1] set_clock_latency 0.03 [get_clocks $CLK1]
set_output_delay -max 0.16 -clock $CLK1 [list [get_ports mc] ] set_output_delay -min 0.16 -clock $CLK1 [list [get_ports mc] ]
#################clk2 spi ####################### create_clock -name $CLK2 -p 4 [get_ports $CLK2] -waveform {0 2}
set_clock_uncertainty 0.1 -setup [get_clocks $CLK2]
set_clock_transition 0.08 [get_clocks $CLK2] set_input_transition 0.05 $clk2_input set_clock_latency 0.05 [get_clocks $CLK2]
set_input_delay -max 1 -clock $CLK2 $clk2_input set_input_delay -min 1 -clock $CLK2 $clk2_input set_output_delay -max 1 -clock $CLK2 $clk2_output set_output_delay -min 1 -clock $CLK2 $clk2_output
#############################CLK3 chirp #######################
create_clock -name $CLK3 -p 2.5 [get_pins u3_chirp/clk_chirp] -waveform {0 1.2} set_clock_uncertainty 0.08 -setup [get_clocks $CLK3]
set_clock_transition 0.08 [get_clocks $CLK3] set_input_transition 0.05 $CLK3_input set_clock_latency 0.05 [get_clocks $CLK3]
set_input_delay -max 0.5 -clock $CLK3 $CLK3_input set_input_delay -min 0.5 -clock $CLK3 $CLK3_input set_output_delay -max 1 -clock $CLK3 $CLK3_output set_output_delay -min 1 -clock $CLK3 $CLK3_output
#############################CLK4 dssm ####################### create_clock -name $CLK4 -p 2.5 [get_pins u2_ddsm/clk_dsm] -waveform {0 1.2}
set_clock_uncertainty 0.08 -setup [get_clocks $CLK4]
set_clock_transition 0.08 [get_clocks $CLK4] set_clock_latency 0.05 [get_clocks $CLK4] #############################CLK5 clk_out #######################
create_generated_clock -name $CLK5 -divide_by 2 -source $CLK1 [get_ports clk_out]
set_multicycle_path 2 -setup -end -from $CLK5 -to $CLK1 set_multicycle_path 1 -hold -start -from $CLK5 -to $CLK1
##################################false paths################################################ set_false_path -from [get_clocks $CLK2] -to [get_clocks $CLK1] set_false_path -from [get_clocks $CLK1] -to [get_clocks $CLK2]
set_false_path -from [get_clocks $CLK2] -to [get_clocks $CLK3] set_false_path -from [get_clocks $CLK3] -to [get_clocks $CLK2]
set_false_path -from [get_clocks $CLK2] -to [get_clocks $CLK4] set_false_path -from [get_clocks $CLK4] -to [get_clocks $CLK2]
set_false_path -from [get_clocks $CLK2] -to [get_clocks $CLK5] set_false_path -from [get_clocks $CLK5] -to [get_clocks $CLK2]
set_false_path -from [get_ports $RESET]
大佬们,给指导指导。
|