]> jspc29.x-matter.uni-frankfurt.de Git - trb3.git/commitdiff
gbe with forwarder
authorYour Name <you@example.com>
Mon, 18 Sep 2017 12:42:15 +0000 (14:42 +0200)
committerYour Name <you@example.com>
Mon, 18 Sep 2017 12:42:15 +0000 (14:42 +0200)
base/trb3_central_gbe.lpf
cts/compile_central_gsi.pl
cts/trb3_central.prj
cts/trb3_central.vhd
trb3_gbe/compile_central_gsi.pl
trb3_gbe/config_compile_gsi.pl
trb3_gbe/trb3_central_gbe.lpf [deleted symlink]

index 34b396baf7972a075b69d73828f5b0b2a40ba8ca..4816cbf68cba4a6916aac0e4c65764822053d7c7 100644 (file)
@@ -541,7 +541,7 @@ MULTICYCLE TO CELL "gen_uplink_THE_MEDIA_UPLINK/SCI_DATA_OUT*" 50 ns;
 MULTICYCLE TO CELL "THE_SPI_RELOAD_THE_SPI_MASTER_THE_SPI_SLIM_*io*" 20 ns;
 MULTICYCLE FROM CELL "THE_MEDIA_*_sfp_losio*" 20 ns;
 
-LOCATE COMP "GBE/physical_impl_gen.physical/impl_gen.gbe_serdes/PCSD_INST" SITE "PCSB";
+LOCATE COMP "gen_ethernet_hub_GBE/physical_impl_gen_physical/impl_gen_gbe_serdes/PCSD_INST" SITE "PCSB";
 
 
 
index 065d0a8a8ed0d94cb619a33024fd8f0d719cbab0..aed6092e04fd8633daf6148a61868a21ea6ac8ed 100755 (executable)
@@ -16,8 +16,8 @@ my $CbmNetPath                   = "../../cbmnet";
 my $lm_license_file_for_synplify = "27000\@lxcad01.gsi.de";
 my $lm_license_file_for_par      = "1702\@hadeb05.gsi.de";
 
-my $lattice_path                 = '/opt/lattice/diamond/3.2_x64/';
-my $synplify_path                = '/opt/synplicity/I-2013.09-SP1/';
+my $lattice_path                 = '/opt/lattice/diamond/3.8_x64/';
+my $synplify_path                = '/opt/synplicity/L-2016.09-1/';
 my $lattice_bin_path             = "$lattice_path/bin/lin64"; # note the lin or lin64 at the end, no isfgpa needed
 my $config_vhd                   = 'config_mainz_a2.vhd';
 ###################################################################################
index 9bf012c513dba56c10f70e8f0dc32b2892440bf8..bc0c3e3a1ab85485efaaa4b788aa2b6c31a33e02 100644 (file)
@@ -120,6 +120,7 @@ add_file -vhdl -lib work "../../trbnet/gbe_trb/protocols/trb_net16_gbe_response_
 add_file -vhdl -lib work "../../trbnet/gbe_trb/protocols/trb_net16_gbe_response_constructor_DHCP.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe_trb/protocols/trb_net16_gbe_response_constructor_SCTRL.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe_trb/protocols/trb_net16_gbe_response_constructor_TrbNetData.vhd"
+add_file -vhdl -lib work "../../trbnet/gbe_trb/protocols/trb_net16_gbe_response_constructor_Forward.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe_trb/media/serdes_gbe_4ch.vhd"
 add_file -verilog -lib work "../../trbnet/gbe_trb/media/sgmii_channel_smi.v"
 add_file -verilog -lib work "../../trbnet/gbe_trb/media/reset_controller_pcs.v"
index 6442cd210912412c933f386df8458db04ad3032f..752fe733f822b9dc4bc3d5dde3a16654984647d8 100644 (file)
@@ -591,6 +591,9 @@ architecture trb3_central_arch of trb3_central is
 
    signal reboot_from_gbe : std_logic;
 
