MAGIC Magic Mailing List
 
 

From: R. Timothy Edwards (tim AT stravinsky DOT jhuapl.edu)
Date: Mon Feb 25 2002 - 15:01:30 EST

  • Next message: Stefanos Sidiropoulos: "Re: Jeff Solomon's Future of Magic"

    Okay, Jeff's email deserves a response, and anyone who has been reading
    this list for any length of time knows that I always run in -verbose
    mode, and can't resist. . .
    
    > 1) For people to use magic, it should be easier to build.
    
    > I've been tempted, but I just can't find the energy.
    
    Understandable.  But I was under the impression from some time ago
    that you were planning to do it.  If not, I'll work on it.  It will
    need more than just one person, though.  "autoconf" is not fundamentally
    better than magic's existing "config" script, so we'll need some
    volunteers to test compilation and running on all major platforms.
    
    > 2) The corner-stitched data structure is too memory-inefficient.
    
    First note that magic is one of those programs where the data structure
    IS the program.  The corner-stitched tile structure touches every part
    of the code, and changing it would be tantamount to writing a new
    program.
    
    I can't agree with your assessment of the memory/speed tradeoffs in
    magic without some hard data.  Magic's DRC has to be at least 1000
    times faster than any other VLSI layout tool.  But of course a large
    part of that has nothing to do with corner-stitching at all, but
    rather is due to its running DRC as a background process and updating
    only over areas where the layout has been modified, saving DRC info
    in the output file, and using timestamps for validating the DRC of
    each cell.  The bottom line is that the cost of fundamentally
    rewriting magic is huge, whereas the benefit is not entirely known.
    A good cost/benefit analysis is warranted, even if it involves just
    back-of-the-envelope calculations.
    
    > 3) 24-bit magic is ugly (and menus and dialog boxes aren't all evil)
    
    I agree that OpenGL is the way to go, but my implementation was
    rather quick-and-dirty and needs some refinement.  First, the cursor
    box should attempt to use a 1-bit overlay plane which will keep
    magic from redrawing layout every time the box is moved.  And there
    are probably other optimizations which can speed up the redraw rate.
    Currently, most systems (including SGIs, which are supposedly highly
    optimized for OpenGL rendering speed) seem to redraw layout at about
    2/3 the speed of redrawing in 8-bit indexed color.  I was hoping that
    the speed would turn out to be faster, not slower, but that's not the
    case.
       OpenGL is also more cross-platform independent than X11, but my
    first attempt to use "glut" (the OpenGL server-level interface) had
    horrible interactions with X11.  It appears that OpenGL has to work
    on top of interface code linking it to the display's native graphics
    server.  The interface also slows down rendering.  On my system, if
    any window obscures a portion of the OpenGL window, OpenGL switches
    from hardware acceleration to software emulation, apparently the only
    way X11 can prevent OpenGL from drawing overtop the X11 windows.
    These issues are all likely hardware-dependent.  I'm curious as to
    whether anyone has found a hardware setup in which the OpenGL
    interface runs faster than the 8-bit X11 interface.
    
    ------------------------------------------------
    I should add my own additions:
    
    4) Threading is the way to go.
    
    Magic was written in pre-threads days.  I've been able to switch the
    graphics from using a forked process handling the server graphics calls
    to a separate thread, but magic should be using threads much more
    routinely, such as having a separate thread to run DRC, and possibly
    handling repainting for each open window as a separate thread.
    
    5) Scripting is the way to go.
    
    Rajit did a fine job embedding SCHEME into magic, but I have since
    become convinced that EDA programs should have interpreters "wrapped"
    around them rather than embedded in them.  I'm hoping to demonstrate
    such a system by June, based more-or-less on John Wood's GUI-wrapped
    magic system, but more concerned with using the interpreter for
    fundamental extensions to magic than with GUIs.  Namely, it will run
    SPICE in much the same way it now runs irsim;  indeed, it should be
    possible to mix-and-match with any simulator.  Also, the interpreter
    will handle interaction with other independent programs, such as
    FastHenry for inductance extraction.
    
    6) It pains me to say it, but we need a Windows version of magic.
    
    Linux has been gaining a lot of ground, but programmers who have their
    idealism tempered with a measure of realism admit that any program
    which seeks to expand its user base as much as possible should run
    conveniently in Windows.  I'm currently writing a native-Windows-API
    version of the graphics.  There will be much wringing of hands and
    gnashing of teeth, but at least the setup of magic allows the addition
    of Windows graphics while minimally touching the rest of the code.
    
    7) Finally, did anybody mention documentation??
    
    I think that's a well-known issue, another one like the build/install
    interface that just needs doing, not discussing.
    
    ---------------------------------------------
    
    						---Tim
    


  •  
     
    Questions? Contact Rajit Manohar
    cornell logo