# [Run custom software for simulation with Arm IP Explorer](https://learn.arm.com/learning-paths/cross-platform/ipexplorer/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/cross-platform/ipexplorer/)
- [Run a pre-installed example and compare performance](https://learn.arm.com/learning-paths/cross-platform/ipexplorer/preinstall/)
- [Create a custom example](https://learn.arm.com/learning-paths/cross-platform/ipexplorer/custom1/)
- [Upload and run your custom example](https://learn.arm.com/learning-paths/cross-platform/ipexplorer/custom2/)
- [Next Steps](https://learn.arm.com/learning-paths/cross-platform/ipexplorer/_next-steps/)

## About this Learning Path

| Skill level:        | Introductory      |
|---------------------|-------------------|
| Reading time:       | 1 hr              |
| Last updated:       | 03 Aug 2026       |

| Author:             | Ronan Synnott, Arm [LinkedIn](https://linkedin.com/in/ronansynnott) |
|---------------------|------------------------------------------------------------------|
| Arm IP:             | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) [Cortex-R](https://support.arm.com/?tab=compute-ip&Product%20Type=Real-Time%20Processors) [Cortex-M](https://support.arm.com/?tab=compute-ip&Product%20Type=Microcontrollers) |
| Tags:               | [Performance and Architecture](https://learn.arm.com/tag/performance-and-architecture) [Baremetal](https://learn.arm.com/tag/baremetal) [IP Explorer](https://learn.arm.com/tag/ip-explorer) |

### Who is this for?
This is an introductory topic for IP Explorer users using the software simulation platforms available.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Run a pre-installed example on IP Explorer simulation platform
- Create your own example benchmark
- Upload and run your benchmark

### Prerequisites
Before starting, you will need the following:
- An Arm account that can access IP Explorer
- (Optional) A Linux machine with the desired compilers installed

### Summary
You’ll use Arm IP Explorer to run built-in and custom software on cloud-hosted simulation platforms for Arm Cortex-M processors. You’ll launch an example to collect cycle-accurate results, edit a marked C source region to create a benchmark, and build a `.tgz` archive on Linux. Then, you’ll upload the archive, choose the project and compiler, and compare cycle counts across Cortex-M instances.

### Frequently asked questions
<span>I don’t see my Cortex-M0 or Cortex-M7 instances under Simulate Processors — what should I check?</span>
Confirm that you’re logged in to IP Explorer and that you created the instances in the earlier step. Refresh **Simulate Processors** so recently created instances appear at the top.

<span>After uploading custom-software.tgz, I don’t see my_example in the selection list—what should I do?</span>
Wait for processing to finish, then reopen the **Select/Upload Software** menu. Confirm that you uploaded the `.tgz` archive produced by the provided software package.

<span>Which compiler option should I choose when starting the simulation run?</span>
Select Arm Compiler for Embedded (AC6). Use the same compiler when you run your custom benchmark.

<span>How do I know what to change in the sample project to create my benchmark?</span>
Edit the marked sections in the provided C source file to add or modify the code you want to measure. Keep the project structure unchanged so the package uploads correctly.

<span>What result should I expect from a successful run, and how do I compare processors?</span>
A successful run produces cycle-accurate benchmark results and confirms execution on a Fast Models system. Run the same software on **My Cortex-M0** and **My Cortex-M7**, then compare the reported cycle counts.
