`timescale 1ns / 1ps module tb_s6ddrphy(); reg sys_clk = 1'b0; reg clk2x_270 = 1'b0; reg clk4x_wr = 1'b0; wire clk4x_wr_strb; wire clk4x_rd = clk4x_wr; wire clk4x_rd_strb = clk4x_wr_strb; initial begin while(1) begin sys_clk <= 1'b1; #6; sys_clk <= 1'b0; #6; end end initial begin #4.5; while(1) begin clk2x_270 <= 1'b1; #3; clk2x_270 <= 1'b0; #3; end end initial begin while(1) begin clk4x_wr <= 1'b1; #1.5; clk4x_wr <= 1'b0; #1.5; end end BUFPLL #( .DIVIDE(4) ) bufpll ( .PLLIN(clk4x_wr), .GCLK(sys_clk), .LOCKED(1'b1), .IOCLK(), .LOCK(), .SERDESSTROBE(clk4x_wr_strb) ); reg [12:0] dfi_address_p0 = 0; reg [12:0] dfi_address_p1 = 0; reg dfi_wrdata_en_p0 = 0; reg [7:0] dfi_wrdata_mask_p0 = 0; reg [63:0] dfi_wrdata_p0 = 0; reg dfi_wrdata_en_p1 = 0; reg [7:0] dfi_wrdata_mask_p1 = 0; reg [63:0] dfi_wrdata_p1 = 0; reg dfi_rddata_en_p0 = 0; reg dfi_rddata_en_p1 = 0; wire [31:0] sd_dq; reg [31:0] dq_tb = 32'hzzzzzzzz; assign sd_dq = dq_tb; s6ddrphy #( .NUM_AD(13), .NUM_BA(2), .NUM_D(64) ) dut ( .sys_clk(sys_clk), .clk2x_270(clk2x_270), .clk4x_wr(clk4x_wr), .clk4x_wr_strb(clk4x_wr_strb), .clk4x_rd(clk4x_rd), .clk4x_rd_strb(clk4x_rd_strb), .sd_clk_out_p(), .sd_clk_out_n(), .dfi_address_p0(dfi_address_p0), .dfi_address_p1(dfi_address_p1), .sd_a(), .dfi_wrdata_en_p0(dfi_wrdata_en_p0), .dfi_wrdata_mask_p0(dfi_wrdata_mask_p0), .dfi_wrdata_p0(dfi_wrdata_p0), .dfi_wrdata_en_p1(dfi_wrdata_en_p1), .dfi_wrdata_mask_p1(dfi_wrdata_mask_p1), .dfi_wrdata_p1(dfi_wrdata_p1), .sd_dq(sd_dq), .sd_dm(), .sd_dqs(), .dfi_rddata_en_p0(dfi_rddata_en_p0), .dfi_rddata_en_p1(dfi_rddata_en_p1), .dfi_rddata_w0(), .dfi_rddata_w1(), .dfi_rddata_valid_w0(), .dfi_rddata_valid_w1() ); `define TEST_SIMPLE_CMD `define TEST_WRITE `define TEST_READ initial begin $dumpfile("s6ddrphy.vcd"); $dumpvars(3, dut); `ifdef TEST_SIMPLE_CMD #13; dfi_address_p0 <= 13'h1aba; dfi_address_p1 <= 13'h1234; #12; dfi_address_p0 <= 0; dfi_address_p1 <= 0; #59; `endif `ifdef TEST_WRITE #13; dfi_address_p1 <= 13'h0dbe; dfi_wrdata_en_p1 <= 1; dfi_wrdata_mask_p0 <= 8'h12; dfi_wrdata_mask_p1 <= 8'h34; dfi_wrdata_p0 <= 64'hcafebabeabadface; dfi_wrdata_p1 <= 64'h0123456789abcdef; #12; dfi_address_p1 <= 0; dfi_wrdata_en_p1 <= 0; dfi_wrdata_mask_p0 <= 0; dfi_wrdata_mask_p1 <= 0; dfi_wrdata_p0 <= 64'd0; dfi_wrdata_p1 <= 64'd0; #59; `endif `ifdef TEST_READ #13; dfi_address_p0 <= 13'h1234; dfi_rddata_en_p0 <= 1; #12; dfi_address_p0 <= 0; dfi_rddata_en_p0 <= 0; #15.5; dq_tb <= 32'h12345678; #3; dq_tb <= 32'hdeadbeef; #3; dq_tb <= 32'hcafebabe; #3; dq_tb <= 32'habadface; #3; dq_tb <= 32'hzzzzzzzz; #60; `endif $finish; end endmodule module glbl(); wire GSR = 1'b0; wire GTS = 1'b0; endmodule