KiCad PCB EDA Suite
Loading...
Searching...
No Matches
NETLIST_EXPORTER_SPICE Class Reference

#include <netlist_exporter_spice.h>

Inheritance diagram for NETLIST_EXPORTER_SPICE:
NETLIST_EXPORTER_BASE NETLIST_EXPORTER_SPICE_MODEL SPICE_CIRCUIT_MODEL

Public Types

enum  OPTIONS {
  OPTION_ADJUST_INCLUDE_PATHS = 0x0010 , OPTION_ADJUST_PASSIVE_VALS = 0x0020 , OPTION_SAVE_ALL_VOLTAGES = 0x0040 , OPTION_SAVE_ALL_CURRENTS = 0x0080 ,
  OPTION_SAVE_ALL_DISSIPATIONS = 0x0100 , OPTION_CUR_SHEET_AS_ROOT = 0x0200 , OPTION_SIM_COMMAND = 0x0400 , OPTION_DEFAULT_FLAGS
}
 

Public Member Functions

 NETLIST_EXPORTER_SPICE (SCHEMATIC_IFACE *aSchematic, wxWindow *aDialogParent=nullptr)
 
bool WriteNetlist (const wxString &aOutFileName, unsigned aNetlistOptions, REPORTER &aReporter) override
 Write to specified output file.
 
bool DoWriteNetlist (const wxString &aSimCommand, unsigned aSimOptions, OUTPUTFORMATTER &aFormatter, REPORTER &aReporter)
 Write the netlist in aFormatter.
 
virtual void WriteHead (OUTPUTFORMATTER &aFormatter, unsigned aNetlistOptions)
 Write the netlist head (title and so on).
 
virtual void WriteTail (OUTPUTFORMATTER &aFormatter, unsigned aNetlistOptions)
 Write the tail (.end).
 
virtual bool ReadSchematicAndLibraries (unsigned aNetlistOptions, REPORTER &aReporter)
 Process the schematic and Spice libraries to create net mapping and a list of SPICE_ITEMs.
 
std::set< std::string > GetNets () const
 Return the list of nets.
 
std::string GetItemName (const std::string &aRefName) const
 Return name of Spice device corresponding to a schematic symbol.
 
const std::list< SPICE_ITEM > & GetItems () const
 Return the list of items representing schematic symbols in the Spice world.
 
const SPICE_ITEMFindItem (const std::string &aRefName) const
 Find and return the item corresponding to aRefName.
 
const std::vector< wxString > & GetDirectives ()
 

Static Public Member Functions

static void ConvertToSpiceMarkup (std::string &aNetName)
 Remove formatting wrappers and replace illegal spice net name characters with underscores.
 
static wxString MakeCommandLine (const wxString &aFormatString, const wxString &aNetlistFile, const wxString &aFinalFile, const wxString &aProjectDirectory)
 Build up a string that describes a command line for executing a child process.
 

Protected Member Functions

void ReadDirectives (unsigned aNetlistOptions)
 
virtual void WriteDirectives (const wxString &aSimCommand, unsigned aSimOptions, OUTPUTFORMATTER &candidate) const
 
virtual std::string GenerateItemPinNetName (const std::string &aNetName, int &aNcCounter) const
 
SCH_SHEET_LIST GetSheets (unsigned aNetlistOptions=0) const
 Return the paths of exported sheets (either all or the current one).
 
std::vector< PIN_INFOCreatePinList (SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aSheetPath, bool aKeepUnconnectedPins)
 Find a symbol from the DrawList and builds its pin list.
 
SCH_SYMBOLfindNextSymbol (EDA_ITEM *aItem, SCH_SHEET_PATH *aSheetPath)
 Check if the given symbol should be processed for netlisting.
 
void eraseDuplicatePins (std::vector< PIN_INFO > &pins)
 Erase duplicate pins.
 
void findAllUnitsOfSymbol (SCH_SYMBOL *aSchSymbol, SCH_SHEET_PATH *aSheetPath, std::vector< PIN_INFO > &aPins, bool aKeepUnconnectedPins)
 Find all units for symbols with multiple symbols per package.
 

Protected Attributes

UNIQUE_STRINGS m_referencesAlreadyFound
 Used for "multiple symbols per package" symbols to avoid processing a lib symbol more than once.
 
std::set< LIB_SYMBOL *, LIB_SYMBOL_LESS_THANm_libParts
 unique library symbols used. LIB_SYMBOL items are sorted by names
 
SCHEMATIC_IFACEm_schematic
 The schematic we're generating a netlist for.
 

Private Member Functions

