]> jspc29.x-matter.uni-frankfurt.de Git - trb3.git/commitdiff
*** empty log message ***
authorhadeshyp <hadeshyp>
Thu, 3 May 2012 12:40:38 +0000 (12:40 +0000)
committerhadeshyp <hadeshyp>
Thu, 3 May 2012 12:40:38 +0000 (12:40 +0000)
trb3_gbe/compile_central_gsi.pl [new file with mode: 0755]
trb3_gbe/trb3_central.prj
trb3_gbe/trb3_central.vhd
trb3_gbe/trb3_central_constraints.lpf [new file with mode: 0644]
trb3_gbe/trb3_gbe.lpf [new file with mode: 0644]

diff --git a/trb3_gbe/compile_central_gsi.pl b/trb3_gbe/compile_central_gsi.pl
new file mode 100755 (executable)
index 0000000..e9bb84d
--- /dev/null
@@ -0,0 +1,154 @@
+#!/usr/bin/perl
+use Data::Dumper;
+use warnings;
+use strict;
+
+
+
+
+###################################################################################
+#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 $lm_license_file_for_synplify = "27000\@lxcad01.gsi.de";
+my $lm_license_file_for_par      = "1702\@hadeb05.gsi.de";
+###################################################################################
+
+
+
+
+
+
+
+
+use FileHandle;
+
+$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");
+die "could not open file" if (! defined $fh);
+print $fh <<EOF;
+
+--## attention, automatically generated. Don't change by hand.
+library ieee;
+USE IEEE.std_logic_1164.ALL;
+USE IEEE.std_logic_ARITH.ALL;
+USE IEEE.std_logic_UNSIGNED.ALL;
+use ieee.numeric_std.all;
+
+package version is
+
+    constant VERSION_NUMBER_TIME  : integer   := $t;
+
+end package version;
+EOF
+$fh->close;
+
+system("env| grep LM_");
+my $r = "";
+
+my $c="$synplify_path/bin/synplify_premier_dp -batch $TOPNAME.prj";
+$r=execute($c, "do_not_exit" );
+
+
+chdir "workdir";
+$fh = new FileHandle("<$TOPNAME".".srr");
+my @a = <$fh>;
+$fh -> close;
+
+
+
+foreach (@a)
+{
+    if(/\@E:/)
+    {
+       print "\n";
+       $c="cat $TOPNAME.srr | grep \"\@E\"";
+       system($c);
+        print "\n\n";
+       exit 129;
+    }
+}
+
+
+# $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);
+
+chdir "..";
+
+exit;
+
+sub execute {
+    my ($c, $op) = @_;
+    #print "option: $op \n";
+    $op = "" if(!$op);
+    print "\n\ncommand to execute: $c \n";
+    $r=system($c);
+    if($r) {
+       print "$!";
+       if($op ne "do_not_exit") {
+           exit;
+       }
+    }
+
+    return $r;
+
+}
index 0033dd165e858b00ab258c075bc6f67df8631e99..ad4f4bfef61947a0fada60d94d8b5c6e1e341235 100644 (file)
@@ -63,6 +63,8 @@ add_file -vhdl -lib work "../../trbnet/special/trb_net_reset_handler.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net_gbe_protocols.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net_gbe_components.vhd"
 
+add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/ipcores_ecp3/serdes_ch4.vhd"
+
 
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_frame_receiver.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_receive_control.vhd"
@@ -85,8 +87,10 @@ add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_lsm_sfp_gbe.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_med_ecp_sfp_gbe_8b.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_frame_trans.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_frame_constr.vhd"
-add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_packet_constr_nologic.vhd"
-add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_ipu2gbe_nologic.vhd"
+#add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_packet_constr_nologic.vhd"
+add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_packet_constr.vhd"
+add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_ipu2gbe.vhd"
+#add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_ipu2gbe_nologic.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/ip_configurator.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_buf.vhd"
 add_file -vhdl -lib work "../../trbnet/gbe2_ecp3/trb_net16_gbe_setup.vhd"
@@ -188,7 +192,7 @@ add_file -vhdl -lib work "../../trbnet/lattice/ecp3/trb_net16_fifo_arch.vhd"
 add_file -vhdl -lib work "../../trbnet/lattice/ecp3/trb_net_fifo_16bit_bram_dualport.vhd"
 
 add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_onboard_full.vhd"
-#add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/sfp_0_200_int.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/sfp_0_200_int.vhd"
 
 add_file -vhdl -lib work "../../trbnet/media_interfaces/trb_net16_lsm_sfp.vhd"
 add_file -vhdl -lib work "../../trbnet/media_interfaces/trb_net16_med_ecp3_sfp.vhd"
index 15cfd0f8f93bcad4df82119649c173bc06a63b58..235710dfa595853b9161102ecd87208b00451ea8 100644 (file)
@@ -252,6 +252,7 @@ signal gsc_init_data, gsc_reply_data : std_logic_vector(15 downto 0);
 signal gsc_init_read, gsc_reply_read : std_logic;
 signal gsc_init_dataready, gsc_reply_dataready : std_logic;
 signal gsc_init_packet_num, gsc_reply_packet_num : std_logic_vector(2 downto 0);
