From cf51893704bd11219d2681651d6a4682dbe8fed8 Mon Sep 17 00:00:00 2001 From: hadeshyp Date: Thu, 3 May 2012 12:40:38 +0000 Subject: [PATCH] *** empty log message *** --- trb3_gbe/compile_central_gsi.pl | 154 ++++++++++++++++++++++++++ trb3_gbe/trb3_central.prj | 10 +- trb3_gbe/trb3_central.vhd | 30 ++--- trb3_gbe/trb3_central_constraints.lpf | 82 ++++++++++++++ trb3_gbe/trb3_gbe.lpf | 2 + 5 files changed, 262 insertions(+), 16 deletions(-) create mode 100755 trb3_gbe/compile_central_gsi.pl create mode 100644 trb3_gbe/trb3_central_constraints.lpf create mode 100644 trb3_gbe/trb3_gbe.lpf diff --git a/trb3_gbe/compile_central_gsi.pl b/trb3_gbe/compile_central_gsi.pl new file mode 100755 index 0000000..e9bb84d --- /dev/null +++ b/trb3_gbe/compile_central_gsi.pl @@ -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 <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; + +} diff --git a/trb3_gbe/trb3_central.prj b/trb3_gbe/trb3_central.prj index 0033dd1..ad4f4bf 100644 --- a/trb3_gbe/trb3_central.prj +++ b/trb3_gbe/trb3_central.prj @@ -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" diff --git a/trb3_gbe/trb3_central.vhd b/trb3_gbe/trb3_central.vhd index 15cfd0f..235710d 100644 --- a/trb3_gbe/trb3_central.vhd +++ b/trb3_gbe/trb3_central.vhd @@ -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 index 0000000..46894e2 --- /dev/null +++ b/trb3_gbe/trb3_central_constraints.lpf @@ -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 index 0000000..325063a --- /dev/null +++ b/trb3_gbe/trb3_gbe.lpf @@ -0,0 +1,2 @@ +BLOCK RESETPATHS; +BLOCK ASYNCPATHS; -- 2.43.0