void readRefName (SCH_SHEET_PATH &aSheet, SCH_SYMBOL &aSymbol, SPICE_ITEM &aItem, std::set< std::string > &aRefNames)
 
void readModel (SCH_SHEET_PATH &aSheet, SCH_SYMBOL &aSymbol, SPICE_ITEM &aItem, REPORTER &aReporter)
 
void readPinNumbers (SCH_SYMBOL &aSymbol, SPICE_ITEM &aItem, const std::vector< PIN_INFO > &aPins)
 
void readPinNetNames (SCH_SYMBOL &aSymbol, SPICE_ITEM &aItem, const std::vector< PIN_INFO > &aPins, int &aNcCounter)
 
void getNodePattern (SPICE_ITEM &aItem, std::vector< std::string > &aModifiers)
 
void readNodePattern (SPICE_ITEM &aItem)
 
void writeInclude (OUTPUTFORMATTER &aFormatter, unsigned aNetlistOptions, const wxString &aPath)
 
void writeIncludes (OUTPUTFORMATTER &aFormatter, unsigned aNetlistOptions)
 
void writeModels (OUTPUTFORMATTER &aFormatter)
 
void writeItems (OUTPUTFORMATTER &aFormatter)
 

Private Attributes

SIM_LIB_MGR m_libMgr
 Holds libraries and models.
 
NAME_GENERATOR m_modelNameGenerator
 Generates unique model names.
 
NAME_GENERATOR m_netNameGenerator
 
std::vector< wxString > m_directives
 Spice directives found in the schematic sheet.
 
std::set< wxString > m_rawIncludes
 include directives found in symbols
 
std::set< std::string > m_nets
 Items representing schematic symbols in Spice world.
 
std::list< SPICE_ITEMm_items
 
wxWindow * m_dialogParent
 

Detailed Description

Definition at line 49 of file netlist_exporter_spice.h.

Member Enumeration Documentation

◆ OPTIONS

Enumerator
OPTION_ADJUST_INCLUDE_PATHS 
OPTION_ADJUST_PASSIVE_VALS 
OPTION_SAVE_ALL_VOLTAGES 
OPTION_SAVE_ALL_CURRENTS 
OPTION_SAVE_ALL_DISSIPATIONS 
OPTION_CUR_SHEET_AS_ROOT 
OPTION_SIM_COMMAND 
OPTION_DEFAULT_FLAGS 

Definition at line 52 of file netlist_exporter_spice.h.

Constructor & Destructor Documentation

◆ NETLIST_EXPORTER_SPICE()

NETLIST_EXPORTER_SPICE::NETLIST_EXPORTER_SPICE ( SCHEMATIC_IFACE aSchematic,
wxWindow *  aDialogParent = nullptr 
)

Definition at line 96 of file netlist_exporter_spice.cpp.

Member Function Documentation

◆ ConvertToSpiceMarkup()

void NETLIST_EXPORTER_SPICE::ConvertToSpiceMarkup ( std::string &  aNetName)
static

Remove formatting wrappers and replace illegal spice net name characters with underscores.

Definition at line 242 of file netlist_exporter_spice.cpp.

References MARKUP::MARKUP_PARSER::Parse().

Referenced by GenerateItemPinNetName(), SCHEMATIC::GetOperatingPoint(), and SCH_EDITOR_CONTROL::SimProbe().

◆ CreatePinList()

std::vector< PIN_INFO > NETLIST_EXPORTER_BASE::CreatePinList ( SCH_SYMBOL aSymbol,
SCH_SHEET_PATH aSheetPath,
bool  aKeepUnconnectedPins 
)
protectedinherited

Find a symbol from the DrawList and builds its pin list.

This list is sorted by pin number. The symbol is the next actual symbol after aSymbol. Power symbols and virtual symbols that have their reference designators starting with '#' are skipped. if aKeepUnconnectedPins = false, unconnected pins will be removed from list but usually we need all pins in netlists.

Definition at line 119 of file netlist_exporter_base.cpp.

References SCHEMATIC_IFACE::ConnectionGraph(), NETLIST_EXPORTER_BASE::eraseDuplicatePins(), NETLIST_EXPORTER_BASE::findAllUnitsOfSymbol(), CONNECTION_GRAPH::FindSubgraphByName(), CONNECTION_SUBGRAPH::GetItems(), SCH_SYMBOL::GetLibSymbolRef(), CONNECTION_SUBGRAPH::GetNoConnect(), SCH_SYMBOL::GetPins(), SCH_SYMBOL::GetRef(), SCH_SYMBOL::IsPower(), NETLIST_EXPORTER_BASE::m_libParts, NETLIST_EXPORTER_BASE::m_schematic, and pin.

