You may have heard about the overhaul to the old save/restart mechanism that was in Incisive—but are you aware of what the new Xcelium Simulator version can do?
While the old version is still supported, there’s a lot of benefits to shifting to the new one. Now called “checkpointing,” this new system uses a process-based implementation and is overviewed in the app note, Using Save/Restart Checkpointing with Xcelium.
If you’re still using that old save/restart functionality, you’re probably already aware of some of the issues and shortcomings of that system. You could only save or restart at a “clean” point, which limited when you could actually save. It also didn’t save any states from any of your external code—so your C/C++/SystemC code needed to be re-run, and you’ll have to manually scrub your output files. There were also issues with certain basic system tasks that weren’t supported.
Xcelium’s checkpointing system solves these issues and others, creating a smoother, better-integrated solution that’s a good fit for any environment.
To enable the new checkpointing system just use the -checkpoint_enable run-time switch. Once you’ve done that, there are a couple of ways to invoke the new checkpointing system.
From tcl, just use the save command as before. You can also put the $save system task in your Verilog code. If that task is present at elaboration time, wherever the $save system task is called, checkpointing will be used to save the snapshot.
With checkpointing, the memory state of the entire model is saved—no more worrying about your external code! This includes the state of any files being read or written. That means the read/write pointers of any associated files are saved. in a warm restart, your output will pick up right where it left off at the save action. In a cold restart, you can choose to start with a fresh log file by specifying a different log file name from what was used at the time of save, or opt for a continuous log file from before the save through post-restart by using the same one.
There are two issues still in the works with Xcelium’s new checkpointing. One is that the new images created through this checkpointing system are much larger than the old ones. That said, you can use the -zlib option with xrun to compress the image. The images are still very large even when compressed, though, so be sure to watch your disk space usage if you’re saving multiple times. You can read more about -zlib in the Xcelium User Guide.
If you need multi-threading, stay tuned—it will be available in the next few weeks.
If you want to read more about Xcelium’s new save/restart functionality, check out the app note here.