FPGA to ASIC

        - one lonesome software engineer's trek into the darkness


Any port in a storm

Stacks Image 9
The first thing to do is to port Magic and all its dependencies to the Mac. I could do all of this under a VM in Linux, but I prefer the OSX environment, and besides, getting the tools up-to-date eventually showed up a few logic errors in the code - software static analysis has improved significantly since the 80's, and clang has an excellent reputation in this dept.

One of the things I *really* want to do is minimise the turnarounds I'll end up needing to do. This is my first ASIC project, so I'm not expecting to get it right first time, but having the tools in as good shape as possible is also a part of minimising the risk of a (costly) "bad run".

The initial port of just 'Magic' from the GIT repository version to something that compiles cleanly on the Mac produced a 300 KBytes patch file. That's gone off to Tim (Magic's author/maintainer) and hopefully we'll see the benefits in future editions of Magic, although he's busy adding new functionality to the program at this precise moment in time. In order to get Magic to compile and run now, all you need to do is install the relevant Macports for your OS, then at the top level of the Magic directory, type:

./configure --prefix=/opt/asic --with-tk=/opt/local --with-tcl=/opt/local
make
make install

ie: the standard sort of configuration that any linux software uses. The code ought to compile with no errors or warnings

Magic was relatively straightforward, but next up was Greywolf, the open source version of Timberwolf, the global placement engine. Greywolf doesn't route the details of individual cells (that's qrouter's job) but it does create a placement for all the standard cells within the design. Porting Greywolf took about 3 weeks of effort, and I'm still not sure it's entirely done. The code compiles, links and runs without error but I'm yet to verify an example design using the Mac based tools. That's up once all the rest of the tools are ported…

The final part to realise the design was qrouter - this takes the output of Greywolf and routes the connections of the individual standard cells to each other, using the placement that Graywolf has decided on.

All told, this was about 4 weeks of effort, with the heavy lifting coming in the form of porting Greywolf…


[Back]