Commit graph

16 commits

Author SHA1 Message Date
Colin Riley
200284e361 Clarify DooM timedemo score CPU speed 2020-09-12 00:23:50 +01:00
Colin Riley
4b16f9bf6f RPU 1.0
Updated ISA support to RV32IMZcsr - Passes riscv-compliance.
Integer divide/rem in 34 cycles.
Integer multiply in 2 cycles (when using xilinx dsp blocks!)
Saved multiple cycles from fetch/memory load stages by short-cutting the start of memory requests.
Compliant misaligned exceptions for jumps,loads and stores. Addrs starting 0xFxxxxxxx ignore alignment requests (assumes mmio space).
Added CSRs for riscv-compliance requirements.
Source ran through a formatter for ease of use.
2020-09-11 00:06:01 +01:00
Colin Riley
47a0058836 Update readme to reflect latest status 2020-05-17 23:50:59 +01:00
Colin Riley
8803d1392d Core can now boot Zephyr RTOS
Added Interrupt handling support:
- Int enable masks
- external interrupt
- interrupt enable CSR
- illegal instruction
- system call instruction
- breakpoints
- interrupt CSR manipulation
- correct nextPC resume/branch target selection
Added debug data for CPU trace support
Added vexrisc IRQ csrs for testing with 3rd party sw
Added LINT unit locally arbitrates IRQs into priorities
FIX: correctly sign extend data from memory controller
FIX: set ALU to not branch on CSR unit ops
FIX: correctly detect invalid operations in decode stage
FIX: set signals not outputs in decode
Change to use two regs arrays in register set to infer two port rams
2020-05-17 23:39:17 +01:00
Colin Riley
01ac31c43d Stores should go though writeback in order for a interrupt check (can be optimized later).
Core: disable interrupts by default, make O_DBG output 64 bit to allow for additional data field and rearranged signals. This allowes for instruction tracing implementation on the SoC side.
2018-12-14 00:31:38 +00:00
Colin Riley
a9f3009b8f Fix bug in which OP decode previously went though the others=> case, which is now solely for invalid instructions. This caused an illegal intruction interrupt on all OP instructions (add,sub) or if interrupts are disabled, allowed the instruction to proceed without the data write from ALU occuring to the register file, causing major debug headaches. 2018-12-14 00:18:22 +00:00
Colin Riley
bb6683092f RISC-V Machine level Interrupt support first pass.
- Added Local interrupt unit which just collates all int sources.
- Added relevant core glue logic.
- Added M-level CSRs for trap handling.
- Disabled legacy interrupt handling from pc unit as interrupt vector is no longer fixed.
- ALU handles mret as a basic branch to epc.
- ECALL/EBREAK/MRET support added to decoder.

True RISC-V interrupt support still needs interrupt enables via CSR, and proper state flipping (IE/PIE etc)
2018-11-21 23:45:51 +00:00
Colin Riley
a9c5413cd9 Update to readme clarifying diagram missing CSR unit, and laying out current areas of implementation effort. 2018-11-16 22:48:50 +00:00
Colin Riley
96b86f1dc2 Basic core execution simulator testbench. No memory subsystem, so will only execute from fixed array of instructions - but easy to use in the sim. 2018-11-16 22:43:47 +00:00
Colin Riley
25411fd194 CSR Unit implemented with all CSR operational modify operations (write, set, clear). Not all CSRs are supported as yet, but cycles, instret and some of the machine identifiers are. Also two R/W locations at 0x400 and 0x401 for testing. 2018-11-16 22:39:57 +00:00
Colin Riley
cc388e3a90 Start of CSR and interrupt support for machine-mode level operations. No testbenches and the CSR operations are not fixed up yet. Some basic read values are included but as the register write logic is not edited to take values from the CSR unit rather than ALU any reads will result in the incorrect data being stored into rD. 2018-11-12 00:17:16 +00:00
Colin Riley
12f77e85c5 Apache 2 license file headers (yes, most of this was written 2 years ago!) 2018-09-17 23:35:20 +01:00
Colin Riley
32d133e85d
Add License
Repository licensed under Apache 2.0 unless otherwise stated in the header of any source files.
2018-09-17 23:24:42 +01:00
Colin Riley
9f24beba69 Rearrange readme and add overview image. 2018-09-11 23:58:33 +01:00
Colin Riley
439781c194 Initial commit. Tested on ArtyS7-RPU-SoC and passes SD bootloader and DDR3 memory testing. 2018-09-11 23:53:41 +01:00
Colin Riley
84a652b41c
Initial commit 2018-09-11 23:03:05 +01:00