Tcl SpiceGenTcl package (v0.60)

::SpiceGenTcl::Ngspice::SimulatorsTop, Main, Index

ClassesTop, Main, Index

Batch [::SpiceGenTcl::Ngspice::Simulators]Top, Main, Index

Method summary
constructorConstructor for the class.
clearLogClear saved log by unsetting Log variable.
configureConfigure properties.
getLogSee ::SpiceGenTcl::Simulator.getLog
readDataReads raw data file, create RawFile object and return it's reference name.
readLogReads log file of last simulation and save it's content to Log variable.
runSee ::SpiceGenTcl::Simulator.run
runAndReadRuns netlist circuit file.
Properties

Readable: -Command, -LastRunFileName, -data, -log, -name, -runlocation

Writable: -Command, -LastRunFileName, -data, -log, -name, -runlocation

Superclasses

::SpiceGenTcl::Simulator

Subclasses

BatchLiveLog

constructor [::SpiceGenTcl::Ngspice::Simulators::Batch]Batch, Top, Main, Index

Creates batch ngspice simulator that can be attached to top-level Circuit.

Batch create OBJNAME name ?runLocation?
Batch new name ?runLocation?
Parameters
nameName of simulator object.
runLocationLocation at which input netlist is stored and all output files will be saved, default is current directory. Optional, default ..
method constructor {name {runLocation .}} {

    # Creates batch ngspice simulator that can be attached to top-level Circuit.
    #  name - name of simulator object
    #  runLocation - location at which input netlist is stored and all output files will be saved,
    #   default is current directory
    my configure -name $name
    global tcl_platform
    if {[string match -nocase *linux* $tcl_platform(os)]} {
        my configure -Command ngspice
    } elseif {[string match -nocase "*windows nt*" $tcl_platform(os)]} {
        my configure -Command ngspice_con
    }
    my configure -runlocation $runLocation
}

clearLog [::SpiceGenTcl::Ngspice::Simulators::Batch]Batch, Top, Main, Index

Clear saved log by unsetting Log variable.

OBJECT clearLog
method clearLog {} {

    # Clear saved log by unsetting Log variable.
    if {[info exists Log]} {
        unset log
        return
    } else {
        return -code error "Log does not exists for simulator '[my configure -name]'"
    }
}

readData [::SpiceGenTcl::Ngspice::Simulators::Batch]Batch, Top, Main, Index

Reads raw data file, create RawFile object and return it's reference name.

OBJECT readData
method readData {} {

    # Reads raw data file, create RawFile object and return it's reference name.
    my variable data
    set data [::SpiceGenTcl::RawFile new "[my configure -runlocation]/[my configure -LastRunFileName].raw"]
    return
}

readLog [::SpiceGenTcl::Ngspice::Simulators::Batch]Batch, Top, Main, Index

Reads log file of last simulation and save it's content to Log variable.

OBJECT readLog
method readLog {} {

    # Reads log file of last simulation and save it's content to Log variable.
    set logFile [open "[my configure -runlocation]/[my configure -LastRunFileName].log" r+]
    set log [read $logFile]
    close $logFile
    return
}

runAndRead [::SpiceGenTcl::Ngspice::Simulators::Batch]Batch, Top, Main, Index

Runs netlist circuit file.

OBJECT runAndRead circuitStr ?-nodelete?
Parameters
circuitStrTop-level netlist string.
-nodeleteFlag to forbid simulation file deletion.
method runAndRead {circuitStr args} {

    # Runs netlist circuit file.
    #  circuitStr - top-level netlist string
    #  -nodelete - flag to forbid simulation file deletion
    # Synopsis: circuitStr ?-nodelete?
    set arguments [argparse {
        -nodelete
    }]
    set firstLine [@ [split $circuitStr \n] 0]
    set runLocation [my configure -runlocation]
    set cirFile [open "${runLocation}/${firstLine}.cir" w+]
    puts $cirFile $circuitStr
    close $cirFile
    set rawFileName "${runLocation}/${firstLine}.raw"
    set logFileName "${runLocation}/${firstLine}.log"
    set cirFileName "${runLocation}/${firstLine}.cir"
    exec "[my configure -Command]" -b -r $rawFileName -o $logFileName $cirFileName
    my configure -LastRunFileName ${firstLine}
    my readLog
    my readData
    if {[info exists nodelete]==0} {
        file delete $rawFileName
        file delete $logFileName
        file delete $cirFileName
    }
}

BatchLiveLog [::SpiceGenTcl::Ngspice::Simulators]Top, Main, Index

Method summary
clearLogSee Batch.clearLog
configureConfigure properties.
getLogSee ::SpiceGenTcl::Simulator.getLog
readDataSee Batch.readData
readLogSee Batch.readLog
runSee ::SpiceGenTcl::Simulator.run
runAndReadRuns netlist circuit file.
Properties

Readable: -Command, -LastRunFileName, -data, -log, -name, -runlocation

Writable: -Command, -LastRunFileName, -data, -log, -name, -runlocation

Superclasses

Batch

runAndRead [::SpiceGenTcl::Ngspice::Simulators::BatchLiveLog]BatchLiveLog, Top, Main, Index

Runs netlist circuit file.

OBJECT runAndRead circuitStr ?-nodelete?
Parameters
circuitStrTop-level netlist string.
-nodeleteFlag to forbid simulation file deletion.
method runAndRead {circuitStr args} {

    # Runs netlist circuit file.
    #  circuitStr - top-level netlist string
    #  -nodelete - flag to forbid simulation file deletion
    # Synopsis: circuitStr ?-nodelete?
    set arguments [argparse {
        -nodelete
    }]
    set firstLine [@ [split $circuitStr \n] 0]
    set runLocation [my configure -runlocation]
    set cirFile [open "${runLocation}/${firstLine}.cir" w+]
    puts $cirFile $circuitStr
    close $cirFile
    set rawFileName "${runLocation}/${firstLine}.raw"
    set logFileName "${runLocation}/${firstLine}.log"
    set cirFileName "${runLocation}/${firstLine}.cir"
    set command [list [my configure -Command] -b $cirFileName -r $rawFileName]
    set chan [open "|$command 2>@1"]
    set logData ""
    while {[gets $chan line] >= 0} {
        puts $line
        set logData [join [list $logData $line] \n]
        if {[eof $chan]} {
            close $chan
        }
    }
    close $chan
    my configure -LastRunFileName ${firstLine}
    my configure -log $logData
    my readData
    if {[info exists nodelete]==0} {
        file delete $rawFileName
        file delete $logFileName
        file delete $cirFileName
    }
}