-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
After merging #1100, we'll have all our boot/reset logic in software which will make it much easier to work with. That PR doesn't change the reset logic in any way, it just moves it around. It currently works as follows:
- "Boot" CPU
- Gets programmed by the host
- Programs the clock boards
- Gets transceiver block out of reset (enabling the bittide domain / other CPUs)
- Activates each transceiver channel and waits until they've negotiated a link with their neighbors.
- Prints "all done" message to UART.
- Clock control CPU
- Gets programmed by the host
- Calibrates clocks
- Prints "all done" message to UART.
- (Keeps calibrating clocks.)
- Management unit CPU
- Gets programmed by the host
- Centers elastic buffers
- Sets the channels to "user" mode. This makes the channels accept data from the outside world instead of their negotiation state machinery.
- Prints UGNs captured by hardware component to UART.
The host would typically move on to program a demo/test, but that's out of scope for this issue. In any case, all these steps are sequential:
I.e., there is a hard cut-off point at waiting for all transceiver channels to come up and another one waiting for all clocks to become stable. Ideally, the diagram would look like this:
To get there, we have to do two things:
- Remove the "channels ok" cut-off point. Clock control needs to only operate on active channels. The current software already accounts for this, we just need to make sure that that link mask reaches the software correctly.
- Remove the "everything calibrated" cut-off point. This one is more tricky as we're balancing two requirements: all our components are placed after elastic buffers and capturing the UGN relies on capturing the very first "real" word out of the EB. To keep the UGNs valid buffers can't overflow, but if we remove the cut-off point clock frequencies won't be stable yet so they naturally will. The MUs will have to continuously move the elastic buffers to their midpoints and keep track of how many elements they remove/add and adjust the UGNs accordingly.
Metadata
Metadata
Assignees
Labels
No labels