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

Subversion Repositories altor32

[/] [altor32/] [trunk/] [rtl/] [cpu/] [altor32_icache.v] - Diff between revs 27 and 30

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 27 Rev 30
Line 58... Line 58...
    // Status
    // Status
    output                      miss_o /*verilator public*/,
    output                      miss_o /*verilator public*/,
    output                      busy_o /*verilator public*/,
    output                      busy_o /*verilator public*/,
 
 
    // Memory interface (slave)
    // Memory interface (slave)
    output [31:0]               mem_addr_o /*verilator public*/,
    output reg [31:0]           mem_addr_o /*verilator public*/,
    input [31:0]                mem_data_i /*verilator public*/,
    input [31:0]                mem_data_i /*verilator public*/,
    output                      mem_burst_o /*verilator public*/,
    output reg                  mem_burst_o /*verilator public*/,
    output                      mem_rd_o /*verilator public*/,
    output reg                  mem_rd_o /*verilator public*/,
    input                       mem_accept_i/*verilator public*/,
    input                       mem_accept_i/*verilator public*/,
    input                       mem_ack_i/*verilator public*/
    input                       mem_ack_i/*verilator public*/
);
);
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
Line 114... Line 114...
reg [CACHE_LINE_SIZE_WIDTH-3:0] fetch_word;
reg [CACHE_LINE_SIZE_WIDTH-3:0] fetch_word;
 
 
reg [31:0]                      last_pc;
reg [31:0]                      last_pc;
reg [31:0]                      miss_pc;
reg [31:0]                      miss_pc;
 
 
wire                            busy_o;
 
wire                            miss_o;
 
 
 
reg                             initial_fetch;
reg                             initial_fetch;
reg                             flush_req;
reg                             flush_req;
 
 
reg [31:0]                      mem_addr_o;
 
reg                             mem_rd_o;
 
reg                             mem_burst_o;
 
 
 
reg [CACHE_LINE_ADDR_WIDTH-1:0] flush_addr;
reg [CACHE_LINE_ADDR_WIDTH-1:0] flush_addr;
reg                             flush_wr;
reg                             flush_wr;
 
 
reg                             read_while_busy;
reg                             read_while_busy;
 
 
Line 142... Line 135...
assign tag_entry        = (state != STATE_CHECK) ? miss_pc[CACHE_LINE_ADDR_WIDTH + CACHE_LINE_SIZE_WIDTH - 1:CACHE_LINE_SIZE_WIDTH] : pc_i[CACHE_LINE_ADDR_WIDTH + CACHE_LINE_SIZE_WIDTH - 1:CACHE_LINE_SIZE_WIDTH];
assign tag_entry        = (state != STATE_CHECK) ? miss_pc[CACHE_LINE_ADDR_WIDTH + CACHE_LINE_SIZE_WIDTH - 1:CACHE_LINE_SIZE_WIDTH] : pc_i[CACHE_LINE_ADDR_WIDTH + CACHE_LINE_SIZE_WIDTH - 1:CACHE_LINE_SIZE_WIDTH];
assign cache_address_rd = pc_i[CACHE_LINE_ADDR_WIDTH + CACHE_LINE_SIZE_WIDTH - 1:2];
assign cache_address_rd = pc_i[CACHE_LINE_ADDR_WIDTH + CACHE_LINE_SIZE_WIDTH - 1:2];
 
 
assign miss_o           = (!tag_data_out[CACHE_TAG_VALID_BIT] || (last_pc[CACHE_TAG_ADDR_HIGH:CACHE_TAG_ADDR_LOW] != tag_data_out[14:0])) ? 1'b1: 1'b0;
assign miss_o           = (!tag_data_out[CACHE_TAG_VALID_BIT] || (last_pc[CACHE_TAG_ADDR_HIGH:CACHE_TAG_ADDR_LOW] != tag_data_out[14:0])) ? 1'b1: 1'b0;
 
 
wire valid_o            = !miss_o && !busy_o;
assign valid_o            = !miss_o && !busy_o;
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// Control logic
// Control logic
//-----------------------------------------------------------------
//-----------------------------------------------------------------
reg [CACHE_LINE_SIZE_WIDTH-3:0] v_line_word;
reg [CACHE_LINE_SIZE_WIDTH-3:0] v_line_word;

powered by: WebSVN 2.1.0

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