Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Xilinx VersalのQEMUとLinux


Xilinxは、Zynqを開発したときから QEMU を利用しています。このことは何度もこのブログに書いています。

つまり、Zynq、Zynq UltraScale+ MPSoC。。。そして、次の Versal も。。。

ということで、XilinxQEMU を覗いてみました。

qemu/hw/misc/にあります。Versal 関連のファイルが、
 ・pmc_sbi.c
 ・sss-pmc.c
 ・xlnx-versal-cfu.c
 ・xlnx-versal-afi-fm.c
 ・xlnx-versal-apu-ctrl.c
 ・xlnx-versal-cfu.c
 ・xlnx-versal-cmt-dpll.c
 ・xlnx-versal-cmt-mmcm.c
 ・xlnx-versal-cmt-xpll.c
 ・xlnx-versal-crf.c
 ・xlnx-versal-crl.c
 ・xlnx-versal-ddrmc-main.c
 ・xlnx-versal-ddrmc-noc.c
 ・xlnx-versal-ddrmc-ub.c
 ・xlnx-versal-gty-npi.c
 ・xlnx-versal-me-npi.c
 ・xlnx-versal-noc-nmu.c
 ・xlnx-versal-noc-nps.c
 ・xlnx-versal-noc-nsu.c
 ・xlnx-versal-pmc-analog.c
 ・xlnx-versal-pmc-clk-rst.c
 ・xlnx-versal-pmc-global.c
 ・xlnx-versal-pmc-iou-slcr.c
 ・xlnx-versal-pmc-pzm.c
 ・xlnx-versal-pmc-sysmon.c
 ・xlnx-versal-pmc-tamper.c
 ・xlnx-versal-pmc-tap.c
 ・xlnx-versal-psm-global.c
 ・xlnx-versal-psm-local.c
 ・xlnx-versal-rpu.c
 ・xlnx-versal-trng.c
 ・xlnx-versal-xpio-dci.c

この中で、NoC 関連のものもあります。

 ・xlnx-versal-noc-nmu.c : QEMU model of the NOC_NMU Noc Master Unit
 ・xlnx-versal-noc-nps.c : QEMU model of the NOC_NPS Noc Packet Switch
 ・xlnx-versal-noc-nsu.c : QEMU model of the NOC_NSU Noc Slave Unit

NOC_NSU Noc Slave Unitにレジスタはこんな感じ。これ以外にもいっぱいレジスタある。
NOC_NSU Noc Master UnitやNOC_NSU Noc Packet Switchもいっぱいレジスタ持っている。

 ・PCSR_MASK      (0x00)
 ・PCSR_CONTROL  (0x04)
 ・PCSR_STATUS     (0x08)
 ・PCSR_LOCK       (0x0c)

 ・ITR             (0x40)
 ・ISR             (0x44)

 ・IMR0            (0x48)
  ・IER0      (0x4c)
 ・IDR0            (0x50)
 ・IMR1            (0x54)
  ・IER1      (0x58)
 ・IDR1            (0x5c)
 ・IMR2            (0x60)
  ・IER2      (0x64)
 ・IDR2            (0x68)
 ・IMR3            (0x6c)
  ・IER3      (0x70)
 ・IDR3            (0x74)

 ・IOR             (0x78)

 ・SRC             (0x100)
 ・DWIDTH          (0x104)
 ・MODE_SELECT     (0x108)

Linuxも Versal 対応されています。