-
Notifications
You must be signed in to change notification settings - Fork 11
Remote Port
Remote Port is a technology developed by Xilinx at https://github.com/Xilinx/qemu.git and https://github.com/Xilinx/libsystemctlm-soc
Xilinx board/kernel based examples are present at https://github.com/Xilinx/systemctlm-cosim-demo/docs
It allows information exchange between two simulators, such as memory transactions and synchronization.
Its' main goal is to make available an SOC environment capable of emulating a CPU that can communicate with any simulated fabric.
Based on what the creator mentions here, this should enable companies that produce SoCs to reliably and accurately simulate the RTL of the SoC while offloading the usually very expensive simulation of the CPU into a much faster emulation.
By default, Remote Port is integrated in Xilinx boards and a RISCV one, in the Xilinx repository.
As of now (16/11/2023), it isn't upstream so support for CPUs not present in their repo can only be achieved by handpicking code into this repository directly.
As long as the simulations are coherent with what each things the other is providing, nothing on the SystemC side needs to change.
As progress is made on this front, more information will be added here.
Branch remote-port currently supports memory based accesses (reads/writes) into the SystemC simulation
Overall, Remote Port implementation makes two changes to QEMU:
The most relevant one is the addition of devices that allow communication between the QEMU and SystemC These devices also require some minor alterations to QEMU, which means they aren't "drag and drop" These changes are (besides the ones to include the devices):
- include/chardev/char-fe.h
- include/chardev/char.h
- include/exec/memory.h
- include/sysemu/dma.h
- softmmu/memory.c
- softmmu/vl.c
See more details in the first commit of the remote-port branch, which contains solely these adaptations.
They aren't very invasive, and a few seem to be 'temporary', but should still be taken into consideration.
The other interesting change is the addition of generic FDT devices.
This change enables QEMU to generate and configure devices dynamically by inspecting a device tree from a file provided via command-line argument
This means that instead of being limited to hardcoded machines and their specific device configurability, we can adapt any machine that supports dynamic devices, at execution time.
- Add information on how fdt devices are identified and generated
- Add per device information as they are added
- Multiple basic tutorials