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

#include <netlist_exporter_spice_model.h>

Inheritance diagram for NETLIST_EXPORTER_SPICE_MODEL:
NETLIST_EXPORTER_SPICE NETLIST_EXPORTER_BASE

Classes

struct  PORT_INFO
 

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_SAVE_ALL_EVENTS = 0x0800 ,
  OPTION_DEFAULT_FLAGS
}
 

Public Member Functions

 NETLIST_EXPORTER_SPICE_MODEL (SCHEMATIC_IFACE *aSchematic)
 
void WriteHead (OUTPUTFORMATTER &aFormatter, unsigned aNetlistOptions) override
 Write the netlist head (title and so on).
 
void WriteTail (OUTPUTFORMATTER &aFormatter, unsigned aNetlistOptions) override
 Write the tail (.end).
 
bool ReadSchematicAndLibraries (unsigned aNetlistOptions, REPORTER &aReporter) override
 Process the schematic and Spice libraries to create net mapping and a list of SPICE_ITEMs.
 
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.
 
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

std::string GenerateItemPinNetName (const std::string &aNetName, int &aNcCounter) const override
 
void ReadDirectives (unsigned aNetlistOptions)
 
virtual void WriteDirectives (const wxString &aSimCommand, unsigned aSimOptions, OUTPUTFORMATTER &candidate) 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 readPorts (unsigned aNetlistOptions)
 
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

std::map< std::string, PORT_INFOm_ports
 
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 32 of file netlist_exporter_spice_model.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_SAVE_ALL_EVENTS 
OPTION_DEFAULT_FLAGS 

Definition at line 52 of file netlist_exporter_spice.h.

Constructor & Destructor Documentation

◆ NETLIST_EXPORTER_SPICE_MODEL()

NETLIST_EXPORTER_SPICE_MODEL::NETLIST_EXPORTER_SPICE_MODEL ( SCHEMATIC_IFACE aSchematic)
inline

Definition at line 35 of file netlist_exporter_spice_model.h.

Member Function Documentation

◆ ConvertToSpiceMarkup()

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

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 NETLIST_EXPORTER_SPICE::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 128 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 NETLIST_EXPORTER_SPICE::ReadSchematicAndLibraries(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ DoWriteNetlist()

◆ 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 200 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 233 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
inherited

◆ findNextSymbol()

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

◆ GenerateItemPinNetName()

std::string NETLIST_EXPORTER_SPICE_MODEL::GenerateItemPinNetName ( const std::string &  aNetName,
int &  aNcCounter 
) const
overrideprotectedvirtual

◆ GetDirectives()

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

◆ GetItemName()

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

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 NETLIST_EXPORTER_SPICE::FindItem(), SPICE_GENERATOR::ItemName(), SPICE_ITEM::model, and SIM_MODEL::SpiceGenerator().

◆ GetItems()

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

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

Definition at line 126 of file netlist_exporter_spice.h.

References NETLIST_EXPORTER_SPICE::m_items.

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

◆ GetNets()

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

Return the list of nets.

Definition at line 110 of file netlist_exporter_spice.h.

References NETLIST_EXPORTER_SPICE::m_nets.

◆ getNodePattern()

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

◆ GetSheets()

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

◆ 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 46 of file netlist_exporter_base.cpp.

Referenced by SCH_EDIT_FRAME::WriteNetListFile().

◆ ReadDirectives()

void NETLIST_EXPORTER_SPICE::ReadDirectives ( unsigned  aNetlistOptions)
protectedinherited

◆ readModel()

◆ readNodePattern()

void NETLIST_EXPORTER_SPICE::readNodePattern ( SPICE_ITEM aItem)
privateinherited

◆ readPinNetNames()

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

◆ readPinNumbers()

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

◆ readPorts()

void NETLIST_EXPORTER_SPICE_MODEL::readPorts ( unsigned  aNetlistOptions)
private

◆ readRefName()

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

◆ ReadSchematicAndLibraries()

bool NETLIST_EXPORTER_SPICE_MODEL::ReadSchematicAndLibraries ( unsigned  aNetlistOptions,
REPORTER aReporter 
)
overridevirtual

Process the schematic and Spice libraries to create net mapping and a list of SPICE_ITEMs.

It is automatically called by WriteNetlist(), but might be used separately, if only net mapping and the list of SPICE_ITEMs are required.

Returns
True if successful.

Reimplemented from NETLIST_EXPORTER_SPICE.

Definition at line 69 of file netlist_exporter_spice_model.cpp.

References readPorts(), and NETLIST_EXPORTER_SPICE::ReadSchematicAndLibraries().

◆ WriteDirectives()

◆ WriteHead()

void NETLIST_EXPORTER_SPICE_MODEL::WriteHead ( OUTPUTFORMATTER aFormatter,
unsigned  aNetlistOptions 
)
overridevirtual

◆ writeInclude()

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

◆ writeIncludes()

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

◆ writeItems()

void NETLIST_EXPORTER_SPICE::writeItems ( OUTPUTFORMATTER aFormatter)
privateinherited

◆ writeModels()

void NETLIST_EXPORTER_SPICE::writeModels ( OUTPUTFORMATTER aFormatter)
privateinherited

◆ WriteNetlist()

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

Write to specified output file.

Reimplemented from NETLIST_EXPORTER_BASE.

Definition at line 105 of file netlist_exporter_spice.cpp.

References NETLIST_EXPORTER_SPICE::DoWriteNetlist().

◆ WriteTail()

void NETLIST_EXPORTER_SPICE_MODEL::WriteTail ( OUTPUTFORMATTER aFormatter,
unsigned  aNetlistOptions 
)
overridevirtual

Write the tail (.end).

Reimplemented from NETLIST_EXPORTER_SPICE.

Definition at line 62 of file netlist_exporter_spice_model.cpp.

References OUTPUTFORMATTER::Print().

Member Data Documentation

◆ m_dialogParent

wxWindow* NETLIST_EXPORTER_SPICE::m_dialogParent
privateinherited

◆ m_directives

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

Spice directives found in the schematic sheet.

Definition at line 172 of file netlist_exporter_spice.h.

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

◆ m_items

◆ m_libMgr

SIM_LIB_MGR NETLIST_EXPORTER_SPICE::m_libMgr
privateinherited

Holds libraries and models.

Definition at line 167 of file netlist_exporter_spice.h.

Referenced by NETLIST_EXPORTER_SPICE::readModel(), and NETLIST_EXPORTER_SPICE::writeIncludes().

◆ m_libParts

◆ m_modelNameGenerator

NAME_GENERATOR NETLIST_EXPORTER_SPICE::m_modelNameGenerator
privateinherited

Generates unique model names.

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

Definition at line 168 of file netlist_exporter_spice.h.

Referenced by NETLIST_EXPORTER_SPICE::readModel().

◆ m_netNameGenerator

NAME_GENERATOR NETLIST_EXPORTER_SPICE::m_netNameGenerator
privateinherited

Definition at line 171 of file netlist_exporter_spice.h.

◆ m_nets

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

Items representing schematic symbols in Spice world.

Definition at line 174 of file netlist_exporter_spice.h.

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

◆ m_ports

std::map<std::string, PORT_INFO> NETLIST_EXPORTER_SPICE_MODEL::m_ports
private

Definition at line 56 of file netlist_exporter_spice_model.h.

Referenced by GenerateItemPinNetName(), readPorts(), and WriteHead().

◆ m_rawIncludes

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

◆ m_referencesAlreadyFound

UNIQUE_STRINGS NETLIST_EXPORTER_BASE::m_referencesAlreadyFound
protectedinherited

◆ m_schematic


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