+   signal fwd_data : std_logic_vector(4 * 8 - 1 downto 0);
+   signal fwd_dv, fwd_sop, fwd_eop, fwd_ready, fwd_full : std_logic_vector(3 downto 0);
+
    component OSCF is
       port (
          OSC : out std_logic
@@ -1323,7 +1326,8 @@ end generate;
       LINK_HAS_SLOWCTRL => "1000",
       LINK_HAS_DHCP     => "1000",
       LINK_HAS_ARP      => "1000",
-      LINK_HAS_PING     => "1000"
+      LINK_HAS_PING     => "1000",
+      LINK_HAS_FWD      => "1000"
       
       )
     port map(
@@ -1375,12 +1379,56 @@ end generate;
       BUS_IP_TX  => busgbeip_tx,
       BUS_REG_RX => busgbereg_rx,
       BUS_REG_TX => busgbereg_tx,
+
+      FWD_DATA_IN => fwd_data,
+      FWD_DATA_VALID_IN => fwd_dv,
+      FWD_SOP_IN => fwd_sop,
+      FWD_EOP_IN => fwd_eop,
+      FWD_READY_OUT => fwd_ready,
+      FWD_FULL_OUT => fwd_full,
       
       MAKE_RESET_OUT           => reset_via_gbe,
 
       DEBUG_OUT                => open
       ); 
 
+
+
+-- process(clk_100_i)
+-- begin
+--    if rising_edge(clk_100_i) then
+--       if (reset_i = '1') then
+--          fwd_data <= (others => '0');
+--       else
+--          fwd_data <= fwd_data + x"1";
+--       end if;
+--    end if;
+-- end process;
+-- 
+-- process(clk_100_i)
+-- begin
+--    if rising_edge(clk_100_i) then
+--       if (fwd_data(23 downto 0) = x"100000") then
+--          fwd_sop <= x"f";
+--          fwd_eop <= x"0";
+--          fwd_dv <= x"f";
+--       elsif (fwd_data(23 downto 0) > x"100000" and fwd_data(23 downto 0) < x"100064") then
+--          fwd_sop <= x"0";
+--          fwd_eop <= x"0";
+--          fwd_dv <= x"f";
+--       elsif (fwd_data(23 downto 0) = x"100064") then
+--          fwd_sop <= x"0";
+--          fwd_eop <= x"f";
+--          fwd_dv <= x"f";
+--       else
+--          fwd_sop <= x"0";
+--          fwd_eop <= x"0";
+--          fwd_dv <= x"0";
+--       end if;
+--    end if;
+-- end process;
+
+
 -- 
 --   GBE : trb_net16_gbe_buf
 --     generic map (
index e9bb84d7250480b585cc2f02d0196ab1edc29730..56bb9d9a531454d68a0c2eff283e9ac829731432 100755 (executable)
@@ -2,49 +2,52 @@
 use Data::Dumper;
 use warnings;
 use strict;
-
-
+use Term::ANSIColor;
+use File::stat;
+use POSIX;
+use FileHandle;
 
 
 ###################################################################################
 #Settings for this project
-my $TOPNAME                      = "trb3_central";  #Name of top-level entity
-my $lattice_path                 = '/opt/lattice/diamond/1.3';
-my $synplify_path                = '/opt/synopsys/fpga_e201103/';
+my $TOPNAME                      = "trb3_central_gbe";  #Name of top-level entity
+my $BasePath                     = "../base/";     #path to "base" directory
+my $CbmNetPath                   = "../../cbmnet";
 my $lm_license_file_for_synplify = "27000\@lxcad01.gsi.de";
 my $lm_license_file_for_par      = "1702\@hadeb05.gsi.de";
-###################################################################################
-
-
-
-
-
-
 
+my $lattice_path                 = '/opt/lattice/diamond/3.8_x64/';
+my $synplify_path                = '/opt/synplicity/L-2016.09-1/';
+my $lattice_bin_path             = "$lattice_path/bin/lin64"; # note the lin or lin64 at the end, no isfgpa needed
+my $config_vhd                   = 'config_mainz_a2.vhd';
+###################################################################################
 
-use FileHandle;
+system("ln -f -s $config_vhd config.vhd") unless (-e "config.vhd");
+system("./compile_constraints.pl");
+system("cp ../base/mulipar_nodelist_example.txt workdir/nodelist.txt") unless (-e "workdir/nodelist.txt");
+symlink($CbmNetPath, '../cbmnet/cbmnet') unless (-e '../cbmnet/cbmnet');
+
+# source the standard lattice environment
+$ENV{bindir}="$lattice_bin_path";
+open my $SOURCE, "bash -c '. $lattice_bin_path/diamond_env >& /dev/null; env'|" or
+  die "Can't fork: $!";
+while (<$SOURCE>) {
+  if (/^(.*)=(.*)/) {
+    $ENV{$1} = ${2} ;
+  }
+}
+close $SOURCE;
 
 $ENV{'SYNPLIFY'}=$synplify_path;
 $ENV{'SYN_DISABLE_RAINBOW_DONGLE'}=1;
 $ENV{'LM_LICENSE_FILE'}=$lm_license_file_for_synplify;
 
 
-
-
 my $FAMILYNAME="LatticeECP3";
 my $DEVICENAME="LFE3-150EA";
 my $PACKAGE="FPBGA1156";
 my $SPEEDGRADE="8";
 
-
-#create full lpf file
-#system("cp ../base/$TOPNAME.lpf workdir/$TOPNAME.lpf");
-#system("cat ".$TOPNAME."_constraints.lpf >> workdir/$TOPNAME.lpf");
-
-
-#set -e
-#set -o errexit
-
 #generate timestamp
 my $t=time;
 my $fh = new FileHandle(">version.vhd");
@@ -61,7 +64,7 @@ use ieee.numeric_std.all;
 package version is
 
     constant VERSION_NUMBER_TIME  : integer   := $t;
-
+    
 end package version;
 EOF
 $fh->close;
@@ -73,7 +76,7 @@ my $c="$synplify_path/bin/synplify_premier_dp -batch $TOPNAME.prj";
 $r=execute($c, "do_not_exit" );
 
 
-chdir "workdir";
+chdir './workdir';
 $fh = new FileHandle("<$TOPNAME".".srr");
 my @a = <$fh>;
 $fh -> close;
@@ -93,62 +96,68 @@ foreach (@a)
 }
 
 
