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

WIP: Create a backwards compatible flow for xo/xclbin generation with Calyx-AXI-wrapper #2267

Draft
wants to merge 85 commits into
base: main
Choose a base branch
from

Conversation

nathanielnrn
Copy link
Contributor

@nathanielnrn nathanielnrn commented Aug 20, 2024

At the highest level this PR should allow for correct xclbins to be produced from Calyx programs.

Broadly speaking this PR does 2 things (sorry for combining them, but some small fixes are sprinkled throughout making things hard to separate into their own changes):

  1. This PR introduces an axi_controller_generator.py which is meant to create a subordinate adhering to Xilinx's control spec. There might be some issues with this as executing on hardwares seems to hang at the moment, and the only difference between the generated verilog is the addition of the controller subordinate AFAIK.
  2. Adds some fud2 functions to go from verilog to a .xo. This is different from the previous .futil to .xo (which should eventually be deprecated), and is the "correct" way to create a .xo with the new Calyx-AXI-wrappers.

I'll do my best to comment the PR heavily to explain which changes affect what.

Furthermore, not sure if the controller itself needs a deep dive w.r.t code review. There are probably problems with it, that require waveform debugging to uncover.

EDIT: More work than I thought regarding backwards compatibility. Commented where changes are needed

In general there are a few outstanding TODOs even after this PR is merged. I'll make issues about these:

  • Update the static wrapper generator to correctly add a Xilinx control subordinate to the wrapper.
  • Change axi-generator.py to axi_generator.py | [fud2] AXI wrapper script cleanup & unified python names #2384
  • Test that xclbins get produced correctly with our static wrapper (currently this has mainly been tested on dynamic versions.
  • Figure out why the current dynamic wrapper seems to hang when running on actual hardware (likely an issue with the control subordinate)

nathanielnrn and others added 30 commits June 19, 2024 17:18
TODO: Hook up the slices in the highest level module for ap_done,
ap_start. Also thinnk about go done signals/how these connect to rest of
wrapper
* Prepare fifo for case idiom

* Attempt with . Failing due to empty control

* Delete calyx-py/test/correctness/queues/fifo.futil
TODO: Hook up ap_start from controller in wrapper to the main_compute
module
This works around #2198 causing combinational loops
Copy link
Contributor

This stale PR is being closed because it has not seen any activity in 7 days. If you're planning to continue work on it, please reopen it and mention how to make progress on it.

@github-actions github-actions bot closed this Dec 16, 2024
@rachitnigam rachitnigam reopened this Dec 16, 2024
@github-actions github-actions bot removed the S: Stale label Dec 17, 2024
nathanielnrn added a commit that referenced this pull request Dec 31, 2024
The WIP [PR that tries to get an `yxi` powered end to end xilinx tools
workflow up and running](#2267)
ballooned into a beast and has gotten pretty stale. This is me trying to
break things down into parts and slowly get everything merged.

This changes the `*axi_generator.py` files to use underscores, which is
needed for proper importing afaict.
Also snuck in formatting changes to `dynamic_axi_generator.py`.

These are pretty minor changes so going to merge when tests pass.
nathanielnrn added a commit that referenced this pull request Dec 31, 2024
Another part of #2267 that makes sense to live on it's own. Sorry for so
many small PRs! But whittling things down like this is helping me better
remember where everything stands
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

Successfully merging this pull request may close these issues.

4 participants