Magic Mailing List |
|
From: R. Timothy Edwards (tim AT stravinsky DOT jhuapl.edu) Date: Wed Apr 30 2003 - 10:55:03 EDT
Dear Jeff, > anyway, i'm getting close to releasing a new set of simplified, 'table > driven' techfiles, within weeks i hope, altho they will probably be > limited to 7.2 magic and above, in order to (try to) enforce > 'wide-metal' spacing rules. There are a number of recommendations I would like to make regarding any set of techfiles that's targeted for version 7.2. Unfortunately I'm just getting around to documenting them, so you wouldn't necessarily know about them. In addition, my attempts to document them regularly get pre-empted by higher-priority items. Regardless, here they are (along with some other random comments): 1) I have changed ".tech27" to just ".tech", but added an extra keyword "format" in the tech section. The format version number is now 28, in version 7.2. So the tech section looks like: tech format 28 scmos end In addition, I would like to get away from the habit of labeling all technologies "scmos". Since version 7.2 is able to load and reload technology files on-the-fly, it makes more sense to match the name in the tech file to something having to do with the actual process and vendor (e.g., "ami05"). If the techfiles match closely enough not to cause problems when loading under different technologies all of which are called "scmos", then they won't cause problems when loading an alternative technology while the layout is still in memory. 2) The widespacing rule is problematic largely because it describes a discontinuous rule. For all the simple edge-based rules, moving a piece of layout by 1 unit will increase or decrease the DRC violation area by 1 unit. With the widespacing rule, moving or stretching certain pieces of the layout can cause large areas of DRC violation to suddenly appear or disappear. The main consequence of this is that there is no single, obvious way to define a widespacing rule. As far as I am aware, no one has created a standard definition of the widespacing rule that covers all possible cases unambiguously (maybe I should go have a talk with somebody at NIST?). So instead, the implementation in Dracula is the "de facto standard" except that I have no idea what that implementation is. We need to either find out what algorithm Dracula uses or reverse-engineer it from a slew of test cases. Otherwise, we're going to start getting emails from annoyed users who found out that their magic layout didn't pass muster with a vendor. These are not priority items, and some may cross the boundary into vendor-proprietary information, but some of the following can be included if you have the specs available, and they are not subject to NDA restrictions: 3) layer height and width (for 3-D rendering and precise geometry extraction for passing to field-solver tools) can be put in the extract section, using the line height <layer(s)> <height_above_substrate> <layer_thickness> Units are in lambda and may be floating-point. 4) extended "contact" line in the extract section takes the same arguments as the "squares" command in the cifoutput section. Otherwise, the extractor makes a different count of contact cuts than actually ends up in the output, so extracted values (mainly resistance through contacts) can be incorrect. The syntax is: contact <layer(s)> [<size> <border>] <separation> <resistance> Dimensions are integer, units of lambda, which means that if the cifoutput "squares" function is not on lambda boundaries, the extractor's count of contact cuts may still be wrong. I may try to allow floating-point values in the future, if this seems to be a common problem. 5) Add plot section information for PNM and PostScript rendering. Remove plot section information for "gremlin", "versatec", and "colorversatec" 6) The "styles" section can (and preferably, should) take style "long names" instead of style numbers as the second argument. It should be fairly easy to write a little program or script that will go through and replace numbers with names from one of the ".dstyle" files; I know that doing it by hand is very painful. Using names is much more portable, though, and makes the "styles" section easier to write. For example, cwell 10 nwell 12 poly 1 nfet 6 nfet 7 becomes: cwell cwell nwell nwell poly polysilicon nfet ntransistor nfet ntransistor_stripes The style files themselves are much more amenable to extension, now, and the numbers in the first column are actually meaningless. If you need extra styles, just add them in, and let me know what they are so I can add them to the standard style files in the distribution. Note that since I changed the style files, there is no restriction on the number of styles, and I have added lines for metal6 through metal8 and via5 through via7. 7) An additional change with the syntax for "device ..." in the extract section is the use of variable names for the default substrate name. This is meant for use with the Tcl interpreter, so I'll probably need to make sure that the non-Tcl versions handle it sensibly, but you can replace "Vdd!" and "Gnd!" with "$VDD" and "$GND" ("$VSS" has been suggested to me as being more accurate), which then default to "Vdd!" and "Gnd!" unless the user or .magic file sets the variables explicitly to match the actual names of the power and ground networks. ------------- In addition to the existing additions to tech format 28, I am currently toying with at least one more idea which will affect the technology format I am in the process of testing a version of magic in which the existing method for contacts is replaced by a method suggested to me by Philippe, in which *any* layer can be set up to create images of itself on another plane. It lifts all the primary restrictions on contacts such as 1) contacts are no longer restricted to connecting a maximum of 3 planes, and 2) planes connected by contacts do not need to be contiguous. I am also considering lifting the restriction that no two contacts can declare the same residuals, and let the order of the contacts in the techfile disambiguate circumstances. I am also starting to add stuff into Magic for handling Place & Route; not a real integrated PAR tool (yet), but at least the ability to handle cells as part of "standard cell" libraries, including definition of labels as "ports" (q.v., the new "port" command), defining routing through-channels and obstructions, and boundaries for cell abutment. It is likely that there will be a new techfile section to handle these definitions, but there's no point in worrying about it right now. ------------- If there are any other aspects of the technology file which are lacking, or which seem stupidly implemented or have become outdated, please let me know and we can have a discussion among the developers on what to do about them. Implementing "antenna rules" is the primary one I can think of, but I'm sure there are others. Regards, Tim
|
|