tapasco
tapasco copied to clipboard
Tapasco multi device support
When there are multiple TaPaSCo devices on a host, it should be possible to select the correct device where necessary (e.g. when using tapasco-load-bitstream).
This will also need a mapping between JTAG and PCIe Slot.
Will be postponed until the new runtime is ready
Additional features for tapasco-load-bitstream would also be useful (e.g. list all available devices)
I imagine some functionality such as:
Enumerate available FPGAs:
> tapasco-load-bitstream --list-devices
0 -> Zynq MP
1 -> PCIe JTAG XUPVVH
2 -> PCIe Direct VC709
Replace active bitstream:
> tapasco-load-bitstream 0 some-bitstream.bit
Ok
Writing bitstream to device FLASH where possible:
> tapasco-load-bitstream --permanent 0 some-bitstream.bit
Ok
The new runtime already works fine with the scenario and devices can be selected as needed and as indicated by TLKM.
What needs to be done:
- [ ] Move PCIe shellscript into Python based tapasco-load-bitstream
- [ ] Use Vivado to determine available JTAG devices
- [ ] Use FPGA Manager to determine available devices
- [ ] Use Vivado to program bitstream
What do you think about adding a possibility to program bitstreams programmatically? That might be useful if you use the TaPaSCo API as a base for some other runtime, e.g. OpenMP and OpenCL.
Ideally, the new tapasco-load-bitstream
would use the same API to reduce code duplication.
Sure, it remains a Python script with a if __main__
block. You can simply include that script in your program and use the functionality as desired.
I was thinking that it might make sense to include that into the TaPaSCo API, so it can be used from the same programming languages as the regular API for transferring data and launching jobs;
You mean the toolflow or the runtime?
We could also include it into the runtime, but that's certainly less convenient considering the languages used. However, certainly possible and worth considering.
Yes, I meant the runtime.
I'm aware that running all these steps, in particular the external commands, from C/C++/Rust is more challenging than from a simple bash/Python script, but it might be interesting to integrate it into the runtime next to all the other functions for the host-part of the application.
Sure, I'm up for it... the runtime is about 90% ready, only waiting for the release of the current milestone.