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 対応されています。