diff options
Diffstat (limited to 'fpga/usrp3/top/x300/sim/x300_tb.v')
-rw-r--r-- | fpga/usrp3/top/x300/sim/x300_tb.v | 848 |
1 files changed, 0 insertions, 848 deletions
diff --git a/fpga/usrp3/top/x300/sim/x300_tb.v b/fpga/usrp3/top/x300/sim/x300_tb.v deleted file mode 100644 index cd98f33b3..000000000 --- a/fpga/usrp3/top/x300/sim/x300_tb.v +++ /dev/null @@ -1,848 +0,0 @@ -`timescale 1ps / 1ps - -module x300_tb(); - - /////////////////// START FROM XILINX TB /////////////////////////// - - //*************************************************************************** - // Traffic Gen related parameters - //*************************************************************************** - parameter SIMULATION = "TRUE"; - parameter BL_WIDTH = 10; - parameter PORT_MODE = "BI_MODE"; - parameter DATA_MODE = 4'b0010; - parameter ADDR_MODE = 4'b0011; - parameter TST_MEM_INSTR_MODE = "R_W_INSTR_MODE"; - parameter EYE_TEST = "FALSE"; - // set EYE_TEST = "TRUE" to probe memory - // signals. Traffic Generator will only - // write to one single location and no - // read transactions will be generated. - parameter DATA_PATTERN = "DGEN_ALL"; - // For small devices, choose one only. - // For large device, choose "DGEN_ALL" - // "DGEN_HAMMER", "DGEN_WALKING1", - // "DGEN_WALKING0","DGEN_ADDR"," - // "DGEN_NEIGHBOR","DGEN_PRBS","DGEN_ALL" - parameter CMD_PATTERN = "CGEN_ALL"; - // "CGEN_PRBS","CGEN_FIXED","CGEN_BRAM", - // "CGEN_SEQUENTIAL", "CGEN_ALL" - parameter BEGIN_ADDRESS = 32'h00000000; - parameter END_ADDRESS = 32'h00000fff; - parameter PRBS_EADDR_MASK_POS = 32'hff000000; - parameter SEL_VICTIM_LINE = 11; - - //*************************************************************************** - // The following parameters refer to width of various ports - //*************************************************************************** - parameter BANK_WIDTH = 3; - // # of memory Bank Address bits. - parameter CK_WIDTH = 1; - // # of CK/CK# outputs to memory. - parameter COL_WIDTH = 10; - // # of memory Column Address bits. - parameter CS_WIDTH = 1; - // # of unique CS outputs to memory. - parameter nCS_PER_RANK = 1; - // # of unique CS outputs per rank for phy - parameter CKE_WIDTH = 1; - // # of CKE outputs to memory. - parameter DATA_BUF_ADDR_WIDTH = 5; - parameter DQ_CNT_WIDTH = 5; - // = ceil(log2(DQ_WIDTH)) - parameter DQ_PER_DM = 8; - parameter DM_WIDTH = 4; - // # of DM (data mask) - parameter DQ_WIDTH = 32; - // # of DQ (data) - parameter DQS_WIDTH = 4; - parameter DQS_CNT_WIDTH = 2; - // = ceil(log2(DQS_WIDTH)) - parameter DRAM_WIDTH = 8; - // # of DQ per DQS - parameter ECC = "OFF"; - parameter nBANK_MACHS = 4; - parameter RANKS = 1; - // # of Ranks. - parameter ODT_WIDTH = 1; - // # of ODT outputs to memory. - parameter ROW_WIDTH = 15; - // # of memory Row Address bits. - parameter ADDR_WIDTH = 29; - // # = RANK_WIDTH + BANK_WIDTH - // + ROW_WIDTH + COL_WIDTH; - // Chip Select is always tied to low for - // single rank devices - parameter USE_CS_PORT = 1; - // # = 1, When CS output is enabled - // = 0, When CS output is disabled - // If CS_N disabled, user must connect - // DRAM CS_N input(s) to ground - parameter USE_DM_PORT = 1; - // # = 1, When Data Mask option is enabled - // = 0, When Data Mask option is disbaled - // When Data Mask option is disabled in - // MIG Controller Options page, the logic - // related to Data Mask should not get - // synthesized - parameter USE_ODT_PORT = 1; - // # = 1, When ODT output is enabled - // = 0, When ODT output is disabled - - //*************************************************************************** - // The following parameters are mode register settings - //*************************************************************************** - parameter AL = "0"; - // DDR3 SDRAM: - // Additive Latency (Mode Register 1). - // # = "0", "CL-1", "CL-2". - // DDR2 SDRAM: - // Additive Latency (Extended Mode Register). - parameter nAL = 0; - // # Additive Latency in number of clock - // cycles. - parameter BURST_MODE = "8"; - // DDR3 SDRAM: - // Burst Length (Mode Register 0). - // # = "8", "4", "OTF". - // DDR2 SDRAM: - // Burst Length (Mode Register). - // # = "8", "4". - parameter BURST_TYPE = "SEQ"; - // DDR3 SDRAM: Burst Type (Mode Register 0). - // DDR2 SDRAM: Burst Type (Mode Register). - // # = "SEQ" - (Sequential), - // = "INT" - (Interleaved). - parameter CL = 7; - // in number of clock cycles - // DDR3 SDRAM: CAS Latency (Mode Register 0). - // DDR2 SDRAM: CAS Latency (Mode Register). - parameter CWL = 6; - // in number of clock cycles - // DDR3 SDRAM: CAS Write Latency (Mode Register 2). - // DDR2 SDRAM: Can be ignored - parameter OUTPUT_DRV = "HIGH"; - // Output Driver Impedance Control (Mode Register 1). - // # = "HIGH" - RZQ/7, - // = "LOW" - RZQ/6. - parameter RTT_NOM = "60"; - // RTT_NOM (ODT) (Mode Register 1). - // # = "DISABLED" - RTT_NOM disabled, - // = "120" - RZQ/2, - // = "60" - RZQ/4, - // = "40" - RZQ/6. - parameter RTT_WR = "OFF"; - // RTT_WR (ODT) (Mode Register 2). - // # = "OFF" - Dynamic ODT off, - // = "120" - RZQ/2, - // = "60" - RZQ/4, - parameter ADDR_CMD_MODE = "1T" ; - // # = "1T", "2T". - parameter REG_CTRL = "OFF"; - // # = "ON" - RDIMMs, - // = "OFF" - Components, SODIMMs, UDIMMs. - parameter CA_MIRROR = "OFF"; - // C/A mirror opt for DDR3 dual rank - - //*************************************************************************** - // The following parameters are multiplier and divisor factors for PLLE2. - // Based on the selected design frequency these parameters vary. - //*************************************************************************** - parameter CLKIN_PERIOD = 10000; - // Input Clock Period - parameter CLKFBOUT_MULT = 10; - // write PLL VCO multiplier - parameter DIVCLK_DIVIDE = 1; - // write PLL VCO divisor - parameter CLKOUT0_DIVIDE = 2; - // VCO output divisor for PLL output clock (CLKOUT0) - parameter CLKOUT1_DIVIDE = 2; - // VCO output divisor for PLL output clock (CLKOUT1) - parameter CLKOUT2_DIVIDE = 32; - // VCO output divisor for PLL output clock (CLKOUT2) - parameter CLKOUT3_DIVIDE = 8; - // VCO output divisor for PLL output clock (CLKOUT3) - - //*************************************************************************** - // Memory Timing Parameters. These parameters varies based on the selected - // memory part. - //*************************************************************************** - parameter tCKE = 5000; - // memory tCKE paramter in pS - parameter tFAW = 30000; - // memory tRAW paramter in pS. - parameter tRAS = 35000; - // memory tRAS paramter in pS. - parameter tRCD = 13750; - // memory tRCD paramter in pS. - parameter tREFI = 7800000; - // memory tREFI paramter in pS. - parameter tRFC = 300000; - // memory tRFC paramter in pS. - parameter tRP = 13750; - // memory tRP paramter in pS. - parameter tRRD = 6000; - // memory tRRD paramter in pS. - parameter tRTP = 7500; - // memory tRTP paramter in pS. - parameter tWTR = 7500; - // memory tWTR paramter in pS. - parameter tZQI = 128_000_000; - // memory tZQI paramter in nS. - parameter tZQCS = 64; - // memory tZQCS paramter in clock cycles. - - //*************************************************************************** - // Simulation parameters - //*************************************************************************** - parameter SIM_BYPASS_INIT_CAL = "FAST"; - // # = "SIM_INIT_CAL_FULL" - Complete - // memory init & - // calibration sequence - // # = "SKIP" - Not supported - // # = "FAST" - Complete memory init & use - // abbreviated calib sequence - - //*************************************************************************** - // The following parameters varies based on the pin out entered in MIG GUI. - // Do not change any of these parameters directly by editing the RTL. - // Any changes required should be done through GUI and the design regenerated. - //*************************************************************************** - parameter BYTE_LANES_B0 = 4'b1111; - // Byte lanes used in an IO column. - parameter BYTE_LANES_B1 = 4'b1110; - // Byte lanes used in an IO column. - parameter BYTE_LANES_B2 = 4'b0000; - // Byte lanes used in an IO column. - parameter BYTE_LANES_B3 = 4'b0000; - // Byte lanes used in an IO column. - parameter BYTE_LANES_B4 = 4'b0000; - // Byte lanes used in an IO column. - parameter DATA_CTL_B0 = 4'b1111; - // Indicates Byte lane is data byte lane - // or control Byte lane. '1' in a bit - // position indicates a data byte lane and - // a '0' indicates a control byte lane - parameter DATA_CTL_B1 = 4'b0000; - // Indicates Byte lane is data byte lane - // or control Byte lane. '1' in a bit - // position indicates a data byte lane and - // a '0' indicates a control byte lane - parameter DATA_CTL_B2 = 4'b0000; - // Indicates Byte lane is data byte lane - // or control Byte lane. '1' in a bit - // position indicates a data byte lane and - // a '0' indicates a control byte lane - parameter DATA_CTL_B3 = 4'b0000; - // Indicates Byte lane is data byte lane - // or control Byte lane. '1' in a bit - // position indicates a data byte lane and - // a '0' indicates a control byte lane - parameter DATA_CTL_B4 = 4'b0000; - // Indicates Byte lane is data byte lane - // or control Byte lane. '1' in a bit - // position indicates a data byte lane and - // a '0' indicates a control byte lane - parameter PHY_0_BITLANES = 48'h3FE_3FE_3FE_2FF; - parameter PHY_1_BITLANES = 48'h3FF_FFF_C00_000; - parameter PHY_2_BITLANES = 48'h000_000_000_000; - - // control/address/data pin mapping parameters - parameter CK_BYTE_MAP - = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13; - parameter ADDR_MAP - = 192'h000_139_138_137_136_135_134_133_132_131_130_129_128_127_126_12B; - parameter BANK_MAP = 36'h12A_125_124; - parameter CAS_MAP = 12'h122; - parameter CKE_ODT_BYTE_MAP = 8'h00; - parameter CKE_MAP = 96'h000_000_000_000_000_000_000_11B; - parameter ODT_MAP = 96'h000_000_000_000_000_000_000_11A; - parameter CS_MAP = 120'h000_000_000_000_000_000_000_000_000_120; - parameter PARITY_MAP = 12'h000; - parameter RAS_MAP = 12'h123; - parameter WE_MAP = 12'h121; - parameter DQS_BYTE_MAP - = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_02_03; - parameter DATA0_MAP = 96'h031_032_033_034_035_036_037_038; - parameter DATA1_MAP = 96'h021_022_023_024_025_026_027_028; - parameter DATA2_MAP = 96'h011_012_013_014_015_016_017_018; - parameter DATA3_MAP = 96'h000_001_002_003_004_005_006_007; - parameter DATA4_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA5_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA6_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA7_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA8_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA9_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA10_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA11_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA12_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA13_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA14_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA15_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA16_MAP = 96'h000_000_000_000_000_000_000_000; - parameter DATA17_MAP = 96'h000_000_000_000_000_000_000_000; - parameter MASK0_MAP = 108'h000_000_000_000_000_009_019_029_039; - parameter MASK1_MAP = 108'h000_000_000_000_000_000_000_000_000; - - parameter SLOT_0_CONFIG = 8'b0000_0001; - // Mapping of Ranks. - parameter SLOT_1_CONFIG = 8'b0000_0000; - // Mapping of Ranks. - parameter MEM_ADDR_ORDER - = "BANK_ROW_COLUMN"; - - //*************************************************************************** - // IODELAY and PHY related parameters - //*************************************************************************** - parameter IODELAY_HP_MODE = "ON"; - // to phy_top - parameter IBUF_LPWR_MODE = "OFF"; - // to phy_top - parameter DATA_IO_IDLE_PWRDWN = "ON"; - // # = "ON", "OFF" - parameter DATA_IO_PRIM_TYPE = "HP_LP"; - // # = "HP_LP", "HR_LP", "DEFAULT" - parameter USER_REFRESH = "OFF"; - parameter WRLVL = "ON"; - // # = "ON" - DDR3 SDRAM - // = "OFF" - DDR2 SDRAM. - parameter ORDERING = "NORM"; - // # = "NORM", "STRICT", "RELAXED". - parameter CALIB_ROW_ADD = 16'h0000; - // Calibration row address will be used for - // calibration read and write operations - parameter CALIB_COL_ADD = 12'h000; - // Calibration column address will be used for - // calibration read and write operations - parameter CALIB_BA_ADD = 3'h0; - // Calibration bank address will be used for - // calibration read and write operations - parameter TCQ = 100; - //*************************************************************************** - // IODELAY and PHY related parameters - //*************************************************************************** - parameter IODELAY_GRP = "IODELAY_MIG"; - // It is associated to a set of IODELAYs with - // an IDELAYCTRL that have same IODELAY CONTROLLER - // clock frequency. - parameter SYSCLK_TYPE = "SINGLE_ENDED"; - // System clock type DIFFERENTIAL, SINGLE_ENDED, - // NO_BUFFER - parameter REFCLK_TYPE = "NO_BUFFER"; - // Reference clock type DIFFERENTIAL, SINGLE_ENDED, - // NO_BUFFER, USE_SYSTEM_CLOCK - parameter RST_ACT_LOW = 1; - // =1 for active low reset, - // =0 for active high. - parameter CAL_WIDTH = "HALF"; - parameter STARVE_LIMIT = 2; - // # = 2,3,4. - - //*************************************************************************** - // Referece clock frequency parameters - //*************************************************************************** - parameter REFCLK_FREQ = 200.0; - // IODELAYCTRL reference clock frequency - //*************************************************************************** - // System clock frequency parameters - //*************************************************************************** - parameter tCK = 2000; - // memory tCK paramter. - // # = Clock Period in pS. - parameter nCK_PER_CLK = 4; - // # of memory CKs per fabric CLK - - - //*************************************************************************** - // AXI4 Shim parameters - //*************************************************************************** - parameter C_S_AXI_ID_WIDTH = 4; - // Width of all master and slave ID signals. - // # = >= 1. - parameter C_S_AXI_ADDR_WIDTH = 32; - // Width of S_AXI_AWADDR, S_AXI_ARADDR, M_AXI_AWADDR and - // M_AXI_ARADDR for all SI/MI slots. - // # = 32. - parameter C_S_AXI_DATA_WIDTH = 128; - // Width of WDATA and RDATA on SI slot. - // Must be <= APP_DATA_WIDTH. - // # = 32, 64, 128, 256. - parameter C_MC_nCK_PER_CLK = 4; - // Indicates whether to instatiate upsizer - // Range: 0, 1 - parameter C_S_AXI_SUPPORTS_NARROW_BURST = 1; - // Indicates whether to instatiate upsizer - // Range: 0, 1 - parameter C_RD_WR_ARB_ALGORITHM = "ROUND_ROBIN"; - // Indicates the Arbitration - // Allowed values - "TDM", "ROUND_ROBIN", - // "RD_PRI_REG", "RD_PRI_REG_STARVE_LIMIT" - parameter C_S_AXI_REG_EN0 = 20'h00000; - // C_S_AXI_REG_EN0[00] = Reserved - // C_S_AXI_REG_EN0[04] = AW CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN0[05] = W CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN0[06] = B CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN0[07] = R CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN0[08] = AW CHANNEL UPSIZER REGISTER SLICE - // C_S_AXI_REG_EN0[09] = W CHANNEL UPSIZER REGISTER SLICE - // C_S_AXI_REG_EN0[10] = AR CHANNEL UPSIZER REGISTER SLICE - // C_S_AXI_REG_EN0[11] = R CHANNEL UPSIZER REGISTER SLICE - parameter C_S_AXI_REG_EN1 = 20'h00000; - // Instatiates register slices after the upsizer. - // The type of register is specified for each channel - // in a vector. 4 bits per channel are used. - // C_S_AXI_REG_EN1[03:00] = AW CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN1[07:04] = W CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN1[11:08] = B CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN1[15:12] = AR CHANNEL REGISTER SLICE - // C_S_AXI_REG_EN1[20:16] = R CHANNEL REGISTER SLICE - // Possible values for each channel are: - // - // 0 => BYPASS = The channel is just wired through the - // module. - // 1 => FWD = The master VALID and payload signals - // are registrated. - // 2 => REV = The slave ready signal is registrated - // 3 => FWD_REV = Both FWD and REV - // 4 => SLAVE_FWD = All slave side signals and master - // VALID and payload are registrated. - // 5 => SLAVE_RDY = All slave side signals and master - // READY are registrated. - // 6 => INPUTS = Slave and Master side inputs are - // registrated. - // 7 => ADDRESS = Optimized for address channel - - //*************************************************************************** - // Debug and Internal parameters - //*************************************************************************** - parameter DEBUG_PORT = "OFF"; - // # = "ON" Enable debug signals/controls. - // = "OFF" Disable debug signals/controls. - //*************************************************************************** - // Debug and Internal parameters - //*************************************************************************** - parameter DRAM_TYPE = "DDR3"; - - - - //**************************************************************************// - // Local parameters Declarations - //**************************************************************************// - - localparam real TPROP_DQS = 0.00; - // Delay for DQS signal during Write Operation - localparam real TPROP_DQS_RD = 0.00; - // Delay for DQS signal during Read Operation - localparam real TPROP_PCB_CTRL = 0.00; - // Delay for Address and Ctrl signals - localparam real TPROP_PCB_DATA = 0.00; - // Delay for data signal during Write operation - localparam real TPROP_PCB_DATA_RD = 0.00; - // Delay for data signal during Read operation - - localparam MEMORY_WIDTH = 16; - localparam NUM_COMP = DQ_WIDTH/MEMORY_WIDTH; - - localparam real REFCLK_PERIOD = (1000000.0/(2*REFCLK_FREQ)); - localparam RESET_PERIOD = 200000; //in pSec - localparam real SYSCLK_PERIOD = tCK; - - ///////////////// END FROM XILINX TB ////////////////////////////////////////// - - wire [31:0] ddr3_dq; // Data pins. Input for Reads, Output for Writes. - wire [3:0] ddr3_dqs_n; // Data Strobes. Input for Reads, Output for Writes. - wire [3:0] ddr3_dqs_p; - wire [14:0] ddr3_addr; // Address - wire [2:0] ddr3_ba; // Bank Address - wire ddr3_ras_n; // Row Address Strobe. - wire ddr3_cas_n; // Column address select - wire ddr3_we_n; // Write Enable - wire ddr3_reset_n; // SDRAM reset pin. - wire ddr3_ck_p; // Differential clock - wire ddr3_ck_n; - wire ddr3_cke; // Clock Enable - wire ddr3_cs_n; // Chip Select - wire [3:0] ddr3_dm; // Data Mask [3] = UDM.U26, [2] = LDM.U26, ... - wire ddr3_odt; // On-Die termination enable. - reg sys_clk_i; // 100MHz clock source to generate DDR3 clocking. - reg FPGA_CLK_p, FPGA_CLK_n; - reg FPGA_125MHz_CLK; - - /////////////////////////////////////////////////////////// - // - // 120MHz differential clock source - // - /////////////////////////////////////////////////////////// - initial - begin - FPGA_CLK_p <= 0; - FPGA_CLK_n <= 1; - end - - always #4000 begin - FPGA_CLK_p <= ~FPGA_CLK_p; - FPGA_CLK_n <= ~FPGA_CLK_n; - end - - - /////////////////////////////////////////////////////////// - // - // 125MHz clock source - // - /////////////////////////////////////////////////////////// - initial FPGA_125MHz_CLK <= 0; - - always #4000 FPGA_125MHz_CLK <= ~FPGA_125MHz_CLK; - - /////////////////////////////////////////////////////////// - // - // 100MHz clock source for DDR3 - // - /////////////////////////////////////////////////////////// - initial - sys_clk_i <= 0; - - always #5000 sys_clk_i = ~sys_clk_i; - - /////////////////////////////////////////////////////////// - // - // 2x 4Gb DDR3 SDRAMS x16 - // - /////////////////////////////////////////////////////////// - - ddr3_model sdram0 ( - .rst_n(ddr3_reset_n), - .ck(ddr3_ck_p), - .ck_n(ddr3_ck_n), - .cke(ddr3_cke), - .cs_n(ddr3_cs_n), - .ras_n(ddr3_ras_n), - .cas_n(ddr3_cas_n), - .we_n(ddr3_we_n), - .dm_tdqs(ddr3_dm[1:0]), - .ba(ddr3_ba), - .addr(ddr3_addr), - .dq(ddr3_dq[15:0]), - .dqs(ddr3_dqs_p[1:0]), - .dqs_n(ddr3_dqs_n[1:0]), - .tdqs_n(), // Unused on x16 - .odt(ddr3_odt) - ); - - ddr3_model sdram1 ( - .rst_n(ddr3_reset_n), - .ck(ddr3_ck_p), - .ck_n(ddr3_ck_n), - .cke(ddr3_cke), - .cs_n(ddr3_cs_n), - .ras_n(ddr3_ras_n), - .cas_n(ddr3_cas_n), - .we_n(ddr3_we_n), - .dm_tdqs(ddr3_dm[3:2]), - .ba(ddr3_ba), - .addr(ddr3_addr), - .dq(ddr3_dq[31:16]), - .dqs(ddr3_dqs_p[3:2]), - .dqs_n(ddr3_dqs_n[3:2]), - .tdqs_n(), // Unused on x16 - .odt(ddr3_odt) - ); - - /////////////////////////////////////////////////////////// - // - // DUT - // - /////////////////////////////////////////////////////////// - - x300 # - ( - - .SIMULATION (SIMULATION), - .BL_WIDTH (BL_WIDTH), - .PORT_MODE (PORT_MODE), - .DATA_MODE (DATA_MODE), - .ADDR_MODE (ADDR_MODE), - .TST_MEM_INSTR_MODE (TST_MEM_INSTR_MODE), - .EYE_TEST (EYE_TEST), - .DATA_PATTERN (DATA_PATTERN), - .CMD_PATTERN (CMD_PATTERN), - .BEGIN_ADDRESS (BEGIN_ADDRESS), - .END_ADDRESS (END_ADDRESS), - .PRBS_EADDR_MASK_POS (PRBS_EADDR_MASK_POS), - .SEL_VICTIM_LINE (SEL_VICTIM_LINE), - - .BANK_WIDTH (BANK_WIDTH), - .CK_WIDTH (CK_WIDTH), - .COL_WIDTH (COL_WIDTH), - .CS_WIDTH (CS_WIDTH), - .nCS_PER_RANK (nCS_PER_RANK), - .CKE_WIDTH (CKE_WIDTH), - .DATA_BUF_ADDR_WIDTH (DATA_BUF_ADDR_WIDTH), - .DQ_CNT_WIDTH (DQ_CNT_WIDTH), - .DQ_PER_DM (DQ_PER_DM), - .DM_WIDTH (DM_WIDTH), - - .DQ_WIDTH (DQ_WIDTH), - .DQS_WIDTH (DQS_WIDTH), - .DQS_CNT_WIDTH (DQS_CNT_WIDTH), - .DRAM_WIDTH (DRAM_WIDTH), - .ECC (ECC), - .nBANK_MACHS (nBANK_MACHS), - .RANKS (RANKS), - .ODT_WIDTH (ODT_WIDTH), - .ROW_WIDTH (ROW_WIDTH), - .ADDR_WIDTH (ADDR_WIDTH), - .USE_CS_PORT (USE_CS_PORT), - .USE_DM_PORT (USE_DM_PORT), - .USE_ODT_PORT (USE_ODT_PORT), - - .AL (AL), - .nAL (nAL), - .BURST_MODE (BURST_MODE), - .BURST_TYPE (BURST_TYPE), - .CL (CL), - .CWL (CWL), - .OUTPUT_DRV (OUTPUT_DRV), - .RTT_NOM (RTT_NOM), - .RTT_WR (RTT_WR), - .ADDR_CMD_MODE (ADDR_CMD_MODE), - .REG_CTRL (REG_CTRL), - .CA_MIRROR (CA_MIRROR), - - - .CLKIN_PERIOD (CLKIN_PERIOD), - .CLKFBOUT_MULT (CLKFBOUT_MULT), - .DIVCLK_DIVIDE (DIVCLK_DIVIDE), - .CLKOUT0_DIVIDE (CLKOUT0_DIVIDE), - .CLKOUT1_DIVIDE (CLKOUT1_DIVIDE), - .CLKOUT2_DIVIDE (CLKOUT2_DIVIDE), - .CLKOUT3_DIVIDE (CLKOUT3_DIVIDE), - - - .tCKE (tCKE), - .tFAW (tFAW), - .tRAS (tRAS), - .tRCD (tRCD), - .tREFI (tREFI), - .tRFC (tRFC), - .tRP (tRP), - .tRRD (tRRD), - .tRTP (tRTP), - .tWTR (tWTR), - .tZQI (tZQI), - .tZQCS (tZQCS), - - .SIM_BYPASS_INIT_CAL (SIM_BYPASS_INIT_CAL), - - .BYTE_LANES_B0 (BYTE_LANES_B0), - .BYTE_LANES_B1 (BYTE_LANES_B1), - .BYTE_LANES_B2 (BYTE_LANES_B2), - .BYTE_LANES_B3 (BYTE_LANES_B3), - .BYTE_LANES_B4 (BYTE_LANES_B4), - .DATA_CTL_B0 (DATA_CTL_B0), - .DATA_CTL_B1 (DATA_CTL_B1), - .DATA_CTL_B2 (DATA_CTL_B2), - .DATA_CTL_B3 (DATA_CTL_B3), - .DATA_CTL_B4 (DATA_CTL_B4), - .PHY_0_BITLANES (PHY_0_BITLANES), - .PHY_1_BITLANES (PHY_1_BITLANES), - .PHY_2_BITLANES (PHY_2_BITLANES), - .CK_BYTE_MAP (CK_BYTE_MAP), - .ADDR_MAP (ADDR_MAP), - .BANK_MAP (BANK_MAP), - .CAS_MAP (CAS_MAP), - .CKE_ODT_BYTE_MAP (CKE_ODT_BYTE_MAP), - .CKE_MAP (CKE_MAP), - .ODT_MAP (ODT_MAP), - .CS_MAP (CS_MAP), - .PARITY_MAP (PARITY_MAP), - .RAS_MAP (RAS_MAP), - .WE_MAP (WE_MAP), - .DQS_BYTE_MAP (DQS_BYTE_MAP), - .DATA0_MAP (DATA0_MAP), - .DATA1_MAP (DATA1_MAP), - .DATA2_MAP (DATA2_MAP), - .DATA3_MAP (DATA3_MAP), - .DATA4_MAP (DATA4_MAP), - .DATA5_MAP (DATA5_MAP), - .DATA6_MAP (DATA6_MAP), - .DATA7_MAP (DATA7_MAP), - .DATA8_MAP (DATA8_MAP), - .DATA9_MAP (DATA9_MAP), - .DATA10_MAP (DATA10_MAP), - .DATA11_MAP (DATA11_MAP), - .DATA12_MAP (DATA12_MAP), - .DATA13_MAP (DATA13_MAP), - .DATA14_MAP (DATA14_MAP), - .DATA15_MAP (DATA15_MAP), - .DATA16_MAP (DATA16_MAP), - .DATA17_MAP (DATA17_MAP), - .MASK0_MAP (MASK0_MAP), - .MASK1_MAP (MASK1_MAP), - .SLOT_0_CONFIG (SLOT_0_CONFIG), - .SLOT_1_CONFIG (SLOT_1_CONFIG), - .MEM_ADDR_ORDER (MEM_ADDR_ORDER), - - .IODELAY_HP_MODE (IODELAY_HP_MODE), - .IBUF_LPWR_MODE (IBUF_LPWR_MODE), - .DATA_IO_IDLE_PWRDWN (DATA_IO_IDLE_PWRDWN), - .DATA_IO_PRIM_TYPE (DATA_IO_PRIM_TYPE), - .USER_REFRESH (USER_REFRESH), - .WRLVL (WRLVL), - .ORDERING (ORDERING), - .CALIB_ROW_ADD (CALIB_ROW_ADD), - .CALIB_COL_ADD (CALIB_COL_ADD), - .CALIB_BA_ADD (CALIB_BA_ADD), - .TCQ (TCQ), - - - .IODELAY_GRP (IODELAY_GRP), - .SYSCLK_TYPE (SYSCLK_TYPE), - .REFCLK_TYPE (REFCLK_TYPE), - .DRAM_TYPE (DRAM_TYPE), - .CAL_WIDTH (CAL_WIDTH), - .STARVE_LIMIT (STARVE_LIMIT), - - - .REFCLK_FREQ (REFCLK_FREQ), - - - .tCK (tCK), - .nCK_PER_CLK (nCK_PER_CLK), - - - .C_S_AXI_ID_WIDTH (C_S_AXI_ID_WIDTH), - .C_S_AXI_ADDR_WIDTH (C_S_AXI_ADDR_WIDTH), - .C_S_AXI_DATA_WIDTH (C_S_AXI_DATA_WIDTH), - .C_MC_nCK_PER_CLK (C_MC_nCK_PER_CLK), - .C_S_AXI_SUPPORTS_NARROW_BURST (C_S_AXI_SUPPORTS_NARROW_BURST), - .C_RD_WR_ARB_ALGORITHM (C_RD_WR_ARB_ALGORITHM), - .C_S_AXI_REG_EN0 (C_S_AXI_REG_EN0), - .C_S_AXI_REG_EN1 (C_S_AXI_REG_EN1), - - .DEBUG_PORT (DEBUG_PORT), - - .RST_ACT_LOW (RST_ACT_LOW) - ) - -x300 ( - .FPGA_CLK_p(FPGA_CLK_p), - .FPGA_CLK_n(FPGA_CLK_n), - .FPGA_125MHz_CLK(FPGA_125MHz_CLK), - // 1Gb SFP signals - .SFP_CLK_AC_p(), - .SFP_CLK_AC_n(), - .SFP_RX_p(), - .SFP_RX_n(), - .SFP_TX_p(), - .SFP_TX_n(), - // DDR3 I/F - .ddr3_addr(ddr3_addr), - .ddr3_ba(ddr3_ba), - .ddr3_ras_n(ddr3_ras_n), - .ddr3_cas_n(ddr3_cas_n), - .ddr3_we_n(ddr3_we_n), - .ddr3_reset_n(ddr3_reset_n), - .ddr3_ck_p(ddr3_ck_p), - .ddr3_ck_n(ddr3_ck_n), - .ddr3_cke(ddr3_cke), - .ddr3_cs_n(ddr3_cs_n), - .ddr3_dm(ddr3_dm), - .ddr3_odt(ddr3_odt), - .ddr3_dq(ddr3_dq), - .ddr3_dqs_n(ddr3_dqs_n), - .ddr3_dqs_p(ddr3_dqs_p), - .sys_clk_i(sys_clk_i), - // ADC0 - .DB0_ADC_DCLK_P(), .DB0_ADC_DCLK_N(), - .DB0_ADC_DA0_P(), .DB0_ADC_DA0_N(), .DB0_ADC_DB0_P(), .DB0_ADC_DB0_N(), - .DB0_ADC_DA1_P(), .DB0_ADC_DA1_N(), .DB0_ADC_DB1_P(), .DB0_ADC_DB1_N(), - .DB0_ADC_DA2_P(), .DB0_ADC_DA2_N(), .DB0_ADC_DB2_P(), .DB0_ADC_DB2_N(), - .DB0_ADC_DA3_P(), .DB0_ADC_DA3_N(), .DB0_ADC_DB3_P(), .DB0_ADC_DB3_N(), - .DB0_ADC_DA4_P(), .DB0_ADC_DA4_N(), .DB0_ADC_DB4_P(), .DB0_ADC_DB4_N(), - .DB0_ADC_DA5_P(), .DB0_ADC_DA5_N(), .DB0_ADC_DB5_P(), .DB0_ADC_DB5_N(), - .DB0_ADC_DA6_P(), .DB0_ADC_DA6_N(), .DB0_ADC_DB6_P(), .DB0_ADC_DB6_N(), - - // ADC1 - - .DB1_ADC_DCLK_P(), .DB1_ADC_DCLK_N(), - .DB1_ADC_DA0_P(), .DB1_ADC_DA0_N(), .DB1_ADC_DB0_P(), .DB1_ADC_DB0_N(), - .DB1_ADC_DA1_P(), .DB1_ADC_DA1_N(), .DB1_ADC_DB1_P(), .DB1_ADC_DB1_N(), - .DB1_ADC_DA2_P(), .DB1_ADC_DA2_N(), .DB1_ADC_DB2_P(), .DB1_ADC_DB2_N(), - .DB1_ADC_DA3_P(), .DB1_ADC_DA3_N(), .DB1_ADC_DB3_P(), .DB1_ADC_DB3_N(), - .DB1_ADC_DA4_P(), .DB1_ADC_DA4_N(), .DB1_ADC_DB4_P(), .DB1_ADC_DB4_N(), - .DB1_ADC_DA5_P(), .DB1_ADC_DA5_N(), .DB1_ADC_DB5_P(), .DB1_ADC_DB5_N(), - .DB1_ADC_DA6_P(), .DB1_ADC_DA6_N(), .DB1_ADC_DB6_P(), .DB1_ADC_DB6_N(), - - // DAC0 - .DB0_DAC_DCI_P(), .DB0_DAC_DCI_N(), - .DB0_DAC_FRAME_P(), .DB0_DAC_FRAME_N(), - .DB0_DAC_D0_P(), .DB0_DAC_D0_N(), .DB0_DAC_D1_P(), .DB0_DAC_D1_N(), - .DB0_DAC_D2_P(), .DB0_DAC_D2_N(), .DB0_DAC_D3_P(), .DB0_DAC_D3_N(), - .DB0_DAC_D4_P(), .DB0_DAC_D4_N(), .DB0_DAC_D5_P(), .DB0_DAC_D5_N(), - .DB0_DAC_D6_P(), .DB0_DAC_D6_N(), .DB0_DAC_D7_P(), .DB0_DAC_D7_N(), - .DB0_DAC_ENABLE(), - - // DAC1 - .DB1_DAC_DCI_P(), .DB1_DAC_DCI_N(), - .DB1_DAC_FRAME_P(), .DB1_DAC_FRAME_N(), - .DB1_DAC_D0_P(), .DB1_DAC_D0_N(), .DB1_DAC_D1_P(), .DB1_DAC_D1_N(), - .DB1_DAC_D2_P(), .DB1_DAC_D2_N(), .DB1_DAC_D3_P(), .DB1_DAC_D3_N(), - .DB1_DAC_D4_P(), .DB1_DAC_D4_N(), .DB1_DAC_D5_P(), .DB1_DAC_D5_N(), - .DB1_DAC_D6_P(), .DB1_DAC_D6_N(), .DB1_DAC_D7_P(), .DB1_DAC_D7_N(), - .DB1_DAC_ENABLE(), - - // Daughter Board 0 - SPI - .DB0_SCLK(), .DB0_MOSI(), - .DB0_ADC_SEN(), .DB0_DAC_SEN(), .DB0_TX_SEN(), .DB0_RX_SEN(), - .DB0_RX_LSADC_SEN(), .DB0_RX_LSDAC_SEN(), .DB0_TX_LSADC_SEN(), .DB0_TX_LSDAC_SEN(), - .DB0_RX_LSADC_MISO(), .DB0_RX_MISO(), .DB0_TX_LSADC_MISO(), .DB0_TX_MISO(), - - // Daughter Board1 - SPI - .DB1_SCLK(), .DB1_MOSI(), - .DB1_ADC_SEN(), .DB1_DAC_SEN(), .DB1_TX_SEN(), .DB1_RX_SEN(), - .DB1_RX_LSADC_SEN(), .DB1_RX_LSDAC_SEN(), .DB1_TX_LSADC_SEN(), .DB1_TX_LSDAC_SEN(), - .DB1_RX_LSADC_MISO(), .DB1_RX_MISO(), .DB1_TX_LSADC_MISO(), .DB1_TX_MISO(), - - // DaughterBoard - .DB_DAC_SCLK(), .DB_DAC_MOSI(), - .DB_ADC_RESET(), .DB_DAC_RESET(), - - // SFP+ I2C - .SFPP_SCL(), .SFPP_SDA(), - - // Debug - .DebugClkIn(), - .DebugClkOut(), - .DebugIo(), - - // Front Panel - .FrontPanelGpio(), - .LED_ACT(), .LED_LINK(), - .LED_PPS(), .LED_REFLOCK(), - .LED_RX1_RX(), .LED_RX2_RX(), - .LED_TXRX1_RX(), .LED_TXRX1_TX(), - .LED_TXRX2_RX(), .LED_TXRX2_TX(), - - // GPIO - .DB0_TX_IO(), - .DB0_RX_IO(), - .DB1_TX_IO(), - .DB1_RX_IO(), - - // Clocking - .AD9510Status(), .AD9510Function(), - .AD9510_SEN(), .AD9510_MOSI(), .AD9510_SCLK(), .AD9510_MISO(), - .ClockRefSelect(), - .GPS_SER_IN(), .GPS_SER_OUT(), - .GPS_PPS_OUT(), .EXT_PPS_IN(), - .MIMO_TIME_IN_P(), .MIMO_TIME_IN_N(), - .MIMO_TIME_OUT_P(), .MIMO_TIME_OUT_N(), - - // SFP+ contorl/status - .SFPP_ModAbs(), .SFPP_RxLOS(), .SFPP_TxFault(), - .SFPP_RS0(), .SFPP_RS1(), .SFPP_TxDisable() // These are actually open drain outputs - ); - - -endmodule // x300_tb |