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

Xilinx toolchain #876

Open
5 of 8 tasks
sampsyo opened this issue Jan 15, 2022 Discussed in #873 · 5 comments
Open
5 of 8 tasks

Xilinx toolchain #876

sampsyo opened this issue Jan 15, 2022 Discussed in #873 · 5 comments
Labels
C: FPGA Changes for the FPGA backend C: fud Calyx Driver Type: Tracker Track various tasks

Comments

@sampsyo
Copy link
Contributor

sampsyo commented Jan 15, 2022

Discussed in #873

Originally posted by sampsyo January 13, 2022
As a recreational project this winter, I poked around at our infrastructure for running programs for real on Xilinx FPGAs (which is all the incredible work of the inimitable @sgpthomas!!). I just wanted to tie together the issues I've been filing to summarize the current state of things, which might be especially relevant to @yn224.

The bottom line is: compilation is working OK, with one significant asterisk; emulation is barely starting to work; and I have not tried real FPGA execution.

Of course, the end result of all this should be that we can do fud e something.fuse --to dat --through fpga and everything just works (and the output matches our interpreter and Verilator execution). I also strongly believe we should maintain a focus on documenting things as thoroughly as we can possibly muster in the appropriate chapter—this stuff is so damned confusing and under-documented that we really benefit from writing things down clearly and exhaustively along the way.

Some fun future work after everything's nailed down for an MVP:

  • Let's do Intel!! I keep hearing good things about OPAE, which is the Intel equivalent of Xilinx's XRT.
  • Maybe we can remove our bespoke statistics-only Vivado synthesis setup and replace it with this toolchain. Who knows
@sampsyo sampsyo added Type: Tracker Track various tasks C: Calyx Extension or change to the Calyx IL C: fud Calyx Driver labels Jan 15, 2022
@yn224
Copy link
Contributor

yn224 commented Jan 27, 2022

[01/26] I have verified that allocating the same number of AXI interface with the number of external memory declarations on futil files solve the problem of xclbin files being generated. For instance, if the example file includes 3 external memories, then we can declare m0_axi, m1_axi, and m2_axi.

Some examples used include memory tutorial, modified memory tutorial (mem_tut_dup.txt) (where I basically duplicated the logic to have 2 different memory), and vectorized-add.
I also tested with the case where there are more AXI declaration than the number of external memory declaration and that also seems to work fine.

@sampsyo
Copy link
Contributor Author

sampsyo commented Jan 27, 2022

@yn224, I'm moving discussion to #853, which is the issue about this specific problem.

@rachitnigam rachitnigam changed the title [Tracking] Xilinx toolchain Xilinx toolchain Jun 1, 2022
@sampsyo sampsyo added C: FPGA Changes for the FPGA backend and removed C: Calyx Extension or change to the Calyx IL labels Jul 15, 2022
@rachitnigam
Copy link
Contributor

@sampsyo should we close this/re-evaluate once #1153 is merged and @nathanielnrn's work over the summer is complete?

@sampsyo
Copy link
Contributor Author

sampsyo commented Sep 14, 2022

Certainly time to re-evaluate, given all this progress! I checked off a few things—the stuff to be re-categorized (put on a roadmap somewhere, factored out into another issue, etc.) include trying to simplify the relevant Tcl script, future work on Intel, and removing the special statistics-only stages in fud.

@Guru1904

This comment was marked as spam.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: FPGA Changes for the FPGA backend C: fud Calyx Driver Type: Tracker Track various tasks
Projects
None yet
Development

No branches or pull requests

4 participants