Merge branch 'master' into netgen-1.5
This commit is contained in:
commit
3ca77300ac
|
|
@ -6567,11 +6567,16 @@ void PrintAutomorphisms(void)
|
||||||
* separating out those devices that are connected to matching pins
|
* separating out those devices that are connected to matching pins
|
||||||
* in each circuit.
|
* in each circuit.
|
||||||
*
|
*
|
||||||
|
* If match_nets == TRUE, then also match internal nets by name. Pins
|
||||||
|
* should always be matched by name without considering nets first;
|
||||||
|
* once all symmetries related to pins have been broken, then matching
|
||||||
|
* symmetries by net can keep the output from looking confusing.
|
||||||
|
*
|
||||||
* Return value is the same as VerifyMatching()
|
* Return value is the same as VerifyMatching()
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int ResolveAutomorphsByPin()
|
int ResolveAutomorphsByPin(int match_nets)
|
||||||
{
|
{
|
||||||
struct NodeClass *NC;
|
struct NodeClass *NC;
|
||||||
struct Node *N;
|
struct Node *N;
|
||||||
|
|
@ -6604,7 +6609,9 @@ int ResolveAutomorphsByPin()
|
||||||
if (N1->hashval != orighash) continue;
|
if (N1->hashval != orighash) continue;
|
||||||
for (N2 = N1->next; N2 != NULL; N2 = N2->next) {
|
for (N2 = N1->next; N2 != NULL; N2 = N2->next) {
|
||||||
if ((N2->graph != N1->graph) &&
|
if ((N2->graph != N1->graph) &&
|
||||||
(*matchfunc)(N2->object->name, N1->object->name)) {
|
(*matchfunc)(N2->object->name, N1->object->name) &&
|
||||||
|
(N1->object->type == PORT || N2->object->type == PORT)) {
|
||||||
|
|
||||||
if (Debug == TRUE)
|
if (Debug == TRUE)
|
||||||
Printf("Symmetry group broken by name match (pin %s)\n", N2->object->name);
|
Printf("Symmetry group broken by name match (pin %s)\n", N2->object->name);
|
||||||
Magic(newhash);
|
Magic(newhash);
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ extern void RegroupDataStructures();
|
||||||
extern void FormatIllegalElementClasses();
|
extern void FormatIllegalElementClasses();
|
||||||
extern void FormatIllegalNodeClasses();
|
extern void FormatIllegalNodeClasses();
|
||||||
extern int ResolveAutomorphsByProperty();
|
extern int ResolveAutomorphsByProperty();
|
||||||
extern int ResolveAutomorphsByPin();
|
extern int ResolveAutomorphsByPin(int match_nets);
|
||||||
extern void SummarizeElementClasses(struct ElementClass *EC);
|
extern void SummarizeElementClasses(struct ElementClass *EC);
|
||||||
extern int remove_group_tags(struct objlist *ob);
|
extern int remove_group_tags(struct objlist *ob);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2512,7 +2512,13 @@ _netcmp_run(ClientData clientData,
|
||||||
if (automorphisms > 0) {
|
if (automorphisms > 0) {
|
||||||
// Next, attempt to resolve automorphisms uniquely by
|
// Next, attempt to resolve automorphisms uniquely by
|
||||||
// using the pin names
|
// using the pin names
|
||||||
automorphisms = ResolveAutomorphsByPin();
|
automorphisms = ResolveAutomorphsByPin(FALSE);
|
||||||
|
}
|
||||||
|
if (automorphisms > 0) {
|
||||||
|
// Next, attempt to resolve automorphisms uniquely by
|
||||||
|
// using the net names (should only be done after
|
||||||
|
// resolving by pin).
|
||||||
|
automorphisms = ResolveAutomorphsByPin(TRUE);
|
||||||
}
|
}
|
||||||
if (automorphisms > 0) {
|
if (automorphisms > 0) {
|
||||||
// Anything left is truly indistinguishable
|
// Anything left is truly indistinguishable
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue