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

Generate a netlist compatible with OrCAD. More...

#include <netlist_exporter_orcadpcb2.h>

Inheritance diagram for NETLIST_EXPORTER_ORCADPCB2:
NETLIST_EXPORTER_BASE

Public Member Functions

 NETLIST_EXPORTER_ORCADPCB2 (SCHEMATIC *aSchematic)
 
bool writeNetlist (const wxString &aOutFileName, unsigned aNetlistOptions, REPORTER &aReporter) override
 
void SetKiway (KIWAY *aKiway)
 
bool WriteNetlist (const wxString &aOutFileName, unsigned aNetlistOptions, REPORTER &aReporter)
 Write to specified output file.
 

Static Public Member Functions

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 rebuildConnectivity ()
 
std::optional< wxString > itemNetName (const SCH_ITEM &aItem, const SCH_SHEET_PATH &aPath) const
 
std::vector< PIN_INFOCreatePinList (SCH_SYMBOL *aSymbol, const SCH_SHEET_PATH &aSheetPath)
 Find a symbol from the DrawList and builds its pin list.
 
SCH_SYMBOLfindNextSymbol (EDA_ITEM *aItem, const 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 appendResolvedPins (std::vector< PIN_INFO > &aPins, const SCH_PIN *aPin, const SCH_SHEET_PATH &aSheetPath, const wxString &aNetName)
 Resolve aPin to its pad number(s) and append a PIN_INFO for each (issue #2282).
 
std::vector< wxString > resolvePadNumbers (const SCH_PIN *aPin, const SCH_SHEET_PATH &aSheetPath) const
 Resolve aPin to its effective pad number(s) for every netlist path (issue #2282).
 
const std::set< wxString > & footprintPads (const wxString &aFootprintId) const
 
void findAllUnitsOfSymbol (SCH_SYMBOL *aSchSymbol, const SCH_SHEET_PATH &aSheetPath, std::vector< PIN_INFO > &aPins)
 Find all units for symbols with multiple symbols per package.
 

Protected Attributes

SCH_SHEET_LIST m_exportSheets
 
std::vector< EXPORT_NETm_exportNets
 
std::map< SCH_SHEET_PATH, std::unordered_map< KIID, wxString > > m_exportItemNets
 
unsigned m_connectivityDepth = 0
 
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
 
SCHEMATICm_schematic
 The schematic we're generating a netlist for.
 
KIWAYm_kiway = nullptr
 
std::map< wxString, std::set< wxString > > m_footprintPadCache
 

Detailed Description

Generate a netlist compatible with OrCAD.

Definition at line 30 of file netlist_exporter_orcadpcb2.h.

Constructor & Destructor Documentation

◆ NETLIST_EXPORTER_ORCADPCB2()

NETLIST_EXPORTER_ORCADPCB2::NETLIST_EXPORTER_ORCADPCB2 ( SCHEMATIC * aSchematic)
inline

Member Function Documentation

◆ appendResolvedPins()

void NETLIST_EXPORTER_BASE::appendResolvedPins ( std::vector< PIN_INFO > & aPins,
const SCH_PIN * aPin,
const SCH_SHEET_PATH & aSheetPath,
const wxString & aNetName )
protectedinherited

Resolve aPin to its pad number(s) and append a PIN_INFO for each (issue #2282).

Definition at line 339 of file netlist_exporter_base.cpp.

References SCH_PIN::GetNumber(), SCH_PIN::GetShownName(), and resolvePadNumbers().

Referenced by CreatePinList(), and findAllUnitsOfSymbol().

◆ CreatePinList()

std::vector< PIN_INFO > NETLIST_EXPORTER_BASE::CreatePinList ( SCH_SYMBOL * aSymbol,
const SCH_SHEET_PATH & aSheetPath )
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.

Definition at line 223 of file netlist_exporter_base.cpp.

References appendResolvedPins(), eraseDuplicatePins(), findAllUnitsOfSymbol(), SCH_SYMBOL::GetLibSymbolRef(), SCH_SYMBOL::GetPins(), SCH_SYMBOL::GetRef(), LIB_SYMBOL::GetUnitCount(), SCH_SYMBOL::IsPower(), itemNetName(), m_libParts, and pin.

Referenced by NETLIST_EXPORTER_SPICE::ReadSchematicAndLibraries(), and NETLIST_EXPORTER_ORCADPCB2::writeNetlist().

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

References IsAutoGeneratedNetName().

Referenced by CreatePinList().

◆ findAllUnitsOfSymbol()

void NETLIST_EXPORTER_BASE::findAllUnitsOfSymbol ( SCH_SYMBOL * aSchSymbol,
const SCH_SHEET_PATH & aSheetPath,
std::vector< PIN_INFO > & aPins )
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.

Definition at line 405 of file netlist_exporter_base.cpp.

References appendResolvedPins(), SCH_SYMBOL::GetRef(), itemNetName(), m_exportSheets, pin, and SCH_SYMBOL_T.

Referenced by CreatePinList().

◆ findNextSymbol()

SCH_SYMBOL * NETLIST_EXPORTER_BASE::findNextSymbol ( EDA_ITEM * aItem,
const 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 177 of file netlist_exporter_base.cpp.

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

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

◆ footprintPads()

const std::set< wxString > & NETLIST_EXPORTER_BASE::footprintPads ( const wxString & aFootprintId) const
protectedinherited

◆ itemNetName()

std::optional< wxString > NETLIST_EXPORTER_BASE::itemNetName ( const SCH_ITEM & aItem,
const SCH_SHEET_PATH & aPath ) 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 141 of file netlist_exporter_base.cpp.

Referenced by SCH_EDIT_FRAME::WriteNetListFile().

◆ rebuildConnectivity()

void NETLIST_EXPORTER_BASE::rebuildConnectivity ( )
protectedinherited

◆ resolvePadNumbers()

std::vector< wxString > NETLIST_EXPORTER_BASE::resolvePadNumbers ( const SCH_PIN * aPin,
const SCH_SHEET_PATH & aSheetPath ) const
protectedinherited

◆ SetKiway()

void NETLIST_EXPORTER_BASE::SetKiway ( KIWAY * aKiway)
inlineinherited

Definition at line 106 of file netlist_exporter_base.h.

References m_kiway.

Referenced by SCH_EDIT_FRAME::KiwayMailIn().

◆ WriteNetlist()

bool NETLIST_EXPORTER_BASE::WriteNetlist ( const wxString & aOutFileName,
unsigned aNetlistOptions,
REPORTER & aReporter )
inherited

◆ writeNetlist()

Member Data Documentation

◆ m_connectivityDepth

unsigned NETLIST_EXPORTER_BASE::m_connectivityDepth = 0
protectedinherited

Definition at line 174 of file netlist_exporter_base.h.

◆ m_exportItemNets

std::map<SCH_SHEET_PATH, std::unordered_map<KIID, wxString> > NETLIST_EXPORTER_BASE::m_exportItemNets
protectedinherited

Definition at line 173 of file netlist_exporter_base.h.

Referenced by itemNetName(), and rebuildConnectivity().

◆ m_exportNets

◆ m_exportSheets

◆ m_footprintPadCache

std::map<wxString, std::set<wxString> > NETLIST_EXPORTER_BASE::m_footprintPadCache
mutableprotectedinherited

Definition at line 238 of file netlist_exporter_base.h.

Referenced by footprintPads().

◆ m_kiway

KIWAY* NETLIST_EXPORTER_BASE::m_kiway = nullptr
protectedinherited

Definition at line 236 of file netlist_exporter_base.h.

Referenced by footprintPads(), resolvePadNumbers(), and SetKiway().

◆ m_libParts

std::set<LIB_SYMBOL*, LIB_SYMBOL_LESS_THAN> NETLIST_EXPORTER_BASE::m_libParts
protectedinherited

◆ m_referencesAlreadyFound

UNIQUE_STRINGS NETLIST_EXPORTER_BASE::m_referencesAlreadyFound
protectedinherited

◆ m_schematic


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