MAP_PINS_TO_SYMBOLS
In the MAP_PINS_TO_SYMBOLS Operation, PartBuilder reads the Symbol Description Language (SDL) file and uses it to assign the pins extracted in the READ_PIN_REPORT operation to the appropriate sides of the desired symbols.
Below is a screenshot of the status window from a typical MAP_PINS_TO_SYMBOLS Operation.
The MAP_PINS_TO_SYMBOLS operation can be broken down into the following steps:
Create a csv copy of SYMBOL_DESCRIPTION_FILE
If the SYMBOL_DESCRIPTION_FILE is not a csv file, PartBuilder intelligently creates a copy of the file in a .csv format that is easy to edit in a spreadsheet, and puts it in the OUTPUT_FILES directory. A user can copy this file to the working directory, choose the copy as the SYMBOL_DESCRIPTION_FILE and then edit the file in a spreadheet program if they so desire.
Expand SDL File Loops and Variables
PartBuilder checks the SDL file to see if it contains any LOOP or VARIABLE directives. If it does, it expands the SDL internally and writes a copy of the expanded file to OUTPUT_FILES/exp_[SYMBOL_DESCRIPTION_FILE]. If no expansion is required, The original SDL File is used moving forward
Read and Verify SDL File
PartBuilder parses the expanded or original copy of the SDL file and checks for errors. Any errors will be reported to the user
Pin Mapping Passes
Once PartBuilder has read a vaild SDL File, It runs a 2 Pass operation to map the pins extracted from the PIN_REPORT_FILE to the desired symbols
Assign all matching pins to each MATCH
_STATEMENTS to each Pins_STATEMENT
In the first pass, every pin that matches any of the PIN_MATCH in a MATCH_STATEMENT in all SYMBOL_DEFINITIONS gets assigned the PIN_MATCH
For example, if there is an SPECIAL_GROUND SYMBOL_DEFINITION that contains LEFT=>AGND and a GROUND SYMBOL_DEFINITION that contains RIGHT=>GND, and pin containing GND will be assigned the RIGHT=>GND match, and any pin containing AGND will be assigned to the LEFT=>AGND Match as well.
Pins named GND, GND_2, GND_30, SUPER_GND will end up only with the RIGHT=>GND match, while pins named AGND_11,AGND_15, SUPER_AGND_25 will end up with both of the mathches (RIGHT=>GND and LEFT=>AGND)
Select best MATCH_STATEMENT for each Pin
On the second pass, PartBuilder goes back through each pin and chooses the most specific match from the list of matches that got assigned to the pins
So the GND, GND_2, GND_30 and SUPER_GND pins will choose the LEFT=>GND match from the GROUND SYMBOL_DEFINITION,
and
the AGND_11,AGND_15 and SUPER_AGND_25 will choose the RIGHT=>GND match from the SPECIAL_GROUND SYMBOL_DEFINITION
The most_specific match is chosen based on the length of the matches assigned to the pins. Normally, the longest match string is chosen, but in some cases the user may want to force the best match in the SDL using the BEST=> modifier in a MATCH_STATEMENT.
Build Internal Symbol DataBases
Once the pins are assigned to the best MATCH_STATEMENTS in each SYMBOL, PartBuilder Builds up a database of pins for each SYMBOL_DEFINTION. It adds lists of matching pins to the side of the symbols selected by the LOCATOR element of the MATCH_STATEMENT, in the order that the MATCH_STATEMENTS appear in the SDL.
The DataBase ends up with up to 4 Lists of pins per SYMBOL_DEFINTION, one for the LEFT, RIGHT, TOP and BOTTOM sides of each symbol
Create Sub Symbols according to SYMBOL_PIN_LIMITS
PartBuilder then goes through each SYMBOL_DEFINITION and counts the pins assigned to that symbol. If the pin_count is greater than the MAX_SEC_PIN_COUNT Configuration Setting AND the SYM_PCOUNT_OVERRIDE_CTL for the matching SYMBOL_NAME (if one exists), PartBuilder will split the Symbol into as many SUB_SYMBOLS it needs to fit all the pins that match. The pin counts include all of the SPACERS that get added to the SYMBOL.
Report Warnings
After the final Symbol DataBases have been created, PartBuilder goes through the list of all the pins extracted from the PIN_REPORT_FILE. If any pins have not been assigned to a symbol, PartBuilder reports the missing pin in the status window, and halts processing at this step if the BUILD_SYMBOLS operation was selected.
PartBuilder will also report any MATCH_STATEMENT that did not get assigned a Pin These warnings are common (especially in SDL with LOOP_CONSTRUCTS) and are many times they are not an error. They are included to let the user know that a MATCH_STATEMENT they added to the SDL did not find any pins in for the SYMBOL_DEFINITION. SDL does allow for a NO_WARN=> modifier in a MATCH_STATEMENT to disable printing for individual MATCH_STATEMENTS that the user knows will not match in some cases.
If there are no missing_pin warnings, PartBuilder will continue to the CREATE_SYMBOLS step if BUILD_SYMBOLS
Build Symbol Files for Each Enabled EDA Tool
Final Save Operations
Report Warningsoperation was chosen, or halt if the MAP_PINS_TO_SYMBOLS step was the only operation selected.
If PartBuilder does detect missing pin maps in this step, The user can still manually select the CREATE_SYMBOLS operation to continue working on individual symbols, but if there are missing pin_maps, the resulting symbols cannot be used in the downstream EDA Tool