Skip to content
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

Trying to change read interface to AXI4, getting elaboration errors when generating verilog #14

Open
seandextercrevinn opened this issue Feb 17, 2021 · 2 comments

Comments

@seandextercrevinn
Copy link

seandextercrevinn commented Feb 17, 2021

Steps to recreate:

  1. Have dependencies installed (sbt, jdk, scala), clone fastvdma repo, and navigate to the cloned repo directory.

  2. Make the following edits:

File: src/main/scala/DMAController/DMATop.scala
Line 36:

-    val read = Flipped(new AXIStream(DMATop.readDataWidth))
+    val read = Flipped(new AXI4(DMATop.addrWidth, DMATop.readDataWidth))

Line 44

-  val readerFrontend = Module(new AXIStreamSlave(DMATop.addrWidth, DMATop.readDataWidth))
+  val readerFrontend = Module(new AXI4Reader(DMATop.addrWidth, DMATop.readDataWidth))
  1. Run "make verilog"

I get the following elaboration error:
[error] (run-main-0) chisel3.internal.ChiselException: Connection between left (DMAController.Bus.AXI4@203) and source (DMAController.Bus.AXI4@42b) failed @.r.rready: Both Left and Right are drivers

Is there something I'm missing? Perhaps some documentation is needed to guide through the steps to modify the bus protocol for each of the three interfaces (Ctrl, ReadData & WriteData)? Let me know what you think.

@seandextercrevinn
Copy link
Author

Changing Line 36 instead to:

-    val read = Flipped(new AXIStream(DMATop.readDataWidth))
+    val read = new AXI4(DMATop.addrWidth, DMATop.readDataWidth)

... seems to have allowed it to compile. Please advise whether this is correct.

@piotr-binkowski
Copy link

Hi @seandextercrevinn

This change is the correct way to use AXI4 (with Flipped removed)

As for documentation, I think a short guide on modifying bus protocols used would be useful.

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

No branches or pull requests

2 participants