Modifed the handling of parallelized no-connects so that the behavior

can be turned on or off from the setup using "property parallel open"
to allow parallelizing devices with no-connect pins vs. "property
parallel connected" to only allow parallelizing of devices with all
pins connected.
This commit is contained in:
Tim Edwards 2021-03-03 17:31:45 -05:00
parent a21ba820e9
commit 20077d3d56
3 changed files with 17 additions and 6 deletions

View File

@ -50,6 +50,7 @@ int NextNode;
int Composition = NONE; int Composition = NONE;
int QuickSearch = 0; int QuickSearch = 0;
int GlobalParallelNone = FALSE; int GlobalParallelNone = FALSE;
int GlobalParallelOpen = TRUE;
int AddToExistingDefinition = 0; /* default: overwrite cell when reopened */ int AddToExistingDefinition = 0; /* default: overwrite cell when reopened */
@ -3164,11 +3165,14 @@ int CombineParallel(char *model, int file)
/* can be treated as equivalent for the purpose of parallelization. */ /* can be treated as equivalent for the purpose of parallelization. */
nodecount = (int *)CALLOC((tp->nodename_cache_maxnodenum + 1), sizeof(int)); nodecount = (int *)CALLOC((tp->nodename_cache_maxnodenum + 1), sizeof(int));
if (GlobalParallelOpen) {
for (ob = tp->cell; ob; ob = ob->next) { for (ob = tp->cell; ob; ob = ob->next) {
if (ob->node >= 0) if (ob->node >= 0)
if (ob->type != NODE) if (ob->type != NODE)
nodecount[ob->node]++; nodecount[ob->node]++;
} }
}
lob = NULL; lob = NULL;
for (ob = tp->cell; ob; ) { for (ob = tp->cell; ob; ) {

View File

@ -149,6 +149,7 @@ extern int NoOutput; /* set this to 1 to disable stdout output */
extern int Composition; /* direction of composition */ extern int Composition; /* direction of composition */
extern int UnixWildcards; /* TRUE if *,?,{},[] only; false if full REGEXP */ extern int UnixWildcards; /* TRUE if *,?,{},[] only; false if full REGEXP */
extern int GlobalParallelNone; /* If TRUE, don't parallel combine any cells */ extern int GlobalParallelNone; /* If TRUE, don't parallel combine any cells */
extern int GlobalParallelOpen; /* If TRUE, parallel combine cells w/no-connects */
/* magic internal flag to restrict searches to recently placed cells */ /* magic internal flag to restrict searches to recently placed cells */
extern int QuickSearch; extern int QuickSearch;
/* does re"CellDef"ing a cell add to it or overwrite it??? */ /* does re"CellDef"ing a cell add to it or overwrite it??? */

View File

@ -3417,9 +3417,15 @@ _netcmp_property(ClientData clientData,
GlobalParallelNone = FALSE; GlobalParallelNone = FALSE;
SetParallelCombine(TRUE); SetParallelCombine(TRUE);
} }
else if (!strcmp(Tcl_GetString(objv[2]), "connected")) {
GlobalParallelOpen = FALSE;
}
else if (!strcmp(Tcl_GetString(objv[2]), "open")) {
GlobalParallelOpen = TRUE;
}
else { else {
Tcl_SetResult(interp, "Bad option, should be property parallel none|all", Tcl_SetResult(interp, "Bad option, should be property parallel "
NULL); "none|all|connected", NULL);
return TCL_ERROR; return TCL_ERROR;
} }
return TCL_OK; return TCL_OK;