I want to use a self written Python, Bash or C++ program to communicate with an FPGA using its JTAG port. This would be somewhat similar to how we write programs to communicate using UART. Now the problem is that, to my knowledge, none of the vendors like Intel/Altera and Microsemi provide drivers that can be used to make simple read/write access to FPGA using their FPGA programmers in a custom application. Here I am talking about things like USB Byte Blaster and Flash Pro series programmers. The API for these is not in public domain and no one has reverse engineered them as well.
Now does there exist a "general purpose JTAG communicator" which I can connect into my PC's USB port and just use a basic API to send read/write requests to it to be executed on the FPGA's JTAG port? I do not know if something like this exists.
Note: I do not intend to use the JTAG device for boundary scan. FPGAs usually contain hard IP that can be used in user designs whereby, the user design is able to reach to JTAG requests. In this way, it send data out onto JTAG and read data being sent using JTAG. Intel/Altera has "Virtual JTAG" IP while Microsemi has "UJTAG" IP. The problem is that Microsemi does not provide any support in anyway, to help people communicate with the design using UJTAG IP. This is true for all new devices. Only in very old devices is there a very limited support and we have to write STAPL script to make it work!