Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

✨ Add "ASIC style" register file option #736

Merged
merged 8 commits into from
Nov 25, 2023
Merged

✨ Add "ASIC style" register file option #736

merged 8 commits into from
Nov 25, 2023

Conversation

stnolting
Copy link
Owner

This PR adds a new "CPU tuning" configuration generic that allows to adapt the architecture style of the CPU's general purpose data register file:

REGFILE_HW_RST : boolean := false;

When REGFILE_HW_RST = false

  • default case
  • register file is implemented as plain memory array
  • will infer block RAM / maps to FPGA memory resources
  • no dedicated hardware reset of the register file
  • register x0/zero is implemented as physical register that has to be explicitly cleared (done transparently by the CPU control hardware)
  • recommended for FPGA designs

When REGFILE_HW_RST = true

  • register file is implemented as individual flip flops
    • 31*31=992 FFs for rv32i
    • 15*32=480 FFs for rv32e
  • cannot be mapped to FPGA block RAM
  • full dedicated hardware reset of the register file
  • register x0/zero is hardwired to zero
  • recommended for ASIC designs or security-critical setups that require full data erasure on hardware reset

@stnolting stnolting added enhancement New feature or request HW Hardware-related labels Nov 25, 2023
@stnolting stnolting self-assigned this Nov 25, 2023
@stnolting stnolting marked this pull request as ready for review November 25, 2023 08:21
@stnolting stnolting merged commit bfbb0c9 into main Nov 25, 2023
@stnolting stnolting deleted the regfile_reset branch November 25, 2023 19:42
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
enhancement New feature or request HW Hardware-related
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant