//////////////////////////////////////////////////////////////////////
// Created by Actel SmartDesign Mon Jul 14 14:20:57 2014
// Testbench Template
// This is a basic testbench that instantiates your design with basic 
// clock and reset pins connected.  If your design has special
// clock/reset or testbench driver requirements then you should 
// copy this file and modify it. 
//////////////////////////////////////////////////////////////////////

`timescale 1ps/1ps

`include "dram.v"

module top_testbench;

parameter SYSCLK_PERIOD = 100; // 10MHz

reg SYSCLK;
reg NSYSRESET;
wire MDDR_DQS_TMATCH_0_OUT;

	wire MDDR_CAS_N;
	wire MDDR_CKE;
	wire MDDR_CLK;
	wire MDDR_CLK_N;
	wire MDDR_CS_N;
	wire MDDR_ODT;
	wire MDDR_RAS_N;
	wire MDDR_RESET_N;
	wire MDDR_WE_N;
	

 wire [15:0] MDDR_ADDR;
 wire [2:0] MDDR_BA;
 wire [1:0] MDDR_DM_RDQS;
 wire [1:0] MDDR_DQS;
 wire [1:0] MDDR_DQS_N;
 wire [15:0] MDDR_DQ;


initial
begin
    SYSCLK = 1'b0;
    NSYSRESET = 1'b0;
end

//////////////////////////////////////////////////////////////////////
// Reset Pulse
//////////////////////////////////////////////////////////////////////
initial
begin
    #(SYSCLK_PERIOD * 10 )
        NSYSRESET = 1'b1;
end


//////////////////////////////////////////////////////////////////////
// 10MHz Clock Driver
//////////////////////////////////////////////////////////////////////
always @(SYSCLK)
    #(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;


//////////////////////////////////////////////////////////////////////
// Instantiate Unit Under Test:  SF2_MDDR_Demo
//////////////////////////////////////////////////////////////////////
SF2_MDDR_Demo SF2_MDDR_Demo_0 (
    // Inputs
    .MDDR_DQS_TMATCH_0_IN(MDDR_DQS_TMATCH_0_OUT),
    .DEVRST_N(NSYSRESET),
    .MMUART_1_RXD({1{1'b0}}),

    // Outputs
    .MDDR_DQS_TMATCH_0_OUT(MDDR_DQS_TMATCH_0_OUT ),
    .MDDR_CAS_N(MDDR_CAS_N ),
    .MDDR_CLK( MDDR_CLK),
    .MDDR_CLK_N( MDDR_CLK_N ),
    .MDDR_CKE(MDDR_CKE ),
    .MDDR_CS_N(MDDR_CS_N ),
    .MDDR_ODT(MDDR_ODT ),
    .MDDR_RAS_N(MDDR_RAS_N ),
    .MDDR_RESET_N( MDDR_RESET_N),
    .MDDR_WE_N(MDDR_WE_N ),
    .MDDR_ADDR(MDDR_ADDR ),
    .MDDR_BA( MDDR_BA ),
    .MMUART_1_TXD( ),

    // Inouts
    .MDDR_DM_RDQS(MDDR_DM_RDQS ),
    .MDDR_DQ( MDDR_DQ),
    .MDDR_DQS(MDDR_DQS )

);


////////// mobile lpddr model//////////////

  dram u_dram_16_I0 (
  .CLK(MDDR_CLK),
  .CLK_N(MDDR_CLK_N),
  .CKE(MDDR_CKE),
  .CS_N(MDDR_CS_N),
  .RAS_N(MDDR_RAS_N ),
  .CAS_N(MDDR_CAS_N),
  .WE_N(MDDR_WE_N),
  .DM(MDDR_DM_RDQS[1:0]),
  .BA(MDDR_BA[1:0]),
  .ADDR(MDDR_ADDR[13:0]),
  .DQ(MDDR_DQ[15:0]),
  .DQS(MDDR_DQS[1:0])
  );

endmodule

