概述
systemctlm-cosim-demo项目是Xilinx的systemc库的demo工程。
环境安装
qemu安装
cd xilinx_proj/Downloads
git clone https://github.com/Xilinx/qemu.git
cd qemu
git checkout 74d70f8008# Configure and build
# zynq7000
# ./configure --target-list="arm-softmmu,aarch64-softmmu,microblazeel-softmmu,riscv32-softmmu,riscv64-softmmu,x86_64-softmmu" --enable-fdt --disable-kvm --disable-xen
# 跑versal一定要enable kvm
./configure --target-list="x86_64-softmmu" --enable-kvm
make -j8
make install DESTDIR=xilinx_proj/qemu_bin
ninja和meson版本不匹配
使用pip3直接升级meson到某个版本
pip3 install meson==0.63
qemu-system-x86_64: invalid accelerator kvm
原因一:wsl2-linux默认不支持kvm,需要升级wsl2-linux
升级时编译wsl2-linux遇到问题,转而使用vmware虚拟机ubuntu。
WSL2 QEMU-KVM 环境搭建
linux和windows大小写区分不同,需要修改文件名
mv ./net/netfilter/xt_hl.c ./net/netfilter/xt_HL.c.bak
mv ./net/netfilter/xt_HL.c.bak ./net/netfilter/xt_HL.cmv net/netfilter/xt_TCPMSS.c net/netfilter/xt_TCPMSS.c.bak
mv net/netfilter/xt_TCPMSS.c.bak net/netfilter/xt_tcpmss.cmv include/uapi/linux/netfilter_ipv4/ipt_ecn.h include/uapi/linux/netfilter_ipv4/ipt_ecn.h.bak
mv include/uapi/linux/netfilter_ipv4/ipt_ecn.h.bak include/uapi/linux/netfilter_ipv4/ipt_ECN.h
vmware中创建qemu的嵌套虚拟化问题
原因二:qemu编译时configure应要–enable-kvm
测试用例解析
pcie/versal/cpm-qdma-demo
Versal是AMD推出的自适应 SoC,融合了可编程逻辑、处理系统以及 AI 和 DSP 引擎的软件可编程异构计算平台,适用于数据中心、有线网络、5G 无线和汽车驾驶辅助等应用。
仿真环境架构
QEMU接口模仿RC,PCIeController模仿ep的性能,用户逻辑接versal的QDMA仿真模型。
qdma_cpm4支持PCIe 4.0协议,qdma_cpm5能够支持更高速率的PCIe 5.0协议。
仿真过程及结果
主机终端:
// Terminal 1
cd ~/data/projects/systemc_proj/xilinx_proj/systemctlm-cosim-demo
source ../env2.sh // qemu exe env
make qemu_run // Terminal 2
export LD_LIBRARY_PATH=/home/kevin/data/software/systemc/systemc_2.3.3/lib-linux64/
make cpm5_run
make cpm4_run
qemu:
$ cd ~/Downloads/dma_ip_drivers/QDMA/linux-kernel
$ sudo su
$ insmod bin/qdma-pf.ko
$ echo 1 > /sys/bus/pci/devices/0000:02:00.0/qdma/qmax
$ ./bin/dma-ctl qdma02000 q add idx 0 mode mm dir h2c
$ ./bin/dma-ctl qdma02000 q start idx 0 dir h2c aperture_sz 4096
$ dd if=/dev/zero of=/home/ubuntu/test.pdi count=1 bs=1024
$ ./bin/dma-to-device -d /dev/qdma02000-MM-0 -f /home/ubuntu/test.pdi -s 1024 -a 0x102100000
cpm4
cpm5