From 8c789104a69e7b9b13af5afcf0e988097364b2bb Mon Sep 17 00:00:00 2001 From: Adrian Costina Date: Wed, 29 Oct 2014 18:25:56 +0200 Subject: [PATCH] ad9671: Fixed constraints. Modified system_timing.tcl so that it will fail if timing are not met --- projects/ad9671_fmc/a5gt/system_constr.sdc | 41 ++++++++++------------ projects/ad9671_fmc/a5gt/system_timing.tcl | 17 +++++++-- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/projects/ad9671_fmc/a5gt/system_constr.sdc b/projects/ad9671_fmc/a5gt/system_constr.sdc index 824fab80f..9a072102f 100644 --- a/projects/ad9671_fmc/a5gt/system_constr.sdc +++ b/projects/ad9671_fmc/a5gt/system_constr.sdc @@ -1,32 +1,29 @@ create_clock -period "10.000 ns" -name n_clk_100m [get_ports {sys_clk}] -create_clock -period "4.000 ns" -name n_clk_250m [get_ports {ref_clk}] +create_clock -period "12.500 ns" -name n_clk_ref [get_ports {ref_clk}] create_clock -period "8.000 ns" -name n_eth_rx_clk_125m [get_ports {eth_rx_clk}] create_clock -period "8.000 ns" -name n_eth_tx_clk_125m [get_nets {eth_tx_clk}] derive_pll_clocks derive_clock_uncertainty -set clk_100m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_166m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_125m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_25m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_2m5 [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_rxlink [get_clocks {i_system_bd|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_100m {i_system_bd|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk} +set clk_166m {i_system_bd|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk} +set clk_125m {i_system_bd|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk} +set clk_25m {i_system_bd|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk} +set clk_2m5 {i_system_bd|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk} +set clk_rxlink {i_system_bd|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk} + +set_clock_groups -asynchronous -group [get_clocks {n_clk_ref} ] +set_clock_groups -asynchronous -group [get_clocks {n_clk_100m} ] +set_clock_groups -asynchronous -group [get_clocks {n_eth_rx_clk_125m} ] +set_clock_groups -asynchronous -group [get_clocks {n_eth_tx_clk_125m} ] +set_clock_groups -asynchronous -group [get_clocks $clk_100m ] +set_clock_groups -asynchronous -group [get_clocks $clk_166m ] +set_clock_groups -asynchronous -group [get_clocks $clk_125m ] +set_clock_groups -asynchronous -group [get_clocks $clk_25m ] +set_clock_groups -asynchronous -group [get_clocks $clk_2m5 ] +set_clock_groups -asynchronous -group [get_clocks $clk_rxlink ] set_false_path -from {sys_resetn} -to * -set_false_path -from $clk_100m -to $clk_166m -set_false_path -from $clk_100m -to $clk_rxlink -set_false_path -from $clk_166m -to $clk_100m -set_false_path -from $clk_166m -to $clk_rxlink -set_false_path -from $clk_rxlink -to $clk_100m -set_false_path -from $clk_rxlink -to $clk_166m - -set_false_path -from $clk_125m -to $clk_25m -set_false_path -from $clk_125m -to $clk_2m5 -set_false_path -from $clk_25m -to $clk_125m -set_false_path -from $clk_25m -to $clk_2m5 -set_false_path -from $clk_2m5 -to $clk_125m -set_false_path -from $clk_2m5 -to $clk_25m - - +set_false_path -from * -to {sys_resetn} diff --git a/projects/ad9671_fmc/a5gt/system_timing.tcl b/projects/ad9671_fmc/a5gt/system_timing.tcl index e1f355d44..a62293897 100644 --- a/projects/ad9671_fmc/a5gt/system_timing.tcl +++ b/projects/ad9671_fmc/a5gt/system_timing.tcl @@ -1,3 +1,16 @@ -report_timing -detail path_only -npaths 20 -file timing_impl.log - +set worst_path [get_timing_paths -npaths 1 -setup] +foreach_in_collection path $worst_path { + set slack [get_path_info $path -slack] +} + +if {$slack > 0} { + set worst_path [get_timing_paths -npaths 1 -hold] + foreach_in_collection path $worst_path { + set slack [get_path_info $path -slack] + } +} + +if {$slack < 0} { + use_this_invalid_command_to_crash +}