Address some rebase nonsense
This commit is contained in:
@@ -92,7 +92,7 @@ library RTL can be found in the directory `src_bsc_lib_RTL`.
|
|||||||
**Bluespec BSV** source code (which was used to generate the Verilog RTL) can be found in:
|
**Bluespec BSV** source code (which was used to generate the Verilog RTL) can be found in:
|
||||||
|
|
||||||
- `src_Core/`, for the CPU core, with sub-directories:
|
- `src_Core/`, for the CPU core, with sub-directories:
|
||||||
- `Core/`: the top-level of the CPU Core (specifically, the files CoreW_IFC.bsv and CoreW.bsv)
|
- `Core/`: the top-level of the CPU Core (specifically, CoreW.bsv)
|
||||||
- `CPU/`: more CPU core sources
|
- `CPU/`: more CPU core sources
|
||||||
- `RISCY_OOO/`: the bulk of the code, taken from MIT's riscy-ooo design, with local modifications.
|
- `RISCY_OOO/`: the bulk of the code, taken from MIT's riscy-ooo design, with local modifications.
|
||||||
- `ISA/`: generic types/constants/functions for the RISC-V ISA (not CPU-implementation-specific)
|
- `ISA/`: generic types/constants/functions for the RISC-V ISA (not CPU-implementation-specific)
|
||||||
|
|||||||
@@ -112,8 +112,10 @@ import DM_CPU_Req_Rsp ::*;
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
// The Core module
|
// The Core module
|
||||||
|
|
||||||
typedef WindCoreMid #( // AXI manager 0 port parameters
|
typedef WindCoreMid #( // AXI lite subordinate control port parameters
|
||||||
TAdd#(Wd_MId,1), Wd_Addr, Wd_Data, 0, 0, 0, 0, 0
|
21, 32, 0, 0, 0, 0, 0
|
||||||
|
// AXI manager 0 port parameters
|
||||||
|
, TAdd#(Wd_MId,1), Wd_Addr, Wd_Data, 0, 0, 0, 0, 0
|
||||||
// AXI manager 1 port parameters
|
// AXI manager 1 port parameters
|
||||||
, TAdd#(Wd_MId,1), Wd_Addr, Wd_Data, 0, 0, 0, 0, 0
|
, TAdd#(Wd_MId,1), Wd_Addr, Wd_Data, 0, 0, 0, 0, 0
|
||||||
// AXI subordinate 0 port parameters
|
// AXI subordinate 0 port parameters
|
||||||
@@ -241,6 +243,13 @@ module mkCoreW_reset #(Reset porReset)
|
|||||||
TV_Encode_IFC tv_encode <- mkTV_Encode;
|
TV_Encode_IFC tv_encode <- mkTV_Encode;
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
|
function do_release (restartRunning) = action
|
||||||
|
plic.set_addr_map (zeroExtend (soc_map.m_plic_addr_range.base),
|
||||||
|
zeroExtend (rangeTop(soc_map.m_plic_addr_range)));
|
||||||
|
proc.start (restartRunning, soc_map_struct.pc_reset_value, 0, 0);
|
||||||
|
//proc.set_verbosity (verbosity);
|
||||||
|
endaction;
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
// Hart-reset from DM
|
// Hart-reset from DM
|
||||||
|
|
||||||
@@ -485,6 +494,14 @@ module mkCoreW_reset #(Reset porReset)
|
|||||||
ndm_reset_restart_running <= restartRunning;
|
ndm_reset_restart_running <= restartRunning;
|
||||||
fromDbgReset.send;
|
fromDbgReset.send;
|
||||||
endrule
|
endrule
|
||||||
|
rule rl_debug_module_count_reset_delay (ndm_reset_delay > 1);
|
||||||
|
ndm_reset_delay <= ndm_reset_delay - 1;
|
||||||
|
endrule
|
||||||
|
rule rl_debug_module_ack_reset (ndm_reset_delay == 1);
|
||||||
|
debug_module.ndm_reset_client.response.put (ndm_reset_restart_running);
|
||||||
|
do_release (ndm_reset_restart_running);
|
||||||
|
ndm_reset_delay <= 0;
|
||||||
|
endrule
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
// Connect external interrupts to the PLIC and Proc
|
// Connect external interrupts to the PLIC and Proc
|
||||||
@@ -517,16 +534,9 @@ module mkCoreW_reset #(Reset porReset)
|
|||||||
let f_ctrl_reqs <- mkFIFO1;
|
let f_ctrl_reqs <- mkFIFO1;
|
||||||
let f_ctrl_rsps <- mkFIFO1;
|
let f_ctrl_rsps <- mkFIFO1;
|
||||||
|
|
||||||
function do_release = action
|
|
||||||
plic.set_addr_map (zeroExtend (soc_map.m_plic_addr_range.base),
|
|
||||||
zeroExtend (rangeTop(soc_map.m_plic_addr_range)));
|
|
||||||
proc.start (True, soc_map_struct.pc_reset_value, 0, 0);
|
|
||||||
//proc.set_verbosity (verbosity);
|
|
||||||
endaction;
|
|
||||||
|
|
||||||
rule rl_ctrl_req;
|
rule rl_ctrl_req;
|
||||||
case (f_ctrl_reqs.first) matches
|
case (f_ctrl_reqs.first) matches
|
||||||
tagged ReleaseReq: do_release;
|
tagged ReleaseReq: do_release (False);
|
||||||
tagged StatusReq: $display ("StatusReq not supported in Toooba");
|
tagged StatusReq: $display ("StatusReq not supported in Toooba");
|
||||||
endcase
|
endcase
|
||||||
f_ctrl_reqs.deq;
|
f_ctrl_reqs.deq;
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ import Fabric_Defs :: *;
|
|||||||
import PowerOnReset :: *;
|
import PowerOnReset :: *;
|
||||||
|
|
||||||
// The basic core
|
// The basic core
|
||||||
import CoreW_IFC :: *;
|
|
||||||
import CoreW :: *;
|
import CoreW :: *;
|
||||||
|
|
||||||
// External interrupt request interface
|
// External interrupt request interface
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ import SoC_Map :: *;
|
|||||||
|
|
||||||
import WindCoreInterface :: *;
|
import WindCoreInterface :: *;
|
||||||
import CoreW :: *;
|
import CoreW :: *;
|
||||||
import PLIC :: *; // For interface to PLIC interrupt sources, in CoreW_IFC
|
import PLIC :: *;
|
||||||
|
|
||||||
import Boot_ROM :: *;
|
import Boot_ROM :: *;
|
||||||
import Mem_Controller :: *;
|
import Mem_Controller :: *;
|
||||||
|
|||||||
Reference in New Issue
Block a user