examples: add SERV RISC-V soft CPU on Shrike-lite (SLG47910)#51
examples: add SERV RISC-V soft CPU on Shrike-lite (SLG47910)#51devtyagi3909 wants to merge 3 commits intovicharak-in:mainfrom
Conversation
World's first documented port of a RISC-V soft CPU (SERV, ISC licence)
to the Renesas SLG47910 ForgeFPGA.
Three novel toolchain findings documented in docs/toolchain_failures.md:
1. BRAM init crash: $readmemh -> RAMSRL overflow -> compiler abort.
Fixed: case()-based Nuclear ROM (pure LUT combinational logic).
2. Silent PNR lobotomy: $mem register file -> RAMSRL -> Forge PNR
silently fails to route -> CPU frozen at PC=0x00, no error.
Fixed: (* ram_style = 'registers' *) -> standard DFF array.
3. IO Planner conflict: manually assigning GPIO17/18 breaks auto-
routing. FPGA GPIO17/18 are the only pins hardwired to RP2040
GPIO14/15 via PCB 0-ohm resistors. Leave result signals unassigned
in IO Planner -- Yosys routes them automatically.
Verified on hardware:
RP2040 GPIO14 = 3.3V, GPIO15 = 3.3V -> result = 0b11 = 3
Thonny: 'SERV RISC-V computed: 1 + 2 = 3'
Resource utilisation: 516/1120 LUTs (46%), 230/1120 FFs (21%)
Board: Shrike-lite (SLG47910 + RP2040)
Tools: Go Configure Software Hub + Thonny MicroPython
|
Hey @devtyagi3909 Thank you for the contribution We will be doing the board testing before merging it
Regards |
|
@UpendraReddi @pallaviphunde2003 please test this example on board onces the requested changes are done. |
dpks2003
left a comment
There was a problem hiding this comment.
read above mentioned comments
- Rename project to shrike_serv (board-agnostic) - Add shrike_serv.ffpga (Go Configure project file) - Move firmware to firmware/micropython/shrike_serv.py - Rename bitstream to shrike_serv.bin - Remove docs/ folder, merge toolchain notes into README.md - Remove .gitignore
|
Hi @dpks2003, all 5 changes have been addressed: Added shrike_serv.ffpga (Go Configure project file) |
|
@devtyagi3909 Please place the Please follow this standard. https://github.com/vicharak-in/shrike?tab=contributing-ov-file#submitting-an-example |
…utation docs - Move .v files to ffpga/src/ per standard folder structure - Move shrike_serv.ffpga to example root - Add images/output.JPG (verified serial output) - Update README: add custom computation guide + instruction encoding table
|
Hi @UpendraReddi, all changes done: .v files moved to ffpga/src/ |
World's first documented port of a RISC-V soft CPU (SERV, ISC licence) to the Renesas SLG47910 ForgeFPGA.
Implemented on Vicharak's shrike-Lite board
Three novel toolchain findings documented in docs/toolchain_failures.md:
BRAM init crash: $readmemh -> RAMSRL overflow -> compiler abort.
Fixed: case()-based Nuclear ROM (pure LUT combinational logic).
Silent PNR lobotomy: $mem register file -> RAMSRL -> Forge PNR silently fails to route -> CPU frozen at PC=0x00, no error. Fixed: (* ram_style = 'registers' *) -> standard DFF array.
IO Planner conflict: manually assigning GPIO17/18 breaks auto- routing. FPGA GPIO17/18 are the only pins hardwired to RP2040 GPIO14/15 via PCB 0-ohm resistors. Leave result signals unassigned in IO Planner -- Yosys routes them automatically.
Verified on hardware:
RP2040 GPIO14 = 3.3V, GPIO15 = 3.3V -> result = 0b11 = 3
Thonny: 'SERV RISC-V computed: 1 + 2 = 3'
Resource utilisation: 516/1120 LUTs (46%), 230/1120 FFs (21%)
Board: Shrike-lite (SLG47910 + RP2040)
Tools: Go Configure Software Hub + Thonny MicroPython
What does this PR do?
Type of change
Board(s) tested on
Checklist
For all PRs:
For new examples:
ffpga/,firmware/,bitstream/,README.md)bitstream/#ifdef/sys.platform) — see guideFor firmware changes:
Related issue
Screenshots / serial output