Bitstreams

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.

Indexing

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.

get

Query list of bitstreams

post

Upload bitstream

get

Query specific bitstream

delete

Delete bitstream from cache

Boards

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 /boards resource.

Initialization

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 bmc resource.

Concurrent Access

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.

get

Query list of boards

post

Trigger a rescan to search for new boards and remove disconnected boards

get

Query specific board

delete

Close and remove board

get

Query BMC state

post

Setup BMC

delete

Disconnects the BMC

put

Modify core voltage for FPGA

get

Query BMC sensors

get

Query list of board FPGAs

get

Query specific board FPGA

get

EXPERIMENTAL Issue read AXI transaction

put

EXPERIMENTAL Issue write AXI transaction

get

Read FPGA DNA eFuse

post

Loads a bitstream in the FPGA configuration memory.

delete

Clears the bitstream from configuration memory.

get

Read FPGA SYSMON register

put

Write FPGA SYSMON register

get

Read FPGA current temperature

get

Read FPGA current VCCAUX measurement

get

Read FPGA current VCCBRAM measurement

get

Read FPGA current VCCINT measurement

post

Opens and initializes this board. Calling this muliple times will cause a board to be reinitialized.

post

Opens this board if it isn't aleady opened

License

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.

get

Query loaded licenses

post

Upload a new license (requires license upload to be enabled)

get

Query specific bitstream

delete

Delete License

Version

Information about underlying nextjtag library

get

Query nextjtag version