From c67b38366c4d509dc7bba3c38ba5832783dd428e Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Thu, 25 Jun 2015 10:05:02 +0000
Subject: [PATCH] Added gen_stream_MB_II

---
 .../designs/unb2_test/src/vhdl/unb2_test.vhd  | 169 ++++++++++++++----
 1 file changed, 132 insertions(+), 37 deletions(-)

diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
index 402c334af7..d32c050110 100644
--- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
+++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
@@ -146,10 +146,8 @@ ARCHITECTURE str OF unb2_test IS
   CONSTANT c_use_10GbE_ring             : BOOLEAN := c_use_10GbE;
   CONSTANT c_use_10GbE_back0            : BOOLEAN := FALSE;
   CONSTANT c_use_10GbE_back1            : BOOLEAN := FALSE;
-  CONSTANT c_use_ddr                    : BOOLEAN := g_design_name="unb2_test_ddr"   OR g_design_name="unb2_test_all";
-  CONSTANT c_use_MB_I                   : BOOLEAN := c_use_ddr;  -- FIXME: g_design_name="unb2_test_MB_I"   OR g_design_name="unb2_test_all";
-  CONSTANT c_use_MB_II                  : BOOLEAN := FALSE;      -- FIXME: g_design_name="unb2_test_MB_II"  OR g_design_name="unb2_test_all";
-  CONSTANT c_use_MB_both                : BOOLEAN := FALSE;      -- FIXME: c_use_MB_I OR c_use_MB_II;
+  CONSTANT c_use_MB_I                   : BOOLEAN := g_design_name="unb2_test_ddr_MB_I"  OR g_design_name="unb2_test_ddr_MB_I_II" OR g_design_name="unb2_test_all";
+  CONSTANT c_use_MB_II                  : BOOLEAN := g_design_name="unb2_test_ddr_MB_II" OR g_design_name="unb2_test_ddr_MB_I_II" OR g_design_name="unb2_test_all";
 
   -- transceivers
   CONSTANT c_nof_qsfp                   : NATURAL := c_unb2_board_tr_qsfp.nof_bus * c_unb2_board_tr_qsfp.bus_w;--8
@@ -369,17 +367,28 @@ ARCHITECTURE str OF unb2_test IS
   SIGNAL dp_offload_tx_10GbE_src_in_arr  : t_dp_siso_arr(c_nof_streams_10GbE-1 DOWNTO 0);
   SIGNAL dp_offload_rx_10GbE_snk_in_arr  : t_dp_sosi_arr(c_nof_streams_10GbE-1 DOWNTO 0);
   SIGNAL dp_offload_rx_10GbE_snk_out_arr : t_dp_siso_arr(c_nof_streams_10GbE-1 DOWNTO 0);
