Never miss a story from Verification. Subscribe for in-depth analysis and articles.
Our previous post discussed measuring parameters, switches, and profiling. This post will cover analyzing the profiler report.
Xcelium offers an Auto Performance Analysis utility that automatically analyzes performance. It is great for conducting basic performance analysis and sanity tests, making it an ideal first step. By using the -perf_analysis/-pre_perf_analysis feature, the utility generates performance improvement recommendations towards the end of the log for compilation, elab, or simulation. For more information on usage, refer to the Xcelium documentation or the COS Article.
For detailed analysis, you can always manually analyze the performance. Let’s take a closer look at some significant statistics concerning the generated profiles. These metrics encompass details about the tool, caching the license usage, and CPU utilization. We will analyze each aspect individually to better understand the critical information at hand.
Simulator Versionxmsim(64) : 20.03-s007: This indicates the version of your simulator. This release version shows that this release needs to be updated. It is strongly advised to upgrade to the latest release to benefit from the most recent optimizations, often leading to increased performance.
Cache SizeAnother crucial factor to consider during analysis is the cache size. Since simulation is a memory-intensive process, the cache size plays a significant role in determining performance. If you observe a decline in performance without an apparent cause, the cache size could be responsible. When comparing two profiles from old and new runs, it is essential to ensure that the cache size remains consistent. Any reduction in cache size can negatively impact performance.
Profiled IntervalsProfiled Intervals provide the simulation run time at which the profiling was activated.
Memory UsageMemory usage can give you valuable insights into how much memory is utilized. If the memory usage is significantly high, consider using a 64-bit machine. Conversely, if your design is smaller in scale, a 32-bit machine may be sufficient. The decision regarding the machine type depends on various factors, including your infrastructure and design size. Nevertheless, understanding your memory usage and how it corresponds to the machine type you employ is crucial in making an informed choice.
CPU UtilizationCPU utilization is a critical factor in determining system performance. When CPU utilization is too low, it can indicate problems with low LSF or file I/O utilization, negatively impacting overall system efficiency. On the other hand, encountering CPU utilization exceeding 100% may result from utilizing multicore processing, as seen in applications like wave dumping.
License/Snapshot Loading TimeLicense acquisition and snapshot loading time are crucial factors that can significantly impact performance. If the simulation's runtime is short but the license acquisition and snapshot loading times are relatively long, it will undoubtedly affect performance. It is essential to examine your licensing infrastructure in such cases. If the license acquisition time is excessively high, consider using alternative algorithms to reduce it. Similarly, if the snapshot loading time is lengthy, we recommend utilizing zlib compression for the snapshots. Additionally, leveraging the libcache can help optimize snapshot loading time by using your machines' temporary location and memory.
The profiler provides the elaboration options utilized, providing valuable insights into your performance. It's important to note that elaboration options can significantly affect simulation performance. You can access a comprehensive list of options by running the profiler or activating the switches.
You can analyze your script to decipher the switches used or utilize the profiler while employing switches such as -profile, -status, or -xprof. All the options employed in simulation commands will be displayed when using- perf state and- profile. Hence, using these performance and profiling options, you can quickly determine the switches being utilized. This eliminates the need to manually inspect your script, allowing you to identify whether you are using -newperf and -plusperf options and any other switches you might have overlooked.
Consider the example of disabling options. If you are using any disabling feature, it's important to remain vigilant. The reason for this is how these options typically manifest. When debugging a complex issue, you may turn off certain elements to pinpoint the root cause. However, once the root cause is resolved, it's easy to overlook removing these disabled options, which can cause problems in subsequent simulations. In the case illustrated above, the -DISABLE_FORGEN_CAOPT option removes specific performance optimizations, removing this switch can increase performance.
In general, options that lead to performance degradation start with "no*," "no_*, "disable_*," such as NOCAG, NODEADCODE, and DISABLE_FORGEN_CAOPT. If you are using any of these or similar options to disable optimization, it is recommended to remove them. Doing so prevents the degradation of performance caused by disabling optimization features. However, there are certain options that fit in these regular expressions but do not cause performance degradation, such as notimigchecks, nowarn, disable_cb_access, and so on.
Compile or sim time switches are not captured in the profile (-process_save, -mcl).
The profile report shows the access you are currently utilizing.
Avoiding +rwc(read, write, and connect) to allow the Xcelium to maximize performance is best. Enabling turns off many optimizations.
Additionally, using -coverage all can decrease your performance, so it's essential to consider your coverage and debug scopes carefully. For example, line debugging can also reduce your performance. By analyzing these options, you can gain insights into achieving the best possible performance. Removing unnecessary switches or adding performance optimization switches like -new perf/-plusperf can result in significant gains.
Read the next post to learn more about analyzing basic profile information.
Watch the on-demand recording of the Best Practices to Achieve the Highest Performance using Xcelium Logic Simulator webinar to discover how to achieve optimal performance with Xcelium Logic Simulator.