MAGIC Magic Mailing List
 
 

From: R. Timothy Edwards (tim AT stravinsky DOT jhuapl.edu)
Date: Mon Feb 24 2003 - 12:09:52 EST

  • Next message: R. Timothy Edwards: "RE: magic-7.2.25 on Solaris"

    Dear Charles,
    
    > 1. Can you point to some location for study about the recently added
    > inductance extraction I read about on Tims web page. Perhaps a couple of
    > commands or an example to allow further study.
    
    This is still under development, so I haven't written up anything formal
    about it.  In brief:  You need to get a copy of the "FastHenry" source code.
    Magic doesn't actually do inductance extraction, which is extremely labor
    intensive.  What it does do is geometry extraction, which is dumped to a
    file and which can be shoved into a field equation solver like FastHenry
    to get an equivalent transmission-line circuit with inductors, capacitors,
    and resistors.
    
    Because field-equation solvers are slow, it is best only to extract the
    geometry of interest (such as when you specifically design a spiral
    inductor).  The method undoubtedly requires a bit of playing around with,
    but the steps are as follows:
    
       1) Put the inductor layout in a separate subcell.
       2) Surround the entire subcell with (internally-defined) layer "subcircuit".
       3) Define the "ports" (input/output) of the inductor with labels, one
          side of which should be coincident with the subcircuit layer boundary.
       4) Extract ("extract all")
       5) Write a .sim file netlist ("exttosim") (that's the Tcl-version variant
          of "ext2sim")
       6) Do "extresis geometry"
       7) Do "extresis all"
       8) Do "exttospice" (likewise, the Tcl-version variant of ext2spice)
    
    What you get is very similar to the standard use of "extresis" (see the
    extresis tutorial), except that where the "subcircuit" layer is defined,
    you will get a file <cellname>.fh, which is a (hopefully valid) input
    file for FastHenry.  Using FastHenry (see the FastHenry manual;  I can't
    go into that much detail here), you can convert the .fh file to a SPICE
    equivalent circuit.
    
    The last "exttospice" step will produce the standard SPICE deck *except*
    that the subcell with the "subcircuit" layer will become a subcircuit
    call ("X..." record in the SPICE deck).  At this point you should be
    able to append the SPICE deck produced by FastHenry to the SPICE deck
    produced by magic and simulate.
    
    Note that this method (i.e., using the "subcircuit" layer) is generally
    applicable to any situation in which magic is not expected to extract
    a subcircuit, but for which a subcircuit exists.  This would include
    standard-cell designs (esp. analog standard cells) where a set of
    device or circuit layouts has been manufactured, characterized
    empirically, and a SPICE model produced to match the empirical data.
    
    > 2. Is there any way to display the cursor's X,Y location as I work with a
    > layout. I find knowing where I am, geometrically speaking is always very
    > useful with any drawing package.
    
    Yes.  If you use "magic -w" (the GUI wrapper), the cursor's position is
    always printed in the upper right-hand corner of the title bar.  This
    uses the magic command "box values" to grab the box coordinates.
    
    It occurs to me though, that you probably want a real-time display of
    the X11 cursor's position relative to the magic layout, not the
    position of the magic cursor (i.e., the box).  There is no way to get
    the cursor (as opposed to the box) value in magic coordinates (as opposed
    to window pixel coordinates).  There is such a function (grx11GetCursorPos()
    and friends), but no command-line command that calls it.  It is trivial to
    add one, so I will (check 7.2.26, to be posted shortly). 
    
    > 3. I see that with Magic 7.2 and its Tcl command window that the macro "g"
    > for grid doesnt work anymore. It keeps wanting four arguments. I did find
    > in ../command/CmdFl.c the CmdGrid function wanting a MagWindow first
    > argument, but quite frankly I dont know what to tell it. An example would
    > be appreciated.
    
    My mistake.  To avoid conflicts with internal Tcl/Tk commands, I renamed
    a few of magic's commands.  Because "grid" is the command for Tk's grid-
    placement widget, I extended the command to "gridspace" in magic to avoid
    conflict.  However, I didn't change the command in the macro file.  You
    can fix it by changing ${CAD_HOME}/lib/magic/sys/.magic:
    
    # G key
    macro g "grid"
    macro G "grid 2"
    
    to:
    
    # G key
    macro g "gridspace"
    macro G "gridspace 2"
    
    Changes need to be made to magic/proto.magic in the source directory if
    you don't want them overwritten on the next "make install-tcl".  A fix
    to this will also be in the version 7.2.26 posting.
    
    About your comments on the Icarus Verilog-to-layout design flow:
    
    > I did take a side trip with Electric a month or so ago, and although I
    > can compile its automotive speed controller IC sample from source with
    > its library and its silicon compiler and it even does load in cells from
    > its version of the mosis library, place them in rows and connect them up,
    > it is designed for VHDL and I am working in Verilog. So, that and the fact
    > that Magic appears to be more prevalent then Electric has caused me to come
    > back to Magic again. I have trouble believing that Electric can do something
    > that Magic cannot do, rather, I suspect that my understanding of Magic is
    > not complete enough yet. 
    
    Sadly, there are things which tools like Electric do which magic does not,
    and good netlist place & route is one of them.  I would suggest that this
    is primarily due to the fact that development on magic slowed to a trickle
    about the same time that most of the digital custom design world moved
    on to VHDL/Verilog compiling.  I think it's particularly unfortunate
    that academia is where good research gets done on complex tasks like
    place & route, and traditionally academia meshes well with open-source
    development.  According to the standard open-source software manifesto,
    this is how the best solutions to the hardest problems get to the end-
    user in the fastest possible way.  I'm trying to put magic back on this
    sort of development track.
    
    					Regards,	
    					Tim
    


  •  
     
    Questions? Contact Rajit Manohar
    cornell logo