Expand description
§XVC Client
A Rust client library for connecting to Xilinx Virtual Cable (XVC) servers and performing remote JTAG operations on FPGA devices.
§Overview
This crate provides a high-level async client interface to XVC servers, allowing applications to interact with FPGA debug interfaces over network connections. It handles protocol communication, message serialization, and provides convenient methods for JTAG operations.
§Protocol Support
This implementation supports the XVC 1.0 protocol with the following operations:
- GetInfo: Query server capabilities (version, max vector size)
- SetTck: Configure the JTAG Test Clock (TCK) period
- Shift: Perform JTAG vector shifting (TMS/TDI/TDO)
For detailed protocol information, see the xvc_protocol crate.
§Basic Usage
§Connecting to a Server
ⓘ
use xvc_client::XvcClient;
let mut client = XvcClient::connect("127.0.0.1:2542").await?;
// Query server capabilities
let info = client.get_info().await?;
println!("Server version: {}", info.version());
println!("Max vector size: {} bytes", info.max_vector_len());§Setting Clock Frequency
ⓘ
// Set TCK period to 10 nanoseconds
let actual_period = client.set_tck(10).await?;
println!("Set TCK to {} ns", actual_period);§Performing JTAG Shifts
ⓘ
// Perform an 8-bit JTAG shift
let num_bits = 8;
let tms = [0x00u8];
let tdi = [0xA5u8];
let tdo = client.shift(num_bits, &tms, &tdi).await?;
println!("TDO data: {:?}", tdo);§Related Crates
xvc_server- Server implementationxvc_protocol- Protocol encoding/decodingxvc_server_linux- Linux server drivers
Structs§
- XvcClient
- XVC client for remote JTAG operations.