This project is work in progress...
This library contains a number of packages that collectively contribute to the development of a server application that is to be run inside a Vivado instance, allowing for interprocess communication between a client and Vivado features.
fpgaedu::json
fpgaedu::jsonrpc
fpgaedu::vivado
fpgaedu::vivadoserver
- Vivado >= 2016.3, implying:
- Tcl >= 8.5
- Tcllib >= 1.11.1
vivado
command available fromPATH
.
This library was developed using an installation of Vivado 2016.3, so that's the reason for the version requirement. A lower version may be compatible, but this is not tested.
To start the server on port 3742 (=FPGA):
vivado -mode batch -nolog -nojournal -notrace -source start.tcl
The server application exposes a remote procedure call (RPC) interface to allow for interaction with Vivado functionality through a remote client.
As described in this page, the server uses the simplest transport mechanism possible, in which a new socket connection is created for every request. Socket enpoints are closed to signal the end of a request and a response. Procedure calls are encoded in JSON-RPC 2.0 format. The current JSON-RPC implementation does not allow for batch processing.
The server currently exposes a single method program
for single device
programming.
Example request:
{
"jsonrpc": "2.0",
"method": "program",
"id": 1,
"params": {
"target": "localhost:3121/xilinx_tcf/Digilent/210274673876A",
"device": "xc7a100t_0",
"bitstream": "SEVMTE8gV09TEQgSEVMTE8gV09STEQgSEVMTE8gV09STEQgSEVMTE8...
Base64 encoded binary bitstream data
...ASDADASDSTEQgSEVMTE8gV09STEQgDQo=SEVMTE8gV 09STEQNCg=="
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": null
}