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.
postTrigger a rescan to search for new boards and remove disconnected boards
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- boards: required(array of object)
Items: Board
- key: required(string)
Board key for API use
- is_open: required(boolean)
True if the board is opened by the OS
- open_error: (object)
Set if the last open call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- is_init: required(boolean)
True if the board has been initialized
- init_error: (object)
Set if the last init call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- serial: required(string)
Board serial string
- description: required(string)
Board description string
- vendor: required(string)
Board vendor string
- bmc: required(object)
BMC status and capabilities
- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
- fpgas: (array of Fpga)
Fpgas on this board, only populated after initilization
Items: Fpga
- name: required(string)
FPGA model name
- dna: required(string)
FPGA serial number
Trigger a rescan to search for new boards and remove disconnected boards
Body
Media type: application/json
Type: object
PropertiesHTTP status code 200
Body
Media type: application/json
Type: object
PropertiesHTTP status code 400
Invalid request body
URI Parameters
- board: required(string)
Board Key
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- key: required(string)
Board key for API use
- is_open: required(boolean)
True if the board is opened by the OS
- open_error: (object)
Set if the last open call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- is_init: required(boolean)
True if the board has been initialized
- init_error: (object)
Set if the last init call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- serial: required(string)
Board serial string
- description: required(string)
Board description string
- vendor: required(string)
Board vendor string
- bmc: required(object)
BMC status and capabilities
- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
- fpgas: (array of Fpga)
Fpgas on this board, only populated after initilization
Items: Fpga
- name: required(string)
FPGA model name
- dna: required(string)
FPGA serial number
URI Parameters
- board: required(string)
Board Key
HTTP status code 204
Operation successful
HTTP status code 408
Board is busy with another operation
URI Parameters
- board: required(string)
Board Key
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
URI Parameters
- board: required(string)
Board Key
Body
Media type: application/json
Type: object
PropertiesHTTP status code 200
Request was successfully submitted, returns updated BMC state. Check the setup_error
property for errrors.
Body
Media type: application/json
Type: object
Properties- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
HTTP status code 400
Invalid request body
HTTP status code 408
Board is busy with another operation
URI Parameters
- board: required(string)
Board Key
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
HTTP status code 408
Board is busy with another operation
putModify core voltage for FPGA
Modify core voltage for FPGA
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
Body
Media type: application/json
Type: object
Properties- value: required(number)
Core voltage in Volts
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 204
Operation successful
HTTP status code 400
Invalid request body
HTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
URI Parameters
- board: required(string)
Board Key
Query Parameters
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesExample:
{
"sensors": {
"fan_speed": 0,
"vr_ctrl_temp": 49.5625,
"vr_pwr_stage_temp0": 44.3125,
"vr_pwr_stage_temp1": 43.6875,
"aux_temp0": 41,
"dimm_temp2": 0,
"vccint": 0.8,
"fan_temp": 40,
"dimm_temp3": 0,
"input_power": 11.9947,
"pex_3v3_voltage": 3.364,
"board_name": "CBU1AEBE",
"pex_12v_current": 0.625,
"aux_3v3_voltage": 3.343,
"aux_temp2": 42,
"aux_temp1": 41,
"aux_12v_voltage": 12.337,
"bmc_version": "1.6",
"aux_12v_current": 0.343,
"pex_12v_voltage": 12.421,
"fpga_temp": 39,
"dimm_temp0": 0,
"board_rev": "1.0",
"dimm_temp1": 0
}
}
HTTP status code 400
Invalid request query string
HTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
getQuery list of board FPGAs
Query list of board FPGAs
URI Parameters
- board: required(string)
Board Key
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- fpgas: required(array of object)
Items: Fpga
- name: required(string)
FPGA model name
- dna: required(string)
FPGA serial number
getQuery specific board FPGA
Query specific board FPGA
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- name: required(string)
FPGA model name
- dna: required(string)
FPGA serial number
getEXPERIMENTAL
Issue read AXI transaction
putEXPERIMENTAL
Issue write AXI transaction
EXPERIMENTAL
Issue read AXI transaction
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
- axi: required(integer)
AXI index
- address: required(string)
AXI address, as decimal or hex unsigned integer. Default burst addressing mode is FIXED
, to switch to INCR
mode, append a+
to the address.
Query Parameters
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 400
Invalid request query string
HTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
EXPERIMENTAL
Issue write AXI transaction
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
- axi: required(integer)
AXI index
- address: required(string)
AXI address, as decimal or hex unsigned integer. Default burst addressing mode is FIXED
, to switch to INCR
mode, append a+
to the address.
Query Parameters
Body
Media type: application/json
Type: object
PropertiesHTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 400
Invalid request body or query string
HTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
Properties- dna: required(string)
FPGA serial number
HTTP status code 408
Board is busy with another operation
postLoads a bitstream in the FPGA configuration memory.
deleteClears the bitstream from configuration memory.
Loads a bitstream in the FPGA configuration memory.
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
Body
Media type: application/json
Type: object
Properties- bitstream: (string)
The bitstream id to load. The bitstream must have already been uploaded to /bitstream
before it can be loaded. If omitted, the default bitstream in flash memory will be loaded.
- is_partial: (boolean - default: false)
If true, the bitstream will be loaded as a partial bitstream, which means that configuration memory will not be cleared before loading the bitstream. If false, the bitstream type will be autodetected.
- disable_part_check: (boolean - default: false)
Disables the software check that ensures the fpga model matches the part number in the bitstream. Some bitstreams may not load even when this is set, since there can be hardware checks that prevent the fpga from booting with the wrong bitstream.
HTTP status code 200
Request was successfully submitted, returns updated board state. Check the init_error
property for errrors.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 204
Operation successful
HTTP status code 408
Board is busy with another operation
Clears the bitstream from configuration memory.
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Request was successfully submitted, returns updated board state. Check the init_error
property for errrors.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 204
Operation successful
HTTP status code 408
Board is busy with another operation
getRead FPGA SYSMON register
putWrite FPGA SYSMON register
Read FPGA SYSMON register
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
Write FPGA SYSMON register
URI Parameters
Body
Media type: application/json
Type: object
PropertiesHTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 204
Operation successful
HTTP status code 400
Invalid request body
HTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
getRead FPGA current temperature
Read FPGA current temperature
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
getRead FPGA current VCCAUX measurement
Read FPGA current VCCAUX measurement
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
getRead FPGA current VCCBRAM measurement
Read FPGA current VCCBRAM measurement
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
getRead FPGA current VCCINT measurement
Read FPGA current VCCINT measurement
URI Parameters
- board: required(string)
Board Key
- fpga: required(integer)
FPGA index
HTTP status code 200
Request was successfully submitted, check error
property to determine if it completed successfully.
Body
Media type: application/json
Type: object
PropertiesHTTP status code 403
License error
HTTP status code 408
Board is busy with another operation
postOpens and initializes this board. Calling this muliple times will cause a board to be reinitialized.
Opens and initializes this board. Calling this muliple times will cause a board to be reinitialized.
URI Parameters
- board: required(string)
Board Key
Body
Media type: application/json
Type: object
HTTP status code 200
Request was successfully submitted, returns updated board state. Check the init_error
property for errrors.
Body
Media type: application/json
Type: object
Properties- key: required(string)
Board key for API use
- is_open: required(boolean)
True if the board is opened by the OS
- open_error: (object)
Set if the last open call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- is_init: required(boolean)
True if the board has been initialized
- init_error: (object)
Set if the last init call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- serial: required(string)
Board serial string
- description: required(string)
Board description string
- vendor: required(string)
Board vendor string
- bmc: required(object)
BMC status and capabilities
- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
- fpgas: (array of Fpga)
Fpgas on this board, only populated after initilization
Items: Fpga
- name: required(string)
FPGA model name
- dna: required(string)
FPGA serial number
HTTP status code 408
Board is busy with another operation
postOpens this board if it isn't aleady opened
Opens this board if it isn't aleady opened
URI Parameters
- board: required(string)
Board Key
Body
Media type: application/json
Type: object
HTTP status code 200
Request was successfully submitted, returns updated board state. Check the open_error
property for errrors.
Body
Media type: application/json
Type: object
Properties- key: required(string)
Board key for API use
- is_open: required(boolean)
True if the board is opened by the OS
- open_error: (object)
Set if the last open call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- is_init: required(boolean)
True if the board has been initialized
- init_error: (object)
Set if the last init call on this board resulted in an error
- msg: required(string)
- code: required(integer)
- serial: required(string)
Board serial string
- description: required(string)
Board description string
- vendor: required(string)
Board vendor string
- bmc: required(object)
BMC status and capabilities
- is_setup: required(boolean)
True the BMC is setup and ready to use
- setup_error: (object)
Set if the last BMC setup attempt resulted in an error
- msg: required(string)
- code: required(integer)
- close_error: (object)
Set if the last BMC close attempt resulted in an error
- msg: required(string)
- code: required(integer)
- access_type: (one of DIRECT, FPGA)
Method of BMC access, only populated if BMC is setup
- sensor_list: (array of string)
Supported sensors BMC can read, only populated if BMC is setup
- fpgas: (array of Fpga)
Fpgas on this board, only populated after initilization
Items: Fpga
- name: required(string)
FPGA model name
- dna: required(string)
FPGA serial number
HTTP status code 408
Board is busy with another operation