From ae68a33a517a50b7c16f697c1a39112a12bd7c35 Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Mon, 12 Sep 2016 10:27:08 +0200 Subject: [PATCH] CTS: Pinout constraints for flexible I/O are now selected based on configuration. --- base/trb3_central_cts.lpf | 18 +++++++++--------- cts/compile_constraints.pl | 8 ++++++-- cts/config_default.vhd | 4 ++-- cts/config_mvd.vhd | 2 +- cts/ports_mbs_master.lpf | 4 ++++ cts/ports_no_mbs_master.lpf | 5 +++++ cts/trb3_central.vhd | 14 ++++++++------ cts/trb3_central_constraints_3.lpf | 3 ++- 8 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 cts/ports_mbs_master.lpf create mode 100644 cts/ports_no_mbs_master.lpf diff --git a/base/trb3_central_cts.lpf b/base/trb3_central_cts.lpf index d27ce22..7434518 100644 --- a/base/trb3_central_cts.lpf +++ b/base/trb3_central_cts.lpf @@ -21,8 +21,8 @@ BLOCK RD_DURING_WR_PATHS ; ################################################################# #Additional signals from Clock-RJ-45 -LOCATE COMP "CLK_EXT_3" SITE "U9"; #was SPARE_LINE_2 -LOCATE COMP "CLK_EXT_4" SITE "Y34"; #was SPARE_LINE_4 +# LOCATE COMP "CLK_EXT_3" SITE "U9"; #was SPARE_LINE_2 +# LOCATE COMP "CLK_EXT_4" SITE "Y34"; #was SPARE_LINE_4 LOCATE COMP "CLK_SERDES_INT_RIGHT" SITE "AH22"; LOCATE COMP "CLK_SERDES_INT_LEFT" SITE "AH12"; LOCATE COMP "CLK_GPLL_RIGHT" SITE "Y28"; @@ -60,13 +60,13 @@ LOCATE COMP "TRIGGER_EXT_3" SITE "W4"; #was EXT_TRIG_2 #LOCATE COMP "TRIGGER_EXT_4" SITE "W8"; #was EXT_TRIG_4 DEFINE PORT GROUP "TRIGGER_EXT_group" "TRIGGER_EXT*" ; IOBUF GROUP "TRIGGER_EXT_group" IO_TYPE=LVDS25; - -LOCATE COMP "CLK_TEST_OUT_1" SITE "Y34"; -IOBUF PORT "CLK_TEST_OUT_1" IO_TYPE=LVDS25 ; -LOCATE COMP "CLK_TEST_OUT_2" SITE "W4"; -IOBUF PORT "CLK_TEST_OUT_2" IO_TYPE=LVDS25 ; -LOCATE COMP "CLK_TEST_OUT_0" SITE "U9"; -IOBUF PORT "CLK_TEST_OUT_0" IO_TYPE=LVDS25 ; +# +# LOCATE COMP "CLK_TEST_OUT_1" SITE "Y34"; +# IOBUF PORT "CLK_TEST_OUT_1" IO_TYPE=LVDS25 ; +# LOCATE COMP "CLK_TEST_OUT_2" SITE "W4"; +# IOBUF PORT "CLK_TEST_OUT_2" IO_TYPE=LVDS25 ; +# LOCATE COMP "CLK_TEST_OUT_0" SITE "U9"; +# IOBUF PORT "CLK_TEST_OUT_0" IO_TYPE=LVDS25 ; LOCATE COMP "CLKRJ_0" SITE "U9"; diff --git a/cts/compile_constraints.pl b/cts/compile_constraints.pl index 5ee432c..5dfc75b 100755 --- a/cts/compile_constraints.pl +++ b/cts/compile_constraints.pl @@ -39,8 +39,8 @@ die("workdir must not contain ..") if $workdir =~ m/\.\./; $workdir =~ s/(\.\/|\/$)//g; # remove ./ and trailing slash $workdir =~ s/\/{2,}/\//g; # remove multiple // in path -my $back = "../" x ($workdir =~ tr/\///); -$back = './' unless $back; +my $back = '../' x ($workdir =~ tr@\/@@); +$back = "./" unless $back; chdir($script_dir); @@ -62,6 +62,10 @@ system("cat tdc_release/tdc_constraints_4.lpf >> $workdir/$TOPNAME.lpf") if $con system("cat cbmnet_bridge/cbmnet_bridge.lpf >> $workdir/$TOPNAME.lpf") if $configSettings{'INCLUDE_CBMNET'}; system("cat ".$TOPNAME."_constraints.lpf >> $workdir/$TOPNAME.lpf"); +system("cat ports_mbs_master.lpf >> $workdir/$TOPNAME.lpf") if $configSettings{'INCLUDE_MBS_MASTER'}; +system("cat ports_no_mbs_master.lpf >> $workdir/$TOPNAME.lpf") unless $configSettings{'INCLUDE_MBS_MASTER'}; + + open FILE, "<$workdir/$TOPNAME.lpf" or die "Couldnt open file: $!"; my $lpf = join('', ); close FILE; diff --git a/cts/config_default.vhd b/cts/config_default.vhd index 11a3000..bf222d0 100644 --- a/cts/config_default.vhd +++ b/cts/config_default.vhd @@ -10,7 +10,7 @@ package config is constant INCLUDE_CTS : integer range c_NO to c_YES := c_YES; constant INCLUDE_CBMNET : integer range c_NO to c_YES := c_NO; - constant INCLUDE_MBS_MASTER : integer range c_NO to c_YES := c_NO; + constant INCLUDE_MBS_MASTER : integer range c_NO to c_YES := c_NO; --include TDC for all four trigger input lines @@ -37,7 +37,7 @@ package config is constant USE_EXTERNAL_CLOCK : integer range c_NO to c_YES := c_YES; --Which external trigger module (ETM) to use? - constant INCLUDE_ETM : integer range c_NO to c_YES := c_NO; + constant INCLUDE_ETM : integer range c_NO to c_YES := c_YES; type ETM_CHOICE_type is (ETM_CHOICE_MBS_VULOM, ETM_CHOICE_MAINZ_A2, ETM_CHOICE_CBMNET, ETM_CHOICE_M26); constant ETM_CHOICE : ETM_CHOICE_type := ETM_CHOICE_MBS_VULOM; diff --git a/cts/config_mvd.vhd b/cts/config_mvd.vhd index 10fd989..38a8e4f 100644 --- a/cts/config_mvd.vhd +++ b/cts/config_mvd.vhd @@ -10,7 +10,7 @@ package config is constant INCLUDE_CTS : integer range c_NO to c_YES := c_YES; constant INCLUDE_CBMNET : integer range c_NO to c_YES := c_NO; - constant INCLUDE_MBS_MASTER : integer range c_NO to c_YES := c_YES; + constant INCLUDE_MBS_MASTER : integer range c_NO to c_YES := c_NO; --include TDC for all four trigger input lines diff --git a/cts/ports_mbs_master.lpf b/cts/ports_mbs_master.lpf new file mode 100644 index 0000000..07f2718 --- /dev/null +++ b/cts/ports_mbs_master.lpf @@ -0,0 +1,4 @@ +LOCATE COMP "CLK_TEST_OUT_1" SITE "Y34"; +IOBUF PORT "CLK_TEST_OUT_1" IO_TYPE=LVDS25 ; +LOCATE COMP "CLK_TEST_OUT_0" SITE "U9"; +IOBUF PORT "CLK_TEST_OUT_0" IO_TYPE=LVDS25 ; \ No newline at end of file diff --git a/cts/ports_no_mbs_master.lpf b/cts/ports_no_mbs_master.lpf new file mode 100644 index 0000000..30cd204 --- /dev/null +++ b/cts/ports_no_mbs_master.lpf @@ -0,0 +1,5 @@ +LOCATE COMP "CLK_EXT_3" SITE "U9"; #was SPARE_LINE_2 +LOCATE COMP "CLK_EXT_4" SITE "Y34"; #was SPARE_LINE_4 + +IOBUF PORT "CLK_EXT_3" IO_TYPE=LVDS25; +IOBUF PORT "CLK_EXT_4" IO_TYPE=LVDS25; \ No newline at end of file diff --git a/cts/trb3_central.vhd b/cts/trb3_central.vhd index e165ee7..45d6a6c 100644 --- a/cts/trb3_central.vhd +++ b/cts/trb3_central.vhd @@ -50,7 +50,7 @@ entity trb3_central is TRIGGER_LEFT : in std_logic; --left side trigger input from fan-out TRIGGER_RIGHT : in std_logic; --right side trigger input from fan-out TRIGGER_EXT_2 : in std_logic; - TRIGGER_EXT_3 : inout std_logic; + TRIGGER_EXT_3 : inout std_logic; --trigger input of busy output -- TRIGGER_EXT : inout std_logic_vector(4 downto 2); --additional trigger from RJ45 TRIGGER_OUT : out std_logic; --trigger to second input of fan-out TRIGGER_OUT2 : out std_logic; @@ -600,7 +600,9 @@ architecture trb3_central_arch of trb3_central is begin assert not(USE_4_SFP = c_YES and INCLUDE_CBMNET = c_YES) report "CBMNET uses SFPs 1-4 and hence does not support USE_4_SFP" severity failure; assert not(INCLUDE_CBMNET = c_YES and INCLUDE_CTS = c_NO) report "CBMNET is supported only with CTS included" severity failure; - assert not(INCLUDE_TDC = c_YES and INCLUDE_MBS_MASTER = c_NO) report "TDC and MBS Master can not be implemented" severity failure; + assert not(INCLUDE_TDC = c_YES and INCLUDE_MBS_MASTER = c_YES) report "TDC and MBS Master can not be implemented" severity failure; + assert not(INCLUDE_ETM = c_YES and ETM_CHOICE = ETM_CHOICE_MBS_VULOM and INCLUDE_MBS_MASTER = c_YES) report "This ETM and MBS Master can not be implemented" severity failure; + assert not(INCLUDE_ETM = c_YES and ETM_CHOICE = ETM_CHOICE_MAINZ_A2 and INCLUDE_MBS_MASTER = c_YES) report "This ETM and MBS Master can not be implemented" severity failure; -- MBS Module gen_mbs_vulom_as_etm : if ETM_CHOICE = ETM_CHOICE_MBS_VULOM and INCLUDE_CTS = c_YES and INCLUDE_ETM = c_YES generate @@ -1898,10 +1900,10 @@ end generate; TRIGGER_IN => cts_rdo_trg_data_valid, TRIGGER_NUMBER_IN => cts_rdo_trg_number, - DATA_OUT => cts_rdo_additional(1).data, - WRITE_OUT => cts_rdo_additional(1).data_write, - FINISHED_OUT => cts_rdo_additional(1).data_finished, - STATUSBIT_OUT => cts_rdo_additional(1).statusbits + DATA_OUT => cts_rdo_additional(INCLUDE_ETM).data, + WRITE_OUT => cts_rdo_additional(INCLUDE_ETM).data_write, + FINISHED_OUT => cts_rdo_additional(INCLUDE_ETM).data_finished, + STATUSBIT_OUT => cts_rdo_additional(INCLUDE_ETM).statusbits ); CLK_TEST_OUT(0) <= mbs_data_i; CLK_TEST_OUT(1) <= mbs_clock_i; diff --git a/cts/trb3_central_constraints_3.lpf b/cts/trb3_central_constraints_3.lpf index 8a0dee3..56d2cc0 100644 --- a/cts/trb3_central_constraints_3.lpf +++ b/cts/trb3_central_constraints_3.lpf @@ -258,4 +258,5 @@ LOCATE COMP "THE_CBM_BRIDGE/THE_CBM_PHY/THE_SERDES/PCSD_INST" SITE "PCSA" ; UGROUP "THE_MEDIA_ONBOARD_GROUP" BBOX 25 45 BLKNAME THE_MEDIA_ONBOARD; -LOCATE UGROUP "THE_MEDIA_ONBOARD_GROUP" SITE "R98C75D" ; \ No newline at end of file +LOCATE UGROUP "THE_MEDIA_ONBOARD_GROUP" SITE "R98C75D" ; + -- 2.43.0