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

Subversion Repositories ssbcc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /ssbcc/trunk/core/9x8/peripherals
    from Rev 3 to Rev 4
    Reverse comparison

Rev 3 → Rev 4

/vivado_AXI4_Lite_Bus.py
45,6 → 45,8
ipx::remove_bus_interface {o_@BASEPORTNAME@} [ipx::current_core]
ipx::remove_bus_interface {i_@BASEPORTNAME@_signal_reset} [ipx::current_core]
ipx::remove_bus_interface {i_@BASEPORTNAME@_signal_clock} [ipx::current_core]
ipx::remove_memory_map {i_@BASEPORTNAME@} [ipx::current_core]
ipx::remove_memory_map {o_@BASEPORTNAME@} [ipx::current_core]
 
# Create the AXI4-Lite port.
ipx::add_bus_interface {@BASEPORTNAME@} [ipx::current_core]
88,10 → 90,14
body += """
# Fix the address space
ipx::add_address_space {@BASEPORTNAME@} [ipx::current_core]
set_property master_address_space_ref {@BASEPORTNAME@} [ipx::get_bus_interface @BASEPORTNAME@ [ipx::current_core]]
""";
if mode == 'master':
body += """set_property master_address_space_ref {@BASEPORTNAME@} [ipx::get_bus_interface @BASEPORTNAME@ [ipx::current_core]]
set_property range {@ADDR_WIDTH@} [ipx::get_address_space @BASEPORTNAME@ [ipx::current_core]]
set_property width {32} [ipx::get_address_space @BASEPORTNAME@ [ipx::current_core]]
""";
else:
body += "ipx::remove_address_space {@BASEPORTNAME@} [ipx::current_core]\n";
 
body += """
# Fix the reset port definition
/AXI4_Lite_Slave_DualPortRAM.v
26,6 → 26,9
reg s__axi_got_wdata = 1'b0;
reg s__axi_got_raddr = 1'b0;
reg [L__NBITS_SIZE-1:2] s__axi_addr = {(L__NBITS_SIZE-2){1'b0}};
initial o_awready = 1'b0;
initial o_wready = 1'b0;
initial o_arready = 1'b0;
always @ (posedge i_aclk)
if (~i_aresetn) begin
s__axi_idle <= 1'b1;
33,6 → 36,9
s__axi_got_wdata <= 1'b0;
s__axi_got_raddr <= 1'b0;
s__axi_addr <= {(L__NBITS_SIZE-2){1'b0}};
o_awready <= 1'b0;
o_wready <= 1'b0;
o_arready <= 1'b0;
end else begin
s__axi_idle <= s__axi_idle;
s__axi_got_waddr <= s__axi_got_waddr;
75,9 → 81,22
initial o_bvalid = 1'b0;
always @ (*)
o_bvalid = s__axi_got_wdata;
reg s__axi_arready_s = 1'b0;
always @ (posedge i_aclk)
if (~i_aresetn)
s__axi_arready_s <= 1'b0;
else
s__axi_arready_s <= o_arready;
initial o_rvalid = 1'b0;
always @ (s__axi_got_raddr)
o_rvalid = s__axi_got_raddr;
always @ (posedge i_aclk)
if (~i_aresetn)
o_rvalid <= 1'b0;
else if (s__axi_arready_s)
o_rvalid <= 1'b1;
else if (i_rready)
o_rvalid <= 1'b0;
else
o_rvalid <= o_rvalid;
// signals common to both memory architectures
reg [L__NBITS_SIZE-1:2] s__axi_addr_s = {(L__NBITS_SIZE-2){1'b0}};
always @ (posedge i_aclk)
/tb/AXI4_Lite_Slave_DualPortRAM/master.gtkw
0,0 → 1,50
[*]
[*] GTKWave Analyzer v3.3.42 (w)1999-2012 BSI
[*] Sun Mar 23 13:48:13 2014
[*]
[dumpfile] "/home/rsinclair/Projects/SSBCC/core/9x8/peripherals/tb/AXI4_Lite_Slave_DualPortRAM/tb.vcd"
[dumpfile_mtime] "Sun Mar 23 12:59:00 2014"
[dumpfile_size] 869113
[savefile] "/home/rsinclair/Projects/SSBCC/core/9x8/peripherals/tb/AXI4_Lite_Slave_DualPortRAM/master.gtkw"
[timestart] 20022900
[size] 1920 1171
[pos] -1 -1
*-16.801830 20420000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] tb.
[treeopen] tb.uut.
[sst_width] 205
[signals_width] 276
[sst_expanded] 1
[sst_vpaned_height] 353
@28
tb.uut.i_axi_lite_aclk
tb.uut.i_axi_lite_aresetn
@200
-write side
@22
tb.uut.i_axi_lite_awaddr[6:0]
tb.uut.i_axi_lite_wdata[31:0]
tb.uut.i_axi_lite_wstrb[3:0]
@28
tb.uut.o_axi_lite_awready
tb.uut.i_axi_lite_awvalid
tb.uut.o_axi_lite_wready
tb.uut.i_axi_lite_wvalid
tb.uut.i_axi_lite_bready
tb.uut.o_axi_lite_bvalid
tb.uut.o_axi_lite_bresp[1:0]
@200
-read side
@22
tb.uut.i_axi_lite_araddr[6:0]
@29
tb.uut.o_axi_lite_arready
@28
tb.uut.i_axi_lite_arvalid
tb.uut.i_axi_lite_rready
tb.uut.o_axi_lite_rvalid
tb.uut.o_axi_lite_rresp[1:0]
@22
tb.uut.o_axi_lite_rdata[31:0]
[pattern_trace] 1
[pattern_trace] 0
/tb/AXI4_Lite_Slave_DualPortRAM/tb.v
128,6 → 128,7
end
 
// Initiate reads and indicate their termination
localparam S_INIT_RREADY = 1'b1; // observed Xilinx behavior -- always high
initial s_rd_done = 1'b0;
reg [1:0] s_rd_acks = 2'b00;
reg s_arvalid = 1'b0;
137,7 → 138,7
always @ (posedge s_aclk) begin
s_rd_done <= 1'b0;
s_rd_acks <= s_rd_acks;
s_rready <= 1'b0;
s_rready <= S_INIT_RREADY;
if (s_rd_acks == 2'b11) begin
s_rd_done <= 1'b1;
s_rd_acks <= 2'b00;
205,4 → 206,9
if (s_done)
$finish;
 
//initial begin
// $dumpfile("tb.vcd");
// $dumpvars();
//end
 
endmodule
/AXI4_Lite_Slave_DualPortRAM.py
46,7 → 46,7
optionally specifies using an 8-bit RAM for the dual-port memory instantiation
Note: This is the default
ram32
optionally specifies using a 32-bit RAM for the dual-port memrory instantiation
optionally specifies using a 32-bit RAM for the dual-port memory instantiation
Note: This is required for Vivado 2013.3.\n
Vivado Users:
The peripheral creates a TCL script to facilitate turning the micro
107,6 → 107,10
if not re.match(r'[1-9]\d*$', y):
raise SSBCCException('localparam must be a numeric constant, not "%s", to be used in "size=%s" at %s' % (y,x,loc,));
y = int(y);
elif re.match(r'C_\w+$',x):
if not config.IsConstant(x):
raise SSBCCException('"size=%s" is not a constant at %s' % (x,loc,));
y = int(config.constants[x]);
elif re.match(r'[1-9]\d*$',x):
y = int(x);
else:

powered by: WebSVN 2.1.0

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