-
Notifications
You must be signed in to change notification settings - Fork 30
HyperRAM clocking scheme, HBMC bring up and W956 simulation model #436
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think something isn't quite right with the vendoring at present. Calling util/vendor.py vendor/lowrisc_ibex.vendor.hjson results in the changes of the first commit being reverted. Perhaps the patch needs to be moved up into sonata-system from lowrisc_ibex or to the source lowrisc/cheriot-ibex repository.
I haven't looked at the rest yet I'm afraid.
Simulation of the Sonata System with the HBMC present requires multiple clocks of different frequencies and phase relationships. This is also useful for more accurate modelling of the USB connectivity.
elliotb-lowrisc
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks good. I've some suggestions but nothing major
Introduce support for multiple clock sources with different frequencies, duty cycles and phase relationships. Permit the design to be driven from separate clock inputs (more accurate model of the FPGA) or a single source (faster simulation but less accurate).
- Simulation model of HyperRAM device, based on W956D8MBYA. - Uses a dual-port RAM for the memory itself, with one port being used for data reads and the other for data writes. - Implement simple models of FPGA primitives for use in simulation.
This PR permits the HyperBus Memory Controller (a.k.a HyperRAM) to be used in simulation with a clocking scheme and timing that much more closely models the HyperRAM activity on the FPGA board. More importantly it makes possible the development and testing in simulation of improved HyperRAM access.
USE_SEPARATED_CLOCKSandUSE_HYPERRAM_SIM_MODELwhich must be presented to both the C++ test bench and the SystemVerilog design; seesonata.core.The existing HyperRAM tests all pass with either the SRAM model (USE_HYPERRAM_SIM_MODEL) - as before - or the HBMC-controlled W956 simulation model. To test the latter the following patch may be applied, since the sonata.core file has been set up to preserve the earlier behaviour and favour faster simulations: