I usually write out signals out of the transient analysis data using the "psf" command built into spectre. This is faster than using ocnPrint and simpler.
I suddenly see the following error now:
"./psf/tran.tran.trn":1,2: Error 35, syntax error found, header table missing
Is anyone familiar with this? I have been using MMSIM 10.11.235 which works well for me for a while and have been able to write out waves using this command so far. The Spectre command line in my log file looks like this:
/cte/tools/cds/MMSIM/10.11.235/tools.lnx86/spectre/bin/64bit/spectre \ input.scs +escchars +log ../psf/spectre.out -format sst2 -raw \ ../psf ++aps +mt=8 +lqtimeout 900 -maxw 5 -maxn 5
I don't see anything different from the usual scenario, although I am not sure whether I was using the +sst2 option in the past or +psfbin. I suspect that "psf" does not work in this case.
Would anyone know what utility I would need to use to get hold of the data now?
The "psf" command only supports PSF format (not SST2).
Why are you writing it out in the first place - i.e. where are you taking the data to (I want to clarify in case it affects my answer).
In reply to Andrew Beckett:
Thanks for responding. I typically write out the signals to a text file in order to do postprocessing on these outside the Cadence design environment. I've got various scripts that run checks on the data generated this way from multiple runs.
I usually have the +psfbin option enabled but I realized that it was missing in one of my longer runs and so I have the data all in SST2 format. As you pointed out, "psf" does not support this and so I am unable to read the waves.
I do recall vaguely that there was another utility which could be used to read the data in this case instead of "psf". I just don't recall what it was called, having (almost) never used it.
In reply to vivkr:
You could read them into Matlab using the spectre toolbox for Matlab. There is no command line utility for reading SST2 files as far as I know (you can read them ViVA or simvision and export them to CSV though).
Just a note Andrew and Vivek,
I also used the command line psf to read psf data. It is incredibly fast however it does not work, as you stated correctly Andrew, for SST2 data. I looked into the issue and found I could use simvisdbutil. This is also very fast - faster than an ocean script using fprint() and faster than ocnPrint(). I benchmarked the three and found it significantly faster. The syntax to create a file called "clkbp_clkbm_200k.csv" sampled at 1 ps from 0 to 1 ns from database tran.tran.trn follows. I did need to update the version as the optional "period" - which specifies the timestep - was not available in the original version I used. I am sure it is updated now,
simvisdbutil tran.tran.trn -overwrite -output ./clkbp_clkbm_200k.csv
-csv -timeunits s -period 1ps -range 0:1ns
I just checked and this tool is still available it appears. I hope this helps Vivek!
In reply to smlogan:
Thanks a lot! This is exactly what I was looking for.
Apologies - I forgot about this utility, partly because I was focused on giving you something from the IC stream (simvisdbutil comes from the INCISIV stream).
> Apologies - I forgot...
Although I am not Vivek, I must comment that you should not even think about an apology! You have helped countless number of people - and no one can have all the facts at their beckon call all the time. It is amazing to me (anyway) how much you do have at your fingertips! The fact that others can "chip in" occasionally is one of the advantages I find of the forum medium.
Thank you for all your help and guidance!
PS - I hope this is not beyond the scope of this forum! If it is, my apologies this time!
I really need your help. I saw this forum and the discussion about simvisdbutil. I can easily readt my spectre sst2 simulation result and export it to Matlab if my signals are net voltages. However for terminal currents, I have been unable to get it to work.
Take a look at the commandline below:
simvisdbutil -csv -timeunits s -overwrite -output /home/a0282908/Junk/simulation.csv -signal simMF_BG_SUP.V12.p_$flow /sim/BQ50001_OA_DS/a0282908/Latest/sim/simMF_BG_SUP/ams/config_ams/psf
I get this message: flow: Undefined variable.
I then tried this
simvisdbutil -csv -timeunits s -overwrite -output /home/a0282908/Junk/simulation.csv -signal simMF_BG_SUP.V12.p_\$flow /sim/BQ50001_OA_DS/a0282908/Latest/sim/simMF_BG_SUP/ams/config_ams/psf
and got this
simvisdbutil: *F,BDSIGNM: The signal name on the following line was not found: "simMF_BG_SUP.V12.p_".
I then tried this
simvisdbutil -csv -timeunits s -overwrite -output /home/a0282908/Junk/simulation.csv -signal simMF_BG_SUP.V12.p /sim/BQ50001_OA_DS/a0282908/Latest/sim/simMF_BG_SUP/ams/config_ams/psf
and got this again
simvisdbutil: *F,BDSIGNM: The signal name on the following line was not found: "simMF_BG_SUP.V12.p
My question is this: what is the correct syntax using simvisdbutil to extract device terminal currents from an sst2 database and export it to a .csv file for futher post processing?
Also another question is: are there any other shell prompt commandline functions to export signals from cadence spectre to a .csv file or.matlab file. I know the VIVA gui can export signals to .csv, but I want to be able to script that process for post processing automation.
Your response to this incredibly burning question would be highly appreciated.
In reply to ddave:
I found the easiest way was to surround the signal names with single quotes to prevent the shell from evaluating the "$" characters as variables:
simvisdbutil -csv -timeunits s -overwrite -output play.csv -signal 'PLL_160MHZ_sim.I0.sink_$flow' -signal 'PLL_160MHZ_sim.I3.VCO_CLK' -signal 'PLL_160MHZ_sim.I7.sink_$flow' simulation/PLL_160MHZ_sim/ams/config/psf
No need to escape anything that way.
Sorry it took so long to answer (this dropped off my list) - if it was "incredibly burning" the right thing to do would have been to contact customer support at http://support.cadence.com (so hopefully you did that).