NextJtag API documentation version v1
This is the API interface served up by
nextjtag_server. Some parts are still a work in progress, and methods marked
EXPERIMENTAL are highly likely to change in the future.
To get the latest copy of
nextjtag_server, check out the github page for nextjtag. Next, launch the server from a machine that has supported FPGAs connected via USB. Note that for full functionality, a license is required for each FPGA, and the server must be configured to use them.
Bitstreams are files that contain the programming formation for a FPGA. Since they tend to be large, they must be uploaded to the server before they can be programmed into an FPGA.
Bitstreams are indexed using their SHA256 hash, and this key is used when programming a bitstream. It can also be used to check if the server already has a cached copy of a bitstream. It is highly recommended that clients verify their bitstreams do not exist on the server before uploading a bitstream.
Boards are the basic abstraction for every device that nextjtag communicates with. Each board provides access to the one or more FPGAs on it, and to BMC if it is supported. To detect new boards and auto remove disconnected boards, a POST should be made to the root
Before a board FPGA can be used, the board must be initialized first by POSTing to the board’s
init resource. Initializing will open the board (if not already open), and will read information about the FPGAs (such FPGA type and DNA). A board can be initialized multiple times.
Board Management Controller (BMC)
To access the board’s BMC, it must be first setup by POSTing to the board’s
bmc resource. Some BMCs can only be accessed through the FPGA, and require a bitstream loaded with special blocks. For these cases, nextjtag will prevent a new bitstream from being loaded while the BMC is using the FPGA. The BMC must disconnected by DELETing the board's
It is not possible perform more than one board action a the same time, due to limitations of the underlying hardware. For example, if two clients try to program a bitstream on the same board at the same time, one of them will succeed and the other will fail immediately with a
408 error. However, not all resources perform a board action, and some only returned cached information (such as the root board resource). These non-action resources can be accessed concurrently at any time.
Query list of boards
Trigger a rescan to search for new boards and remove disconnected boards
EXPERIMENTAL Issue read AXI transaction
EXPERIMENTAL Issue write AXI transaction
Loads a bitstream in the FPGA configuration memory.
Clears the bitstream from configuration memory.
Read FPGA SYSMON register
Write FPGA SYSMON register
Opens and initializes this board. Calling this muliple times will cause a board to be reinitialized.
Licenses unlock the full feature set for FPGAs in NextJTAG and are tied to the device DNA. Licenses are preloaded at startup from license files, and can be queried by clients using this API. If license uploading is enabled in the server settings, clients are also able to uploaded missing licenses or delete licenses.