Visible to Intel only — GUID: xbc1679234761126
Ixiasoft
Visible to Intel only — GUID: xbc1679234761126
Ixiasoft
5.4.2.1. Listing Processors
You can use processor-status command to check the condition of the target system’s CPUs.
# Intel Simics simulator CLI # Show the enabled/disabled status of all processors in the Intel Simics # simulation session. simics> processor-status ------------------------------------------- Processor Status ------------------------------------------- system.....agilex_hps.core[2] disabled system.....agilex_hps.core[3] disabled system.....agilex_hps.core[0] enabled system.....agilex_hps.core[1] disabled -------------------------------------------
In multicore architectures (as the example above), it is possible that more than one CPU gets enabled and is running. During the simulation, the Intel® Simics® simulator uses the enabled CPUs to control how the simulation advances in time (see Intel Simics Simulator Timing). To control this, Intel® Simics® uses the concept of “Selected front ended processor” that indicates which CPU is the one that owns the simulation control. The Intel® Simics® simulator switches the selection of this processor during the simulation. The selected front-ended processor is used in many global commands by default when no other CPU is specified in the command (this is shown in examples later in this document). You can use the psel command to determine which is the current frontend processor selected, and you can also use this same command to switch to a different processor, as shown in the following capture:
# Intel Simics simulator CLI simics> psel "system.board.fpga.soc_inst.hps_subsys.agilex_hpse.core[0]" simics> psel system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[1] Setting new inspection object: system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[1] simics> psel "system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[1]"
To list processors on the target system, enter list-processors command in the Intel® Simics® simulation console. This command shows the information about the state of each processor core to help diagnose the current state of the system. There are multiple switches available. Use help or tab-completion to see the available options. The -disassemble option indicates processor modes like wait states.
list-processors [cell] [parent] ["class"] ["substr"] [-steps] [-cycles] [-time] [-pico-seconds] [-pc-va] [-pc-pa] [-disassemble] [-all]
Command | Description |
---|---|
-all | Listing includes all "execute" objects, which includes objects which are either processors or clocks. If any execute object is not scheduled by Intel® Simics® simulator itself (possibly scheduled indirectly by another object) an additional "Scheduled" column appears describing if the object is scheduled by Intel® Simics® simulator or not. |
[cell] | The cell prints only processors that belong to the specified cell. The parent prints only processors underneath a certain component in the object hierarchy. The class prints only processor objects of a specific class. The substr argument prints only processors that have a certain string somewhere in the object hierarchy name. |
A number of optional columns can be printed for each processor by using the following flags:
Command | Description |
---|---|
-steps | Executed steps |
-cycles | Executed cycles |
-time | Executed time in seconds |
-pico-seconds | Executed time in picoseconds |
-pc-va | Virtual address program counter |
-pc-pa | Physical address program counter |
-disassemble | Current disassembly |
# Intel Simics simulator CLI simics> list-processors ------------------------------------------------------- CPU Name CPU Class Freq ------------------------------------------------------- system...agilex_hps.core[0]* arm-cortex-a55 400.00 MHz system...agilex_hps.core[1] arm-cortex-a55 400.00 MHz system...agilex_hps.core[2] arm-cortex-a76 400.00 MHz system...agilex_hps.core[3] arm-cortex-a76 400.00 MHz ------------------------------------------------------- * = selected CPU simics> list-processors -disassemble ----------------------------------------------------------------------------- CPU Name CPU Class Freq Disassembly ----------------------------------------------------------------------------- system...agilex_hps.core[0]* arm-cortex-a55 400.00 MHz v:0x00000000fff67840 p:0x80000000fff67840 str w0, [x18, #332] system...agilex_hps.core[1] arm-cortex-a55 400.00 MHz v:0x0000000000000000 p:0x0000000000 Pending exception: ['Reset'], cpu is user disabled system...agilex_hps.core[2] arm-cortex-a76 400.00 MHz v:0x0000000000000000 p:0x0000000000 Pending exception: ['Reset'], cpu is user disabled system...agilex_hps.core[3] arm-cortex-a76 400.00 MHz v:0x0000000000000000 p:0x0000000000 Pending exception: ['Reset'], cpu is user disabled ----------------------------------------------------------------------------- * = selected CPU
Notice in both examples in the above capture that the selected front-ended processor is being indicated with a *. You can use the processor path along with disassemble to inspect its information directly.
# Intel Simics simulator CLI # Using processor.disassemble simics> system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0].disassemble v:0xffff8000107dc170 p:0x80000000867dc170 ldrb w3, [x0, #185]
Similarly, you can get the information of a processor using the [processor_path].info and the [processor_path].status commands.
# Intel Simics simulator CLI # Checking information of processor system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0] simics> system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0].info Information about system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0] [class arm-cortex-a55] =========================================================== VMP status : Not Loaded JIT compilation : Enabled Clock frequency : 400 MHz CPI : 1.00 Physical memory : system.board.fpga.soc_inst.hps_subsys.agilex_hps.cpu_mem[0] Cell : system.cell # Checking the status of processor Core0 simics> system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0].status Status of system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0] [class arm-cortex-a55] =================================================== Clock frequency : 400.000000 MHz Activity : Executing (fetch/execute from program counter) Cycles : 0 Program counter : 0x00000000 Instruction set : ARM Context : system.cell_context
You can also use list-objects namespace = [processor name] to inspect each of the processors.
# Intel Simics simulator CLI # Inspect processor system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0] simics> list-objects namespace=system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0] ---------------------------------------------------------------- Component Class Object ---------------------------------------------------------------- <vp_intel_agilex_5_soc> hps (alias for system....agilex_hps) ---------------------------------------------------------------- --------------------------------------------------- Class Object --------------------------------------------------- --------------------------------------------------- # Inspect the vtime object of processor core[0] simics> list-objects namespace=system.board.fpga.soc_inst.hps_subsys.agilex_hps.core[0].vtime ------------------------------------------------------------ Component Class Object ------------------------------------------------------------ <vp_intel_agilex_5_soc> hps (alias for system...agilex_hps) ------------------------------------------------------------ ----------------------------------------------------------- Class Object ----------------------------------------------------------- <cycle-counter> system...agilex_hps.core[0].vtime.cycles <ps-clock> system...agilex_hps.core[0].vtime.p -----------------------------------------------------------