diff options
author | Ruben Undheim <ruben.undheim@gmail.com> | 2018-07-12 22:31:02 +0200 |
---|---|---|
committer | Ruben Undheim <ruben.undheim@gmail.com> | 2018-07-12 22:31:02 +0200 |
commit | 178038ed02d94aaeb341792cce5e3d8f6767e0a5 (patch) | |
tree | 12a24a9583adaf2c581866018998d2f43c861e49 /def.c | |
parent | 1fdeebded00f8f9c13229dcf48aca690513c7b00 (diff) |
Imported 1.3.103
Diffstat (limited to 'def.c')
-rw-r--r-- | def.c | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -177,6 +177,12 @@ DefAddRoutes(FILE *f, float oscale, NET net, char special) LefError("Unknown layer type \"%s\" for NEW route\n", token); continue; } + else if (routeLayer >= Num_layers) + { + LefError("DEF file contains layer \"%s\" which is not allowed " + "by the layer limit setting of %d\n", token, Num_layers); + continue; + } paintLayer = routeLayer; if (special == (char)1) @@ -262,7 +268,8 @@ DefAddRoutes(FILE *f, float oscale, NET net, char special) LefError("Error: Via \"%s\" named but undefined.\n", token); paintLayer = routeLayer; } - if ((special == (char)0) && (paintLayer >= 0)) { + if ((special == (char)0) && (paintLayer >= 0) && + (paintLayer < Num_layers)) { newRoute = (SEG)malloc(sizeof(struct seg_)); newRoute->segtype = ST_VIA; @@ -286,8 +293,12 @@ DefAddRoutes(FILE *f, float oscale, NET net, char special) newRoute->next = routednet->segments; routednet->segments = newRoute; } - else - LefError("Via \"%s\" does not define a metal layer!\n", token); + else { + if (paintLayer >= Num_layers) + LefError("Via \"%s\" exceeds layer limit setting!\n", token); + else + LefError("Via \"%s\" does not define a metal layer!\n", token); + } } else LefError("Via name \"%s\" unknown in route.\n", token); @@ -403,7 +414,7 @@ DefAddRoutes(FILE *f, float oscale, NET net, char special) UserObs = drect; } } - else if (paintLayer >= 0) { + else if ((paintLayer >= 0) && (paintLayer < Num_layers)) { newRoute = (SEG)malloc(sizeof(struct seg_)); newRoute->segtype = ST_WIRE; newRoute->x1 = locarea.x1; @@ -426,6 +437,9 @@ DefAddRoutes(FILE *f, float oscale, NET net, char special) newRoute->next = routednet->segments; routednet->segments = newRoute; } + else if (paintLayer >= Num_layers) { + LefError("Route layer exceeds layer limit setting!\n"); + } } endCoord: |