• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Simulation doesn't run without AMAP folder

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 1985
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Simulation doesn't run without AMAP folder

zaratustra
zaratustra over 6 years ago

Hi,

I have two questions related to the same simulation.

Q1) I'm trying to run a simulation in a separate folder. I created the empty netlistFooter and netlistHeader files inside a netlist folder. The problem is that the simulator always ask for an AMAP folder. So I copied an AMAP folder from another design. I need to perform more than 2k simulations with 2k different netlists, so I can't manually create more than 2k schematics in Virtuoso. I understand that this is probably a syntax issue, but I can't see where in the netlist it is saying that is a schematic netlist.

When I copied the amap folder from another design it worked but I'm not sure if the results will be correct since the signals are mapped to a different design.

Q2) I inserted an exit() at the end of the ocean script because I have to quit ocean before performing another simulation. Ocean is saying "killed by user" and at the end saying that "fatal error ..." but the simulation is performed and the waveforms are saved. Is it expected?

I call ocean like this: "ocean -nograph -restore core.il"

Please find below one of the netlists and the ocean script.

Thank you,

Raphael

Fullscreen 4667.temp.txt Download
########## netlist_file ##########
include "etc/corners.scs"

// Library name: Cell
// Cell name: NAND2
// View name: schematic

subckt NAND2 A B Z gnd gnds vdd vdds
M5 (net023 B net247 gnds) nmos w=199.0n l=22.0n as=(76n)*(199.0n)  \
         ad=(76n)*(199.0n) ps=2*((1)*(76n)+(199.0n))  pd=2*((1)*(76n)+(199.0n)) \
        nf=(1)*(1) sb=(76n) sd=114n ptwell=1 sca=-1 scb=-1 scc=-1 \
        pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \
        nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \
        mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \
        pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1
M2 (net247 A gnd gnds) nmos w=199.0n l=22.0n as=(76n)*(199.0n)  \
         ad=(76n)*(199.0n) ps=2*((1)*(76n)+(199.0n))  pd=2*((1)*(76n)+(199.0n)) \
        nf=(1)*(1) sb=(76n) sd=114n ptwell=1 sca=-1 scb=-1 scc=-1 \
        pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \
        nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \
        mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \
        pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1
M0 (Z net023 gnd gnds) nmos w=378.0n l=22.0n as=(76n)*(378.0n)  \
         ad=(76n)*(378.0n) ps=2*((1)*(76n)+(378.0n))  pd=2*((1)*(76n)+(378.0n)) \
        nf=(1)*(1) sb=76.0n sd=114n ptwell=0 par=1 sca=-1 scb=-1 scc=-1 \
        pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \
        nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \
        mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \
        pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1
M4 (net023 B vdd vdds) pmos w=242.0n l=22.0n as=(76n)*(242.0n)  \
         ad=(76n)*(242.0n) ps=2*((1)*(76n)+(242.0n))  pd=2*((1)*(76n)+(242.0n)) \
        nf=(1)*(1) sb=(76n) sd=114n ptwell=0 sca=-1 scb=-1 scc=-1 \
        pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \
        nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \
        mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \
        pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1
M3 (net023 A vdd vdds) pmos w=242.0n l=22.0n as=(76n)*(242.0n)  \
         ad=(76n)*(242.0n) ps=2*((1)*(76n)+(242.0n))  pd=2*((1)*(76n)+(242.0n)) \
        nf=(1)*(1) sb=(76n) sd=114n ptwell=0 sca=-1 scb=-1 scc=-1 \
        pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \
        nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \
        mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \
        pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1
M1 (Z net023 vdd vdds) pmos w=538.0n l=22.0n as=(76n)*(538.0n)  \
         ad=(76n)*(538.0n) ps=2*((1)*(76n)+(538.0n))  pd=2*((1)*(76n)+(538.0n)) \
        nf=(1)*(1) sb=76.0n sd=114n ptwell=0 par=1 sca=-1 scb=-1 scc=-1 \
        pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \
        nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \
        mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \
        pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1
ends NAND2
// End of subcircuit definition.