-
-  SIGNAL reg_diag_tx_seq_ddr_mosi        : t_mem_mosi;
-  SIGNAL reg_diag_tx_seq_ddr_miso        : t_mem_miso;
-  SIGNAL reg_diag_rx_seq_ddr_mosi        : t_mem_mosi;
-  SIGNAL reg_diag_rx_seq_ddr_miso        : t_mem_miso;
-  SIGNAL reg_diag_data_buf_ddr_mosi      : t_mem_mosi;
-  SIGNAL reg_diag_data_buf_ddr_miso      : t_mem_miso;
-  SIGNAL ram_diag_data_buf_ddr_mosi      : t_mem_mosi;
-  SIGNAL ram_diag_data_buf_ddr_miso      : t_mem_miso;
-  SIGNAL reg_io_ddr_mosi                 : t_mem_mosi;
-  SIGNAL reg_io_ddr_miso                 : t_mem_miso;
+  
+  SIGNAL reg_io_ddr_MB_I_mosi              : t_mem_mosi;
+  SIGNAL reg_io_ddr_MB_I_miso              : t_mem_miso;
+  SIGNAL reg_diag_tx_seq_ddr_MB_I_mosi     : t_mem_mosi;
+  SIGNAL reg_diag_tx_seq_ddr_MB_I_miso     : t_mem_miso;
+  SIGNAL reg_diag_rx_seq_ddr_MB_I_mosi     : t_mem_mosi;
+  SIGNAL reg_diag_rx_seq_ddr_MB_I_miso     : t_mem_miso;
+  SIGNAL reg_diag_data_buf_ddr_MB_I_mosi   : t_mem_mosi;
+  SIGNAL reg_diag_data_buf_ddr_MB_I_miso   : t_mem_miso;
+  SIGNAL ram_diag_data_buf_ddr_MB_I_mosi   : t_mem_mosi;
+  SIGNAL ram_diag_data_buf_ddr_MB_I_miso   : t_mem_miso;
+  
+  SIGNAL reg_io_ddr_MB_II_mosi             : t_mem_mosi;
+  SIGNAL reg_io_ddr_MB_II_miso             : t_mem_miso;
+  SIGNAL reg_diag_tx_seq_ddr_MB_II_mosi    : t_mem_mosi;
+  SIGNAL reg_diag_tx_seq_ddr_MB_II_miso    : t_mem_miso;
+  SIGNAL reg_diag_rx_seq_ddr_MB_II_mosi    : t_mem_mosi;
+  SIGNAL reg_diag_rx_seq_ddr_MB_II_miso    : t_mem_miso;
+  SIGNAL reg_diag_data_buf_ddr_MB_II_mosi  : t_mem_mosi;
+  SIGNAL reg_diag_data_buf_ddr_MB_II_miso  : t_mem_miso;
+  SIGNAL ram_diag_data_buf_ddr_MB_II_mosi  : t_mem_mosi;
+  SIGNAL ram_diag_data_buf_ddr_MB_II_miso  : t_mem_miso;
 
    -- Interface: 1GbE UDP streaming ports
   SIGNAL eth1g_udp_tx_sosi_arr           : t_dp_sosi_arr(c_nof_streams_1GbE-1 DOWNTO 0);
@@ -655,16 +664,29 @@ BEGIN
     reg_tr_10GbE_back1_mosi        => reg_tr_10GbE_back1_mosi,
     reg_tr_10GbE_back1_miso        => reg_tr_10GbE_back1_miso,
 
-    reg_diag_tx_seq_ddr_mosi       => reg_diag_tx_seq_ddr_mosi,
-    reg_diag_tx_seq_ddr_miso       => reg_diag_tx_seq_ddr_miso,
-    reg_diag_rx_seq_ddr_mosi       => reg_diag_rx_seq_ddr_mosi,
-    reg_diag_rx_seq_ddr_miso       => reg_diag_rx_seq_ddr_miso,
-    reg_diag_data_buf_ddr_mosi     => reg_diag_data_buf_ddr_mosi,
-    reg_diag_data_buf_ddr_miso     => reg_diag_data_buf_ddr_miso,
-    ram_diag_data_buf_ddr_mosi     => ram_diag_data_buf_ddr_mosi,
-    ram_diag_data_buf_ddr_miso     => ram_diag_data_buf_ddr_miso,
-    reg_io_ddr_mosi                => reg_io_ddr_mosi,
-    reg_io_ddr_miso                => reg_io_ddr_miso
+    -- DDR4 : MB I
+    reg_io_ddr_MB_I_mosi              => reg_io_ddr_MB_I_mosi,
+    reg_io_ddr_MB_I_miso              => reg_io_ddr_MB_I_miso,
+    reg_diag_tx_seq_ddr_MB_I_mosi     => reg_diag_tx_seq_ddr_MB_I_mosi,
+    reg_diag_tx_seq_ddr_MB_I_miso     => reg_diag_tx_seq_ddr_MB_I_miso,
+    reg_diag_rx_seq_ddr_MB_I_mosi     => reg_diag_rx_seq_ddr_MB_I_mosi,
+    reg_diag_rx_seq_ddr_MB_I_miso     => reg_diag_rx_seq_ddr_MB_I_miso,
+    reg_diag_data_buf_ddr_MB_I_mosi   => reg_diag_data_buf_ddr_MB_I_mosi,
+    reg_diag_data_buf_ddr_MB_I_miso   => reg_diag_data_buf_ddr_MB_I_miso,
+    ram_diag_data_buf_ddr_MB_I_mosi   => ram_diag_data_buf_ddr_MB_I_mosi,
+    ram_diag_data_buf_ddr_MB_I_miso   => ram_diag_data_buf_ddr_MB_I_miso,
+    
+    -- DDR4 : MB II
+    reg_io_ddr_MB_II_mosi             => reg_io_ddr_MB_II_mosi,
+    reg_io_ddr_MB_II_miso             => reg_io_ddr_MB_II_miso,
+    reg_diag_tx_seq_ddr_MB_II_mosi    => reg_diag_tx_seq_ddr_MB_II_mosi,
+    reg_diag_tx_seq_ddr_MB_II_miso    => reg_diag_tx_seq_ddr_MB_II_miso,
+    reg_diag_rx_seq_ddr_MB_II_mosi    => reg_diag_rx_seq_ddr_MB_II_mosi,
+    reg_diag_rx_seq_ddr_MB_II_miso    => reg_diag_rx_seq_ddr_MB_II_miso,
+    reg_diag_data_buf_ddr_MB_II_mosi  => reg_diag_data_buf_ddr_MB_II_mosi,
+    reg_diag_data_buf_ddr_MB_II_miso  => reg_diag_data_buf_ddr_MB_II_miso,
+    ram_diag_data_buf_ddr_MB_II_mosi  => ram_diag_data_buf_ddr_MB_II_mosi,
+    ram_diag_data_buf_ddr_MB_II_miso  => ram_diag_data_buf_ddr_MB_II_miso
   );
 
 
