OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [wishbone/] [testbecnh/] [dev_pb_wishbone_ctrl/] [sim/] [tb.v] - Rev 2

Compare with Previous | Blame | View Log

//////////////////////////////////////////////////////////////////////////////////
// Company:         ;)
// Engineer:        Kuzmi4
// 
// Create Date:     14:39:52 05/19/2010 
// Design Name:     
// Module Name:     tb/core64_pb_wishbone_ctrl
// Project Name:    DS_DMA
// Target Devices:  no
// Tool versions:   any with SV support
// Description: 
//                  
//                  Simple TB, waveform oriented.
//                  
//
// Revision: 
// Revision 0.01 - File Created
//
//////////////////////////////////////////////////////////////////////////////////
`timescale 1ns / 1ps
 
//
`include "ds_dma_pb_if.v"
`include "wb_simple_ram_slave_if.v"
`include "wb_slave_if.v"
 
module tb;
//////////////////////////////////////////////////////////////////////////////////
//
parameter   p_Tclk  =   10ns;
parameter   p_Trst  =   120ns;
//////////////////////////////////////////////////////////////////////////////////
    // Declare SYS_CON stuff:
    reg     s_sys_clk;
    reg     s_sys_rst;
    // Declare 
    logic   [63:0]  sv_ds_dma_income_data_0;
    logic   [63:0]  sv_ds_dma_income_data_1 [512];
//////////////////////////////////////////////////////////////////////////////////
//
// System Clock:
//
always
begin   :   SYS_CLK
    #(p_Tclk/2) s_sys_clk <= !s_sys_clk;
end
//////////////////////////////////////////////////////////////////////////////////
//
// Instantiate TEST IF's:
//
// PB_IF:
ds_dma_pb_if                        DS_DMA_PB_IF(s_sys_clk);
// WBS IF (+TB params):
wb_simple_ram_slave_if #(32, 64, 8) WB_SLAVE(s_sys_clk, s_sys_rst);
//////////////////////////////////////////////////////////////////////////////////
//
// Local Initial PowerOnReset:
//
initial
begin   :   init_POR
    //
    $timeformat(-9, 3, " ns", 10);
    //
    s_sys_clk   <= 0;
    s_sys_rst   <= 0;
    DS_DMA_PB_IF.init();
 
    // PowerOnReset case
    s_sys_rst   <= 1; #p_Trst;
    s_sys_rst   <= 0;
 
end
//////////////////////////////////////////////////////////////////////////////////
//
// Test:
//
initial
begin   :   TB
    //
    do @(posedge s_sys_clk);
    while (s_sys_rst); #1us;
    // 
    DS_DMA_PB_IF.write_1_word  (32'h1234_5678, 64'h0123_4567_89AB_CDEF); #100ns;
    DS_DMA_PB_IF.write_1_word  (32'h5678_1234, 64'h89AB_CDEF_0123_4567); #100ns;
    DS_DMA_PB_IF.write_512_word(32'h8765_4321, 64'h0000_0000_0000_0001); #100ns;#6us; // for now, req w8 while previous transfer ends
    DS_DMA_PB_IF.read_1_word   (32'h5612_7834, sv_ds_dma_income_data_0); #100ns;
    DS_DMA_PB_IF.read_512_word (32'h7834_1256, sv_ds_dma_income_data_1); #100ns;
    //DS_DMA_PB_IF.write_512_word(32'h8765_4321, 64'hCDEF_4567_89AB_0123); #1us;
    // 
    #6us;
    $finish(2);
end
//////////////////////////////////////////////////////////////////////////////////
//
// Instantiate DesignUnderTest:
//
core64_pb_wishbone_ctrl     
                    DUT     
(
// SYS_CON (same for PB/WB bus)
.i_clk              (s_sys_clk),
.i_rst              (s_sys_rst),
//
// PB_MASTER (in) IF
.i_pb_master_stb0   (DS_DMA_PB_IF.o_pb_master_stb0),   // CMD STB
.i_pb_master_stb1   (DS_DMA_PB_IF.o_pb_master_stb1),   // DATA STB
.iv_pb_master_cmd   (DS_DMA_PB_IF.ov_pb_master_cmd),   // CMD
.iv_pb_master_addr  (DS_DMA_PB_IF.ov_pb_master_addr),  // ADDR
.iv_pb_master_data  (DS_DMA_PB_IF.ov_pb_master_data),  // DATA
//
// PB_SLAVE (out) IF:
.o_pb_slave_ready   (DS_DMA_PB_IF.i_pb_slave_ready),    // 
.o_pb_slave_complete(DS_DMA_PB_IF.i_pb_slave_complete), // 
.o_pb_slave_stb0    (DS_DMA_PB_IF.i_pb_slave_stb0),     // WR CMD ACK STB   (to pcie_core64_m6)
.o_pb_slave_stb1    (DS_DMA_PB_IF.i_pb_slave_stb1),     // DATA ACK STB     (to pcie_core64_m6)
.ov_pb_slave_data   (DS_DMA_PB_IF.iv_pb_slave_data),    // DATA             (to pcie_core64_m6)
.ov_pb_slave_dmar   (DS_DMA_PB_IF.iv_pb_slave_dmar),    // ...
.o_pb_slave_irq     (DS_DMA_PB_IF.i_pb_slave_irq),      // ...
//
// WB BUS:
.ov_wbm_addr        (WB_SLAVE.adr_i),    
.ov_wbm_data        (WB_SLAVE.dat_i),    
.ov_wbm_sel         (WB_SLAVE.sel_i),     
.o_wbm_we           (WB_SLAVE.we_i),       
.o_wbm_cyc          (WB_SLAVE.cyc_i),      
.o_wbm_stb          (WB_SLAVE.stb_i),      
.ov_wbm_cti         (),     // Cycle Type Identifier Address Tag
.ov_wbm_bte         (),     // Burst Type Extension Address Tag
 
.iv_wbm_data        (WB_SLAVE.dat_o),       // 
.i_wbm_ack          (WB_SLAVE.ack_o),       // 
.i_wbm_err          (WB_SLAVE.err_o),       // error input - abnormal cycle termination
.i_wbm_rty          (WB_SLAVE.rty_o),       // retry input - interface is not ready
 
.i_wdm_irq_0        (1'b0),
.iv_wbm_irq_dmar    (2'b0)
 
);
//////////////////////////////////////////////////////////////////////////////////
endmodule
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.