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:
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
)

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

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)


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.

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


  1. schematic name: begins with a "/", that is, the hierarchical name stored in Virtuoso database;
  2. 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=selected
With 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.

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:currents
To 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:
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=osc
and the following example saves all nets up to level 2 (use depth)
save * depth=2





Wednesday, November 11, 2015

Final State Files Scrutinizing



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.