public class ExportChecker
extends java.lang.Object
The second phase runs after NCC has checked the circuit topology. In the second phase NCC makes sure that the Wire attached to the schematic Export A is topologically matched to the Wire attached to layout Export A.
Electric allows a network to have multiple exports. For example a schematic network can have three Exports {A, B, C}. NCC can do one of two things for networks with multiple Exports.
When I first wrote NCC I implemented a flexible comparison. If the schematic had Exports {A, B, C} then I just made sure that the layout had a network with any of those Export names. For example, if the layout had a network with Exports {B, C, D} then the flexible comparison would say they match.
Years after the initial implementation the design group noticed that commercial tools lacked this flexibility. Therefore I changed NCC to mimic the behavior of the commercial tools. If a network has more than one Export attached, then NCC sorts the Export names and chooses only the first name. In that case if the schematic network has Exports {A, B, C} then it does not match the layout network with Exports {B, C, D}.
ExportChecker implements both flexible and strict Export checking in order to maintain compatibility with most of the NCC regression database. When NCC is invoked interactively it uses strict Export checking. However the regression scripts set NccOption.oneNamePerPort to false which enables flexible Export checking.
Constructor and Description |
---|
ExportChecker(NccGlobals globals) |
Modifier and Type | Method and Description |
---|---|
boolean |
ensureExportsWithMatchingNamesAreOnEquivalentNets()
Check that Exports with matching names are on equivalent nets.
|
void |
markPortsForRenaming() |
boolean |
matchByName()
match Exports by name.
|
void |
saveInfoNeededToMakeMeASubcircuit(HierarchyInfo hierInfo)
Gather information that will allow hierarchical netlist comparison
at higher level to treat me as a subcircuit.
|
void |
suggestPortMatchesBasedOnTopology()
If the topological comparison is successful, then both circuits
match.
|
public ExportChecker(NccGlobals globals)
public void markPortsForRenaming()
public boolean matchByName()
public void saveInfoNeededToMakeMeASubcircuit(HierarchyInfo hierInfo)
public boolean ensureExportsWithMatchingNamesAreOnEquivalentNets()
public void suggestPortMatchesBasedOnTopology()