@@ -935,7 +957,7 @@ BEGIN
   END GENERATE;
 
 
-  gen_stream_MB_I : IF c_use_MB_I = TRUE OR c_use_MB_both=TRUE GENERATE
+  gen_stream_MB_I : IF c_use_MB_I = TRUE GENERATE
     u_mms_io_ddr_diag : ENTITY io_ddr_lib.mms_io_ddr_diag
     GENERIC MAP (
       -- System
@@ -977,8 +999,8 @@ BEGIN
       ctlr_rst_in         => ddr_I_rst200,  -- connect ctlr_rst_out to ctlr_rst_in at top level
   
       -- MM interface
-      reg_io_ddr_mosi     => reg_io_ddr_mosi,  -- register for DDR controller status info
-      reg_io_ddr_miso     => reg_io_ddr_miso,
+      reg_io_ddr_mosi     => reg_io_ddr_MB_I_mosi,  -- register for DDR controller status info
+      reg_io_ddr_miso     => reg_io_ddr_MB_I_miso,
   
       -- Write / read FIFO status for monitoring purposes (in dp_clk domain)
       wr_fifo_usedw       => OPEN,
@@ -993,25 +1015,98 @@ BEGIN
       -- DIAG Tx seq
       ---------------------------------------------------------------------------
       -- MM interface
-      reg_tx_seq_mosi   => reg_diag_tx_seq_ddr_mosi,
-      reg_tx_seq_miso   => reg_diag_tx_seq_ddr_miso,
+      reg_tx_seq_mosi   => reg_diag_tx_seq_ddr_MB_I_mosi,
+      reg_tx_seq_miso   => reg_diag_tx_seq_ddr_MB_I_miso,
       
       ---------------------------------------------------------------------------
       -- DIAG rx seq with optional data buffer
       ---------------------------------------------------------------------------
       -- MM interface
-      reg_data_buf_mosi => reg_diag_data_buf_ddr_mosi,
-      reg_data_buf_miso => reg_diag_data_buf_ddr_miso,
+      reg_data_buf_mosi => reg_diag_data_buf_ddr_MB_I_mosi,
+      reg_data_buf_miso => reg_diag_data_buf_ddr_MB_I_miso,
   
-      ram_data_buf_mosi => ram_diag_data_buf_ddr_mosi,
-      ram_data_buf_miso => ram_diag_data_buf_ddr_miso,
+      ram_data_buf_mosi => ram_diag_data_buf_ddr_MB_I_mosi,
+      ram_data_buf_miso => ram_diag_data_buf_ddr_MB_I_miso,
   
-      reg_rx_seq_mosi   => reg_diag_rx_seq_ddr_mosi,
-      reg_rx_seq_miso   => reg_diag_rx_seq_ddr_miso
+      reg_rx_seq_mosi   => reg_diag_rx_seq_ddr_MB_I_mosi,
+      reg_rx_seq_miso   => reg_diag_rx_seq_ddr_MB_I_miso
     );  
   END GENERATE;
 
