Full documentation for the ALVEO Versal Example Design can be found at the following link: xilinx.github.io/AVED/
The TFHE accelerator developed by Zama is running on Alveo V80 board and is today using the AMI driver to:
- manage the V80 board: load flash, reload fpga, read sensors...
- read and write registers of this accelerator:
- added
peek
&poke
commands to ami char device, see sw/AMI/driver/ami_cdev.h - these 2 commands are generating GCQ commands to read & write our accelerator registers
- sw/AMI/driver/ami_peekpoke.c
- sw/AMI/api/src/ami_peek_poke_access.c
- sw/AMI/app/cmd_handlers/cmd_peek.c
- sw/AMI/app/cmd_handlers/cmd_poke.c
- added
- push instructions to this accelerator:
- added
iop_push
command to ami char device, see sw/AMI/driver/ami_cdev.h - this command is pushing accelerator instructions in a queue located in DDR of V80
- sw/AMI/driver/ami_iop_push.c
- added
The small additions we did on the ami_tool application and the AMI driver are mainly related to these two latest objectives. We also added a guardrail in cfgmem_program
to prevent a PDI without firmware from being loaded in the flash and updated the API to properly manage both PCIe physical functions when reloading the FPGA.
As this AMI driver and the associated API & application (ami_tool) are GPL-2.0-only, we decided to keep these in a separate repository. When running the Zama TFHE accelerator on a V80 FPGA board, only binary compilation results from this repository are used.
The different ways to build AMI application & driver are described in sw/AMI/README but a summary would be:
cd sw/AMI/
make -C api clean all
make -C app clean all
cd driver
make
and that at this point AMI driver is limited to a small number of Linux kernel version listed here