-# $ENV{'LM_LICENSE_FILE'}=$lm_license_file_for_par;
-# 
-# $c=qq| $lattice_path/ispfpga/bin/lin/edif2ngd  -l $FAMILYNAME -d $DEVICENAME "$TOPNAME.edf" "$TOPNAME.ngo" |;
-# execute($c);
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/edfupdate   -t "$TOPNAME.tcy" -w "$TOPNAME.ngo" -m "$TOPNAME.ngo" "$TOPNAME.ngx"|;
-# execute($c);
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/ngdbuild  -a $FAMILYNAME -d $DEVICENAME -p "$lattice_path/ispfpga/ep5c00/data" -dt "$TOPNAME.ngo" "$TOPNAME.ngd"|;
-# execute($c);
-# 
-# my $tpmap = $TOPNAME . "_map" ;
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/map  -retime -split_node -a $FAMILYNAME -p $DEVICENAME -t $PACKAGE -s $SPEEDGRADE "$TOPNAME.ngd" -o "$tpmap.ncd"  -mp "$TOPNAME.mrp" "$TOPNAME.lpf"|;
-# execute($c);
-# 
-# 
-# system("rm $TOPNAME.ncd");
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/multipar -pr "$TOPNAME.prf" -o "mpar_$TOPNAME.rpt" -log "mpar_$TOPNAME.log" -p "../$TOPNAME.p2t"  "$tpmap.ncd" "$TOPNAME.ncd"|;
-# execute($c);
-# 
-# # IOR IO Timing Report
-# $c=qq|$lattice_path/ispfpga/bin/lin/iotiming -s "$TOPNAME.ncd" "$TOPNAME.prf"|;
-# execute($c);
-# 
-# # TWR Timing Report
-# $c=qq|$lattice_path/ispfpga/bin/lin/trce -c -v 15 -o "$TOPNAME.twr.setup" "$TOPNAME.ncd" "$TOPNAME.prf"|;
-# execute($c);
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/trce -hld -c -v 5 -o "$TOPNAME.twr.hold"  "$TOPNAME.ncd" "$TOPNAME.prf"|;
-# execute($c);
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/ltxt2ptxt $TOPNAME.ncd|;
-# execute($c);
-# 
-# $c=qq|$lattice_path/ispfpga/bin/lin/bitgen  -w "$TOPNAME.ncd"  "$TOPNAME.prf"|;
-# execute($c);
+$ENV{'LM_LICENSE_FILE'}=$lm_license_file_for_par;
+
+$c=qq|edif2ngd  -l $FAMILYNAME -d $DEVICENAME "$TOPNAME.edf" "$TOPNAME.ngo" |;
+execute($c);
+
+$c=qq|edfupdate   -t "$TOPNAME.tcy" -w "$TOPNAME.ngo" -m "$TOPNAME.ngo" "$TOPNAME.ngx"|;
+execute($c);
+
+$c=qq'ngdbuild  -a $FAMILYNAME -d $DEVICENAME -p "$lattice_path/ispfpga/ep5c00/data" -dt "$TOPNAME.ngo" "$TOPNAME.ngd" | grep -v -e "^WARNING.*has no load"';
+execute($c);
+
+my $tpmap = $TOPNAME . "_map" ;
+
+system("rm $tpmap.ncd");
+$c=qq|map -hier -td_pack -retime EFFORT=6  -split_node -a $FAMILYNAME -p $DEVICENAME -t $PACKAGE -s $SPEEDGRADE "$TOPNAME.ngd" -o "$tpmap.ncd" -xref_sig  -mp "$TOPNAME.mrp"|;
+execute($c);
+
+system("rm $TOPNAME.ncd");
+
+#$c=qq|multipar -pr "$TOPNAME.prf" -o "mpar_$TOPNAME.rpt" -log "mpar_$TOPNAME.log" -p "../$TOPNAME.p2t"  "$tpmap.ncd" "$TOPNAME.ncd"|;
+#$c=qq|par -f "../$TOPNAME.p2t"  "$tpmap.ncd" "$TOPNAME.ncd" "$TOPNAME.prf"|;
+#$c=qq|par -f "../$TOPNAME.p2t"  "$tpmap.ncd" "$TOPNAME.dir" "$TOPNAME.prf"|;
+# dont forget to create a nodelist.txt for multipar / mpartrce
+$c=qq|mpartrce -p "../$TOPNAME.p2t" -f "../$TOPNAME.p3t" -tf "$TOPNAME.pt" "$tpmap.ncd" "$TOPNAME.ncd"|;
+execute($c);
+
+# IOR IO Timing Report
+$c=qq|iotiming -s "$TOPNAME.ncd" "$TOPNAME.prf"|;
+execute($c);
+
+# TWR Timing Report
+$c=qq|trce -c -v 15 -o "$TOPNAME.twr.setup" "$TOPNAME.ncd" "$TOPNAME.prf"|;
+execute($c);
+
+$c=qq|trce -hld -c -v 5 -o "$TOPNAME.twr.hold"  "$TOPNAME.ncd" "$TOPNAME.prf"|;
+execute($c);
+
+$c=qq|ltxt2ptxt $TOPNAME.ncd|;
+execute($c);
+
+$c=qq|bitgen  -w "$TOPNAME.ncd" "$TOPNAME.prf"|;
+execute($c);
 
 chdir "..";
 