-  gen_stream_MB_II : IF c_use_MB_II = TRUE OR c_use_MB_both=TRUE GENERATE
+  gen_stream_MB_II : IF c_use_MB_II = TRUE GENERATE
+    u_mms_io_ddr_diag : ENTITY io_ddr_lib.mms_io_ddr_diag
+    GENERIC MAP (
+      -- System
+      g_sim_model_ddr   => g_sim_model_ddr,
+      g_technology      => g_technology,
+      
+      g_dp_data_w       => c_ddr_dp_data_w,      -- DP data width, func_tech_ddr_ctlr_data_w(g_io_tech_ddr)/g_dp_data_w must be a power of 2 due to the mixed width FIFO
+      g_dp_seq_dat_w    => c_ddr_dp_seq_dat_w,   -- >= 1, test sequence data width. Choose g_dp_seq_dat_w <= g_dp_data_w. The seq data gets replicated to fill g_dp_data_w.
+      g_dp_fifo_depth   => c_ddr_dp_fifo_depth,  -- >= 2048, write FIFO depth and read FIFO depth at DP side of the FIFOs
+      
+      -- IO_DDR
+      g_io_tech_ddr     => g_ddr_MB_II,
+      
+      -- DIAG data buffer
+      g_db_use_db       => FALSE,
+      g_db_buf_nof_data => c_ddr_db_buf_nof_data    -- nof words per data buffer
+    )
+    PORT MAP (
+      ---------------------------------------------------------------------------
+      -- System
+      ---------------------------------------------------------------------------
+      mm_rst              => mm_rst,
+      mm_clk              => mm_clk,
+      dp_rst              => dp_rst,
+      dp_clk              => dp_clk,  -- use alternative external clock or externally connect to ctlr_clk_out
+      
+      ---------------------------------------------------------------------------
+      -- IO_DDR
+      ---------------------------------------------------------------------------
+      -- DDR reference clock
+      ctlr_ref_clk        => MB_II_REF_CLK,
+      ctlr_ref_rst        => mb_II_ref_rst,
+
+      -- DDR controller clock domain
+      ctlr_clk_out        => ddr_II_clk200,
+      ctlr_rst_out        => ddr_II_rst200,
+  
+      ctlr_clk_in         => ddr_II_clk200,  -- connect ctlr_clk_out to ctlr_clk_in at top level to avoid potential delta-cycle differences between the same clock
+      ctlr_rst_in         => ddr_II_rst200,  -- connect ctlr_rst_out to ctlr_rst_in at top level
+  
+      -- MM interface
+      reg_io_ddr_mosi     => reg_io_ddr_MB_II_mosi,  -- register for DDR controller status info
+      reg_io_ddr_miso     => reg_io_ddr_MB_II_miso,
+  
+      -- Write / read FIFO status for monitoring purposes (in dp_clk domain)
+      wr_fifo_usedw       => OPEN,
+      rd_fifo_usedw       => OPEN,
+  
+      -- DDR4 PHY external interface
+      phy4_in             => MB_II_IN,
+      phy4_io             => MB_II_IO,
+      phy4_ou             => MB_II_OU, 
+  
+      ---------------------------------------------------------------------------
+      -- DIAG Tx seq
+      ---------------------------------------------------------------------------
+      -- MM interface
+      reg_tx_seq_mosi   => reg_diag_tx_seq_ddr_MB_II_mosi,
+      reg_tx_seq_miso   => reg_diag_tx_seq_ddr_MB_II_miso,
+      
+      ---------------------------------------------------------------------------
+      -- DIAG rx seq with optional data buffer
+      ---------------------------------------------------------------------------
+      -- MM interface
+      reg_data_buf_mosi => reg_diag_data_buf_ddr_MB_II_mosi,
+      reg_data_buf_miso => reg_diag_data_buf_ddr_MB_II_miso,
+  
+      ram_data_buf_mosi => ram_diag_data_buf_ddr_MB_II_mosi,
+      ram_data_buf_miso => ram_diag_data_buf_ddr_MB_II_miso,
+  
+      reg_rx_seq_mosi   => reg_diag_rx_seq_ddr_MB_II_mosi,
+      reg_rx_seq_miso   => reg_diag_rx_seq_ddr_MB_II_miso
+    );  
   END GENERATE;
 
 END str;
-- 
GitLab