fix infinite def write
Signed-off-by: Kareem Farid <kareefardi@users.noreply.github.com>
This commit is contained in:
parent
efcf36f348
commit
a6aac9c309
|
|
@ -2965,6 +2965,13 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive)
|
||||||
TxError("Please name the cell before generating DEF.\n");
|
TxError("Please name the cell before generating DEF.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
char * outName_part ;
|
||||||
|
if((outName_part = mallocMagic(strlen(outName)+strlen("_part")+1)) != NULL) {
|
||||||
|
outName_part[0] = '\0';
|
||||||
|
strcat(outName_part, outName);
|
||||||
|
strcat(outName_part, "_part");
|
||||||
|
}
|
||||||
|
//
|
||||||
|
|
||||||
f = lefFileOpen(def, outName, ".def", "w", &filename);
|
f = lefFileOpen(def, outName, ".def", "w", &filename);
|
||||||
|
|
||||||
|
|
@ -3015,7 +3022,7 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive)
|
||||||
|
|
||||||
/* Not done yet with output, so keep this file open. . . */
|
/* Not done yet with output, so keep this file open. . . */
|
||||||
|
|
||||||
f2 = lefFileOpen(def, outName, ".def_part", "w", &filename);
|
f2 = lefFileOpen(def, outName_part, ".def", "w", &filename);
|
||||||
|
|
||||||
if (f2 == NULL)
|
if (f2 == NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -3029,7 +3036,8 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive)
|
||||||
/* If part 2 cannot be opened, remove part 1 */
|
/* If part 2 cannot be opened, remove part 1 */
|
||||||
fclose(f);
|
fclose(f);
|
||||||
unlink(filename1);
|
unlink(filename1);
|
||||||
freeMagic(filename1);
|
freeMagic(filename1);
|
||||||
|
freeMagic(outName_part);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
filename2 = StrDup((char **)NULL, filename);
|
filename2 = StrDup((char **)NULL, filename);
|
||||||
|
|
@ -3132,7 +3140,7 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive)
|
||||||
|
|
||||||
/* Append contents of file with NETS and SPECIALNETS sections */
|
/* Append contents of file with NETS and SPECIALNETS sections */
|
||||||
|
|
||||||
f2 = lefFileOpen(def, outName, ".def_part", "r", &filename);
|
f2 = lefFileOpen(def, outName_part, ".def", "r", &filename);
|
||||||
if (f2 == NULL)
|
if (f2 == NULL)
|
||||||
{
|
{
|
||||||
/* This should not happen because the file was just written. . . */
|
/* This should not happen because the file was just written. . . */
|
||||||
|
|
@ -3148,10 +3156,12 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive)
|
||||||
unlink(filename1);
|
unlink(filename1);
|
||||||
freeMagic(filename1);
|
freeMagic(filename1);
|
||||||
freeMagic(filename2);
|
freeMagic(filename2);
|
||||||
|
freeMagic(outName_part);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while (fgets(line, sizeof line, f2) != NULL) fprintf(f, "%s", line);
|
while (fgets(line, sizeof line, f2) != NULL) fprintf(f, "%s", line);
|
||||||
fclose(f2);
|
fclose(f2);
|
||||||
|
freeMagic(outName_part);
|
||||||
|
|
||||||
/* Blockages */
|
/* Blockages */
|
||||||
defWriteBlockages(f, def, scale, lefMagicToLefLayer);
|
defWriteBlockages(f, def, scale, lefMagicToLefLayer);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue