Intel® Simics® Simulator for Intel® FPGAs: Agilex™ 5 Virtual Platform User Guide

ID 786901
Date 11/16/2024
Public
Document Table of Contents

4.4. Getting Device Information from the Intel® Simics® Model

List the devices in an Intel® Simics® model with the devs Intel® Simics® CLI command. Only devices mapped in a memory space are listed with the command. The devs command also displays the memory space and memory map for each device. The following example shows the truncated output from running the devs Intel® Simics® CLI command:

# Intel Simics simulator CLI 

running> devs
--------------------------------------------------------------------------------
Count      Device              Space                 Range            Fn/Port
--------------------------------------------------------------------------------
0     system.board.fpga   system.board.fpga    0x0000000000000000 -  memory_bank
      .soc_inst.example   .soc_inst.example    0x00000000000fffff
      design.design       _design.design_mem
      _memory

0     system.board.fpga   system.board.fpga    0x000000001c000000 -   0
      .soc_inst.hps_      .soc_inst.hps_       0x000000001c000fff
      subsys.agilex_hps   subsys.agilex_hps                                  
      .ccu.bank.caiu0     .phys_mem

0     system.board.fpga   system.board.fpga    0x000000001c005000 -   0
      .soc_inst.periph_   .soc_inst.hps_       0x000000001c005fff
      subsys.example_     subsys.agilex_
      design_lw.design    hps.phys_mem
      _memory
:
:
:

0     system.board.fpga.  system.board.fpga    0x0000000010a30000 -   0
      soc_inst.hps_       .soc_inst.hps_       0x0000000010a304ff
      subsys.sdm.sdm      subsys.agilex_hps
      _mailbox.bank.regs  .phys_mem

0     system.board.fpga   system.board.fpga    0x0000000000000000 -   memory_bank
      .soc_inst.periph_   .soc_inst.periph_    0x00000000000fffff
      subsys.example_     subsys.example_
      design_lw.design    design_lw.design
      _memory            _mem
---------------------------------------------------------------------------------

The table shows the path of the devices. The device paths depend on the virtual model. The paths shown correspond to those you see using the Agilex™ 5 Universal Virtual Platform.

To get device information for a single device, run the devs Intel® Simics® CLI command with the device path information obtained earlier. For example, the devs system.board.fpga.soc_inst.hps_subsys.agilex_hps.pwrmgr.bank.regs command returns a table like the following table:
#Intel Simics simulator CLI 

simics> devs system.board.fpga.soc_inst.hps_subsys.agilex_hps.pwrmgr.bank.regs
-------------------------------------------------------------------
Count       Device                Space             Range	  Fn
-------------------------------------------------------------------
0      system.board.fpga    system.board.fpga    0x10d14000 -   0
       .soc_inst.hps_       .soc_inst.hps_       0x10d1405b
       subsys.agilex_hps.   subsys.agilex_hps
       pwrmgr.bank.regs     .phys_mem
-------------------------------------------------------------------

Examine the registers of a specific device and the current value of them with the print-device-regs Intel® Simics® CLI command. Provide the path of the device register banks (as found with the devs command) as a parameter. For example, the print-device-regs system.board.fpga.soc_inst.hps_subsys.agilex_hps.pwrmgr.bank.regs command returns the following information:

#Intel Simics simulator CLI 

simics> print-device-regs system.board.fpga.soc_inst.hps_subsys.agilex_hps.pwrmgr.bank.regs
--------------------------------------+-----------------------------------------
Offset  Name             Size    Value| Offset  Name               Size  Value
--------------------------------------+-----------------------------------------
   0x0  DSU_FWENCTL         4     0x0 |   0x30  FSM_CPUx_PWRCTLR[3] 4    0x0
   0x4  DSU_PGENCTL         4     0x0 |   0x34  FSM_CPUx_PWRSTAT[3] 4    0x0
   0x8  DSU_PGSTAT          4     0x0 |   0x38  APS_FWENCTL         4    0x0
   0xc  FSM_DSU_PWRCTLR     4     0x0 |   0x3c  APS_PGENCTL         4    0x0
  0x10  FSM_DSU_PWRSTAT     4     0x0 |   0x40  APS_PGSTAT          4    0x0
  0x14  DSU_PWRSTAT         4     0x0 |   0x44  PSS_FWENCTL         4    0x0
  0x18  FSM_CPUx_PWRCTLR[0] 4     0x0 |   0x48  PSS_PGENCTL         4    0x0
  0x1c  FSM_CPUx_PWRSTAT[0] 4     0x0 |   0x4c  PSS_PGSTAT          4    0x0
  0x20  FSM_CPUx_PWRCTLR[1] 4     0x0 |   0x50  MPU_PCHCTLR         4    0x1
  0x24  FSM_CPUx_PWRSTAT[1] 4     0x0 |   0x54  MPU_PCHSTAT         4    0x0
  0x28  FSM_CPUx_PWRCTLR[2] 4     0x0 |   0x58  MPU_BOOTCONFIG      4  0x303
  0x2c  FSM_CPUx_PWRSTAT[2] 4     0x0 |                                         
--------------------------------------------------------------------------------

You also can list the object below a specific hierarchy in a virtual platform using the list-objects Intel® Simics® CLI command. In addition to listing the objects, this command indicates the class to which each object belongs.

This information is beneficial when analyzing the components in a virtual platform. The following output is an example of the list-objects command output showing the objects in the board component:

# Intel Simics simulator CLI 
simics> list-objects namespace = system.board
-----------------------------------------------------
    Component Class                 Object
-----------------------------------------------------
<AT24Cxx_comp>              system.board.eeprom_16b_0
    :                                 :                   
<AT24Cxx_comp>              system.board.eeprom_8b_4
<sm_universal_fpga_comp>    system.board.fpga
<i2c_link_v2>               system.board.i2c_bus_0
<i2c_link_v2>               system.board.i2c_bus_1
<i2c_link_v2>               system.board.i2c_bus_2
<i2c_link_v2>               system.board.i2c_bus_3
<i2c_link_v2>               system.board.i2c_bus_4
    :                                 :
<sm_hps_nand_flash_comp>    system.board.nand
<spi_flash_comp>            system.board.qspi
<sd_comp>                   system.board.sd_card
<spi_flash_comp>            system.board.spi_flash
-----------------------------------------------------

-----------------------------------------
   Class                  Object
-----------------------------------------
<connector>      system.board.eth0
<connector>      system.board.eth1
<connector>      system.board.eth2
<marvell_phy>    system.board.phy0
<connector>      system.board.phy0_slot
<marvell_phy>    system.board.phy1
<connector>      system.board.phy1_slot
<marvell_phy>    system.board.phy2
<connector>      system.board.phy2_slot
-----------------------------------------
Remember: The device path information depends on the virtual platform that you use during simulation. The paths here are from the Agilex™ 5 HPS model in the Agilex™ 5 Universal Virtual Platform. The paths in the Agilex™ 5 Intel® Simics® model follow the system.board.fpga hierarchy approach described in Understanding Target Scripts in Intel® Simics® Simulator for Intel® FPGAs User Guide.