moved axi-related files to separate folders
This commit is contained in:
parent
66f0daf0e9
commit
91fc6d8ed6
313
rtl/migsdram.v
313
rtl/migsdram.v
|
|
@ -1,313 +0,0 @@
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Filename: migsdram.v
|
|
||||||
// {{{
|
|
||||||
// Project: WB2AXIPSP: bus bridges and other odds and ends
|
|
||||||
//
|
|
||||||
// Purpose: This file isn't really a part of the synthesis implementation
|
|
||||||
// of the wb2axip project itself, but rather it is an example
|
|
||||||
// of how the wb2axip project can be used to connect a MIG generated
|
|
||||||
// IP component.
|
|
||||||
//
|
|
||||||
// This implementation depends upon the existence of a MIG generated
|
|
||||||
// core, named "mig_axis", and illustrates how such a core might be
|
|
||||||
// connected to the wbm2axip bridge. Specific options of the mig_axis
|
|
||||||
// setup include 6 identifier bits, and a full-sized bus width of 128
|
|
||||||
// bits. These two settings are both appropriate for driving a DDR3
|
|
||||||
// memory (whose minimum transfer size is 128 bits), but may need to be
|
|
||||||
// adjusted to support other memories.
|
|
||||||
//
|
|
||||||
// Creator: Dan Gisselquist, Ph.D.
|
|
||||||
// Gisselquist Technology, LLC
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// }}}
|
|
||||||
// Copyright (C) 2015-2024, Gisselquist Technology, LLC
|
|
||||||
// {{{
|
|
||||||
// This file is part of the WB2AXIP project.
|
|
||||||
//
|
|
||||||
// The WB2AXIP project contains free software and gateware, licensed under the
|
|
||||||
// Apache License, Version 2.0 (the "License"). You may not use this project,
|
|
||||||
// or this file, except in compliance with the License. You may obtain a copy
|
|
||||||
// of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
// License for the specific language governing permissions and limitations
|
|
||||||
// under the License.
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
//
|
|
||||||
`default_nettype none
|
|
||||||
// }}}
|
|
||||||
module migsdram(i_clk, i_clk_200mhz, o_sys_clk, i_rst, o_sys_reset,
|
|
||||||
// Wishbone components
|
|
||||||
i_wb_cyc, i_wb_stb, i_wb_we, i_wb_addr, i_wb_data, i_wb_sel,
|
|
||||||
o_wb_ack, o_wb_stall, o_wb_data, o_wb_err,
|
|
||||||
// SDRAM connections
|
|
||||||
o_ddr_ck_p, o_ddr_ck_n,
|
|
||||||
o_ddr_reset_n, o_ddr_cke,
|
|
||||||
o_ddr_cs_n, o_ddr_ras_n, o_ddr_cas_n, o_ddr_we_n,
|
|
||||||
o_ddr_ba, o_ddr_addr,
|
|
||||||
o_ddr_odt, o_ddr_dm,
|
|
||||||
io_ddr_dqs_p, io_ddr_dqs_n,
|
|
||||||
io_ddr_data
|
|
||||||
);
|
|
||||||
parameter DDRWIDTH = 16, WBDATAWIDTH=32;
|
|
||||||
parameter AXIDWIDTH = 6;
|
|
||||||
// The SDRAM address bits (RAMABITS) are a touch more difficult to work
|
|
||||||
// out. Here we leave them as a fixed parameter, but there are
|
|
||||||
// consequences to this. Specifically, the wishbone data width, the
|
|
||||||
// wishbone address width, and this number have interactions not
|
|
||||||
// well captured here.
|
|
||||||
parameter RAMABITS = 28;
|
|
||||||
// All DDR3 memories have 8 timeslots. This, if the DDR3 memory
|
|
||||||
// has 16 bits to it (as above), the entire transaction must take
|
|
||||||
// AXIWIDTH bits ...
|
|
||||||
localparam AXIWIDTH= DDRWIDTH *8;
|
|
||||||
localparam DW=WBDATAWIDTH;
|
|
||||||
localparam AW=(WBDATAWIDTH==32)? RAMABITS-2
|
|
||||||
:((WBDATAWIDTH==64) ? RAMABITS-3
|
|
||||||
:((WBDATAWIDTH==128) ? RAMABITS-4
|
|
||||||
: RAMABITS-5)); // (WBDATAWIDTH==256)
|
|
||||||
localparam SELW= (WBDATAWIDTH/8);
|
|
||||||
//
|
|
||||||
input wire i_clk, i_clk_200mhz, i_rst;
|
|
||||||
output wire o_sys_clk;
|
|
||||||
output reg o_sys_reset;
|
|
||||||
//
|
|
||||||
input wire i_wb_cyc, i_wb_stb, i_wb_we;
|
|
||||||
input wire [(AW-1):0] i_wb_addr;
|
|
||||||
input wire [(DW-1):0] i_wb_data;
|
|
||||||
input wire [(SELW-1):0] i_wb_sel;
|
|
||||||
output wire o_wb_ack, o_wb_stall;
|
|
||||||
output wire [(DW-1):0] o_wb_data;
|
|
||||||
output wire o_wb_err;
|
|
||||||
//
|
|
||||||
output wire [0:0] o_ddr_ck_p, o_ddr_ck_n;
|
|
||||||
output wire [0:0] o_ddr_cke;
|
|
||||||
output wire o_ddr_reset_n,
|
|
||||||
o_ddr_ras_n, o_ddr_cas_n, o_ddr_we_n;
|
|
||||||
output wire [0:0] o_ddr_cs_n;
|
|
||||||
output wire [2:0] o_ddr_ba;
|
|
||||||
output wire [13:0] o_ddr_addr;
|
|
||||||
output wire [0:0] o_ddr_odt;
|
|
||||||
output wire [(DDRWIDTH/8-1):0] o_ddr_dm;
|
|
||||||
inout wire [1:0] io_ddr_dqs_p, io_ddr_dqs_n;
|
|
||||||
inout wire [(DDRWIDTH-1):0] io_ddr_data;
|
|
||||||
|
|
||||||
|
|
||||||
`define SDRAM_ACCESS
|
|
||||||
`ifdef SDRAM_ACCESS
|
|
||||||
|
|
||||||
wire aresetn;
|
|
||||||
assign aresetn = 1'b1; // Never reset
|
|
||||||
|
|
||||||
// Write address channel
|
|
||||||
wire [(AXIDWIDTH-1):0] s_axi_awid;
|
|
||||||
wire [(RAMABITS-1):0] s_axi_awaddr;
|
|
||||||
wire [7:0] s_axi_awlen;
|
|
||||||
wire [2:0] s_axi_awsize;
|
|
||||||
wire [1:0] s_axi_awburst;
|
|
||||||
wire [0:0] s_axi_awlock;
|
|
||||||
wire [3:0] s_axi_awcache;
|
|
||||||
wire [2:0] s_axi_awprot;
|
|
||||||
wire [3:0] s_axi_awqos;
|
|
||||||
wire s_axi_awvalid;
|
|
||||||
wire s_axi_awready;
|
|
||||||
// Writei data channel
|
|
||||||
wire [(AXIWIDTH-1):0] s_axi_wdata;
|
|
||||||
wire [(AXIWIDTH/8-1):0] s_axi_wstrb;
|
|
||||||
wire s_axi_wlast, s_axi_wvalid, s_axi_wready;
|
|
||||||
// Write response channel
|
|
||||||
wire s_axi_bready;
|
|
||||||
wire [(AXIDWIDTH-1):0] s_axi_bid;
|
|
||||||
wire [1:0] s_axi_bresp;
|
|
||||||
wire s_axi_bvalid;
|
|
||||||
|
|
||||||
// Read address channel
|
|
||||||
wire [(AXIDWIDTH-1):0] s_axi_arid;
|
|
||||||
wire [(RAMABITS-1):0] s_axi_araddr;
|
|
||||||
wire [7:0] s_axi_arlen;
|
|
||||||
wire [2:0] s_axi_arsize;
|
|
||||||
wire [1:0] s_axi_arburst;
|
|
||||||
wire [0:0] s_axi_arlock;
|
|
||||||
wire [3:0] s_axi_arcache;
|
|
||||||
wire [2:0] s_axi_arprot;
|
|
||||||
wire [3:0] s_axi_arqos;
|
|
||||||
wire s_axi_arvalid;
|
|
||||||
wire s_axi_arready;
|
|
||||||
// Read response/data channel
|
|
||||||
wire [(AXIDWIDTH-1):0] s_axi_rid;
|
|
||||||
wire [(AXIWIDTH-1):0] s_axi_rdata;
|
|
||||||
wire [1:0] s_axi_rresp;
|
|
||||||
wire s_axi_rlast;
|
|
||||||
wire s_axi_rvalid;
|
|
||||||
wire s_axi_rready;
|
|
||||||
|
|
||||||
// Other wires ...
|
|
||||||
wire init_calib_complete, mmcm_locked;
|
|
||||||
wire app_sr_active, app_ref_ack, app_zq_ack;
|
|
||||||
wire app_sr_req, app_ref_req, app_zq_req;
|
|
||||||
wire w_sys_reset;
|
|
||||||
wire [11:0] w_device_temp;
|
|
||||||
|
|
||||||
|
|
||||||
mig_axis mig_sdram(
|
|
||||||
.ddr3_ck_p(o_ddr_ck_p), .ddr3_ck_n(o_ddr_ck_n),
|
|
||||||
.ddr3_reset_n(o_ddr_reset_n), .ddr3_cke(o_ddr_cke),
|
|
||||||
.ddr3_cs_n(o_ddr_cs_n), .ddr3_ras_n(o_ddr_ras_n),
|
|
||||||
.ddr3_we_n(o_ddr_we_n), .ddr3_cas_n(o_ddr_cas_n),
|
|
||||||
.ddr3_ba(o_ddr_ba), .ddr3_addr(o_ddr_addr),
|
|
||||||
.ddr3_odt(o_ddr_odt),
|
|
||||||
.ddr3_dqs_p(io_ddr_dqs_p), .ddr3_dqs_n(io_ddr_dqs_n),
|
|
||||||
.ddr3_dq(io_ddr_data), .ddr3_dm(o_ddr_dm),
|
|
||||||
//
|
|
||||||
.sys_clk_i(i_clk),
|
|
||||||
.clk_ref_i(i_clk_200mhz),
|
|
||||||
.ui_clk(o_sys_clk),
|
|
||||||
.ui_clk_sync_rst(w_sys_reset),
|
|
||||||
.mmcm_locked(mmcm_locked),
|
|
||||||
.aresetn(aresetn),
|
|
||||||
.app_sr_req(1'b0),
|
|
||||||
.app_ref_req(1'b0),
|
|
||||||
.app_zq_req(1'b0),
|
|
||||||
.app_sr_active(app_sr_active),
|
|
||||||
.app_ref_ack(app_ref_ack),
|
|
||||||
.app_zq_ack(app_zq_ack),
|
|
||||||
//
|
|
||||||
.s_axi_awid(s_axi_awid), .s_axi_awaddr(s_axi_awaddr),
|
|
||||||
.s_axi_awlen(s_axi_awlen), .s_axi_awsize(s_axi_awsize),
|
|
||||||
.s_axi_awburst(s_axi_awburst), .s_axi_awlock(s_axi_awlock),
|
|
||||||
.s_axi_awcache(s_axi_awcache), .s_axi_awprot(s_axi_awprot),
|
|
||||||
.s_axi_awqos(s_axi_awqos), .s_axi_awvalid(s_axi_awvalid),
|
|
||||||
.s_axi_awready(s_axi_awready),
|
|
||||||
//
|
|
||||||
.s_axi_wready( s_axi_wready),
|
|
||||||
.s_axi_wdata( s_axi_wdata),
|
|
||||||
.s_axi_wstrb( s_axi_wstrb),
|
|
||||||
.s_axi_wlast( s_axi_wlast),
|
|
||||||
.s_axi_wvalid( s_axi_wvalid),
|
|
||||||
//
|
|
||||||
.s_axi_bready(s_axi_bready), .s_axi_bid(s_axi_bid),
|
|
||||||
.s_axi_bresp(s_axi_bresp), .s_axi_bvalid(s_axi_bvalid),
|
|
||||||
//
|
|
||||||
.s_axi_arid(s_axi_arid), .s_axi_araddr(s_axi_araddr),
|
|
||||||
.s_axi_arlen(s_axi_arlen), .s_axi_arsize(s_axi_arsize),
|
|
||||||
.s_axi_arburst(s_axi_arburst), .s_axi_arlock(s_axi_arlock),
|
|
||||||
.s_axi_arcache(s_axi_arcache), .s_axi_arprot(s_axi_arprot),
|
|
||||||
.s_axi_arqos(s_axi_arqos), .s_axi_arvalid(s_axi_arvalid),
|
|
||||||
.s_axi_arready(s_axi_arready),
|
|
||||||
//
|
|
||||||
.s_axi_rready(s_axi_rready), .s_axi_rid(s_axi_rid),
|
|
||||||
.s_axi_rdata(s_axi_rdata), .s_axi_rresp(s_axi_rresp),
|
|
||||||
.s_axi_rlast(s_axi_rlast), .s_axi_rvalid(s_axi_rvalid),
|
|
||||||
.init_calib_complete(init_calib_complete),
|
|
||||||
.sys_rst(i_rst),
|
|
||||||
.device_temp(w_device_temp)
|
|
||||||
);
|
|
||||||
|
|
||||||
wbm2axisp #(
|
|
||||||
.C_AXI_ID_WIDTH(AXIDWIDTH),
|
|
||||||
.C_AXI_DATA_WIDTH(AXIWIDTH),
|
|
||||||
.C_AXI_ADDR_WIDTH(RAMABITS),
|
|
||||||
.AW(AW), .DW(DW)
|
|
||||||
)
|
|
||||||
bus_translator(
|
|
||||||
.i_clk(o_sys_clk),
|
|
||||||
// .i_reset(i_rst), // internally unused
|
|
||||||
// Write address channel signals
|
|
||||||
.o_axi_awvalid( s_axi_awvalid),
|
|
||||||
.i_axi_awready( s_axi_awready),
|
|
||||||
.o_axi_awid( s_axi_awid),
|
|
||||||
.o_axi_awaddr( s_axi_awaddr),
|
|
||||||
.o_axi_awlen( s_axi_awlen),
|
|
||||||
.o_axi_awsize( s_axi_awsize),
|
|
||||||
.o_axi_awburst( s_axi_awburst),
|
|
||||||
.o_axi_awlock( s_axi_awlock),
|
|
||||||
.o_axi_awcache( s_axi_awcache),
|
|
||||||
.o_axi_awprot( s_axi_awprot), // s_axi_awqos
|
|
||||||
.o_axi_awqos( s_axi_awqos), // s_axi_awqos
|
|
||||||
//
|
|
||||||
.o_axi_wvalid( s_axi_wvalid),
|
|
||||||
.i_axi_wready( s_axi_wready),
|
|
||||||
.o_axi_wdata( s_axi_wdata),
|
|
||||||
.o_axi_wstrb( s_axi_wstrb),
|
|
||||||
.o_axi_wlast( s_axi_wlast),
|
|
||||||
//
|
|
||||||
.i_axi_bvalid( s_axi_bvalid),
|
|
||||||
.o_axi_bready( s_axi_bready),
|
|
||||||
.i_axi_bid( s_axi_bid),
|
|
||||||
.i_axi_bresp( s_axi_bresp),
|
|
||||||
//
|
|
||||||
.o_axi_arvalid( s_axi_arvalid),
|
|
||||||
.i_axi_arready( s_axi_arready),
|
|
||||||
.o_axi_arid( s_axi_arid),
|
|
||||||
.o_axi_araddr( s_axi_araddr),
|
|
||||||
.o_axi_arlen( s_axi_arlen),
|
|
||||||
.o_axi_arsize( s_axi_arsize),
|
|
||||||
.o_axi_arburst( s_axi_arburst),
|
|
||||||
.o_axi_arlock( s_axi_arlock),
|
|
||||||
.o_axi_arcache( s_axi_arcache),
|
|
||||||
.o_axi_arprot( s_axi_arprot),
|
|
||||||
.o_axi_arqos( s_axi_arqos),
|
|
||||||
//
|
|
||||||
.i_axi_rvalid( s_axi_rvalid),
|
|
||||||
.o_axi_rready( s_axi_rready),
|
|
||||||
.i_axi_rid( s_axi_rid),
|
|
||||||
.i_axi_rdata( s_axi_rdata),
|
|
||||||
.i_axi_rresp( s_axi_rresp),
|
|
||||||
.i_axi_rlast( s_axi_rlast),
|
|
||||||
//
|
|
||||||
.i_wb_cyc( i_wb_cyc),
|
|
||||||
.i_wb_stb( i_wb_stb),
|
|
||||||
.i_wb_we( i_wb_we),
|
|
||||||
.i_wb_addr( i_wb_addr),
|
|
||||||
.i_wb_data( i_wb_data),
|
|
||||||
.i_wb_sel( i_wb_sel),
|
|
||||||
//
|
|
||||||
.o_wb_stall( o_wb_stall),
|
|
||||||
.o_wb_ack( o_wb_ack),
|
|
||||||
.o_wb_data( o_wb_data),
|
|
||||||
.o_wb_err( o_wb_err)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Convert from active low to active high, *and* hold the system in
|
|
||||||
// reset until the memory comes up.
|
|
||||||
initial o_sys_reset = 1'b1;
|
|
||||||
always @(posedge o_sys_clk)
|
|
||||||
o_sys_reset <= (!w_sys_reset)
|
|
||||||
||(!init_calib_complete)
|
|
||||||
||(!mmcm_locked);
|
|
||||||
`else
|
|
||||||
BUFG sysclk(i_clk, o_sys_clk);
|
|
||||||
initial o_sys_reset <= 1'b1;
|
|
||||||
always @(posedge i_clk)
|
|
||||||
o_sys_reset <= 1'b1;
|
|
||||||
|
|
||||||
OBUFDS ckobuf(.I(i_clk), .O(o_ddr_ck_p), .OB(o_ddr_ck_n));
|
|
||||||
|
|
||||||
assign o_ddr_reset_n = 1'b0;
|
|
||||||
assign o_ddr_cke[0] = 1'b0;
|
|
||||||
assign o_ddr_cs_n[0] = 1'b1;
|
|
||||||
assign o_ddr_cas_n = 1'b1;
|
|
||||||
assign o_ddr_ras_n = 1'b1;
|
|
||||||
assign o_ddr_we_n = 1'b1;
|
|
||||||
assign o_ddr_ba = 3'h0;
|
|
||||||
assign o_ddr_addr = 14'h00;
|
|
||||||
assign o_ddr_dm = 2'b00;
|
|
||||||
assign io_ddr_data = 16'h0;
|
|
||||||
|
|
||||||
OBUFDS dqsbufa(.I(i_clk), .O(io_ddr_dqs_p[1]), .OB(io_ddr_dqs_n[1]));
|
|
||||||
OBUFDS dqsbufb(.I(i_clk), .O(io_ddr_dqs_p[0]), .OB(io_ddr_dqs_n[0]));
|
|
||||||
|
|
||||||
`endif
|
|
||||||
|
|
||||||
endmodule
|
|
||||||
`ifndef YOSYS
|
|
||||||
`default_nettype wire
|
|
||||||
`endif
|
|
||||||
|
|
@ -0,0 +1,258 @@
|
||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000010
|
||||||
|
00000010
|
||||||
|
00000020
|
||||||
|
00000020
|
||||||
|
00000030
|
||||||
|
00000030
|
||||||
|
00000040
|
||||||
|
00000040
|
||||||
|
00000050
|
||||||
|
00000050
|
||||||
|
00000060
|
||||||
|
00000060
|
||||||
|
00000070
|
||||||
|
00000070
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
;
|
||||||
|
|
@ -0,0 +1,258 @@
|
||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
00030100
|
||||||
|
00020201
|
||||||
|
00030302
|
||||||
|
00020403
|
||||||
|
00030504
|
||||||
|
00020605
|
||||||
|
00030706
|
||||||
|
00020807
|
||||||
|
00030908
|
||||||
|
00020a09
|
||||||
|
00030b0a
|
||||||
|
00020c0b
|
||||||
|
00030d0c
|
||||||
|
00020e0d
|
||||||
|
00030f0e
|
||||||
|
0002100f
|
||||||
|
00031110
|
||||||
|
00031211
|
||||||
|
00031312
|
||||||
|
00031413
|
||||||
|
00031514
|
||||||
|
00031615
|
||||||
|
00031716
|
||||||
|
00031817
|
||||||
|
00031918
|
||||||
|
00031a19
|
||||||
|
00031b1a
|
||||||
|
00031c1b
|
||||||
|
00031d1c
|
||||||
|
00031e1d
|
||||||
|
00031f1e
|
||||||
|
0003201f
|
||||||
|
00032120
|
||||||
|
00032221
|
||||||
|
00032322
|
||||||
|
00032423
|
||||||
|
00032524
|
||||||
|
00032625
|
||||||
|
00032726
|
||||||
|
00032827
|
||||||
|
00032928
|
||||||
|
00032a29
|
||||||
|
00032b2a
|
||||||
|
00032c2b
|
||||||
|
00032d2c
|
||||||
|
00032e2d
|
||||||
|
00032f2e
|
||||||
|
0003302f
|
||||||
|
00033130
|
||||||
|
00033231
|
||||||
|
00033332
|
||||||
|
00033433
|
||||||
|
00033534
|
||||||
|
00033635
|
||||||
|
00033736
|
||||||
|
00033837
|
||||||
|
00033938
|
||||||
|
00033a39
|
||||||
|
00033b3a
|
||||||
|
00033c3b
|
||||||
|
00033d3c
|
||||||
|
00033e3d
|
||||||
|
00033f3e
|
||||||
|
0003403f
|
||||||
|
00034140
|
||||||
|
00034241
|
||||||
|
00034342
|
||||||
|
00034443
|
||||||
|
00034544
|
||||||
|
00034645
|
||||||
|
00034746
|
||||||
|
00034847
|
||||||
|
00034948
|
||||||
|
00034a49
|
||||||
|
00034b4a
|
||||||
|
00034c4b
|
||||||
|
00034d4c
|
||||||
|
00034e4d
|
||||||
|
00034f4e
|
||||||
|
0003504f
|
||||||
|
00035150
|
||||||
|
00035251
|
||||||
|
00035352
|
||||||
|
00035453
|
||||||
|
00035554
|
||||||
|
00035655
|
||||||
|
00035756
|
||||||
|
00035857
|
||||||
|
00035958
|
||||||
|
00035a59
|
||||||
|
00035b5a
|
||||||
|
00035c5b
|
||||||
|
00035d5c
|
||||||
|
00035e5d
|
||||||
|
00035f5e
|
||||||
|
0003605f
|
||||||
|
00036160
|
||||||
|
00036261
|
||||||
|
00036362
|
||||||
|
00036463
|
||||||
|
00036564
|
||||||
|
00036665
|
||||||
|
00036766
|
||||||
|
00036867
|
||||||
|
00036968
|
||||||
|
00036a69
|
||||||
|
00036b6a
|
||||||
|
00036c6b
|
||||||
|
00036d6c
|
||||||
|
00036e6d
|
||||||
|
00036f6e
|
||||||
|
0003706f
|
||||||
|
00037170
|
||||||
|
00037271
|
||||||
|
00037372
|
||||||
|
00037473
|
||||||
|
00037574
|
||||||
|
00037675
|
||||||
|
00037776
|
||||||
|
00037877
|
||||||
|
00037978
|
||||||
|
00037a79
|
||||||
|
00037b7a
|
||||||
|
00037c7b
|
||||||
|
00037d7c
|
||||||
|
00037e7d
|
||||||
|
00037f7e
|
||||||
|
0003807f
|
||||||
|
00038180
|
||||||
|
00038281
|
||||||
|
00038382
|
||||||
|
00038483
|
||||||
|
00038584
|
||||||
|
00038685
|
||||||
|
00038786
|
||||||
|
00038887
|
||||||
|
00038988
|
||||||
|
00038a89
|
||||||
|
00038b8a
|
||||||
|
00038c8b
|
||||||
|
00038d8c
|
||||||
|
00038e8d
|
||||||
|
00038f8e
|
||||||
|
0003908f
|
||||||
|
00039190
|
||||||
|
00039291
|
||||||
|
00039392
|
||||||
|
00039493
|
||||||
|
00039594
|
||||||
|
00039695
|
||||||
|
00039796
|
||||||
|
00039897
|
||||||
|
00039998
|
||||||
|
00039a99
|
||||||
|
00039b9a
|
||||||
|
00039c9b
|
||||||
|
00039d9c
|
||||||
|
00039e9d
|
||||||
|
00039f9e
|
||||||
|
0003a09f
|
||||||
|
0003a1a0
|
||||||
|
0003a2a1
|
||||||
|
0003a3a2
|
||||||
|
0003a4a3
|
||||||
|
0003a5a4
|
||||||
|
0003a6a5
|
||||||
|
0003a7a6
|
||||||
|
0003a8a7
|
||||||
|
0003a9a8
|
||||||
|
0003aaa9
|
||||||
|
0003abaa
|
||||||
|
0003acab
|
||||||
|
0003adac
|
||||||
|
0003aead
|
||||||
|
0003afae
|
||||||
|
0003b0af
|
||||||
|
0003b1b0
|
||||||
|
0003b2b1
|
||||||
|
0003b3b2
|
||||||
|
0003b4b3
|
||||||
|
0003b5b4
|
||||||
|
0003b6b5
|
||||||
|
0003b7b6
|
||||||
|
0003b8b7
|
||||||
|
0003b9b8
|
||||||
|
0003bab9
|
||||||
|
0003bbba
|
||||||
|
0003bcbb
|
||||||
|
0003bdbc
|
||||||
|
0003bebd
|
||||||
|
0003bfbe
|
||||||
|
0003c0bf
|
||||||
|
0003c1c0
|
||||||
|
0003c2c1
|
||||||
|
0003c3c2
|
||||||
|
0003c4c3
|
||||||
|
0003c5c4
|
||||||
|
0003c6c5
|
||||||
|
0003c7c6
|
||||||
|
0003c8c7
|
||||||
|
0003c9c8
|
||||||
|
0003cac9
|
||||||
|
0003cbca
|
||||||
|
0003cccb
|
||||||
|
0003cdcc
|
||||||
|
0003cecd
|
||||||
|
0003cfce
|
||||||
|
0003d0cf
|
||||||
|
0003d1d0
|
||||||
|
0003d2d1
|
||||||
|
0003d3d2
|
||||||
|
0003d4d3
|
||||||
|
0003d5d4
|
||||||
|
0003d6d5
|
||||||
|
0003d7d6
|
||||||
|
0003d8d7
|
||||||
|
0003d9d8
|
||||||
|
0003dad9
|
||||||
|
0003dbda
|
||||||
|
0003dcdb
|
||||||
|
0003dddc
|
||||||
|
0003dedd
|
||||||
|
0003dfde
|
||||||
|
0003e0df
|
||||||
|
0003e1e0
|
||||||
|
0003e2e1
|
||||||
|
0003e3e2
|
||||||
|
0003e4e3
|
||||||
|
0003e5e4
|
||||||
|
0003e6e5
|
||||||
|
0003e7e6
|
||||||
|
0003e8e7
|
||||||
|
0003e9e8
|
||||||
|
0003eae9
|
||||||
|
0003ebea
|
||||||
|
0003eceb
|
||||||
|
0003edec
|
||||||
|
0003eeed
|
||||||
|
0003efee
|
||||||
|
0003f0ef
|
||||||
|
0003f1f0
|
||||||
|
0003f2f1
|
||||||
|
0003f3f2
|
||||||
|
0003f4f3
|
||||||
|
0003f5f4
|
||||||
|
0003f6f5
|
||||||
|
0003f7f6
|
||||||
|
0003f8f7
|
||||||
|
0003f9f8
|
||||||
|
0003faf9
|
||||||
|
0003fbfa
|
||||||
|
0003fcfb
|
||||||
|
0003fdfc
|
||||||
|
0003fefd
|
||||||
|
0003fffe
|
||||||
|
;
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,258 @@
|
||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
01234567
|
||||||
|
00000000
|
||||||
|
89abcdef
|
||||||
|
00000000
|
||||||
|
19283746
|
||||||
|
00000000
|
||||||
|
afdec70a
|
||||||
|
00000000
|
||||||
|
12121212
|
||||||
|
00000000
|
||||||
|
34343434
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
;
|
||||||
|
|
@ -0,0 +1,205 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<wave_config>
|
||||||
|
<wave_state>
|
||||||
|
</wave_state>
|
||||||
|
<db_ref_list>
|
||||||
|
<db_ref path="ddr3_axi_traffic_gen_behav.wdb" id="1">
|
||||||
|
<top_modules>
|
||||||
|
<top_module name="ddr3_axi_traffic_gen_tb" />
|
||||||
|
<top_module name="glbl" />
|
||||||
|
</top_modules>
|
||||||
|
</db_ref>
|
||||||
|
</db_ref_list>
|
||||||
|
<zoom_setting>
|
||||||
|
<ZoomStartTime time="56,185.259 ns"></ZoomStartTime>
|
||||||
|
<ZoomEndTime time="56,341.826 ns"></ZoomEndTime>
|
||||||
|
<Cursor1Time time="56,242.459 ns"></Cursor1Time>
|
||||||
|
</zoom_setting>
|
||||||
|
<column_width_setting>
|
||||||
|
<NameColumnWidth column_width="276"></NameColumnWidth>
|
||||||
|
<ValueColumnWidth column_width="84"></ValueColumnWidth>
|
||||||
|
</column_width_setting>
|
||||||
|
<WVObjectSize size="45" />
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/i_controller_clk">
|
||||||
|
<obj_property name="ElementShortName">i_controller_clk</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_controller_clk</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/i_ddr3_clk">
|
||||||
|
<obj_property name="ElementShortName">i_ddr3_clk</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_ddr3_clk</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/i_ref_clk">
|
||||||
|
<obj_property name="ElementShortName">i_ref_clk</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_ref_clk</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/i_ddr3_clk_90">
|
||||||
|
<obj_property name="ElementShortName">i_ddr3_clk_90</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_ddr3_clk_90</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/i_rst_n">
|
||||||
|
<obj_property name="ElementShortName">i_rst_n</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_rst_n</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject fp_name="divider622" type="divider">
|
||||||
|
<obj_property name="label">AXI Lite (Traffic Generator)</obj_property>
|
||||||
|
<obj_property name="DisplayName">label</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/s_axi_aclk">
|
||||||
|
<obj_property name="ElementShortName">s_axi_aclk</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">s_axi_aclk</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/s_axi_aresetn">
|
||||||
|
<obj_property name="ElementShortName">s_axi_aresetn</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">s_axi_aresetn</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_awaddr">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_awaddr[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_awaddr[31:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_awprot">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_awprot[2:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_awprot[2:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_awvalid">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_awvalid</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_awvalid</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_awready">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_awready</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_awready</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_wdata">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_wdata[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_wdata[31:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_wstrb">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_wstrb[3:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_wstrb[3:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_wvalid">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_wvalid</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_wvalid</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_wready">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_wready</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_wready</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_bresp">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_bresp[1:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_bresp[1:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_bvalid">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_bvalid</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_bvalid</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/m_axi_lite_ch1_bready">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_bready</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_bready</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_araddr">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_araddr[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_araddr[31:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_arvalid">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_arvalid</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_arvalid</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_arready">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_arready</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_arready</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_rdata">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_rdata[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_rdata[31:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_rvalid">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_rvalid</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_rvalid</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_rresp">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_rresp[1:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_rresp[1:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/m_axi_lite_ch1_rready">
|
||||||
|
<obj_property name="ElementShortName">m_axi_lite_ch1_rready</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">m_axi_lite_ch1_rready</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/done">
|
||||||
|
<obj_property name="ElementShortName">done</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">done</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/axi_traffic_gen_inst/status">
|
||||||
|
<obj_property name="ElementShortName">status[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">status[31:0]</obj_property>
|
||||||
|
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/s_axi_wdata">
|
||||||
|
<obj_property name="ElementShortName">s_axi_wdata[127:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">s_axi_wdata[127:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/s_axi_wstrb">
|
||||||
|
<obj_property name="ElementShortName">s_axi_wstrb[15:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">s_axi_wstrb[15:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject fp_name="divider621" type="divider">
|
||||||
|
<obj_property name="label">Controller</obj_property>
|
||||||
|
<obj_property name="DisplayName">label</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/ddr3_controller_inst/instruction_address">
|
||||||
|
<obj_property name="ElementShortName">instruction_address[4:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">instruction_address[4:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/ddr3_controller_inst/state_calibrate">
|
||||||
|
<obj_property name="ElementShortName">state_calibrate[5:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">state_calibrate[5:0]</obj_property>
|
||||||
|
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/ddr3_controller_inst/lane">
|
||||||
|
<obj_property name="ElementShortName">lane[0:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">lane[0:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/ddr3_controller_inst/correct_read_data">
|
||||||
|
<obj_property name="ElementShortName">correct_read_data[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">correct_read_data[31:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/ddr3_controller_inst/wrong_read_data">
|
||||||
|
<obj_property name="ElementShortName">wrong_read_data[31:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">wrong_read_data[31:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/i_wb_cyc">
|
||||||
|
<obj_property name="ElementShortName">i_wb_cyc</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_wb_cyc</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/i_wb_stb">
|
||||||
|
<obj_property name="ElementShortName">i_wb_stb</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_wb_stb</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/i_wb_we">
|
||||||
|
<obj_property name="ElementShortName">i_wb_we</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_wb_we</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/i_wb_addr">
|
||||||
|
<obj_property name="ElementShortName">i_wb_addr[23:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_wb_addr[23:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/i_wb_data">
|
||||||
|
<obj_property name="ElementShortName">i_wb_data[127:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_wb_data[127:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/i_wb_sel">
|
||||||
|
<obj_property name="ElementShortName">i_wb_sel[15:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">i_wb_sel[15:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/o_wb_stall">
|
||||||
|
<obj_property name="ElementShortName">o_wb_stall</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">o_wb_stall</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="logic" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/o_wb_ack">
|
||||||
|
<obj_property name="ElementShortName">o_wb_ack</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">o_wb_ack</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
<wvobject type="array" fp_name="/ddr3_axi_traffic_gen_tb/dut/ddr3_top_inst/o_wb_data">
|
||||||
|
<obj_property name="ElementShortName">o_wb_data[127:0]</obj_property>
|
||||||
|
<obj_property name="ObjectShortName">o_wb_data[127:0]</obj_property>
|
||||||
|
</wvobject>
|
||||||
|
</wave_config>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
module ddr3_axi_traffic_gen;
|
module ddr3_axi_traffic_gen_tb;
|
||||||
|
|
||||||
reg i_controller_clk, i_ddr3_clk, i_ref_clk, i_ddr3_clk_90;
|
reg i_controller_clk, i_ddr3_clk, i_ref_clk, i_ddr3_clk_90;
|
||||||
reg i_rst_n;
|
reg i_rst_n;
|
||||||
|
|
@ -68,7 +68,7 @@ wire m_axi_lite_ch1_rready;
|
||||||
wire done;
|
wire done;
|
||||||
wire [31 : 0] status;
|
wire [31 : 0] status;
|
||||||
|
|
||||||
axi_traffic_gen_1 axi_traffic_gen_inst(
|
axi_traffic_gen_0 axi_traffic_gen_inst(
|
||||||
.s_axi_aclk(i_controller_clk),
|
.s_axi_aclk(i_controller_clk),
|
||||||
.s_axi_aresetn(i_rst_n && (dut.ddr3_top_inst.ddr3_controller_inst.state_calibrate == 23)), //stay reset until calibration is done
|
.s_axi_aresetn(i_rst_n && (dut.ddr3_top_inst.ddr3_controller_inst.state_calibrate == 23)), //stay reset until calibration is done
|
||||||
.m_axi_lite_ch1_awaddr(m_axi_lite_ch1_awaddr),
|
.m_axi_lite_ch1_awaddr(m_axi_lite_ch1_awaddr),
|
||||||
|
|
@ -0,0 +1,258 @@
|
||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
ffffffff
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
00000000
|
||||||
|
;
|
||||||
|
|
@ -1,282 +0,0 @@
|
||||||
module ddr3_axi_tb;
|
|
||||||
|
|
||||||
reg i_controller_clk, i_ddr3_clk, i_ref_clk, i_ddr3_clk_90;
|
|
||||||
reg i_rst_n;
|
|
||||||
|
|
||||||
// AXI Interface
|
|
||||||
// AXI write address channel signals
|
|
||||||
reg s_axi_awvalid;
|
|
||||||
wire s_axi_awready;
|
|
||||||
reg [dut.AXI_ID_WIDTH-1:0] s_axi_awid;
|
|
||||||
reg [dut.AXI_ADDR_WIDTH-1:0] s_axi_awaddr;
|
|
||||||
// AXI write data channel signals
|
|
||||||
reg s_axi_wvalid;
|
|
||||||
wire s_axi_wready;
|
|
||||||
reg [dut.AXI_DATA_WIDTH-1:0] s_axi_wdata;
|
|
||||||
reg [dut.AXI_DATA_WIDTH/8-1:0] s_axi_wstrb;
|
|
||||||
reg s_axi_wlast;
|
|
||||||
// AXI write response channel signals
|
|
||||||
wire s_axi_bvalid;
|
|
||||||
reg s_axi_bready;
|
|
||||||
wire [dut.AXI_ID_WIDTH-1:0] s_axi_bid;
|
|
||||||
wire [1:0] s_axi_bresp;
|
|
||||||
// AXI read address channel signals
|
|
||||||
reg s_axi_arvalid;
|
|
||||||
wire s_axi_arready;
|
|
||||||
reg [dut.AXI_ID_WIDTH-1:0] s_axi_arid;
|
|
||||||
reg [dut.AXI_ADDR_WIDTH-1:0] s_axi_araddr;
|
|
||||||
// AXI read data channel signals
|
|
||||||
wire s_axi_rvalid; // rd rslt valid
|
|
||||||
reg s_axi_rready; // rd rslt ready
|
|
||||||
wire [dut.AXI_ID_WIDTH-1:0] s_axi_rid; // response id
|
|
||||||
wire [dut.AXI_DATA_WIDTH-1:0] s_axi_rdata;// read data
|
|
||||||
wire s_axi_rlast; // read last
|
|
||||||
wire [1:0] s_axi_rresp; // read response
|
|
||||||
|
|
||||||
// DDR3 Pins
|
|
||||||
wire o_ddr3_clk_p;
|
|
||||||
wire o_ddr3_clk_n;
|
|
||||||
wire o_ddr3_reset_n;
|
|
||||||
wire o_ddr3_cke;
|
|
||||||
wire o_ddr3_cs_n;
|
|
||||||
wire o_ddr3_ras_n;
|
|
||||||
wire o_ddr3_cas_n;
|
|
||||||
wire o_ddr3_we_n;
|
|
||||||
wire[dut.ROW_BITS-1:0] o_ddr3_addr;
|
|
||||||
wire[dut.BA_BITS-1:0] o_ddr3_ba_addr;
|
|
||||||
wire[(dut.DQ_BITS*dut.BYTE_LANES)-1:0] io_ddr3_dq;
|
|
||||||
wire[dut.BYTE_LANES-1:0] io_ddr3_dqs, io_ddr3_dqs_n;
|
|
||||||
wire[dut.BYTE_LANES-1:0] o_ddr3_dm;
|
|
||||||
wire o_ddr3_odt;
|
|
||||||
|
|
||||||
localparam CONTROLLER_CLK_PERIOD = 10_000, //ps, period of clock input to this DDR3 controller module
|
|
||||||
DDR3_CLK_PERIOD = 2500; //ps, period of clock input to DDR3 RAM device
|
|
||||||
|
|
||||||
|
|
||||||
// Clocks and reset
|
|
||||||
always #(CONTROLLER_CLK_PERIOD/2) i_controller_clk = !i_controller_clk;
|
|
||||||
always #(DDR3_CLK_PERIOD/2) i_ddr3_clk = !i_ddr3_clk;
|
|
||||||
always #2500 i_ref_clk = !i_ref_clk;
|
|
||||||
initial begin //90 degree phase shifted ddr3_clk
|
|
||||||
#(DDR3_CLK_PERIOD/4);
|
|
||||||
while(1) begin
|
|
||||||
#(DDR3_CLK_PERIOD/2) i_ddr3_clk_90 = !i_ddr3_clk_90;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
initial begin
|
|
||||||
i_controller_clk = 1;
|
|
||||||
i_ddr3_clk = 1;
|
|
||||||
i_ref_clk = 1;
|
|
||||||
i_ddr3_clk_90 = 1;
|
|
||||||
i_rst_n = 0;
|
|
||||||
#1_000_000;
|
|
||||||
i_rst_n = 1;
|
|
||||||
end
|
|
||||||
|
|
||||||
initial begin
|
|
||||||
// initialize AXI
|
|
||||||
s_axi_awvalid = 0;
|
|
||||||
s_axi_awid = 0;
|
|
||||||
s_axi_awaddr = 0;
|
|
||||||
|
|
||||||
s_axi_wvalid = 0;
|
|
||||||
s_axi_wdata = 0;
|
|
||||||
s_axi_wstrb = 0;
|
|
||||||
s_axi_wlast = 0;
|
|
||||||
|
|
||||||
s_axi_bready = 0;
|
|
||||||
|
|
||||||
s_axi_arvalid = 0;
|
|
||||||
s_axi_arid = 0;
|
|
||||||
s_axi_araddr = 0;
|
|
||||||
|
|
||||||
s_axi_rready = 0;
|
|
||||||
|
|
||||||
//wait until done calibrate
|
|
||||||
wait(dut.ddr3_top_inst.ddr3_controller_inst.state_calibrate == 23);
|
|
||||||
|
|
||||||
// write data to address 3 (0-15 = address 0, 16-31 = address 1, 32-47 = address 2)
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_awvalid = 1;
|
|
||||||
s_axi_awid = 0;
|
|
||||||
s_axi_awaddr = 33;
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
// while(!s_axi_awready) begin
|
|
||||||
// @(negedge i_controller_clk);
|
|
||||||
// end
|
|
||||||
s_axi_awvalid = 0;
|
|
||||||
s_axi_awid = 0;
|
|
||||||
s_axi_awaddr = 0;
|
|
||||||
|
|
||||||
s_axi_wvalid = 1;
|
|
||||||
s_axi_wdata = 128'hAAAA_BBBB_CCCC_DDDD_EEEE_FFFF_0000_1111; // data 1
|
|
||||||
s_axi_wstrb = -1;
|
|
||||||
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
while(!s_axi_wready) begin
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
end
|
|
||||||
s_axi_wdata = 128'h2222_3333_4444_5555_6666_7777_8888_9999; // data 2
|
|
||||||
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
while(!s_axi_wready) begin
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
end
|
|
||||||
s_axi_wdata = 100; // data 3
|
|
||||||
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
while(!s_axi_wready) begin
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
end
|
|
||||||
s_axi_wdata = 2000; // data 4
|
|
||||||
s_axi_wlast = 1;
|
|
||||||
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
while(!s_axi_wready) begin
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
end
|
|
||||||
s_axi_wvalid = 0;
|
|
||||||
s_axi_wdata = 0;
|
|
||||||
s_axi_wstrb = 0;
|
|
||||||
s_axi_wlast = 0;
|
|
||||||
// DONE write data to address 3
|
|
||||||
|
|
||||||
// wait for write response
|
|
||||||
wait(s_axi_bvalid);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_bready = 1;
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_bready = 0;
|
|
||||||
// done waiting for write response
|
|
||||||
|
|
||||||
#1000_000;
|
|
||||||
// read data request from address 2 (0-15 = address 0, 16-31 = address 1, 32-47 = address 2)
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_arvalid = 1;
|
|
||||||
s_axi_arid = 2;
|
|
||||||
s_axi_araddr = 46;
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_arvalid = 0;
|
|
||||||
s_axi_arid = 0;
|
|
||||||
s_axi_araddr = 0;
|
|
||||||
// done read data request from address 3
|
|
||||||
|
|
||||||
// wait for read data
|
|
||||||
wait(s_axi_rvalid);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_rready = 1;
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
@(negedge i_controller_clk);
|
|
||||||
s_axi_rready = 0;
|
|
||||||
#1000_000;
|
|
||||||
$finish;
|
|
||||||
|
|
||||||
end
|
|
||||||
ddr3_top_axi #(
|
|
||||||
.CONTROLLER_CLK_PERIOD(10_000), //ps, clock period of the controller interface
|
|
||||||
.DDR3_CLK_PERIOD(2_500), //ps, clock period of the DDR3 RAM device (must be 1/4 of the CONTROLLER_CLK_PERIOD)
|
|
||||||
.ROW_BITS(14), //width of row address
|
|
||||||
.COL_BITS(10), //width of column address
|
|
||||||
.BA_BITS(3), //width of bank address
|
|
||||||
.BYTE_LANES(2), //number of byte lanes of DDR3 RAM
|
|
||||||
.AXI_ID_WIDTH(4), // The AXI id width used for R&W, an int between 1-16
|
|
||||||
.MICRON_SIM(1), //enable faster simulation for micron ddr3 model (shorten POWER_ON_RESET_HIGH and INITIAL_CKE_LOW)
|
|
||||||
.ODELAY_SUPPORTED(0), //set to 1 when ODELAYE2 is supported
|
|
||||||
.SECOND_WISHBONE(0) //set to 1 if 2nd wishbone for debugging is needed
|
|
||||||
) dut
|
|
||||||
(
|
|
||||||
.i_controller_clk(i_controller_clk),
|
|
||||||
.i_ddr3_clk(i_ddr3_clk),
|
|
||||||
.i_ref_clk(i_ref_clk), //i_controller_clk = CONTROLLER_CLK_PERIOD, i_ddr3_clk = DDR3_CLK_PERIOD, i_ref_clk = 200MHz
|
|
||||||
.i_ddr3_clk_90(i_ddr3_clk_90), //required only when ODELAY_SUPPORTED is zero
|
|
||||||
.i_rst_n(i_rst_n),
|
|
||||||
//
|
|
||||||
// AXI Interface
|
|
||||||
// AXI write address channel signals
|
|
||||||
.s_axi_awvalid(s_axi_awvalid),
|
|
||||||
.s_axi_awready(s_axi_awready),
|
|
||||||
.s_axi_awid(s_axi_awid),
|
|
||||||
.s_axi_awaddr(s_axi_awaddr),
|
|
||||||
.s_axi_awlen(3), // 4 transfers in a transaction
|
|
||||||
.s_axi_awsize($clog2(128)),
|
|
||||||
.s_axi_awburst(1), //incrementing burst address
|
|
||||||
.s_axi_awlock(0),
|
|
||||||
.s_axi_awcache(0),
|
|
||||||
.s_axi_awprot(0),
|
|
||||||
.s_axi_awqos(0),
|
|
||||||
// AXI write data channel signals
|
|
||||||
.s_axi_wvalid(s_axi_wvalid),
|
|
||||||
.s_axi_wready(s_axi_wready),
|
|
||||||
.s_axi_wdata(s_axi_wdata),
|
|
||||||
.s_axi_wstrb(s_axi_wstrb),
|
|
||||||
.s_axi_wlast(s_axi_wlast),
|
|
||||||
// AXI write response channel signals
|
|
||||||
.s_axi_bvalid(s_axi_bvalid),
|
|
||||||
.s_axi_bready(s_axi_bready),
|
|
||||||
.s_axi_bid(s_axi_bid),
|
|
||||||
.s_axi_bresp(s_axi_bresp),
|
|
||||||
// AXI read address channel signals
|
|
||||||
.s_axi_arvalid(s_axi_arvalid),
|
|
||||||
.s_axi_arready(s_axi_arready),
|
|
||||||
.s_axi_arid(s_axi_arid),
|
|
||||||
.s_axi_araddr(s_axi_araddr),
|
|
||||||
.s_axi_arlen(3), // only 1 transfer in a transaction
|
|
||||||
.s_axi_arsize($clog2(128)),
|
|
||||||
.s_axi_arburst(1), //incrementing burst address
|
|
||||||
.s_axi_arlock(0),
|
|
||||||
.s_axi_arcache(0),
|
|
||||||
.s_axi_arprot(0),
|
|
||||||
.s_axi_arqos(0),
|
|
||||||
// AXI read data channel signals
|
|
||||||
.s_axi_rvalid(s_axi_rvalid), // rd rslt valid
|
|
||||||
.s_axi_rready(s_axi_rready), // rd rslt ready
|
|
||||||
.s_axi_rid(s_axi_rid), // response id
|
|
||||||
.s_axi_rdata(s_axi_rdata),// read data
|
|
||||||
.s_axi_rlast(s_axi_rlast), // read last
|
|
||||||
.s_axi_rresp(s_axi_rresp), // read response
|
|
||||||
//
|
|
||||||
// DDR3 I/O Interface
|
|
||||||
.o_ddr3_clk_p(o_ddr3_clk_p),
|
|
||||||
.o_ddr3_clk_n(o_ddr3_clk_n),
|
|
||||||
.o_ddr3_reset_n(o_ddr3_reset_n),
|
|
||||||
.o_ddr3_cke(o_ddr3_cke),
|
|
||||||
.o_ddr3_cs_n(o_ddr3_cs_n),
|
|
||||||
.o_ddr3_ras_n(o_ddr3_ras_n),
|
|
||||||
.o_ddr3_cas_n(o_ddr3_cas_n),
|
|
||||||
.o_ddr3_we_n(o_ddr3_we_n),
|
|
||||||
.o_ddr3_addr(o_ddr3_addr),
|
|
||||||
.o_ddr3_ba_addr(o_ddr3_ba_addr),
|
|
||||||
.io_ddr3_dq(io_ddr3_dq),
|
|
||||||
.io_ddr3_dqs(io_ddr3_dqs),
|
|
||||||
.io_ddr3_dqs_n(io_ddr3_dqs_n),
|
|
||||||
.o_ddr3_dm(o_ddr3_dm),
|
|
||||||
.o_ddr3_odt(o_ddr3_odt)
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
ddr3 ddr3_0(
|
|
||||||
.rst_n(o_ddr3_reset_n),
|
|
||||||
.ck(o_ddr3_clk_p),
|
|
||||||
.ck_n(o_ddr3_clk_n),
|
|
||||||
.cke(o_ddr3_cke),
|
|
||||||
.cs_n(o_ddr3_cs_n),
|
|
||||||
.ras_n(o_ddr3_ras_n),
|
|
||||||
.cas_n(o_ddr3_cas_n),
|
|
||||||
.we_n(o_ddr3_we_n),
|
|
||||||
.dm_tdqs(o_ddr3_dm),
|
|
||||||
.ba(o_ddr3_ba_addr),
|
|
||||||
.addr({0,o_ddr3_addr}),
|
|
||||||
.dq(io_ddr3_dq),
|
|
||||||
.dqs(io_ddr3_dqs),
|
|
||||||
.dqs_n(io_ddr3_dqs_n),
|
|
||||||
.tdqs_n(),
|
|
||||||
.odt(o_ddr3_odt)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
endmodule
|
|
||||||
Loading…
Reference in New Issue