-
Notifications
You must be signed in to change notification settings - Fork 7
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
D2D Dummy Loopback Module #49
base: main
Are you sure you want to change the base?
Conversation
I can't reproduce the CI scalafmt failure locally, @ethanwu10 can you try to repro locally?
|
CI failure is a deprecation warning for Chisel Scala FIRRTL compiler; do we want to use it anyways, or use the CIRCT stage? |
io.plStateStatus := PhyState.active // TODO: this is part of the FDI state machine | ||
} | ||
|
||
object D2DDummyLoopbackMain extends App { |
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.
To suppress the SFC deprecation warning:
object D2DDummyLoopbackMain extends App { | |
@annotation.nowarn("cat=deprecation&origin=chisel3.stage.ChiselStage") | |
object D2DDummyLoopbackMain extends App { |
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.
Thanks, we will just disable the warning. CirctStage is only a thing in Chisel 5+ and Chipyard will be stuck on Chisel 3.6 for a while. This is also not maintained anymore, so there's no point in using it (https://github.com/sifive/chisel-circt).
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.
circt.stage.CirctStage
does exist (and works) in Chisel 3.6; using SFC is an option though to avoid non-Scala dependencies to elaborate.
io.plStateStatus := PhyState.active // TODO: this is part of the FDI state machine | ||
} | ||
|
||
object D2DDummyLoopbackMain extends App { |
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.
circt.stage.CirctStage
does exist (and works) in Chisel 3.6; using SFC is an option though to avoid non-Scala dependencies to elaborate.
@@ -81,6 +81,7 @@ class Fdi(params: FdiParams) extends Bundle { | |||
* | |||
* Encompasses `lp_dllp` and `lp_dllp_valid` from the UCIe specification. | |||
*/ | |||
// TODO: we don't use dllp's at all, make these IOs optional |
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 we should keep the IOs in the bundle even if we are never using them, and drive them with constants / add assertions instead; this way our IO is always spec-compliant.
// LatencyPipe from rocket-chip | ||
// https://github.com/chipsalliance/rocket-chip/blob/master/src/main/scala/util/LatencyPipe.scala |
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.
We may want to vendor utils from rocket-chip in a dedicated package / directory (there are definitely more things we want to steal, e.g. AsyncQueue
)
@@ -0,0 +1,95 @@ | |||
package edu.berkeley.cs.ucie.digital |
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 should go in the main build, in the interfaces
package - it could conceivably be used by other consumers of this repo to test their own IP. We're putting other verification-related IP for FDI and RDI in the interfaces
package as well.
Add an empty D2D module with the FDI Bundle that just loops back lp_data to pl_data through a latency pipe. Tie off unused outputs. Add a test to make sure it elaborates cleanly. Next steps (in future PRs) are 1) generate SystemVerilog collateral from reflecting over the FDI Bundle (interface, module wrapper, structs) and 2) creating simple VIP to drive lp_data and fetch pl_data (both in Scala and SystemVerilog, sharing transaction and agent hierarchies).