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

Generate a netlist compatible with Allegro. More...

#include <netlist_exporter_allegro.h>

Inheritance diagram for NETLIST_EXPORTER_ALLEGRO:
NETLIST_EXPORTER_BASE

Classes

struct  NET_NODE
 

Public Member Functions

 NETLIST_EXPORTER_ALLEGRO (SCHEMATIC *aSchematic)
 
bool WriteNetlist (const wxString &aOutFileName, unsigned aNetlistOptions, REPORTER &aReporter) override
 Write netlist to aOutFileName. More...
 

Static Public Member Functions

static bool CompareSymbolSheetpath (const std::pair< SCH_SYMBOL *, SCH_SHEET_PATH > &aItem1, const std::pair< SCH_SYMBOL *, SCH_SHEET_PATH > &aItem2)
 Compare two std::pair<SCH_SYMBOL*, SCH_SHEET_PATH> variables. More...
 
static bool CompareSymbolRef (const wxString &aRefText1, const wxString &aRefText2)
 Compare two wxString variables. More...
 
static bool CompareLibPin (const LIB_PIN *aPin1, const LIB_PIN *aPin2)
 Compare two LIB_PIN* variables. More...
 
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. More...
 

Protected Member Functions

std::vector< PIN_INFOCreatePinList (SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aSheetPath, bool aKeepUnconnectedPins)
 Find a symbol from the DrawList and builds its pin list. More...
 
SCH_SYMBOLfindNextSymbol (EDA_ITEM *aItem, SCH_SHEET_PATH *aSheetPath)
 Check if the given symbol should be processed for netlisting. More...
 
void eraseDuplicatePins (std::vector< PIN_INFO > &pins)
 Erase duplicate pins. More...
 
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. More...
 

Protected Attributes

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

Private Member Functions

void extractComponentsInfo ()
 
void toAllegroPackages ()
 Write the $PACKAGES section. More...
 
void toAllegroNets ()
 Write the $NETS section. More...
 
void toAllegroPackageProperties ()
 Write $A_PROPERTIES section. More...
 
wxString formatDevice (wxString aString)
 Convert a string into one safe for a Telesis device name. More...
 
wxString formatText (wxString aString)
 Convert a string into Telesis-safe format. More...
 
wxString formatPin (const LIB_PIN &aPin)
 Generate a Telesis-compatible pin name from a pin node. More...
 
wxString formatFunction (wxString aName, LIB_PINS aPinList)
 Generate the definition of a function in Telesis format, which consists of multiple declarations (PINORDER, PINSWAP, and FUNCTIONs). More...
 
wxString getGroupField (int aGroupIndex, const wxArrayString &aFieldArray, bool aSanitize=true)
 Look up a field for a component group, which may have mismatched case, or the component group may not have the field defined and instead the library entry has to be searched. More...
 

Static Private Member Functions

static wxString removeTailDigits (wxString aString)
 Remove the str's tailing digits. More...
 
static unsigned int extractTailNumber (wxString aString)
 Extract the str's tailing number. More...
 

Private Attributes

FILE * m_f
 File pointer for netlist file writing operation. More...
 
wxString m_exportPath
 Directory to store device files. More...
 
std::multimap< wxString, wxString > m_packageProperties
 
std::multimap< int, std::pair< SCH_SYMBOL *, SCH_SHEET_PATH > > m_componentGroups
 Store the component group. More...
 
std::list< std::pair< SCH_SYMBOL *, SCH_SHEET_PATH > > m_orderedSymbolsSheetpath
 Store the ordered symbols with sheetpath. More...
 
std::multimap< wxString, NET_NODEm_netNameNodes
 Store the NET_NODE with the net name. More...
 

Detailed Description

Generate a netlist compatible with Allegro.

Definition at line 34 of file netlist_exporter_allegro.h.

Constructor & Destructor Documentation

◆ NETLIST_EXPORTER_ALLEGRO()

NETLIST_EXPORTER_ALLEGRO::NETLIST_EXPORTER_ALLEGRO ( SCHEMATIC aSchematic)
inline

Definition at line 37 of file netlist_exporter_allegro.h.

Member Function Documentation

◆ CompareLibPin()

bool NETLIST_EXPORTER_ALLEGRO::CompareLibPin ( const LIB_PIN aPin1,
const LIB_PIN aPin2 
)
static

