Install NOA Python Client and connect¶
Before installing the client, complete the shared Getting started steps: connect the target, identify its address and check network reachability with ping. Those steps do not require Python or noa-client.
This page is the next step for users who choose to control the target from Python on their computer. For MATLAB/Simulink, follow NOA Toolbox instead.
Run these commands on your computer, not in the target's Jupyter notebook.
Install from GitHub¶
Use Python 3.10 or newer: the current source uses Python 3.10 type syntax. The repository does not yet declare an officially tested Python/OS compatibility matrix.
Clone the repository to obtain the client, example scripts and FPGA files:
git clone https://github.com/ERREETDES/noa-client.git
cd noa-client
python -m venv .venv
Activate the environment:
.\.venv\Scripts\Activate.ps1
source .venv/bin/activate
Then install:
python -m pip install -e .
If GitHub requests authentication, use an account with access to the repository. Keep this environment separate from the target-side PYNQ drivers.
Connect to the target¶
Use the Rexys-provided PYNQ image for your board. The client connects to its messaging service and NOA manager; opening Jupyter successfully does not by itself verify that these services are available.
Replace arch1-00001.local with your target's hostname or IP address:
python -m noa.noa arch1-00001.local --device-info --disconnect
This reads device information and releases the connection. It does not load a bitstream.
First Python script¶
Save as device_info.py in the repository root and run python device_info.py:
import asyncio
from noa.noa import Noa
async def main():
async with Noa("arch1-00001.local") as device:
info = await device.device_info()
print(info.model, info.serial_number, info.software_version)
if __name__ == "__main__":
asyncio.run(main())
async with connects on entry and disconnects on exit, including when an exception occurs inside the block. Network operations generally use await; cached reads such as read_register() do not.
Continue with designs and registers, or troubleshooting if connection fails.