Skip to content

Commit 418b6d5

Browse files
committed
Update TODO
1 parent 090768f commit 418b6d5

1 file changed

Lines changed: 68 additions & 57 deletions

File tree

doc/TODO.md

Lines changed: 68 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,58 @@
11
# TODO
2-
* why does // val pcReg = RegInit(-4.S(32.W).asUInt) result in failing tests?q
3-
- do not execute first instruction from on-chip memory
4-
- but start with -4
5-
- also remove init address register from instruction ROM
6-
* UART
7-
* Check if gcc can do RV32E
8-
* Get the C code compilation better integrated (with a reasonable linker.ld)
9-
* Get C compiled apps running (more than hello)
10-
* Update simulation (and C/asm code) for new address mapping and checking for ready
11-
* Why do I have read and write addresses in the data memory, when only one will happen at a time?
12-
- Check others
13-
* Something is fishy with testing, as SingleCycle works (even without branch)
14-
* Two tests fail with co-simulation when adding stall to fetch (the toggle)
15-
* width.s should not fail in the ISA simulator
16-
- string should work as well, do we need a linker script?
17-
- Work on failing simple tests (Simulator and Wildcat)
18-
* Memory range checks
19-
* Aim to have same interface for pipeline and single cycle
20-
- reuse tests
21-
* Forwarding from ALU/memory to address computation is missing.
22-
* 4/5 stages stall on load use hazard is missing (not covered by the tests)
23-
* Single cycle is not finished - tests are failing, disabled
24-
* 3/4/5 load and use as address is wrong (need a forward to the adder)
25-
- test missing
26-
* ecall, ebreak
27-
* csrrw, csrrs, csrrc, csrrwi, csrrsi, csrrci
28-
* At some point try to run the "real" RISC-V tests (need quite some infra)
29-
* Traps on not implemented instructions and unaligned access
30-
* Better names for signals (e.g., for those with a feedback, e.g., RF write)
31-
* Maybe commit the .elf files for faster tests
32-
* Maybe add some tracing facility
33-
* compare code can be optimized (see Tommy's code, or JOP code)
34-
* Get Rust bare metal running
35-
* Move selection between register and imm back into decode
36-
- maybe more of the muxing could be done there
37-
- probably branch target computation
38-
- or the whole branching itself
39-
* ecall
40-
* Maybe check the .elf files in for faster tests
41-
* What are the types of immediate values? mostly signed or mostly unsigned?
42-
* And much more not listed here, e.g. caches, interconnect, newlib, ...
43-
* Write documentation
2+
3+
* [ ] Sort the TODO list
4+
* [ ] Change memory interface to `PipeCon`
5+
* [ ] Have a better drawing of `PipeCon` (in soc-comm)
6+
* [ ] Start collecting information on other core interfaces (in my paper)
7+
8+
# Unsorted TODOs
9+
10+
* [ ] why does // val pcReg = RegInit(-4.S(32.W).asUInt) result in failing tests?
11+
- [ ] Do not execute the first instruction from on-chip memory
12+
- [ ] but start PC with -4
13+
- [ ] remove initialization of the address register from the instruction ROM
14+
* [ ] UART
15+
* [ ] Check if gcc can do RV32E
16+
* [ ] Get the C code compilation better integrated (with a reasonable linker.ld)
17+
* [ ] Get C compiled apps running (more than hello)
18+
* [ ] Update simulation (and C/asm code) for new address mapping and checking for ready
19+
* [ ] Why do I have read and write addresses in the data memory, when only one will happen at a time?
20+
- [ ] Check others
21+
* [ ] Something is fishy with testing, as SingleCycle works (even without branch)
22+
* [ ] Two tests fail with co-simulation when adding stall to fetch (the toggle)
23+
* [ ] width.s should not fail in the ISA simulator
24+
- [ ] string should work as well, do we need a linker script?
25+
- [ ] Work on failing simple tests (Simulator and Wildcat)
26+
* [ ] Memory range checks
27+
* [ ] Aim to have the same interface for pipeline and single cycle
28+
- [ ] reuse tests
29+
* [ ] Forwarding from ALU/memory to address computation is missing.
30+
* [ ] 4/5 stages stall on load use hazard is missing (not covered by the tests)
31+
* [ ] Single cycle is not finished - tests are failing, disabled
32+
* [ ] 3/4/5 load and use as address is wrong (need a forward to the adder)
33+
- [ ] test missing
34+
* [ ] ecall, ebreak
35+
* [ ] csrrw, csrrs, csrrc, csrrwi, csrrsi, csrrci
36+
* [ ] At some point try to run the "real" RISC-V tests (need quite some infra)
37+
* [ ] Traps on not implemented instructions and unaligned access
38+
* [ ] Better names for signals (e.g., for those with a feedback, e.g., RF write)
39+
* [ ] Maybe commit the .elf files for faster tests
40+
* [ ] Maybe add some tracing facility
41+
* [ ] compare code can be optimized (see Tommy's code, or JOP code)
42+
* [ ] Get Rust bare metal running
43+
* [ ] Move selection between register and imm back into decode
44+
- [ ] maybe more of the muxing could be done there
45+
- [ ] probably branch target computation
46+
- [ ] or the whole branching itself
47+
* [ ] ecall
48+
* [ ] Maybe check the .elf files in for faster tests
49+
* [ ] What are the types of immediate values? mostly signed or mostly unsigned?
50+
* [ ] And much more not listed here, e.g. caches, interconnect, newlib, ...
51+
* [ ] Write documentation
4452

4553
## Better Naming
4654

47-
* wrEna is later called valid
55+
* [ ] wrEna is later called valid
4856

4957
# Docu Start
5058

@@ -55,17 +63,20 @@ and setting ```decExReg.vald``` to ```false.B ```.
5563
JALR uses the ALU with the immediate similar to ADDI.
5664

5765
# Further Reading
58-
* A nice single cycle implementation: /Users/martin/data/dtu/teaching/cae/exam2022/Final Assignment ...
59-
* Checkout: https://github.com/SpinalHDL/VexRiscv (has a lot of info)
60-
* unaligned access is not too hard with byte-wise access
61-
* or trap on unaligned access
62-
* Explore compiler options
63-
* Explore https://inst.eecs.berkeley.edu/~cs250/fa10/ (for chip design course)
64-
* https://inst.eecs.berkeley.edu/~cs250/fa10/handouts/tut3-riscv.pdf
65-
* Checkout https://github.com/ucb-bar/riscv-mini
66-
* Checkout https://github.com/bobbl/rudolv (Joerg Mische), might be close to Wildcat plan
67-
* List of RV cores with IDs: https://github.com/riscv/riscv-isa-manual/blob/latex/marchid.md
68-
* Ibex is 2 stages: https://ibex-core.readthedocs.io/en/latest/03_reference/pipeline_details.html
69-
* Checkout random instruction generator: https://ibex-core.readthedocs.io/en/latest/03_reference/pipeline_details.html
70-
* Checkout https://github.com/SpinalHDL/VexiiRiscv
71-
* Interesting core: https://github.com/darklife/darkriscv
66+
67+
To be included in my paper.
68+
69+
* [ ] A nice single cycle implementation: /Users/martin/data/dtu/teaching/cae/exam2022/Final Assignment ...
70+
* [ ] Checkout: https://github.com/SpinalHDL/VexRiscv (has a lot of info)
71+
* [ ] unaligned access is not too hard with byte-wise access
72+
* [ ] or trap on unaligned access
73+
* [ ] Explore compiler options
74+
* [ ] Explore https://inst.eecs.berkeley.edu/~cs250/fa10/ (for chip design course)
75+
* [ ] https://inst.eecs.berkeley.edu/~cs250/fa10/handouts/tut3-riscv.pdf
76+
* [ ] Checkout https://github.com/ucb-bar/riscv-mini
77+
* [ ] Checkout https://github.com/bobbl/rudolv (Joerg Mische), might be close to Wildcat plan
78+
* [ ] List of RV cores with IDs: https://github.com/riscv/riscv-isa-manual/blob/latex/marchid.md
79+
* [ ] Ibex is 2 stages: https://ibex-core.readthedocs.io/en/latest/03_reference/pipeline_details.html
80+
* [ ] Checkout random instruction generator: https://ibex-core.readthedocs.io/en/latest/03_reference/pipeline_details.html
81+
* [ ] Checkout https://github.com/SpinalHDL/VexiiRiscv
82+
* [ ] Interesting core: https://github.com/darklife/darkriscv

0 commit comments

Comments
 (0)