+signal gsc_busy : std_logic;
 signal mc_unique_id : std_logic_vector(63 downto 0);
 
 
@@ -335,8 +336,8 @@ THE_MEDIA_UPLINK : trb_net16_med_ecp3_sfp
    );
 
 
-SFP_TXDIS(4 downto 2) <= (others => '1');
-SFP_TXDIS(8 downto 6) <= (others => '1');
+SFP_TXDIS(7 downto 2) <= (others => '1');
+--SFP_TXDIS(8 downto 6) <= (others => '1');
 
 
 ---------------------------------------------------------------------------
@@ -458,9 +459,10 @@ gen_ethernet_hub : if USE_ETHERNET = c_YES generate
          --IBUF_SECURE_MODE    => c_YES,
          INIT_ADDRESS        => x"F305",
          MII_NUMBER          => 5,
-         MII_IS_UPLINK       => (4 => 1, others => 1),
-         MII_IS_DOWNLINK     => (4 => 0, others => 1),
-         MII_IS_UPLINK_ONLY  => (4 => 1, others => 0),
+         MII_IS_UPLINK       => (4 => 1, 6 => 1, others => 1),
+         MII_IS_DOWNLINK     => (0 => 1, 1 => 1, 2 => 1, 3 => 1, 4 => 1, 5 => 1, others => 1),
+         MII_IS_UPLINK_ONLY  => (6 => 1, others => 0),
+         
          USE_ONEWIRE         => c_YES,
          HARDWARE_VERSION    => x"90000000",
          INIT_ENDPOINT_ID    => x"0005",
@@ -543,6 +545,7 @@ gen_ethernet_hub : if USE_ETHERNET = c_YES generate
     GSC_REPLY_DATA_OUT           => gsc_reply_data,
     GSC_REPLY_PACKET_NUM_OUT     => gsc_reply_packet_num,
     GSC_REPLY_READ_IN            => gsc_reply_read,
+    GSC_BUSY_OUT                 => gsc_busy,
 
   --status and control ports
     HUB_STAT_CHANNEL             => open,
@@ -626,15 +629,15 @@ gen_ethernet_hub : if USE_ETHERNET = c_YES generate
            FEE_STATUS_BITS_IN          => fee_status_bits,
            FEE_BUSY_IN                 => fee_busy,
          --SFP   Connection
-         SFP_RXD_P_IN                => SFP_RX_P(5),
-         SFP_RXD_N_IN                => SFP_RX_N(5),
-         SFP_TXD_P_OUT               => SFP_TX_P(5),
-         SFP_TXD_N_OUT               => SFP_TX_N(5),
+         SFP_RXD_P_IN                => SFP_RX_P(8),
+         SFP_RXD_N_IN                => SFP_RX_N(8),
+         SFP_TXD_P_OUT               => SFP_TX_P(8),
+         SFP_TXD_N_OUT               => SFP_TX_N(8),
          SFP_REFCLK_P_IN             => open, --SFP_REFCLKP(2),
          SFP_REFCLK_N_IN             => open, --SFP_REFCLKN(2),
-         SFP_PRSNT_N_IN              => SFP_MOD0(5), -- SFP Present ('0' = SFP in place, '1' = no SFP mounted)
-         SFP_LOS_IN                  => SFP_LOS(5), -- SFP Loss Of Signal ('0' = OK, '1' = no signal)
-         SFP_TXDIS_OUT               => SFP_TXDIS(5),  -- SFP disable
+         SFP_PRSNT_N_IN              => SFP_MOD0(8), -- SFP Present ('0' = SFP in place, '1' = no SFP mounted)
+         SFP_LOS_IN                  => SFP_LOS(8), -- SFP Loss Of Signal ('0' = OK, '1' = no signal)
+         SFP_TXDIS_OUT               => SFP_TXDIS(8),  -- SFP disable
 
        -- interface between main_controller and hub logic
        MC_UNIQUE_ID_IN          => mc_unique_id,
@@ -647,6 +650,7 @@ gen_ethernet_hub : if USE_ETHERNET = c_YES generate
        GSC_REPLY_DATA_IN        => gsc_reply_data,
        GSC_REPLY_PACKET_NUM_IN  => gsc_reply_packet_num,
        GSC_REPLY_READ_OUT       => gsc_reply_read,
+       GSC_BUSY_IN              => gsc_busy,
 
          --for simulation of receiving part only
          MAC_RX_EOF_IN         => '0',
@@ -883,4 +887,4 @@ LED_YELLOW <= link_ok; --debug(3);
     end process;
 
 