Compare two LIB_PIN* variables.

Parameters
aPin1
aPin2
Returns
bool value

Definition at line 127 of file netlist_exporter_allegro.cpp.

References LIB_PIN::GetShownNumber(), and StrNumCmp().

Referenced by formatFunction(), and toAllegroPackages().

◆ CompareSymbolRef()

bool NETLIST_EXPORTER_ALLEGRO::CompareSymbolRef ( const wxString &  aRefText1,
const wxString &  aRefText2 
)
static

Compare two wxString variables.

Parameters
aRefText1
aRefText2
Returns
bool value

Definition at line 115 of file netlist_exporter_allegro.cpp.

References extractTailNumber(), and removeTailDigits().

Referenced by CompareSymbolSheetpath(), NETLIST_EXPORTER_ALLEGRO::NET_NODE::operator<(), and toAllegroPackageProperties().

◆ CompareSymbolSheetpath()

bool NETLIST_EXPORTER_ALLEGRO::CompareSymbolSheetpath ( const std::pair< SCH_SYMBOL *, SCH_SHEET_PATH > &  aItem1,
const std::pair< SCH_SYMBOL *, SCH_SHEET_PATH > &  aItem2 
)
static

Compare two std::pair<SCH_SYMBOL*, SCH_SHEET_PATH> variables.

Parameters
aItem1comparing object 1
aItem2comparing object 2
Returns
true if aItem1 < aItem2

Definition at line 98 of file netlist_exporter_allegro.cpp.

References CompareSymbolRef().

Referenced by toAllegroPackages().

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

Referenced by NETLIST_EXPORTER_BASE::CreatePinList().

◆ extractComponentsInfo()

◆ extractTailNumber()

unsigned int NETLIST_EXPORTER_ALLEGRO::extractTailNumber ( wxString  aString)
staticprivate

Extract the str's tailing number.

Parameters
aString
Returns
unsigned int

Definition at line 778 of file netlist_exporter_allegro.cpp.

Referenced by CompareSymbolRef().

◆ 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().