V0 (vdd! 0) vsource dc=1 type=dc
V1 (vdds! 0) vsource dc=1 type=dc
V2 (gnds! 0) vsource dc=0 type=dc
C0 (Z 0) capacitor c=1f
I0 (gnds! gnds! Z 0 gnds! vdd! vdds!) NAND2


########## core.il ##########
paths_file_folder = "etc/simulator_spectre/" 
electrical_simulation_path = "etc/simulations/" 
cell_name = "NAND2" 
modelFile_path = '("etc/corners.scs" "") 
path_psf = strcat(electrical_simulation_path cell_name "/spectre/schematic") 
path_netlist = strcat(electrical_simulation_path cell_name "/spectre/schematic/netlist/netlist") 
time_hit = 1.8e-08 
outputstart_electrical_sim = "1e-08" 
stop_electrical_sim = "3e-08" 
temperature = 25 
vdd_core = 1.0 
results_wvspt_folder = "etc/waveform/" 
load strcat(paths_file_folder "simulation_options.il") 
load strcat(paths_file_folder "run_simulation.il") 
exit() 


########## simulation_options.il ##########
simulator( 'spectre )
design(	 path_netlist )
resultsDir( path_psf )
modelFile( modelFile_path )
analysis('tran ?outputstart outputstart_electrical_sim ?stop stop_electrical_sim ?skipdc "yes")

envOption(
        'cmd64bit  t 
	'analysisOrder  list("tran") 
)
option( 'dochecklimit "no"
)

temp( temperature )

saveOption( ?simOutputFormat "psf" )
saveOption( 'currents "none" )
saveOption( 'save "selected") 


########## run_simulation.il ##########
run()

;Open results from psf
openResults(path_psf)

;Select transient results, only voltage in this case
all_signals_v = outputs(?result "tran" ?resultsDir path_psf)

;Save operations in the specified file
symmaryFile=outfile(strcat(results_wvspt_folder "all_signals_voltages") "w")

foreach(cell_name all_signals_v
  cell_voltage=value(v(cell_name ?result "tran") time_hit)
  when(cell_voltage
    fprintf(symmaryFile "%s %g \n" cell_name cell_voltage)
  )
)

close(symmaryFile)

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    I can't see why spectre would care about the amap directory (I'd be extremely surprised if it did). Maybe the OCEAN script would but even then I'd expect the outputs() function to return the unmapped names if there's no amap directory (that's certainly what it does when I tried it).

    So, which IC subversion are you using (you can use getVersion(t) to report that) and which spectre version? What exactly is the error you get?

    The issue with the "killed by user" and "fatal error" is not a problem - it's because in OCEAN by default it launches spectre in "interactive" mode which means that the simulator doesn't exit so that it can efficiently re-run if  you just change a desVar() and do run() again. If you call ocnCloseSession() before the call to exit() it will exit the simulator gracefully and prevent this message.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    I can't see why spectre would care about the amap directory (I'd be extremely surprised if it did). Maybe the OCEAN script would but even then I'd expect the outputs() function to return the unmapped names if there's no amap directory (that's certainly what it does when I tried it).

    So, which IC subversion are you using (you can use getVersion(t) to report that) and which spectre version? What exactly is the error you get?

    The issue with the "killed by user" and "fatal error" is not a problem - it's because in OCEAN by default it launches spectre in "interactive" mode which means that the simulator doesn't exit so that it can efficiently re-run if  you just change a desVar() and do run() again. If you call ocnCloseSession() before the call to exit() it will exit the simulator gracefully and prevent this message.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Children
  • zaratustra
    zaratustra over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you for your time. The ocnCloseSession() did the trick.

    Regarding Q1 Here is some additional information:

    Under Virtuoso CIW: getVersion(t) = "sub-version IC6.1.7-64b.500.15 "

    Spectre (R) Circuit Simulator - Version 18.1.0.077 64bit -- 1 Aug 2018

    I arrived today at work, closed everything (Virtuoso etc), removed all amap folders, added the ocnCloseSession() and now everything is running smoothly. I did absolutely nothing besides that and I can't repeat the amap folder error. So now is running without the amap folder. Maybe there was something in the environment because I did simulate before using Virtuoso (so using amap), by closing everything and sourcing the environment again solved the problem.

    Thank you for you support.

    Have a great day,

    Raphael

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information