Skip to content

Conversation

alees24
Copy link
Contributor

@alees24 alees24 commented Sep 4, 2025

  1. Modify the HyperRAM implementation such that it can support capabilities for part of the address range, but not necessarily the entire memory. It turns out that at present it is possible to provide tags for the entire 8MiB address range, albeit at a cost of leaving just 4 RAMB36 blocks for use elsewhere. These may be required for other HyperRAM changes (e.g. 200MHz operation), larger FIFOs or faster SPI controllers.
  • HyperRAM changes could necessitate use of 3 block RAMs for async FIFOs at the CDC.
  1. Present the following memory dimensions in the system info:
  • Main memory (SRAM).
  • HyperRAM.
  • Portion of the HyperRAM that is supported by tag bits and may thus store capabilities.
  1. Present the DNA value of the FPGA in system info and provide a single value/model for use in simulation.

@marnovandermaas We should be careful not to produce a release that offers more tagged memory than can be sustained in later revisions, please. Thoughts? This is the reason I've marked the PR as draft for now. Tagged portion has now been set at 4MiB so that half of the mapped HyperRAM is able to store capabilities, whilst leaving many more block RAMs available for future use.

@alees24 alees24 changed the title Map the full HyperRAM Map the full HyperRAM and present DNA value in system info. Sep 10, 2025
@alees24 alees24 mentioned this pull request Sep 10, 2025
@alees24 alees24 force-pushed the hyperram-map-full branch 3 times, most recently from f8acc39 to 9c90fdc Compare September 11, 2025 15:12
@alees24 alees24 marked this pull request as ready for review September 11, 2025 15:14
Parameterise the tagged portion of the HyperRAM so that it is
possible to map the entire HyperRAM without exhausting the
block RAMs of the A50T.

Attempting to store a capability to the untagged region shall
return a bus error to the LSU.
Tidy and explain `get_hyperram_fn_ptr.`
Remove misleading and incorrect comment; this is no return value.
Introduce a test for whether storing a capability to an untagged
area of memory raises an exception as intended. Stores to areas
of the HyperRAM that have associated tag bit storage should
complete without an exception.

In each case, check whether an exception does/does not occur as
expected, and check the contents of the memory after the attempted
store.

An exception handler resumes execution after the faulting
instruction but - importantly - is activated only for the very
short time window during which we expect the possible exception to
occur.
Present the following memory dimensions in the system info:
- Main memory (SRAM).
- HyperRAM.
- Portion of the HyperRAM that is supported by tag bits an
  may thus store capabilities.

Make the DNA value of the FPGA available in the system info
IP block; this is a 57-bit value programmed into the FPGA
which is described as 'most often unique', although there may
be up to 32 devices in the FPGA family which have the same
DNA value.

Model the DNA_PORT/value in simulation, using a single value
for all simulations.
@marnovandermaas marnovandermaas marked this pull request as draft September 15, 2025 16:19
@marnovandermaas
Copy link
Contributor

Possibly failures in a longer soak test. Nothing obvious in the FPGA build. This was reported by @alees24

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants