10 tips to improve performance using HSPICE
Posted by Hélène Thibiéroz on February 9th, 2012
Good morning ! well, since this is a technical blog, I thought I owed you some tools-related posts
I am compiling below 10 tips to make your HSPICE simulation even more efficient
If you want to look into those options in more details, we conducted a webinar a few weeks ago hosted by Szekit Chan, that discussed those topics in more details. I have listed the link at the end of this post.
And as usual, feedback/comments are more than welcome !
#1 – use HSPICE runlvl to replace old options convergence parameters:
.option runlvl=1|2|3|4|5|6
#2 – invoke multi-threading option with HPP: -mt <number> -hpp
#3 – use distributed processing: -dp <number>
#4 – for post-layout netlists, use RC reductions techniques: .option sim_la
#5- Â avoid the usage of wildcard within your .probe statement, especially on post-layout netlist
Instead of .probe tran v(*) I(*) use .probe tran v(xi.*) i(xi.r*)
#6- declare port current directly
Instead of .probe tran isub(*) use .probe tran isub(xinv.vdd) isub(xinv.v*)
#7- if using .ALTER statement, reduce netlist processing and checking time with the following options: .option altcc altchk
#8- reduce simulation time by bypassing element checking and suppressing topology checking with the following options:
.option notop noelchk
#9- re-use simulation measurement data set directly and post-process data without re-running the same netlist by using the command line option:
>> hspice –i ***.tro –meas <meas_file>
#10- reduce simulation time by stopping your simulation as soon as the last measurement is completed by specifying the following option:
.option autostop
The link to the webinar is:
https://event.on24.com/eventRegistration/prereg/register.jsp?eventid=381394&sessionid=1&key=E48E59582DA6321FCDE78BBF5BEFD169&cmp=WEBR-circ100094-HPW


























Hi,
Nice post. Just a tip on point #5. HSPICE in 2011.09-SP1 added some ways to reduce the numbers of probes with the ‘level’ and ‘filter’ arguments. For instance:
.probe v(X1.*) level=2 filter=’*X2*’
Will probe two levels, starting at X1, and remove any probes that have X2 in their name. This also works the same in CustomSim and HSIM.
Thanks,
Glen
Thanks Glen, this is very useful for a design including multiple levels of hierarchy.
Best,
Helene