Bring in Metro Sequencer and Host Flash - #2696
Conversation
| notifications = ["timer"] | ||
|
|
||
| [tasks.cosmo_seq] | ||
| name = "drv-cosmo-seq-server" |
There was a problem hiding this comment.
Experimenting here with the name change. Opinions welcome!
| notifications = ["hash-irq"] | ||
|
|
||
| [tasks.hf] | ||
| name = "drv-cosmo-hf" |
There was a problem hiding this comment.
This did not get a name change because honestly I was feeling a bit meh. But it's also useful for review against the sequencer so we can decide which approach si better
There was a problem hiding this comment.
I decided to do a rename
nathanaelhuffman
left a comment
There was a problem hiding this comment.
Only real comment is I'm not sure we have reason to diverge the front fpgas on these two boards, so doing this means we'll have 2 copies of the same thing in the repo which we'll have to remember, but isn't a show stopper either way. I'm happy to rename my front fpga to cosmo-metro-hp if that is helpful.
There was a problem hiding this comment.
If it's easier, I don't currently see a reason why the cosmo and metro front FPGAs would need to diverge so will likely remain common. We could rename them to cosmo-metro-hp or something if helpful. We can also support a new name probably but for the foreseeable future these will be the same.
There was a problem hiding this comment.
If you think they are likely to be the same I'll keep it in common for now and if it diverges we can fix it (it was a useful exercise to see that it's pretty easy to make that happen)
3161647 to
d5b4dea
Compare
jamesmunns
left a comment
There was a problem hiding this comment.
Overall LGTM, a couple of nits, and made a comment for @nathanaelhuffman about my largest anxiety (NIC sequencing).
OK to merge from me, we can iterate on this in follow-up PRs.
| // Check that a valid bitstream is available for this board. | ||
| let board = build_util::env_var("HUBRIS_BOARD")?; | ||
| if board != "cosmo-a" && board != "cosmo-b" { | ||
| if board != "cosmo-a" && board != "cosmo-b" && board != "metro-a" { |
There was a problem hiding this comment.
Could do something like this, in case we end up having more revs of either board in the future:
| if board != "cosmo-a" && board != "cosmo-b" && board != "metro-a" { | |
| let supported_boards = &[ | |
| "cosmo-a", | |
| "cosmo-b", | |
| "metro-a", | |
| ]; | |
| if !supported_boards.contains(&board) { |
| let board = build_util::target_board().expect("could not get target board"); | ||
| match board.as_str() { | ||
| "grapefruit-a" | "grapefruit-b" | "cosmo-a" | "cosmo-b" => (), | ||
| "grapefruit-a" | "grapefruit-b" | "cosmo-a" | "cosmo-b" | "metro-a" => { |
There was a problem hiding this comment.
Same note as https://github.com/oxidecomputer/hubris/pull/2696/changes#r4046175729 about using [&str]::contains() to make this a little easier to read/maintain.
| @@ -0,0 +1 @@ | |||
| THIS IS NOT A REAL METRO IMAGE JUST A COPY OF COSMO AS A PLACEHOLDER | |||
| name = "drv-cosmo-metro-seq-server" | ||
| features = ["h753"] | ||
| priority = 7 | ||
| max-sizes = {flash = 131072, ram = 32768 } |
There was a problem hiding this comment.
Just noting that these sizes are a little overlarge (probably the same for cosmo), but it's not a big deal.
metro_seq axi_sram 17880 32768 32768
flash 43652 49152 131072
metro_seq (stack): 2428 bytes (limit is 3200)
| name = "drv-spartan7-loader" | ||
| features = ["h753"] | ||
| priority = 4 | ||
| max-sizes = {flash = 131072, ram = 16384 } |
There was a problem hiding this comment.
Same note about sizes, fine to ignore
spartan7_loader axi_sram 7072 7168 16384
flash 11248 11264 131072
spartan7_loader (stack): 2412 bytes (limit is 2600)
There was a problem hiding this comment.
I guess one question for @nathanaelhuffman:
Are the NicSm and related NIC status parts (nic_raw_status::HwSm) of the FMC interface going to be the same/similar here?
I guess our management of the NIC sequencing is pretty high level (and the FPGA takes care of it?), and I'm not sure what we're going to need to do to sequence (or monitor) the Versal.
We can probably cfg-gate that, but at least for bringup if we need to stub anything out or perform any basic states, we might want to get a head start on that today.
27a79b5 to
aefdf6a
Compare
Cosmo and Metro will use different sequencer binaries but similar interfaces they can share.
aefdf6a to
cc5ec3a
Compare
No description provided.