How does VTA runtime know which driver functions to call?

I’m working on adding a new FPGA device to VTA. In doing so, I need to write new driver functions for the runtime to talk to the FPGA device similar to functions in and

I’m hoping this is a straight forward question. How does the VTA runtime know which device driver function to call into depending on the target (eg. target: “pynq”) specified in the vta_config.json file. For example, when the VTA runtime ( calls the function VTAMemCopyFromHost(), how does it know to call into the VTAMemCopyFromHost() function in or The functions in these driver files all have the same function signature. I basically want to create a new file for my FPGA device but I’m not sure how I can get the VTA runtime to call into it.