|   | Magic Mailing List | 
| From: Conrad H Ziesler (cziesler AT eecs DOT umich.edu) Date: Sat Sep 21 2002 - 19:23:53 EDT 
 
 
 
hi, theres a simple to fix bug in the router and netlist code that causes
random bus-errors/segfaults
after fixing it, i successfully did final core-to pads  channel routing
for a 10mm^2 0.25um chip.
its in the usage of the function HeapAdd() from utils/heap.c
in all of the various modules that routing related
i just ended up doing grep -R "HeapAdd" to catch them all
the code calls it with an integer ptr arguemnt.
 int bug;
 HeapAdd(&glMazeHeap, &bug, (char *) new);
but HeapAdd is looking for a union heUnion *
and copies more than one int's worth of data from the ptr,
causing intermittant bus-erros on Solaris.
anyhow changing all of those calls to
 { union heUnion tmpkey;
   tmpkey.hu_int=dist;
   HeapAdd(&glMazeHeap, &tmpkey, (char *) new);
 }
fixes the problem.
--conrad
 
 | 
|  |   |