summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--maze.c5
-rw-r--r--qconfig.c18
2 files changed, 16 insertions, 7 deletions
diff --git a/maze.c b/maze.c
index afd7f32..37420f4 100644
--- a/maze.c
+++ b/maze.c
@@ -884,7 +884,10 @@ u_char ripup_net(NET net, u_char restore)
free(rt);
}
- return TRUE;
+ // If this was a specialnet (numnodes set to 0), then routes are
+ // considered fixed obstructions and cannot be removed.
+
+ return (net->numnodes == 0) ? FALSE : TRUE;
}
/*--------------------------------------------------------------*/
diff --git a/qconfig.c b/qconfig.c
index 19589ec..eb98f67 100644
--- a/qconfig.c
+++ b/qconfig.c
@@ -101,15 +101,21 @@ post_config(void)
else if (v == -1) v = h;
for (i = 0; i < Num_layers; i++) {
- if (PitchX[i] != 0.0 && PitchX[i] != PitchX[v])
+ if (PitchX[i] != 0.0 && PitchX[i] != PitchX[v]) {
Fprintf(stderr, "Multiple vertical route layers at different"
- " pitches. I cannot handle this! Using pitch %g\n",
- PitchX[v]);
+ " pitches. Using smaller pitch %g, will route on"
+ " 1-of-N tracks if necessary.\n",
+ PitchX[i]);
+ PitchX[v] = PitchX[i];
+ }
PitchX[i] = PitchX[v];
- if (PitchY[i] != 0.0 && PitchY[i] != PitchY[h])
+ if (PitchY[i] != 0.0 && PitchY[i] != PitchY[h]) {
Fprintf(stderr, "Multiple horizontal route layers at different"
- " pitches. I cannot handle this! Using pitch %g\n",
- PitchY[h]);
+ " pitches. Using smaller pitch %g, will route on"
+ " 1-of-N tracks if necessary.\n",
+ PitchY[i]);
+ PitchY[h] = PitchY[i];
+ }
PitchY[i] = PitchY[h];
}