HEADER
"PSFversion" "1.00"
"Run Generator" "drlRun rev. 1.0"
"Run Time Stamp" "Dec 24 11:46:49 2015"
"date" "Dec 24 11:46:49 2015"
"simulator" "spectre"
"netlistDir" "../netlist"
"tranSST2Data" "TRUE"
TYPE
"runObject" STRUCT(
"logName" ARRAY( * ) STRING *
"parent" STRING *
"sweepVariable" ARRAY( * ) STRING *
) PROP( "key" "runObject" )
VALUE
"Root" "runObject" (
("")
""
("temp")
)
"temp=-40/psf" "runObject" (
(
"../temp=-40/psf/logFile"
"../temp=-40/psf/artistLogFile"
)
"Root"
()
) PROP(
"netlistDir" "../netlist"
"dataDir" "../temp=-40"
"temp" -40
)
"temp=60/psf" "runObject" (
(
"../temp=60/psf/logFile"
"../temp=60/psf/artistLogFile"
)
"Root"
()
) PROP(
"netlistDir" "../netlist"
"dataDir" "../temp=60"
"temp" 60
)
"temp=125/psf" "runObject" (
(
"../temp=125/psf/logFile"
"../temp=125/psf/artistLogFile"
)
"Root"
()
) PROP(
"netlistDir" "../netlist"
"dataDir" "../temp=125"
"temp" 125
)
ad1
Showing posts with label Spectre. Show all posts
Showing posts with label Spectre. Show all posts
Thursday, December 24, 2015
"paMaster" Directory in simulation result directory
This directory is used from Parameter Analysis purpose. It contains an runObjFile file:
Wednesday, December 23, 2015
*Error* Could not select results from xxxx
Put runObjFile into your psf directory will solve this issue.
A sample runObjFile is like
"Run Time Stamp" "Dec 22 21:03:14 2015"
"simulator" "spectre"
"date" "Dec 22 21:03:14 2015"
"tranSST2Data" "TRUE"
"netlistDir" "../netlist"
TYPE
"runObject" STRUCT(
"logName" ARRAY( * ) STRING *
"parent" STRING *
"sweepVariable" ARRAY( * ) STRING *
) PROP( "key" "runObject" )
VALUE
"Run1" "runObject" (
(
"logFile"
"artistLogFile"
)
""
()
)
END
Sunday, December 20, 2015
CDF Bus Pin Order
CDF Bus Pin Order must match that in Symbol view, otherwise, the bus pin will not generated in the netlist.
Save Current for Layout-Extracted Netlist
save I0:currents
saveCurrentOpts options userterm=name
saveCurrentOpts options userterm=name
Thursday, December 17, 2015
Sunday, December 13, 2015
Save Power Of A Source (Spectre)
save V0:pwr
power=-getData("V0:pwr" ?result 'tran)
energy=-iinteg(getData("V0:pwr" ?result 'tran))
value(energy 9e-06)
power=-getData("V0:pwr" ?result 'tran)
energy=-iinteg(getData("V0:pwr" ?result 'tran))
value(energy 9e-06)
Thursday, December 3, 2015
Difference between Spectre, SpectreS, HspiceS, HspiceD
Well, hspice is a circuit simulator from Synopsys; spectre is a circuit simulator from Cadence. There are obviously lots of differences - and clearly I would be biased towards spectre ;-)
For each simulator, there are two interfaces. There is hspiceD and hspiceS (hspice Direct, and hspice Socket), and
spectre and spectreS (spectre direct, and spectre Socket).
The "Socket" interfaces are the obsolete interfaces to the simulators. In the past, many simulators did not have a strong parameterisable language, and so what the Cadence tools did was use cdsSpice (which had a strong macro language, but was a fairly weak simulator) to act as a front end to the end simulator. All netlists were created in cdsSpice's macro language, and then translated into the destination simulator's language - without any parameterisation remaining.
Such an approach worked, but it tended to mean that you couldn't access all the features of the underlying simulator.
A few years ago (back in IC443, around 1999), the "direct" interfaces were introduced, and we're now cutting out the middle man and directly netlisting the right language. This is faster, more efficient, and gives greater access to the underlying simulator.
So the hspiceD and spectre interfaces are the ones to go for. Which simulator you pick depends on your needs.
Regards,
Andrew.
For each simulator, there are two interfaces. There is hspiceD and hspiceS (hspice Direct, and hspice Socket), and
spectre and spectreS (spectre direct, and spectre Socket).
The "Socket" interfaces are the obsolete interfaces to the simulators. In the past, many simulators did not have a strong parameterisable language, and so what the Cadence tools did was use cdsSpice (which had a strong macro language, but was a fairly weak simulator) to act as a front end to the end simulator. All netlists were created in cdsSpice's macro language, and then translated into the destination simulator's language - without any parameterisation remaining.
Such an approach worked, but it tended to mean that you couldn't access all the features of the underlying simulator.
A few years ago (back in IC443, around 1999), the "direct" interfaces were introduced, and we're now cutting out the middle man and directly netlisting the right language. This is faster, more efficient, and gives greater access to the underlying simulator.
So the hspiceD and spectre interfaces are the ones to go for. Which simulator you pick depends on your needs.
Regards,
Andrew.
Tuesday, December 1, 2015
Use "Parasitic Reduction" In Spectre Simulation
% spectre +turbo +parasitics
Monday, November 30, 2015
How does spectre get stimuli information
In the input.scs file, netlister adds an "include" statement,
include "./_graphical_stimuli.scs"
In the _graphical_stimuli.scs file, the necessary sources are listed as shown below,
Friday, November 27, 2015
Use pattern matching in saving current (spectre)
The save statement takes a list of signals followed by some optional parameters as an argument.
save X[:param] ... [depth=num] [sigtype=node|dev|subckt|all]
- The parameters control pattern matching;
- depth controls the depth of the pattern matching ( default: all hierarchical levels);
- sigtype defines the type of X (default value: node)
The following save statement can be used in post-layout simulation, when you want to check all the currents of a specific device that has a m other than 1:
save I0.MTP3319.*:d sigtype=subckt
Wednesday, November 25, 2015
Spectre Namespaces
- schematic name: begins with a "/", that is, the hierarchical name stored in Virtuoso database;
- netlist name: refer to spectre's naming rules (i.e. dot "." as the hierarchy separator, and ":" for terminal access or operating point parameter access).
To map between these two namespaces, spectre use files in netlist/map and netlist/amap directories.
Spectre "save" option
Default save option: "selected"
saveOptions options save=selected currents=selectedWith spectre, "selected" means that any signals that appear in save statements; if no outputs are explicitly saved then it will save all node voltages. This is to keep things simple - if you didn't tell it what to save, it assumes you wanted to see something, so it saves the most likely.
Tuesday, November 24, 2015
Wall-Clock Time
Wall-clock time, or wall time, is the human perception of the passage of time from the start to the completion of a task. In the context of a task being performed on a computer, wall-clock time is a measure of the real time that elapses from start to end, including time that passes due to programmed (artificial) delays or waiting for resources to become available. In other words, it is the difference between the time at which a task finishes and the time at which the task started.
The term is used rather than "real" time to avoid a naming conflict with real-time systems.
The term is used rather than "real" time to avoid a naming conflict with real-time systems.
Wednesday, November 18, 2015
Save All Terminal Currents Of A Subcircuit
Use the following statement to tell Spectre to save all terminal current flowing into I2
save I2:currentsTo examine all subcircuits' terminal current:
save I0:currents
save I0.I202:currents
save I0.I305:currents
save I0.I11:currents
save I0.I198:currents
save I0.I199:currents
save I0.I200:currents
Save All Nets Within A Specified Cell in Spectre
First create save.scs and add the following line:
There are other variations in "save" statement, e.g.: the following example saves nets within all instances of subcircuit "osc" (use subckt)
save I0.I305.*Then, set save option as
saveOptions options save=selected
There are other variations in "save" statement, e.g.: the following example saves nets within all instances of subcircuit "osc" (use subckt)
save * subckt=oscand the following example saves all nets up to level 2 (use depth)
save * depth=2
Wednesday, November 11, 2015
Telling Spectre to Create a State File
You can instruct the Spectre simulator to create a state file from either the initial point or the final point in an analysis.
- Write a state file from the initial point: write
- Write a state file from the final point: writefinal
The following is an example of a state file:
Starting Analyses from Previous Solutions (Spectre)
A solution for one analysis can be an appropriate starting point for the next analysis. For example, if a DC analysis precedes a transient analysis, you can use the DC solution as the first guess for the initial point in the transient analysis solution. There are two Spectre analysis parameters that let you start analyses from previous solutions. They are available for most Spectre analyses.
- The restart parameter
If you set this parameter to restart=no in an analysis statement, the Spectre simulator uses the DC solution of the previous analysis as an initial guess for the following analysis.
- The prevoppoint parameter
If you set this parameter to prevoppoint=yes in an analysis statement, the Spectre simulator does not compute or recompute the operating point. Instead, it uses the operating point computed by the previous analysis.
Subscribe to:
Posts (Atom)









