From f3cb676c5851619069a25441e965a29b8a368323 Mon Sep 17 00:00:00 2001 From: Andreas Neiser Date: Wed, 17 Jun 2015 18:49:56 +0200 Subject: [PATCH] Maybe this works better for timing --- ADC/compile_constraints.pl | 8 ++-- ADC/config.vhd | 2 +- ADC/trb3_periph_adc_constraints.lpf | 57 ++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 8 deletions(-) diff --git a/ADC/compile_constraints.pl b/ADC/compile_constraints.pl index d7a00c5..7f921b5 100755 --- a/ADC/compile_constraints.pl +++ b/ADC/compile_constraints.pl @@ -70,13 +70,12 @@ close FILE; $lpf =~ s#THE_TDC/#GEN_TDC.THE_TDC/#g; +# for TDC v1.6.3 +$lpf =~ s#ff_array_en#ff_array_en_i#g; +$lpf =~ s#hit_mux_ch#hit_mux_ch/hit_i_5_u_0#g; # make the LPF diamond 2.1 compatible # we assume that generate loops are all named with "gen_" -#$lpf =~ s#(gen_)(\w+?)\.#$1$2_#gi; -#$lpf =~ s#(gen_)(\w+?)(\d+)\.#$1$2$3_#gi; -#$lpf =~ s#(gen_)(\w+?)(\*)\.#$1$2$3_#gi; -#$lpf =~ s#SimAdder##g; sub replace_dot { my @m = @_; $m[1] =~ s/\./_/g; @@ -85,7 +84,6 @@ sub replace_dot { $lpf =~ s#(BLKNAME\s+)(.+?)([;\s])#replace_dot($1,$2,$3)#eg; $lpf =~ s#(CELL\s+")(.+?)(")#replace_dot($1,$2,$3)#eg; $lpf =~ s#(NET\s+")(.+?)(")#replace_dot($1,$2,$3)#eg; -$lpf =~ s#ff_array_en#ff_array_en_i#g; open FILE, ">$workdir/$TOPNAME.lpf" or die "Couldnt open file: $!"; diff --git a/ADC/config.vhd b/ADC/config.vhd index 138db8d..1a4c7bc 100644 --- a/ADC/config.vhd +++ b/ADC/config.vhd @@ -52,7 +52,7 @@ package config is --> change names in constraints file --ring buffer size: 32,64,96,128,dyn --for TDC v1.6.3, only 0,1,3 are valid - constant RING_BUFFER_SIZE : integer range 0 to 7 := 3; --ring buffer size: 0, 1, 2, 3, 7 + constant RING_BUFFER_SIZE : integer range 0 to 7 := 0; --ring buffer size: 0, 1, 2, 3, 7 constant TDC_CONTROL_REG_NR : integer := 6; diff --git a/ADC/trb3_periph_adc_constraints.lpf b/ADC/trb3_periph_adc_constraints.lpf index 8531664..b177f1b 100644 --- a/ADC/trb3_periph_adc_constraints.lpf +++ b/ADC/trb3_periph_adc_constraints.lpf @@ -161,9 +161,9 @@ LOCATE UGROUP "THE_ADC_PROC_cfd_11_group" REGION "THE_ADC_PROC_cfd_11_region"; UGROUP "EF_LT2" BBOX 10 51 BLKNAME THE_TDC/ReferenceChannel/Channel200 - BLKNAME THE_TDC/ReferenceChannel/Buffer_128.The_Buffer + BLKNAME THE_TDC/ReferenceChannel/Buffer_32.The_Buffer BLKNAME THE_TDC/GEN_Channels.1.Channels/Channel200 - BLKNAME THE_TDC/GEN_Channels.1.Channels/Buffer_128.The_Buffer + BLKNAME THE_TDC/GEN_Channels.1.Channels/Buffer_32.The_Buffer ; LOCATE UGROUP "EF_LT2" SITE "R105C2D" ; @@ -233,3 +233,56 @@ MULTICYCLE FROM CELL "tdc_ctrl_reg*" 4x; PROHIBIT SECONDARY NET "THE_TDC/ReferenceChannel/Channel200/ff_array_en"; PROHIBIT SECONDARY NET "THE_TDC/GEN_Channels.1.Channels/Channel200/ff_array_en"; + + +### Additions for v1.6.3 + +############################################################################# +## Unimportant Data Lines ## +############################################################################# +MULTICYCLE FROM CELL "THE_TDC/reset_tdc*" TO CLKNET CLK_PCLK_LEFT_c 2x; + +MULTICYCLE FROM CELL "THE_TDC/reset_counters*" 4x; +# MULTICYCLE FROM CELL "PROC_TDC_CTRL_REG*tdc_ctrl_reg*" 4x; + +# MULTICYCLE TO CELL "THE_TDC/GEN_Channels*Channels/Channel200/SimAdderNo*FC/FF*" 4x; +# MULTICYCLE TO CELL "THE_TDC/ReferenceChannel/Channel200/SimAdderNo*FC/FF*" 4x; + +MULTICYCLE TO CELL "THE_TDC/GEN_Channels*Channels/sync_q*" 4 x; +MULTICYCLE TO CELL "THE_TDC/ReferenceChannel/sync_q*" 4 x; + +MULTICYCLE FROM CELL "THE_TDC/GEN_Channels*Channels/Channel200/RingBuffer*FIFO/FF*" TO CELL "THE_TDC/GEN_Channels*Channels/Channel200/ringBuffer_almost_full_sync*" 2x; +MULTICYCLE FROM CELL "THE_TDC/ReferenceChannel/Channel200/RingBuffer*FIFO/FF*" TO CELL "THE_TDC/ReferenceChannel/Channel200/ringBuffer_almost_full_sync*" 2x; + +MULTICYCLE FROM CELL "THE_TDC/TheEpochCounter/counter*" TO CELL "THE_TDC/GEN_Channels*Channels/epoch_cntr_reg*" 3 X; +MULTICYCLE FROM CELL "THE_TDC/TheEpochCounter/counter*" TO CELL "THE_TDC/ReferenceChannel/epoch_cntr_reg*" 3 X; + +MULTICYCLE TO CELL "THE_TDC/TheReadout/TW_pre*" 4 x; +MULTICYCLE TO CELL "THE_TDC/TheReadout/TW_post*" 4 x; + + + +# #MAXDELAY FROM GROUP "hitBuf*" TO GROUP "FC*" 0.600000 nS; +# #MAXDELAY FROM GROUP "hitBuf_ref*" TO GROUP "Ref_Ch" 0.600000 nS; + +MAXDELAY NET "THE_TDC/hit_in_i*" 0.600000 nS; #DATAPATH_ONLY ; + + +## Maybe effective + +# MULTICYCLE FROM CELL "THE_TDC/GEN_Channels*Channels/The_Buffer/*" TO CELL "THE_TDC/TheReadout/rd_en*" 2 X; + + + + + +# # BLOCK NET "THE_TDC/reset_tdc*" ; +# # BLOCK NET "THE_TDC/reset_rdo*" ; +# # #BLOCK NET "THE_TDC/hit_in_i_*" ; +# # BLOCK NET "THE_TDC/hit_latch*" ; +# # BLOCK NET "THE_TDC/reset_counters_i*" ; + + + +# # PROHIBIT SECONDARY NET "THE_TDC/ReferenceChannel/Channel200/ff_array_en_i"; +# # PROHIBIT SECONDARY NET "THE_TDC/GEN_Channels*Channels/Channel200/ff_array_en_i"; -- 2.43.0