-end architecture;
\ No newline at end of file
+end architecture;
diff --git a/trb3_gbe/trb3_central_constraints.lpf b/trb3_gbe/trb3_central_constraints.lpf
new file mode 100644 (file)
index 0000000..46894e2
--- /dev/null
@@ -0,0 +1,82 @@
+BLOCK RESETPATHS ;
+BLOCK ASYNCPATHS ;
+BLOCK RD_DURING_WR_PATHS ;
+
+#################################################################
+# Basic Settings
+#################################################################
+
+  SYSCONFIG MCCLK_FREQ = 20;
+
+  FREQUENCY PORT CLK_PCLK_RIGHT 200 MHz;
+  FREQUENCY PORT CLK_PCLK_LEFT  200 MHz;
+  FREQUENCY PORT CLK_GPLL_RIGHT 125 MHz;
+  FREQUENCY PORT CLK_GPLL_LEFT  200 MHz;
+  FREQUENCY PORT CLK_EXT_3      10  MHz;
+  FREQUENCY PORT CLK_EXT_4      10  MHz;
+  
+#################################################################
+# Reset Nets
+#################################################################  
+GSR_NET NET "GSR_N";  
+
+
+#################################################################
+# Locate Serdes and media interfaces
+#################################################################
+LOCATE COMP   "THE_MEDIA_UPLINK/gen_serdes_0_200_THE_SERDES/PCSD_INST" SITE "PCSA" ;
+LOCATE COMP   "THE_MEDIA_ONBOARD/THE_SERDES/PCSD_INST" SITE "PCSC" ;
+LOCATE COMP   "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/clk_int_SERDES_GBE/PCSD_INST" SITE "PCSB";
+
+
+REGION "MEDIA_UPLINK" "R98C95" 17 27;
+LOCATE UGROUP "THE_MEDIA_UPLINK/media_interface_group" REGION "MEDIA_UPLINK" ;
+
+REGION "MEDIA_ONBOARD" "R90C122" 25 40;
+LOCATE UGROUP "THE_MEDIA_ONBOARD/media_interface_group" REGION "MEDIA_ONBOARD" ;
+
+
+
+
+FREQUENCY NET "gen_ethernet_hub_GBE/serdes_clk_125"                              125.000000 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/CLK_125_OUT_inferred_clock"                  125.00 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/clk_int_SERDES_GBE/ff_txfullclk"  125.000000 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/clk_int_SERDES_GBE/ff_rxfullclk"  125.000000 MHz ;
+
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/sd_tx_clock"              125.000000 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/sd_rx_clock"              125.000000 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/refclkcore"             125.000000 MHz ;
+
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/CLK_RX_OUT"               125.000000 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/clk_int_SERDES_GBE/CLK_TX_OUT_inferred_clock"  125.000000 MHz ;
+
+FREQUENCY PORT "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/clk_int_SERDES_GBE/PCSC_INST.FF_TX_F_CLK"  125.000000 MHz;
+FREQUENCY PORT "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/clk_int_SERDES_GBE/PCSC_INST.FF_RX_F_CLK"  125.000000 MHz;
+
+
+UGROUP "tsmac" 
+       BLKNAME gen_ethernet_hub_GBE/imp_gen_MAC
+       BLKNAME gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES
+       BLKNAME gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/SGMII_GBE_PCS
+       BLKNAME gen_ethernet_hub_GBE/FRAME_RECEIVER
+       BLKNAME gen_ethernet_hub_GBE/FRAME_TRANSMITTER;
+UGROUP "controllers" 
+       BLKNAME gen_ethernet_hub_GBE/MAIN_CONTROL
+       BLKNAME gen_ethernet_hub_GBE/RECEIVE_CONTROLLER
+       BLKNAME gen_ethernet_hub_GBE/TRANSMIT_CONTROLLER;
+UGROUP "gbe_rx_tx" 
+       BLKNAME gen_ethernet_hub_GBE/FRAME_CONSTRUCTOR
+       BLKNAME gen_ethernet_hub_GBE/MB_IP_CONFIG
+       BLKNAME gen_ethernet_hub_GBE/THE_IP_CONFIGURATOR
+       #BLKNAME gen_ethernet_hub_GBE/PACKET_CONSTRUCTOR
+       #BLKNAME gen_ethernet_hub_GBE/THE_IPU_INTERFACE
+       BLKNAME gen_ethernet_hub_GBE/setup_imp_gen_SETUP;
+
+REGION "GBE_REGION" "R40C2D" 35 40 DEVSIZE;
+REGION "MED0" "R75C2D" 30 28 DEVSIZE;
+LOCATE UGROUP "gbe_rx_tx" REGION "GBE_REGION" ;
+FREQUENCY NET "gen_ethernet_hub_GBE/imp_gen_serdes_intclk_gen_PCS_SERDES/un1_PCS_SERDES_1" 125.000000 MHz ;
+FREQUENCY NET "gen_ethernet_hub_GBE/serdes_clk_125_c" 125.000000 MHz ;
+REGION "GBE_MAIN_REGION" "R74C30C" 38 31 DEVSIZE;
+LOCATE UGROUP "controllers" REGION "GBE_MAIN_REGION" ;
+LOCATE UGROUP "tsmac" REGION "MED0" ;
\ No newline at end of file
diff --git a/trb3_gbe/trb3_gbe.lpf b/trb3_gbe/trb3_gbe.lpf
new file mode 100644 (file)
index 0000000..325063a
--- /dev/null
@@ -0,0 +1,2 @@
+BLOCK RESETPATHS;
+BLOCK ASYNCPATHS;