-exit;
 
 sub execute {
     my ($c, $op) = @_;
     #print "option: $op \n";
     $op = "" if(!$op);
+    print color 'blue bold';
     print "\n\ncommand to execute: $c \n";
+    print color 'reset';
     $r=system($c);
     if($r) {
-       print "$!";
-       if($op ne "do_not_exit") {
-           exit;
-       }
+  print "$!";
+  if($op ne "do_not_exit") {
+      wait;
+  }
     }
 
     return $r;
 
 }
+
index f1e93644f0a0482ae303acd8cfd9cc6862c996b1..5822c3ee24b3db3d669b5b9f9f9cc367c28121cc 100644 (file)
@@ -1,10 +1,12 @@
 TOPNAME                      => "trb3_central_gbe",
 lm_license_file_for_synplify => "27000\@lxcad01.gsi.de",
 lm_license_file_for_par      => "1702\@hadeb05.gsi.de",
-lattice_path                 => '/opt/lattice/diamond/3.7_x64/',
-synplify_path                => '/opt/synplicity/K-2015.09',
+lattice_path                 => '/opt/lattice/diamond/3.8_x64/',
+synplify_path                => '/opt/synplicity/L-2016.09-1',
+#lattice_path                 => '/opt/lattice/diamond/3.2_x64/',
+#synplify_path                => '/opt/synplicity/I-2013.09-SP1/',
 #synplify_command             => "/opt/lattice/diamond/3.5_x64/bin/lin64/synpwrap -fg -options",
-synplify_command             => "/opt/synplicity/K-2015.09/bin/synplify_premier_dp",
+synplify_command             => "/opt/synplicity/L-2016.09-1/bin/synplify_premier_dp",
 
 nodelist_file                => '../nodes_lxhadeb07.txt',
 
diff --git a/trb3_gbe/trb3_central_gbe.lpf b/trb3_gbe/trb3_central_gbe.lpf
deleted file mode 120000 (symlink)
index e03b2d5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-trb3_central_constraints.lpf
\ No newline at end of file