Referenced by ReadSchematicAndLibraries(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ DoWriteNetlist()

bool NETLIST_EXPORTER_SPICE::DoWriteNetlist ( const wxString &  aSimCommand,
unsigned  aSimOptions,
OUTPUTFORMATTER aFormatter,
REPORTER aReporter 
)

◆ eraseDuplicatePins()

void NETLIST_EXPORTER_BASE::eraseDuplicatePins ( std::vector< PIN_INFO > &  pins)
protectedinherited

Erase duplicate pins.

(This is a list of pins found in the whole schematic, for a single symbol.) These duplicate pins were put in list because some pins (power pins...) are found more than once when in "multiple symbols per package" symbols. For instance, a 74ls00 has 4 symbols, and therefore the VCC pin and GND pin appears 4 times in the list. Note: this list MUST be sorted by pin number (.m_PinNum member value) Also set the m_Flag member of "removed" NETLIST_OBJECT pin item to 1

Definition at line 191 of file netlist_exporter_base.cpp.

Referenced by NETLIST_EXPORTER_BASE::CreatePinList().

◆ findAllUnitsOfSymbol()

void NETLIST_EXPORTER_BASE::findAllUnitsOfSymbol ( SCH_SYMBOL aSchSymbol,
SCH_SHEET_PATH aSheetPath,
std::vector< PIN_INFO > &  aPins,
bool  aKeepUnconnectedPins 
)
protectedinherited

Find all units for symbols with multiple symbols per package.

Search the entire design for all units of aSymbol based on matching reference designator, and for each unit, add all its pins to the sorted pin list. if aKeepUnconnectedPins = false, unconnected pins will be removed from list but usually we need all pins in netlists.

Definition at line 224 of file netlist_exporter_base.cpp.

References SCHEMATIC_IFACE::ConnectionGraph(), CONNECTION_GRAPH::FindSubgraphByName(), CONNECTION_SUBGRAPH::GetItems(), CONNECTION_SUBGRAPH::GetNoConnect(), SCH_SYMBOL::GetPins(), SCH_SYMBOL::GetRef(), SCHEMATIC_IFACE::GetSheets(), NETLIST_EXPORTER_BASE::m_schematic, pin, and SCH_SYMBOL_T.

Referenced by NETLIST_EXPORTER_BASE::CreatePinList().

◆ FindItem()

const SPICE_ITEM * NETLIST_EXPORTER_SPICE::FindItem ( const std::string &  aRefName) const

Find and return the item corresponding to aRefName.

Definition at line 303 of file netlist_exporter_spice.cpp.

References GetItems().

Referenced by SIMULATOR_FRAME_UI::AddTuner(), SIMULATOR_FRAME_UI::applyTuners(), GetItemName(), and TUNER_SLIDER::TUNER_SLIDER().

◆ findNextSymbol()

SCH_SYMBOL * NETLIST_EXPORTER_BASE::findNextSymbol ( EDA_ITEM aItem,
SCH_SHEET_PATH aSheetPath 
)
protectedinherited

Check if the given symbol should be processed for netlisting.

Prevent processing multi-unit symbols more than once, etc.

Parameters
aItemis a symbol to check
aSheetPathis the sheet to check the symbol for
Returns
the symbol if it should be processed, or nullptr

Definition at line 73 of file netlist_exporter_base.cpp.

References SCH_SCREEN::GetLibSymbols(), SCH_SYMBOL::GetRef(), SCH_SYMBOL::GetSchSymbolLibraryName(), LIB_SYMBOL::GetUnitCount(), SCH_SHEET_PATH::LastScreen(), UNIQUE_STRINGS::Lookup(), NETLIST_EXPORTER_BASE::m_libParts, NETLIST_EXPORTER_BASE::m_referencesAlreadyFound, SCH_SYMBOL_T, and EDA_ITEM::Type().

Referenced by NETLIST_EXPORTER_ALLEGRO::extractComponentsInfo(), NETLIST_EXPORTER_XML::makeSymbols(), ReadSchematicAndLibraries(), NETLIST_EXPORTER_CADSTAR::WriteNetlist(), NETLIST_EXPORTER_ORCADPCB2::WriteNetlist(), and NETLIST_EXPORTER_PADS::WriteNetlist().

◆ GenerateItemPinNetName()

std::string NETLIST_EXPORTER_SPICE::GenerateItemPinNetName ( const std::string &  aNetName,
int &  aNcCounter 
) const
protectedvirtual

◆ GetDirectives()

const std::vector< wxString > & NETLIST_EXPORTER_SPICE::GetDirectives ( )
inline

Definition at line 131 of file netlist_exporter_spice.h.

References m_directives.

Referenced by SPICE_CIRCUIT_MODEL::GetSchTextSimCommand().

◆ GetItemName()

std::string NETLIST_EXPORTER_SPICE::GetItemName ( const std::string &  aRefName) const

Return name of Spice device corresponding to a schematic symbol.

Parameters
aRefNameis the component reference.
Returns
Spice device name or empty string if there is no such symbol in the netlist. Normally the name is either a plain reference if the first character of reference corresponds to the assigned device model type or a reference prefixed with a character defining the device model type.

Definition at line 292 of file netlist_exporter_spice.cpp.

References FindItem(), SPICE_GENERATOR::ItemName(), SPICE_ITEM::model, and SIM_MODEL::SpiceGenerator().

◆ GetItems()

const std::list< SPICE_ITEM > & NETLIST_EXPORTER_SPICE::GetItems ( ) const
inline

Return the list of items representing schematic symbols in the Spice world.

Definition at line 124 of file netlist_exporter_spice.h.

References m_items.

Referenced by FindItem(), and DIALOG_SIM_MODEL< T >::newParamProperty().

◆ GetNets()

std::set< std::string > NETLIST_EXPORTER_SPICE::GetNets ( ) const
inline

Return the list of nets.

Definition at line 108 of file netlist_exporter_spice.h.

References m_nets.

◆ getNodePattern()

void NETLIST_EXPORTER_SPICE::getNodePattern ( SPICE_ITEM aItem,
std::vector< std::string > &  aModifiers 
)
private

◆ GetSheets()

SCH_SHEET_LIST NETLIST_EXPORTER_SPICE::GetSheets ( unsigned  aNetlistOptions = 0) const
protected

◆ MakeCommandLine()

wxString NETLIST_EXPORTER_BASE::MakeCommandLine ( const wxString &  aFormatString,
const wxString &  aNetlistFile,
const wxString &  aFinalFile,
const wxString &  aProjectDirectory 
)
staticinherited

Build up a string that describes a command line for executing a child process.

The input and output file names along with any options to the executable are all possibly in the returned string.

Parameters
aFormatStringholds:
  • the name of the external program
  • any options needed by that program
  • formatting sequences, see below.
aNetlistFileis the name of the input file for the external program, that is a intermediate netlist file in xml format.
aFinalFileis the name of the output file that the user expects.
aProjectDirectoryis used for P replacement, it should omit the trailing '/'.

Supported formatting sequences and their meaning:

  • B => base filename of selected output file, minus path and extension.
  • I => complete filename and path of the temporary input file.
  • O => complete filename and path of the user chosen output file.
  • P => project directory, without name and without trailing '/'

Definition at line 37 of file netlist_exporter_base.cpp.

Referenced by SCH_EDIT_FRAME::WriteNetListFile().

◆ ReadDirectives()

void NETLIST_EXPORTER_SPICE::ReadDirectives ( unsigned  aNetlistOptions)
protected

◆ readModel()

◆ readNodePattern()

void NETLIST_EXPORTER_SPICE::readNodePattern ( SPICE_ITEM aItem)
private

◆ readPinNetNames()

void NETLIST_EXPORTER_SPICE::readPinNetNames ( SCH_SYMBOL aSymbol,
SPICE_ITEM aItem,
const std::vector< PIN_INFO > &  aPins,
int &  aNcCounter 
)
private

◆ readPinNumbers()

void NETLIST_EXPORTER_SPICE::readPinNumbers ( SCH_SYMBOL aSymbol,
SPICE_ITEM aItem,
const std::vector< PIN_INFO > &  aPins 
)
private

Definition at line 491 of file netlist_exporter_spice.cpp.

References pin, and SPICE_ITEM::pinNumbers.

Referenced by ReadSchematicAndLibraries().

◆ readRefName()

void NETLIST_EXPORTER_SPICE::readRefName ( SCH_SHEET_PATH aSheet,
SCH_SYMBOL aSymbol,
SPICE_ITEM aItem,
std::set< std::string > &  aRefNames 
)
private

Definition at line 434 of file netlist_exporter_spice.cpp.

References SCH_SYMBOL::GetRef(), and SPICE_ITEM::refName.

Referenced by ReadSchematicAndLibraries().

◆ ReadSchematicAndLibraries()

bool NETLIST_EXPORTER_SPICE::ReadSchematicAndLibraries ( unsigned  aNetlistOptions,
REPORTER aReporter 
)
virtual

◆ WriteDirectives()

void NETLIST_EXPORTER_SPICE::WriteDirectives ( const wxString &  aSimCommand,
unsigned  aSimOptions,
OUTPUTFORMATTER candidate 
) const
protectedvirtual

◆ WriteHead()

void NETLIST_EXPORTER_SPICE::WriteHead ( OUTPUTFORMATTER aFormatter,
unsigned  aNetlistOptions 
)
virtual

Write the netlist head (title and so on).

Reimplemented in NETLIST_EXPORTER_SPICE_MODEL.

Definition at line 140 of file netlist_exporter_spice.cpp.

References OUTPUTFORMATTER::Print().

Referenced by DoWriteNetlist().

◆ writeInclude()

void NETLIST_EXPORTER_SPICE::writeInclude ( OUTPUTFORMATTER aFormatter,
unsigned  aNetlistOptions,
const wxString &  aPath 
)
private

◆ writeIncludes()

void NETLIST_EXPORTER_SPICE::writeIncludes ( OUTPUTFORMATTER aFormatter,
unsigned  aNetlistOptions 
)
private

◆ writeItems()

void NETLIST_EXPORTER_SPICE::writeItems ( OUTPUTFORMATTER aFormatter)
private

Definition at line 644 of file netlist_exporter_spice.cpp.

References m_items, and OUTPUTFORMATTER::Print().

Referenced by DoWriteNetlist().

◆ writeModels()

void NETLIST_EXPORTER_SPICE::writeModels ( OUTPUTFORMATTER aFormatter)
private

Definition at line 632 of file netlist_exporter_spice.cpp.

References m_items, and OUTPUTFORMATTER::Print().

Referenced by DoWriteNetlist().

◆ WriteNetlist()

bool NETLIST_EXPORTER_SPICE::WriteNetlist ( const wxString &  aOutFileName,
unsigned  aNetlistOptions,
REPORTER aReporter 
)
overridevirtual

Write to specified output file.

Reimplemented from NETLIST_EXPORTER_BASE.

Definition at line 105 of file netlist_exporter_spice.cpp.

References DoWriteNetlist().

◆ WriteTail()

void NETLIST_EXPORTER_SPICE::WriteTail ( OUTPUTFORMATTER aFormatter,
unsigned  aNetlistOptions 
)
virtual

Write the tail (.end).

Reimplemented in NETLIST_EXPORTER_SPICE_MODEL.

Definition at line 146 of file netlist_exporter_spice.cpp.

References OUTPUTFORMATTER::Print().

Referenced by DoWriteNetlist().

Member Data Documentation

◆ m_dialogParent

wxWindow* NETLIST_EXPORTER_SPICE::m_dialogParent
private

Definition at line 177 of file netlist_exporter_spice.h.

Referenced by readModel(), and writeInclude().

◆ m_directives

std::vector<wxString> NETLIST_EXPORTER_SPICE::m_directives
private

Spice directives found in the schematic sheet.

Definition at line 170 of file netlist_exporter_spice.h.

Referenced by GetDirectives(), ReadDirectives(), and WriteDirectives().

◆ m_items

std::list<SPICE_ITEM> NETLIST_EXPORTER_SPICE::m_items
private

◆ m_libMgr

SIM_LIB_MGR NETLIST_EXPORTER_SPICE::m_libMgr
private

Holds libraries and models.

Definition at line 165 of file netlist_exporter_spice.h.

Referenced by readModel(), and writeIncludes().

◆ m_libParts

◆ m_modelNameGenerator

NAME_GENERATOR NETLIST_EXPORTER_SPICE::m_modelNameGenerator
private

Generates unique model names.

Generates unique net names (only unique for NC nets for now)

Definition at line 166 of file netlist_exporter_spice.h.

Referenced by readModel().

◆ m_netNameGenerator

NAME_GENERATOR NETLIST_EXPORTER_SPICE::m_netNameGenerator
private

Definition at line 169 of file netlist_exporter_spice.h.

◆ m_nets

std::set<std::string> NETLIST_EXPORTER_SPICE::m_nets
private

Items representing schematic symbols in Spice world.

Definition at line 172 of file netlist_exporter_spice.h.

Referenced by GetNets(), readPinNetNames(), and ReadSchematicAndLibraries().

◆ m_rawIncludes

std::set<wxString> NETLIST_EXPORTER_SPICE::m_rawIncludes
private

include directives found in symbols

Definition at line 171 of file netlist_exporter_spice.h.

Referenced by DoWriteNetlist(), readModel(), and writeIncludes().

◆ m_referencesAlreadyFound

UNIQUE_STRINGS NETLIST_EXPORTER_BASE::m_referencesAlreadyFound
protectedinherited

◆ m_schematic


The documentation for this class was generated from the following files: