SystemVerilog RISC-V FPGA Implementation
Budget: $30 – $250 USD
I am working on Experiment 4 for a RISC-V datapath design using SystemVerilog in Xilinx Vivado (simulation only).
The project requires implementing the following RTL modules from scratch according to the RISC-V ISA specification:
1. IMMED_GEN
This module must generate all five RISC-V immediate formats from instruction register bits [31:7]:
• I-type
• S-type
• B-type
• U-type
• J-type
Each immediate must be correctly sign-extended and aligned according to the official RISC-V bit-field definitions.
2. BRANCH_ADDR_GEN
This module must compute the target addresses for:
• JAL
• JALR
• Conditional branch instructions
by adding the appropriate immediate value to the base PC value and ensuring correct address alignment.
---
CURRENT ISSUE:
My previous implementation has incorrect immediate values due to sign-extension and bit-placement errors across multiple instruction formats (especially B-type). The simulation waveform has been marked incorrect by the instructor.
At this point I am looking to fully re-implement both modules in synthesizable RTL to ensure:
• correct immediate bit extraction
• proper sign-extension
• correct left-shifting/alignment for branch and jump formats
• accurate JAL/JALR/branch target address computation
• waveform output matches expected RISC-V behavior
Simulation must produce correct immediate outputs for all instruction types.
---
TOOLS / REQUIREMENTS:
• Xilinx Vivado
• SystemVerilog
• RTL design experience
• Familiarity with RISC-V instruction encoding
I can provide:
• assignment instructions
• testbench
• expected immediate values
• waveform reference
If you do well and the rates are reasonable I have many projects that I need to do and will hit you up directly for those as well
The project requires implementing the following RTL modules from scratch according to the RISC-V ISA specification:
1. IMMED_GEN
This module must generate all five RISC-V immediate formats from instruction register bits [31:7]:
• I-type
• S-type
• B-type
• U-type
• J-type
Each immediate must be correctly sign-extended and aligned according to the official RISC-V bit-field definitions.
2. BRANCH_ADDR_GEN
This module must compute the target addresses for:
• JAL
• JALR
• Conditional branch instructions
by adding the appropriate immediate value to the base PC value and ensuring correct address alignment.
---
CURRENT ISSUE:
My previous implementation has incorrect immediate values due to sign-extension and bit-placement errors across multiple instruction formats (especially B-type). The simulation waveform has been marked incorrect by the instructor.
At this point I am looking to fully re-implement both modules in synthesizable RTL to ensure:
• correct immediate bit extraction
• proper sign-extension
• correct left-shifting/alignment for branch and jump formats
• accurate JAL/JALR/branch target address computation
• waveform output matches expected RISC-V behavior
Simulation must produce correct immediate outputs for all instruction types.
---
TOOLS / REQUIREMENTS:
• Xilinx Vivado
• SystemVerilog
• RTL design experience
• Familiarity with RISC-V instruction encoding
I can provide:
• assignment instructions
• testbench
• expected immediate values
• waveform reference
If you do well and the rates are reasonable I have many projects that I need to do and will hit you up directly for those as well
Related categories:
Engineering
Electronics
Verilog / VHDL
Microcontroller
Digital Design
FPGA
Embedded Systems
Simulation