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

Project management script for AWS EC2 F1 to provide better backwards compatibility #2

Open
johanpel opened this issue Jul 9, 2019 · 0 comments

Comments

@johanpel
Copy link
Member

johanpel commented Jul 9, 2019

Copied from Fletcher repo abs-tudelft/fletcher#108:

In general working with AWS EC2 F1 reminds one of the myth of Pandora's box.

There is often no backward compatibility for the simulation or build scripts that you've set up in your project, whenever they update to a next version, sometimes even to minor versions.
The AXI memory model is still broken (as in it doesn't support independent AXI channels) even though the issue was reported a long time ago.
Includes that are part of the shell must be set in your project-specific simulation build scripts.
The scripts don't have any option to provide e.g. a path through an environment variable where it will just tcl glob any files that you've put in that path that are .sv .v .vhd .vhdl .xci and adds them to the project with the right library includes for simulation.
IP management and libraries are also rather painful to get right; they seemingly randomly update ip core versions of the shell.

I suggest at some point we come up with something that makes our life less painful when working with this platform. I'd much rather just have the following folders in an aws-fpga platform specific project:

root
|- src/
|- sim/
|- ip/

And then run some script to where we can simply run:

make sim
make sim-gui
make bitstream

That then just un-cluster-messes the aws-fpga toolchain, regardless of their version, and runs simulation, simulation with waveform gui, or just builds the F1 bitstream.

Issues #5 #33 #90 are related and I will close them for now so we can fix all of them in a pull request on this issue.

I have fixed the sum exaple for now on #106, but all other examples should be checked before this issue can be closed.

jvanstraten added a commit to teratide/fletcher-aws that referenced this issue Jan 13, 2021
mbrobbel pushed a commit that referenced this issue Jan 26, 2021
* Updated runtime to new API for AWS 1.4.17.

Copying data between host and card now uses burst library functions from Amazon.
These automatically issue multiple DMA transactions.
The code for splitting the transactions, and the use of multiple DMA queues, has been removed.

* Reverted back to using BAR1 (ocl AXI-Lite interface)

* Fixed wrong error message

* Added simulation version of the runtime using the C - SystemVerilog interface.

This is work-in-progess.
See https://github.com/aws/aws-fpga/blob/master/hdk/docs/RTL_Simulating_CL_Designs.md

* Changed platform name to match the library filename

* Added aws-fpga as submodule

* Moved runtimes into a subdir

* Removed most examples (stale)

* Updated skeleton and project generation script

* Fixed typo in path

* Fixed defining top-level module name

* Removed unneeded define

* Expanded sourceme to include sourcing aws-fpga setup scripts

* Removed questasim scripts (not supported)

* Fixed defining top-level module name part 2

* Changed aws-fpga submodule to a fork, for now.

We need the additional peek/poke functions for our cosimulation.

* Added the possibility to reference other source directories (e.g. fletcher/hardware dir)

* Updated Sum example

* Now referencing sourceme.sh in README

* submodule aws-fpga now using the branch where the needed changes live

* Fixed copy commands copied into encrypt.tcl

* Use https for submodules

* Using original aws-fpga instead of fork (PR was merged)

* Make vhdeps work in project gen script (and not fail silently) when its executable is not in PATH

* Updated runtime CMakeLists to reflect their new location

* Add env var to specify sim runtime build dir for linking

* TEMPORARILY use old ABI with extreme prejudice

* Clean up and revert 459eba5; just install the lib

* Make runtime header files public

* Cosimulation now works (if in an ugly way)

* Make cosim integration nicer #1

* Make cosim integration nicer #2

* Fix 4DDR skeleton cosimulation & runtime

* Assigning PCI device and vendor IDs

* Fixed shared object dependency in runtime build config

* Fix aws-fpga submodule

* Fix write response channel blocking bus

* Update to Fletcher 0.0.18

* Removed test circuitry from 4DDR, nr of DDRs now generic

* Fixed multi-driven nets

* Initializing DDR is no longer needed (test circuits have been removed)

* Connected DDR stat interfaces to the shell again

* Using DRAM DIMM C and D because B and C are on the same SLR

* Removed some nonsense

* Renamed files to prepare removing 1DDR vs 4DDR versions

* Removed 1DDR version.

The 4DDR version now by default operates with 1 DDR controller, but the others can be enabled by removing the defines in cl_fletcher_aws.sv

* Runtime now using DIMM C by default

* Fixes for new skeleton location

* Added early check for cosim cmdline args

* Wrote some open issues in the README

* Updated examples to latest skeleton

* Clean up runtime file structure

* Remove tidre example because it's out of date

* Remove broken symlinks

* Remove random sources.txt files

* Make projects moveable with only a single symlink

* Restructure and update README files

* Fix cosimulation

* Remove examples - was not much left of them

Co-authored-by: Joost Hoozemans <[email protected]>
Co-authored-by: Cloud User <[email protected]>
Co-authored-by: Cloud User <[email protected]>
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

1 participant