◆ 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 extractComponentsInfo(), NETLIST_EXPORTER_XML::makeSymbols(), NETLIST_EXPORTER_SPICE::ReadSchematicAndLibraries(), NETLIST_EXPORTER_CADSTAR::WriteNetlist(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ formatDevice()

wxString NETLIST_EXPORTER_ALLEGRO::formatDevice ( wxString  aString)
private

Convert a string into one safe for a Telesis device name.

These are all lowercase and have a more restricted set of characters.

Bug:
Replace unsupported characters with an encoding instead.
Parameters
aStringwxString to be formatted.
Returns
a formatted wxString.

Definition at line 686 of file netlist_exporter_allegro.cpp.

Referenced by toAllegroPackages().

◆ formatFunction()

wxString NETLIST_EXPORTER_ALLEGRO::formatFunction ( wxString  aName,
LIB_PINS  aPinList 
)
private

Generate the definition of a function in Telesis format, which consists of multiple declarations (PINORDER, PINSWAP, and FUNCTIONs).

Parameters
aName
aPinList
Returns
wxString

Definition at line 597 of file netlist_exporter_allegro.cpp.

References CompareLibPin(), formatPin(), pin, and TO_UTF8.

Referenced by toAllegroPackages().

◆ formatPin()

wxString NETLIST_EXPORTER_ALLEGRO::formatPin ( const LIB_PIN aPin)
private

Generate a Telesis-compatible pin name from a pin node.

( Telesis requires all pin names to be unique, and doesn't have separate fields for pin number and pin name/function, so we combine them together to make a unique name that still describes its function if you check pin info.

Bug:
Replace unsupported characters with an encoding instead.
Parameters
aPin
Returns
wxString

Definition at line 589 of file netlist_exporter_allegro.cpp.

References LIB_PIN::GetName(), and LIB_PIN::GetNumber().

Referenced by formatFunction().

◆ formatText()

wxString NETLIST_EXPORTER_ALLEGRO::formatText ( wxString  aString)
private

Convert a string into Telesis-safe format.

Unsupported characters are replaced with ?'s, and the string is quoted if necessary.

Bug:
Replace unsupported characters with an encoding to avoid having similar strings mapped to each other.
Parameters
aString
Returns
wxString

Definition at line 570 of file netlist_exporter_allegro.cpp.

Referenced by getGroupField(), toAllegroNets(), and toAllegroPackageProperties().

◆ getGroupField()

wxString NETLIST_EXPORTER_ALLEGRO::getGroupField ( int  aGroupIndex,
const wxArrayString &  aFieldArray,
bool  aSanitize = true 
)
private

Look up a field for a component group, which may have mismatched case, or the component group may not have the field defined and instead the library entry has to be searched.

Returns None if no fields exist.

Parameters
aGroupIndexthe component group index to query
aFieldArrayone or more (equivalent) fields to query, in the order specified. first field that exists is returned.
aSanitizeif true (default), will format/escape the field for Telesis output
Returns
return the found field, or return wxString("") if no field exist.

Definition at line 634 of file netlist_exporter_allegro.cpp.

References SCH_SYMBOL::FindField(), formatText(), SCH_SYMBOL::GetLibSymbolRef(), and m_componentGroups.

Referenced by toAllegroPackages().

◆ 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().

◆ removeTailDigits()

wxString NETLIST_EXPORTER_ALLEGRO::removeTailDigits ( wxString  aString)
staticprivate

Remove the str's tailing digits.

Parameters
aString
Returns
wxString

Definition at line 766 of file netlist_exporter_allegro.cpp.

Referenced by CompareSymbolRef(), and toAllegroPackages().

◆ toAllegroNets()

void NETLIST_EXPORTER_ALLEGRO::toAllegroNets ( )
private

Write the $NETS section.

Definition at line 729 of file netlist_exporter_allegro.cpp.

References formatText(), m_f, m_netNameNodes, and TO_UTF8.

Referenced by WriteNetlist().

◆ toAllegroPackageProperties()

void NETLIST_EXPORTER_ALLEGRO::toAllegroPackageProperties ( )
private

Write $A_PROPERTIES section.

Definition at line 694 of file netlist_exporter_allegro.cpp.

References CompareSymbolRef(), formatText(), m_f, m_packageProperties, and TO_UTF8.

Referenced by WriteNetlist().

◆ toAllegroPackages()

◆ WriteNetlist()

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

Member Data Documentation

◆ m_componentGroups

std::multimap<int, std::pair<SCH_SYMBOL*, SCH_SHEET_PATH> > NETLIST_EXPORTER_ALLEGRO::m_componentGroups
private

Store the component group.

Definition at line 221 of file netlist_exporter_allegro.h.

Referenced by getGroupField(), toAllegroPackages(), and WriteNetlist().

◆ m_exportPath

wxString NETLIST_EXPORTER_ALLEGRO::m_exportPath
private

Directory to store device files.

Definition at line 217 of file netlist_exporter_allegro.h.

Referenced by toAllegroPackages(), and WriteNetlist().

◆ m_f

FILE* NETLIST_EXPORTER_ALLEGRO::m_f
private

File pointer for netlist file writing operation.

Definition at line 216 of file netlist_exporter_allegro.h.

Referenced by toAllegroNets(), toAllegroPackageProperties(), toAllegroPackages(), and WriteNetlist().

◆ m_libParts

◆ m_netNameNodes

std::multimap<wxString, NET_NODE> NETLIST_EXPORTER_ALLEGRO::m_netNameNodes
private

Store the NET_NODE with the net name.

Definition at line 225 of file netlist_exporter_allegro.h.

Referenced by extractComponentsInfo(), toAllegroNets(), and WriteNetlist().

◆ m_orderedSymbolsSheetpath

std::list<std::pair<SCH_SYMBOL*, SCH_SHEET_PATH> > NETLIST_EXPORTER_ALLEGRO::m_orderedSymbolsSheetpath
private

Store the ordered symbols with sheetpath.

Definition at line 224 of file netlist_exporter_allegro.h.

Referenced by extractComponentsInfo(), toAllegroPackages(), and WriteNetlist().

◆ m_packageProperties

std::multimap<wxString, wxString> NETLIST_EXPORTER_ALLEGRO::m_packageProperties
private

◆ m_referencesAlreadyFound

UNIQUE_STRINGS NETLIST_EXPORTER_BASE::m_referencesAlreadyFound
protectedinherited

◆ m_schematic


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