126 lines
2.0 KiB
Coq
126 lines
2.0 KiB
Coq
|
`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;
|
||
|
|
||
|
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_dm(),
|
||
|
.sd_dqs()
|
||
|
);
|
||
|
|
||
|
initial begin
|
||
|
$dumpfile("s6ddrphy.vcd");
|
||
|
$dumpvars(3, dut);
|
||
|
#13;
|
||
|
|
||
|
/*dfi_address_p0 <= 13'h1aba;
|
||
|
dfi_address_p1 <= 13'h1234;
|
||
|
#12;
|
||
|
dfi_address_p0 <= 0;
|
||
|
dfi_address_p1 <= 0;
|
||
|
#60;*/
|
||
|
|
||
|
dfi_address_p0 <= 13'h0dea;
|
||
|
dfi_address_p1 <= 13'h0dbe;
|
||
|
dfi_wrdata_p0 <= 64'hcafebabeabadface;
|
||
|
dfi_wrdata_p1 <= 64'h0123456789abcdef;
|
||
|
dfi_wrdata_en_p0 <= 1'b1;
|
||
|
dfi_wrdata_en_p1 <= 1'b1;
|
||
|
#12;
|
||
|
dfi_address_p0 <= 0;
|
||
|
dfi_address_p1 <= 0;
|
||
|
dfi_wrdata_p0 <= 64'd0;
|
||
|
dfi_wrdata_p1 <= 64'd0;
|
||
|
dfi_wrdata_en_p0 <= 1'b0;
|
||
|
dfi_wrdata_en_p1 <= 1'b0;
|
||
|
#60;
|
||
|
$finish;
|
||
|
end
|
||
|
|
||
|
endmodule
|
||
|
|
||
|
module glbl();
|
||
|
wire GSR = 1'b0;
|
||
|
wire GTS = 1'b0;
|
||
|
endmodule
|