mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Continued busdp/ebu simplification
This commit is contained in:
parent
24ce72f0a2
commit
5dc4fb757a
@ -41,29 +41,27 @@ module ahblite (
|
|||||||
input logic UnsignedLoadM,
|
input logic UnsignedLoadM,
|
||||||
input logic [1:0] AtomicMaskedM,
|
input logic [1:0] AtomicMaskedM,
|
||||||
// Signals from Instruction Cache
|
// Signals from Instruction Cache
|
||||||
input logic [`PA_BITS-1:0] IFUBusAdr,
|
input logic [`PA_BITS-1:0] IFUHADDR,
|
||||||
|
input logic [2:0] IFUHBURST,
|
||||||
|
input logic [1:0] IFUHTRANS,
|
||||||
input logic IFUBusRead,
|
input logic IFUBusRead,
|
||||||
output logic [`XLEN-1:0] IFUBusHRDATA,
|
|
||||||
output logic IFUBusAck,
|
|
||||||
output logic IFUBusInit,
|
|
||||||
input logic [2:0] IFUBurstType,
|
|
||||||
input logic [1:0] IFUTransType,
|
|
||||||
input logic IFUTransComplete,
|
input logic IFUTransComplete,
|
||||||
|
output logic IFUBusInit,
|
||||||
|
output logic IFUBusAck,
|
||||||
|
|
||||||
// Signals from Data Cache
|
// Signals from Data Cache
|
||||||
input logic [`PA_BITS-1:0] LSUHADDR,
|
input logic [`PA_BITS-1:0] LSUHADDR,
|
||||||
input logic LSUBusRead,
|
input logic [`XLEN-1:0] LSUHWDATA,
|
||||||
input logic LSUBusWrite,
|
|
||||||
input logic [`XLEN-1:0] LSUBusHWDATA,
|
|
||||||
output logic [`XLEN-1:0] LSUHRDATA,
|
|
||||||
input logic [2:0] LSUHSIZE,
|
input logic [2:0] LSUHSIZE,
|
||||||
input logic [2:0] LSUHBURST,
|
input logic [2:0] LSUHBURST,
|
||||||
input logic [1:0] LSUHTRANS,
|
input logic [1:0] LSUHTRANS,
|
||||||
|
input logic LSUBusRead,
|
||||||
|
input logic LSUBusWrite,
|
||||||
input logic LSUTransComplete,
|
input logic LSUTransComplete,
|
||||||
output logic LSUBusAck,
|
|
||||||
output logic LSUBusInit,
|
output logic LSUBusInit,
|
||||||
|
output logic LSUBusAck,
|
||||||
|
|
||||||
// AHB-Lite external signals
|
// AHB-Lite external signals
|
||||||
(* mark_debug = "true" *) input logic [`AHBW-1:0] HRDATA,
|
|
||||||
(* mark_debug = "true" *) input logic HREADY, HRESP,
|
(* mark_debug = "true" *) input logic HREADY, HRESP,
|
||||||
(* mark_debug = "true" *) output logic HCLK, HRESETn,
|
(* mark_debug = "true" *) output logic HCLK, HRESETn,
|
||||||
(* mark_debug = "true" *) output logic [31:0] HADDR, // *** one day switch to a different bus that supports the full physical address
|
(* mark_debug = "true" *) output logic [31:0] HADDR, // *** one day switch to a different bus that supports the full physical address
|
||||||
@ -86,7 +84,6 @@ module ahblite (
|
|||||||
|
|
||||||
logic LSUGrant;
|
logic LSUGrant;
|
||||||
logic [31:0] AccessAddress;
|
logic [31:0] AccessAddress;
|
||||||
logic [2:0] ISize;
|
|
||||||
|
|
||||||
assign HCLK = clk;
|
assign HCLK = clk;
|
||||||
assign HRESETn = ~reset;
|
assign HRESETn = ~reset;
|
||||||
@ -133,11 +130,10 @@ module ahblite (
|
|||||||
|
|
||||||
// bus outputs
|
// bus outputs
|
||||||
assign #1 LSUGrant = (NextBusState == MEMREAD) | (NextBusState == MEMWRITE);
|
assign #1 LSUGrant = (NextBusState == MEMREAD) | (NextBusState == MEMWRITE);
|
||||||
assign AccessAddress = (LSUGrant) ? LSUHADDR[31:0] : IFUBusAdr[31:0];
|
assign AccessAddress = LSUGrant ? LSUHADDR[31:0] : IFUHADDR[31:0];
|
||||||
assign HADDR = AccessAddress;
|
assign HADDR = AccessAddress;
|
||||||
assign ISize = 3'b010; // 32 bit instructions for now; later improve for filling cache with full width; ignored on reads anyway
|
assign HSIZE = LSUGrant ? {1'b0, LSUHSIZE[1:0]} : 3'b010; // Instruction reads are always 32 bits
|
||||||
assign HSIZE = (LSUGrant) ? {1'b0, LSUHSIZE[1:0]} : ISize;
|
assign HBURST = LSUGrant ? LSUHBURST : IFUHBURST; // If doing memory accesses, use LSUburst, else use Instruction burst.
|
||||||
assign HBURST = (LSUGrant) ? LSUHBURST : IFUBurstType; // If doing memory accesses, use LSUburst, else use Instruction burst.
|
|
||||||
|
|
||||||
/* Cache burst read/writes case statement (hopefully) WRAPS only have access to 4 wraps. X changes position based on HSIZE.
|
/* Cache burst read/writes case statement (hopefully) WRAPS only have access to 4 wraps. X changes position based on HSIZE.
|
||||||
000: Single (SINGLE)
|
000: Single (SINGLE)
|
||||||
@ -153,23 +149,20 @@ module ahblite (
|
|||||||
|
|
||||||
|
|
||||||
assign HPROT = 4'b0011; // not used; see Section 3.7
|
assign HPROT = 4'b0011; // not used; see Section 3.7
|
||||||
assign HTRANS = (LSUGrant) ? LSUHTRANS : IFUTransType; // SEQ if not first read or write, NONSEQ if first read or write, IDLE otherwise
|
assign HTRANS = LSUGrant ? LSUHTRANS : IFUHTRANS; // SEQ if not first read or write, NONSEQ if first read or write, IDLE otherwise
|
||||||
assign HMASTLOCK = 0; // no locking supported
|
assign HMASTLOCK = 0; // no locking supported
|
||||||
assign HWRITE = (NextBusState == MEMWRITE);
|
assign HWRITE = (NextBusState == MEMWRITE);
|
||||||
// Byte mask for HWSTRB
|
// Byte mask for HWSTRB
|
||||||
swbytemask swbytemask(.Size(HSIZED[1:0]), .Adr(HADDRD[2:0]), .ByteMask(HWSTRB));
|
swbytemask swbytemask(.Size(HSIZED[1:0]), .Adr(HADDRD[2:0]), .ByteMask(HWSTRB));
|
||||||
|
|
||||||
// delay write data by one cycle for
|
// delay write data by one cycle for
|
||||||
flopen #(`XLEN) wdreg(HCLK, (LSUBusAck | LSUBusInit), LSUBusHWDATA, HWDATA); // delay HWDATA by 1 cycle per spec; *** assumes AHBW = XLEN
|
flopen #(`XLEN) wdreg(HCLK, (LSUBusAck | LSUBusInit), LSUHWDATA, HWDATA); // delay HWDATA by 1 cycle per spec; *** assumes AHBW = XLEN
|
||||||
// delay signals for subword writes
|
// delay signals for subword writes
|
||||||
flop #(3) adrreg(HCLK, HADDR[2:0], HADDRD);
|
flop #(3) adrreg(HCLK, HADDR[2:0], HADDRD);
|
||||||
flop #(4) sizereg(HCLK, {UnsignedLoadM, HSIZE}, HSIZED);
|
flop #(4) sizereg(HCLK, {UnsignedLoadM, HSIZE}, HSIZED);
|
||||||
flop #(1) writereg(HCLK, HWRITE, HWRITED);
|
flop #(1) writereg(HCLK, HWRITE, HWRITED);
|
||||||
|
|
||||||
// Route signals to Instruction and Data Caches
|
// Send control back to IFU and LSU
|
||||||
// *** assumes AHBW = XLEN
|
|
||||||
assign IFUBusHRDATA = HRDATA;
|
|
||||||
assign LSUHRDATA = HRDATA;
|
|
||||||
assign IFUBusInit = (BusState != INSTRREAD) & (NextBusState == INSTRREAD);
|
assign IFUBusInit = (BusState != INSTRREAD) & (NextBusState == INSTRREAD);
|
||||||
assign LSUBusInit = (((BusState != MEMREAD) & (NextBusState == MEMREAD)) | (BusState != MEMWRITE) & (NextBusState == MEMWRITE));
|
assign LSUBusInit = (((BusState != MEMREAD) & (NextBusState == MEMREAD)) | (BusState != MEMWRITE) & (NextBusState == MEMWRITE));
|
||||||
assign IFUBusAck = HREADY & (BusState == INSTRREAD);
|
assign IFUBusAck = HREADY & (BusState == INSTRREAD);
|
||||||
|
@ -36,14 +36,14 @@ module ifu (
|
|||||||
input logic StallF, StallD, StallE, StallM,
|
input logic StallF, StallD, StallE, StallM,
|
||||||
input logic FlushF, FlushD, FlushE, FlushM,
|
input logic FlushF, FlushD, FlushE, FlushM,
|
||||||
// Bus interface
|
// Bus interface
|
||||||
(* mark_debug = "true" *) input logic [`XLEN-1:0] IFUBusHRDATA,
|
(* mark_debug = "true" *) input logic [`XLEN-1:0] HRDATA,
|
||||||
(* mark_debug = "true" *) input logic IFUBusAck,
|
(* mark_debug = "true" *) input logic IFUBusAck,
|
||||||
(* mark_debug = "true" *) input logic IFUBusInit,
|
(* mark_debug = "true" *) input logic IFUBusInit,
|
||||||
(* mark_debug = "true" *) output logic [`PA_BITS-1:0] IFUBusAdr,
|
(* mark_debug = "true" *) output logic [`PA_BITS-1:0] IFUHADDR,
|
||||||
(* mark_debug = "true" *) output logic IFUBusRead,
|
(* mark_debug = "true" *) output logic IFUBusRead,
|
||||||
(* mark_debug = "true" *) output logic IFUStallF,
|
(* mark_debug = "true" *) output logic IFUStallF,
|
||||||
(* mark_debug = "true" *) output logic [2:0] IFUBurstType,
|
(* mark_debug = "true" *) output logic [2:0] IFUHBURST,
|
||||||
(* mark_debug = "true" *) output logic [1:0] IFUTransType,
|
(* mark_debug = "true" *) output logic [1:0] IFUHTRANS,
|
||||||
(* mark_debug = "true" *) output logic IFUTransComplete,
|
(* mark_debug = "true" *) output logic IFUTransComplete,
|
||||||
(* mark_debug = "true" *) output logic [`XLEN-1:0] PCF,
|
(* mark_debug = "true" *) output logic [`XLEN-1:0] PCF,
|
||||||
// Execute
|
// Execute
|
||||||
@ -203,9 +203,9 @@ module ifu (
|
|||||||
|
|
||||||
busdp #(WORDSPERLINE, LINELEN, LOGBWPL, `ICACHE)
|
busdp #(WORDSPERLINE, LINELEN, LOGBWPL, `ICACHE)
|
||||||
busdp(.clk, .reset,
|
busdp(.clk, .reset,
|
||||||
.HRDATA(IFUBusHRDATA), .BusAck(IFUBusAck), .BusInit(IFUBusInit), .BusWrite(), .SelLSUBusWord(),
|
.HRDATA(HRDATA), .BusAck(IFUBusAck), .BusInit(IFUBusInit), .BusWrite(), .SelLSUBusWord(),
|
||||||
.BusRead(IFUBusRead), .HSIZE(), .HBURST(IFUBurstType), .HTRANS(IFUTransType), .BusTransComplete(IFUTransComplete),
|
.BusRead(IFUBusRead), .HSIZE(), .HBURST(IFUHBURST), .HTRANS(IFUHTRANS), .BusTransComplete(IFUTransComplete),
|
||||||
.LSUFunct3M(3'b010), .HADDR(IFUBusAdr), .CacheBusAdr(ICacheBusAdr),
|
.LSUFunct3M(3'b010), .HADDR(IFUHADDR), .CacheBusAdr(ICacheBusAdr),
|
||||||
.WordCount(),
|
.WordCount(),
|
||||||
.CacheFetchLine(ICacheFetchLine),
|
.CacheFetchLine(ICacheFetchLine),
|
||||||
.CacheWriteLine(1'b0), .CacheBusAck(ICacheBusAck),
|
.CacheWriteLine(1'b0), .CacheBusAck(ICacheBusAck),
|
||||||
|
48
pipelined/src/ifu/irom.sv
Normal file
48
pipelined/src/ifu/irom.sv
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
///////////////////////////////////////////
|
||||||
|
// irom.sv
|
||||||
|
//
|
||||||
|
// Written: Ross Thompson ross1728@gmail.com January 30, 2022
|
||||||
|
// Modified:
|
||||||
|
//
|
||||||
|
// Purpose: simple instruction ROM
|
||||||
|
// A component of the Wally configurable RISC-V project.
|
||||||
|
//
|
||||||
|
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
|
||||||
|
//
|
||||||
|
// MIT LICENSE
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||||
|
// software and associated documentation files (the "Software"), to deal in the Software
|
||||||
|
// without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||||
|
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
||||||
|
// to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all copies or
|
||||||
|
// substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||||
|
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||||
|
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
// OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
`include "wally-config.vh"
|
||||||
|
|
||||||
|
module irom(
|
||||||
|
input logic clk, reset,
|
||||||
|
input logic [1:0] LSURWM,
|
||||||
|
input logic [`XLEN-1:0] IEUAdrE,
|
||||||
|
input logic TrapM,
|
||||||
|
output logic [`LLEN-1:0] ReadDataWordM
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// localparam ADDR_WDITH = $clog2(`IROM_RAM_RANGE/8); // *** replace with tihs when defined
|
||||||
|
localparam ADDR_WDITH = $clog2(`UNCORE_RAM_RANGE/8); // *** this is the wrong size
|
||||||
|
localparam OFFSET = $clog2(`LLEN/8);
|
||||||
|
|
||||||
|
brom1p1rw #(`LLEN/8, 8, ADDR_WDITH)
|
||||||
|
rom(.clk, .addr(IEUAdrE[ADDR_WDITH+OFFSET-1:OFFSET]), .dout(ReadDataWordM));
|
||||||
|
endmodule
|
||||||
|
|
@ -70,8 +70,8 @@ module lsu (
|
|||||||
(* mark_debug = "true" *) output logic LSUBusWrite,
|
(* mark_debug = "true" *) output logic LSUBusWrite,
|
||||||
(* mark_debug = "true" *) input logic LSUBusAck,
|
(* mark_debug = "true" *) input logic LSUBusAck,
|
||||||
(* mark_debug = "true" *) input logic LSUBusInit,
|
(* mark_debug = "true" *) input logic LSUBusInit,
|
||||||
(* mark_debug = "true" *) input logic [`XLEN-1:0] LSUHRDATA,
|
(* mark_debug = "true" *) input logic [`XLEN-1:0] HRDATA,
|
||||||
(* mark_debug = "true" *) output logic [`XLEN-1:0] LSUBusHWDATA,
|
(* mark_debug = "true" *) output logic [`XLEN-1:0] LSUHWDATA,
|
||||||
(* mark_debug = "true" *) output logic [2:0] LSUHSIZE,
|
(* mark_debug = "true" *) output logic [2:0] LSUHSIZE,
|
||||||
(* mark_debug = "true" *) output logic [2:0] LSUHBURST,
|
(* mark_debug = "true" *) output logic [2:0] LSUHBURST,
|
||||||
(* mark_debug = "true" *) output logic [1:0] LSUHTRANS,
|
(* mark_debug = "true" *) output logic [1:0] LSUHTRANS,
|
||||||
@ -224,7 +224,7 @@ module lsu (
|
|||||||
|
|
||||||
busdp #(WORDSPERLINE, LINELEN, LOGBWPL, `DCACHE) busdp(
|
busdp #(WORDSPERLINE, LINELEN, LOGBWPL, `DCACHE) busdp(
|
||||||
.clk, .reset,
|
.clk, .reset,
|
||||||
.HRDATA(LSUHRDATA), .BusAck(LSUBusAck), .BusInit(LSUBusInit), .BusWrite(LSUBusWrite),
|
.HRDATA, .BusAck(LSUBusAck), .BusInit(LSUBusInit), .BusWrite(LSUBusWrite),
|
||||||
.BusRead(LSUBusRead), .HSIZE(LSUHSIZE), .HBURST(LSUHBURST), .HTRANS(LSUHTRANS), .BusTransComplete(LSUTransComplete),
|
.BusRead(LSUBusRead), .HSIZE(LSUHSIZE), .HBURST(LSUHBURST), .HTRANS(LSUHTRANS), .BusTransComplete(LSUTransComplete),
|
||||||
.WordCount, .SelLSUBusWord,
|
.WordCount, .SelLSUBusWord,
|
||||||
.LSUFunct3M, .HADDR(LSUHADDR), .CacheBusAdr(DCacheBusAdr), .CacheFetchLine(DCacheFetchLine),
|
.LSUFunct3M, .HADDR(LSUHADDR), .CacheBusAdr(DCacheBusAdr), .CacheFetchLine(DCacheFetchLine),
|
||||||
@ -234,8 +234,8 @@ module lsu (
|
|||||||
|
|
||||||
mux2 #(`LLEN) UnCachedDataMux(.d0(LittleEndianReadDataWordM), .d1({{`LLEN-`XLEN{1'b0}}, DLSUBusBuffer[`XLEN-1:0]}),
|
mux2 #(`LLEN) UnCachedDataMux(.d0(LittleEndianReadDataWordM), .d1({{`LLEN-`XLEN{1'b0}}, DLSUBusBuffer[`XLEN-1:0]}),
|
||||||
.s(SelUncachedAdr), .y(ReadDataWordMuxM));
|
.s(SelUncachedAdr), .y(ReadDataWordMuxM));
|
||||||
mux2 #(`XLEN) LsuBushwdataMux(.d0(ReadDataWordM[`XLEN-1:0]), .d1(LSUWriteDataM[`XLEN-1:0]),
|
mux2 #(`XLEN) LSUHWDATAMux(.d0(ReadDataWordM[`XLEN-1:0]), .d1(LSUWriteDataM[`XLEN-1:0]),
|
||||||
.s(SelUncachedAdr), .y(LSUBusHWDATA));
|
.s(SelUncachedAdr), .y(LSUHWDATA));
|
||||||
if(`DCACHE) begin : dcache
|
if(`DCACHE) begin : dcache
|
||||||
cache #(.LINELEN(`DCACHE_LINELENINBITS), .NUMLINES(`DCACHE_WAYSIZEINBYTES*8/LINELEN),
|
cache #(.LINELEN(`DCACHE_LINELENINBITS), .NUMLINES(`DCACHE_WAYSIZEINBYTES*8/LINELEN),
|
||||||
.NUMWAYS(`DCACHE_NUMWAYS), .LOGBWPL(LOGBWPL), .WORDLEN(`LLEN), .MUXINTERVAL(`XLEN), .DCACHE(1)) dcache(
|
.NUMWAYS(`DCACHE_NUMWAYS), .LOGBWPL(LOGBWPL), .WORDLEN(`LLEN), .MUXINTERVAL(`XLEN), .DCACHE(1)) dcache(
|
||||||
@ -254,7 +254,7 @@ module lsu (
|
|||||||
assign DCacheMiss = CacheableM; assign DCacheAccess = CacheableM;
|
assign DCacheMiss = CacheableM; assign DCacheAccess = CacheableM;
|
||||||
end
|
end
|
||||||
end else begin: nobus // block: bus
|
end else begin: nobus // block: bus
|
||||||
assign {LSUBusHWDATA, SelUncachedAdr} = '0;
|
assign {LSUHWDATA, SelUncachedAdr} = '0;
|
||||||
assign ReadDataWordMuxM = LittleEndianReadDataWordM;
|
assign ReadDataWordMuxM = LittleEndianReadDataWordM;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -136,12 +136,11 @@ module wallypipelinedcore (
|
|||||||
logic CommittedM;
|
logic CommittedM;
|
||||||
|
|
||||||
// AHB ifu interface
|
// AHB ifu interface
|
||||||
logic [`PA_BITS-1:0] IFUBusAdr;
|
logic [`PA_BITS-1:0] IFUHADDR;
|
||||||
logic [`XLEN-1:0] IFUBusHRDATA;
|
|
||||||
logic IFUBusRead;
|
logic IFUBusRead;
|
||||||
logic IFUBusAck, IFUBusInit;
|
logic IFUBusAck, IFUBusInit;
|
||||||
logic [2:0] IFUBurstType;
|
logic [2:0] IFUHBURST;
|
||||||
logic [1:0] IFUTransType;
|
logic [1:0] IFUHTRANS;
|
||||||
logic IFUTransComplete;
|
logic IFUTransComplete;
|
||||||
|
|
||||||
// AHB LSU interface
|
// AHB LSU interface
|
||||||
@ -149,8 +148,7 @@ module wallypipelinedcore (
|
|||||||
logic LSUBusRead;
|
logic LSUBusRead;
|
||||||
logic LSUBusWrite;
|
logic LSUBusWrite;
|
||||||
logic LSUBusAck, LSUBusInit;
|
logic LSUBusAck, LSUBusInit;
|
||||||
logic [`XLEN-1:0] LSUHRDATA;
|
logic [`XLEN-1:0] LSUHWDATA;
|
||||||
logic [`XLEN-1:0] LSUBusHWDATA;
|
|
||||||
|
|
||||||
logic BPPredWrongE;
|
logic BPPredWrongE;
|
||||||
logic BPPredDirWrongM;
|
logic BPPredDirWrongM;
|
||||||
@ -178,8 +176,8 @@ module wallypipelinedcore (
|
|||||||
.StallF, .StallD, .StallE, .StallM,
|
.StallF, .StallD, .StallE, .StallM,
|
||||||
.FlushF, .FlushD, .FlushE, .FlushM,
|
.FlushF, .FlushD, .FlushE, .FlushM,
|
||||||
// Fetch
|
// Fetch
|
||||||
.IFUBusHRDATA, .IFUBusAck, .IFUBusInit, .PCF, .IFUBusAdr,
|
.HRDATA, .IFUBusAck, .IFUBusInit, .PCF, .IFUHADDR,
|
||||||
.IFUBusRead, .IFUStallF, .IFUBurstType, .IFUTransType, .IFUTransComplete,
|
.IFUBusRead, .IFUStallF, .IFUHBURST, .IFUHTRANS, .IFUTransComplete,
|
||||||
.ICacheAccess, .ICacheMiss,
|
.ICacheAccess, .ICacheMiss,
|
||||||
|
|
||||||
// Execute
|
// Execute
|
||||||
@ -264,7 +262,7 @@ module wallypipelinedcore (
|
|||||||
.ReadDataW, .FlushDCacheM,
|
.ReadDataW, .FlushDCacheM,
|
||||||
// connected to ahb (all stay the same)
|
// connected to ahb (all stay the same)
|
||||||
.LSUHADDR, .LSUBusRead, .LSUBusWrite, .LSUBusAck, .LSUBusInit,
|
.LSUHADDR, .LSUBusRead, .LSUBusWrite, .LSUBusAck, .LSUBusInit,
|
||||||
.LSUHRDATA, .LSUBusHWDATA, .LSUHSIZE, .LSUHBURST, .LSUHTRANS, .LSUTransComplete,
|
.HRDATA, .LSUHWDATA, .LSUHSIZE, .LSUHBURST, .LSUHTRANS, .LSUTransComplete,
|
||||||
|
|
||||||
// connect to csr or privilege and stay the same.
|
// connect to csr or privilege and stay the same.
|
||||||
.PrivilegeModeW, .BigEndianM, // connects to csr
|
.PrivilegeModeW, .BigEndianM, // connects to csr
|
||||||
@ -296,16 +294,14 @@ module wallypipelinedcore (
|
|||||||
ahblite ebu(// IFU connections
|
ahblite ebu(// IFU connections
|
||||||
.clk, .reset,
|
.clk, .reset,
|
||||||
.UnsignedLoadM(1'b0), .AtomicMaskedM(2'b00),
|
.UnsignedLoadM(1'b0), .AtomicMaskedM(2'b00),
|
||||||
.IFUBusAdr, .IFUBusRead,
|
.IFUHADDR, .IFUBusRead,
|
||||||
.IFUBusHRDATA,
|
.IFUHBURST,
|
||||||
.IFUBurstType,
|
.IFUHTRANS,
|
||||||
.IFUTransType,
|
|
||||||
.IFUTransComplete,
|
.IFUTransComplete,
|
||||||
.IFUBusAck,
|
.IFUBusAck,
|
||||||
.IFUBusInit,
|
.IFUBusInit,
|
||||||
// Signals from Data Cache
|
// Signals from Data Cache
|
||||||
.LSUHADDR, .LSUBusRead, .LSUBusWrite, .LSUBusHWDATA,
|
.LSUHADDR, .LSUBusRead, .LSUBusWrite, .LSUHWDATA,
|
||||||
.LSUHRDATA,
|
|
||||||
.LSUHSIZE,
|
.LSUHSIZE,
|
||||||
.LSUHBURST,
|
.LSUHBURST,
|
||||||
.LSUHTRANS,
|
.LSUHTRANS,
|
||||||
@ -313,7 +309,7 @@ module wallypipelinedcore (
|
|||||||
.LSUBusAck,
|
.LSUBusAck,
|
||||||
.LSUBusInit,
|
.LSUBusInit,
|
||||||
|
|
||||||
.HRDATA, .HREADY, .HRESP, .HCLK, .HRESETn,
|
.HREADY, .HRESP, .HCLK, .HRESETn,
|
||||||
.HADDR, .HWDATA, .HWSTRB, .HWRITE, .HSIZE, .HBURST,
|
.HADDR, .HWDATA, .HWSTRB, .HWRITE, .HSIZE, .HBURST,
|
||||||
.HPROT, .HTRANS, .HMASTLOCK, .HADDRD, .HSIZED,
|
.HPROT, .HTRANS, .HMASTLOCK, .HADDRD, .HSIZED,
|
||||||
.HWRITED);
|
.HWRITED);
|
||||||
|
Loading…
Reference in New Issue
Block a user