Yosys is a framework for Verilog RTL synthesis. It currently hasextensive Verilog-2005 support and provides a basic set ofsynthesis algorithms for various application domains. Selected featuresand typical applications:
- Edif Netlist File Format Example
- Edif Netlist File Format Template
- Edif Netlist
- Edif Netlist File Format Download
The.EDN is a flattened edif netlist file. From your design entry tool, output the design as EDF, EDIF, SEDIF, PLD, SXNF, XNF, or XTF file. Note that the PLD format is available only for XC7300 and XC9500 device families only.
- Process almost any synthesizable Verilog-2005 design
- Converting Verilog to BLIF / EDIF/ BTOR / SMT-LIB / simple RTL Verilog / etc.
- Built-in formal methods for checking properties and equivalence
- Mapping to ASIC standard cell libraries (in Liberty File Format)
- Mapping to Xilinx 7-Series and Lattice iCE40 FPGAs
- Foundation and/or front-end for custom flows
Yosys can be adapted to perform any synthesis job by combiningthe existing passes (algorithms) using synthesis scripts andadding additional passes as needed by extending the Yosys C++code base.
- File Formats EDIF LEL LES LTSpice QUCS Libraries Parametric Shape Library OpenCellLibrary LT Spice Library. Support for other file format can be extended on request. Most netlist formats refer to its devices by a name. To be able to link this name to a physical device layout, the device name are search in the libraries of the SchematicEditor.
- An EDIF version 2 0 0 netlist file (with the extension (.edf), generated by any standard EDIF netlist writer.The Quartus ® II software also supports EDIF Input files with the extension (.edif). When you compile an EDIF Input File, the Compiler uses one or more Library Mapping Files (.lmf) to map cells in an EDIF Input File to corresponding Quartus II logic functions, including Library of.
- Writeedif write design to EDIF netlist file; writefile write a text to a file; writefirrtl write design to a FIRRTL file; writeilang write design to ilang file; writeintersynth write design to InterSynth netlist file; writejson write design to a JSON file; writesimplec convert design to simple C code; writesmt2 write design to SMT-LIBv2.
Yosys is free software licensed under the ISC license (a GPLcompatible license that is similar in terms to the MIT license or the2-clause BSD license).
Example Usage
Yosys is controlled using synthesis scripts. For example, the followingYosys synthesis script reads a design (with the top module mytop) fromthe verilog file mydesign.v, synthesizes it to a gate-level netlistusing the cell library in the Liberty file mycells.lib and writes thesynthesized results as Verilog netlist to synth.v:
The synth command provides a good default script that can be usedas basis for simple synthesis scripts:
See help synth for details on the synth command.
Next:B.4 Electron Beam ExposureUp:B. Layout Data Formats Previous:B.2 Calma GDS IISubsections
- B.3.2 Contents
- B.3.3 Interface
The Electronic Design Interchange Format (EDIF) is a recent effort atcapturing all aspects of VLSI design in a single representation. This isuseful not only as a communications medium to manufacturing equipment, butalso as an interchange format between CAD systems, since none of thehigh-level information is lost. EDIF is designed to be both easy to read byhumans and easy to parse by machines.EDIF files resemble the LISP programming language because of the use of prefixnotation enclosed in parentheses. For example, the CIF polygon:
P 100 100 150 200 200 100;
look like this in EDIF:
(polygon (point 100 100) (point 150 200) (point 200 100))
All EDIF statements consist of an open parenthesis, a keyword, someparameters, and a close parenthesis. The parameters can be other statements,which is what gives EDIF structure. Actually, an EDIF file contains only onestatement:
(edif parameters)
where parameters are the described circuit.Not only does EDIF resemble LISP, but in its highest level it contains all ofLISP and is an extension of this highly expressive language. However, in theinterest of making parsing simple, there are three levels of EDIF, and lowerlevels are less powerful. Level 1, the intermediate level, allows variables tobe used and cell definitions to be parameterized. EDIF level 0 has noprogrammability and requires constants in all statements. A LISP preprocessorcan translate from EDIF levels 1 or 2 down to level 0, and any given level ofEDIF can be read by a parser of a higher level. Since level 0 is all that isnecessary for most interchange and all manufacturing specification, only thatlevel will be discussed here. Also, some of the EDIF constructs that deal withsimulation, routing, behavior, and other unusual specifications will not becovered in detail.
B.3.1 EDIF Structure
An EDIF file contains a set of libraries, each containing a set of cells. Eachcell can be described with one or more views that show the cell in the form ofa schematic, layout, behavioral specification, document, and more. Each viewhas both an interface and contents so that it is cleanly defined and can belinked to other views with a view map. Libraries may also contain technologyinformation so that defaults can be given for behavior, graphics, and otherattributes. The overall structure of an EDIF file looks like this:
(edif name
(status information)
(design where-to-find-them)
(external reference-libraries)
(library name
(technology defaults)
(cell name
(viewmap map)
(view type name
The status statement is used to track design progress and contains authornames, modification dates, and program versions. Additional status statementsmay appear in each library, cell, and view. The design statement indicateswhere a completed design may be found by pointing to the top cell of ahierarchical description. The external statement names libraries that will beused but are not listed in this EDIF file. The library, cell, and view blockscan be repeated as necessary. There is also a comment statement that can beplaced at the end of most blocks to add readability to the file. Here is anexample of an EDIF file that further illustrates the outer level:)))(interface external))
(contents internal)
(edif my-design
(status
(edifversion 1 0 0)
(ediflevel 0)
(written
)(timestamp 2004 4 1 11 16 6))
(accounting author 'Rainer Minixhofer')
(accounting location 'Vienna')
(accounting program 'Virtuoso')
(comment 'timestamp contains year, month, day, hour,')
(comment ' minute, and second')
(design test-chip
(qualify test-library top-cell))
(comment 'look for top-cell in test-library')
(external pad-library pla-library)
(library test-library
(technology 0.35-micron-CMOS
...)
(cell top-cell
(viewmap ... )
(view masklayout real-geometry
(interface ... ))
(contents ... )
(view schematic more-abstract
The written part of a status block may be repeated to show allauthors and update events. Also note that the qualify statement whichnames a cell in a particular library, is generally useful and can appearanywhere that an isolated name may be ambiguous or undefined.)))(interface ... ))
(contents ... )
In the following sections, more information is given to describe the contents,interface, viewmap, and technology blocks.
B.3.2 Contents
The contents of a cell may be represented in a number of different waysdepending on the type of data. Each representation is a different view, andmultiple views can be used to define a circuit fully. EDIF accepts sevendifferent view types: netlist for pure topology as is required by simulators,schematic for connected logic symbols, symbolic for more abstract connectiondesigns, mask layout for the geometry of chip and board fabrication,behavior for functional description, document for general textual description, andstranger for any information that cannot fit into the other six view types.The statements allowed in the contents section vary with the view type (seeFig. D.1). The netlist, schematic, and symbolic views are essentially the same,because they describe circuit topology. The allowable statements in theseviews are the declarations define, unused, global, rename, and instance; therouting specifications joined, mustjoin, and criticalsignalEdif Netlist File Format Example
measured. Schematic and symbolic views also allowthe annotate and wire statements. The mask-layout view allows all of thedeclarations, some of the routing constructs, and the figuregroup statementfor actual graphics. The behavior view allows only a few declarations and thelogicmodel statement. The document view allows only the instanceand section constructs. Finally, the stranger view allows everything but supportsnothing. It should be avoided whenever possible.
|
B.3.2.1 Declarations
Declarations establish the objects in a cell including signals, parts, andnames. Internal signals are defined with the statement:(define direction type names)
where direction is one of input, output, inout, local, or unspecified. Only local and unspecified signals have meaning inthe contents section of a view; the others are used when this statementappears in an interface section. The type of the declaration can be port,signal, or figuregroup, where port is for the interfacesection, signal isfor the contents section, and figuregroup is for the technology section of alibrary. The names being declared can be given as a single name or as a listof names aggregated with the multiple clause. In addition to all thesedeclaration options, it is possible to define arrays by having any name bethe construct:
(arraydefinition name dimensions)
These arrays can be indexed by using the construct:
(member name indexes)
Here are some examples of the define statement:
(define input port Clk)
(define unspecified signal (multiple a b c))
(define local signal (arraydefinition i-memory 10 32))
After the declaration of signals, a number of other declarations can bemade. The unused statement has the form:
(unused name)
and indicates that the defined name is not used in this cell view and shouldbe allowed in order to pass any analysis that might find it to be an error. The globaldeclaration has the form:
(global names)
and defines signals to be used inside the cell view and one level lower, insubcomponents that are placed inside the view. Where these subcomponents haveports that match globally declared names, they will be implicitly equated.Yet another declaration is rename, which can associate any EDIF name with anarbitrary string. This allows illegal EDIF naming conventions to be used, suchas in this example:
(rename bwest ``B-west{ss}')
B.3.2.2 Instances
Hierarchy is achieved by declaring an instance of a cell in the contents of another cell. The format of the instance statement is as follows:(instance cell view name transform)
The name of the other cell is in cell and the particular view to use is in view. This allows the hierarchy to mix view types where it makes sense. A local name is given to this instance in name and an optional transformation is specified in transform, which looks like this:
(transform scale rotate translate)
where scale can be:
(scalex numerator denominator)
or:
(scaley numerator denominator)
translate has the form:
(translate x y)
and rotate can be either:
(rotation counterclockwise-angle)
or:
(orientation manhattan-orientation)
where manhattan-orientation is one of R0, R90, R180, R270, MX, MY, MYR90, or MXR90. So, for example, the expression:
(transform (scalex 3 10) MX (translate 5 15))
will scale the instance to three-tenths of its size, mirror it about the xaxis (negate the y coordinate) and then translate it by 5 in x and 15 iny. Although any of the three transformation elements can be omitted, whenpresent they must be given in the order shown, and are applied in thatsequence. Unfortunately, versions of EDIF before 3.0 have no provision fornon-Manhattan orientation because the rotation clause did not exist beforethen.
Arrays of instances can be described by including a step function in the translate part of the transform clause. This will indicate a series of translated locations for the instances. The format of this iteration is:
(step origin count increment)
So, for example, the clause:
(step 7 3 5)
will place three instances translated by 7, 12, and 17 in whichever coordinatethis appears. The rotation and scale factors will apply to every arrayelement. Also, it is possible to use different instances in each arraylocation by mentioning multiple cell names in the instance clause. Forexample,
(instance (multiple carry add)
more-abstract add-chain
(transform (translate 0 (step 0 16 10))))
will create an array of 16 instances stacked vertically that alternate betweenthe 'more-abstract' view of the 'carry' cell and the 'more-abstract' view ofthe 'add' cell. This entire instance will be called 'add-chain.'
B.3.2.3 Routing and Simulation
To indicate connectivity, the joined construct identifies signals or portsthat are connected. TheEdif Netlist File Format Template
mustjoin construct indicates that signals do not yetconnect but should when routing takes place, and the criticalsignal constructestablishes priorities for the routing. To illustrate further EDIF'sexpressive power in routing specification, there is a weakjoined constructthat defines a set of joins, only one of which must be connected, and apermutable statement that declares sets of connection points to beinterchangeable. These last two statements are found only in the interfacesection; however, none of the routing constructs will be described in detail here.The final set of constructs in the netlist, schematic, and symbolic views arethose concerned with timing. As an example of the level of specificationavailable, the statement:
(required (delay (transition H L (minomax 10 20 30)) here there))specifies that the required delay of a high-to-low transition between points'here' and 'there' is between 10 and 30, with a nominal value of 20. Themeasured statement can be used in the same way to document actual timing. Thelogicmodel statement, found only in the behavior view, allows a detailed setof logic states and conditions that can control simulation andverification. The EDIF specification should be consulted for full details ofthese timing, behavior, and routing constructs [206].
B.3.2.4 Geometry
In the mask-layout view, geometry can be specified with the figuregroupconstruct which looks like this:(figuregroup groupname
pathtype width color fillpattern borderpattern
signals figures)
where the groupname refers to a figuregroupdefault clause in the technologysection of this library (described later). This set of defaults is availableso that the graphic characteristics pathtype, width, color, fillpattern, andborderpattern need not be explicitly mentioned in each figuregroupstatement. These five graphic characteristics are therefore optional and havethe following format:
(pathtype endtype cornertype)
(width distance)
(color red green blue)
(fillpattern width height pattern)
(borderpattern length pattern)
The pathtype describes how wire ends and corners will be drawn (eitherextend,truncate, or round). The width clause takes a single integer to be used as thewidth of the wire. The color clause takes three integers in the range of 0 to100, which give intensity of red, green, and blue. The fillpattern clausegives a raster pattern that will be tessellated inside of the figure. Twointegers specify the size of the pattern and a string of zeros and ones definethe pattern. Finally, the borderpattern describes an edge texture byspecifying a single integer for a pattern length followed by a pattern stringthat is repeated around the border of the figure. Here are examples of thesefiguregroup attributes:
(pathtype round round)
(width 200)
(color 0 0 100)
(fillpattern 4 4 '1010010110100101')
(borderpattern 2 '10')
Inside of a figuregroup statement, the actual geometry can be specifieddirectly with the figures constructs or can be aggregated by signal with thesignals construct, which has the form:
(signalgroup name figures)
The figures construct in a figuregroup can be either polygon, shape, arc,rectangle, circle, path, dot, or annotate. The polygon is of the form:
(polygon points)
where each point has the form:
(point x y)
A shape is the same as a polygon except that it can contain point or arc information, freely mixed. The arc has the form:
(arc start middle end)
where these three points are the start point, any point along the arc, and theendpoint. The rectangle takes two points that are diagonally opposite eachother and define a rectangle. A circle takes two points that are on oppositesides and therefore separated by the diameter. The path takes a set of pointsand uses the width and pathtype information to describe the geometryfurther. The dot construct takes a single point and draws it in adimensionless way (it should not be used in actual fabricationspecifications, but can be used for internal documentation ofspecial positions).
B.3.2.5 Miscellaneous Statements
In schematic and symbolic views, the annotate clause may be used to add textto a drawing. The form:(annotate text corner1 corner2 justify)
will place text in the box defined by the two diagonally opposite corners, andjustify the text according to one of nine options: upperleft, uppercenter,upperright, centerleft, centercenter, centerright, lowerleft, lowercenter, orlowerright. For example:
(annotate 'probe here' (point 50 50) (point 200 100) uppercenter)
will place the string 'probe here' in the upper part of the box and, centered.
Another construct allowed only in schematic and symbolic views is wire. Thisconnects two ports with a wire that can be described graphically. For example:
(wire clock.in gated.timer
(figuregroup metal
)(path (point 10 15) (point 20 15) (point 20 25)))
connects the two points on the metal layer.
The last contents statement to be mentioned is the section construct, which isfound only in document views and can hierarchically describe chapters,sections, subsections, and so on. For example:
(section 'Chapter 1'
(section 'Introduction'
)'This is a doctoral thesis')
'To receive the doctoral degree.'
B.3.3 Interface
In addition to there being seven different ways of specifying the contents ofa cell, there are the same seven views that apply to the interface of acell. The interface section is the specification of how a cell interacts withits environment when used in a supercell.Unlike the contents views, the seven interface views are all essentially thesame (see Table B.5). The netlist, schematic, symbolic, mask layout, behavior,and stranger views can all contain the same declarations: define, rename,unused, portimplementation, and body. They also allow the routing statementsjoined, mustjoin, weakjoined, and permutable, in addition to the simulationstatements timing and simulate. The symbolic, mask-layout, and stranger viewsadd the arrayrelatedinfo construct, which enables gate-array specification tobe handled. The document view offers no constructs as this text rightlybelongs in the contents section.
|
B.3.3.1 Ports and Bodies
The first interface statement to be discussed is portimplementation, whichdescribes the ports and their associated components, graphics, timing, andother properties. Although ports can be declared with the define statement,portimplementation allows more information to be included in thedeclaration. The format is:Edif Netlist
(portimplementation portname figuregroups instances properties)
where the portname is the name of the port as it will be used insupercells. The figuregroups describe any graphics attached to the port,the instances specify any subcells that describe the port, and the properties may indicate power-consumption ratings. Ports that are furtherdescribed by instances of other cells do not need figuregroups todefine them, so much of the portimplementation statement is optional.
The body statement is used to describe the external or interfaced aspect of a cell. In mask-layout views, this can describe a protection frame for design-rule checking and compaction. In other views it is simply used to give an external appearance to instances of the cell. The format is:
(body figuregroups instances)
where instances are subcells that can be used to describe the body.
B.3.3.2 Gate-Array and Behavioral Interface
The arrayrelatedinfo statement which is used in gate-arrayspecification, is allowed only in symbolic, mask-layout, and strangerviews. This can be used to declare the background array:(arrayrelatedinfo basearray (socket info))
or the individual cells:
(arrayrelatedinfo arraysite (plug info))
or macros of cells:
(arrayrelatedinfo arraymacro (plug info))
These statements define a grid that can be connected in a rigid manner,specified by the plugs and sockets. Sockets define permissible connectionoptions and plugs make these connections to give precise gate-arrayinterface [206].
The final interface section constructs, which will not be described in detail,are timing and simulate. The timing statement gives port delaysfor various transitions, and gives stability requirements for the signalvalues. The simulate statement lists test data and expected results.
B.3.4 View Maps
To relate different views, a viewmap section can exist in each cell, whichassociates ports from different interface sections or instances from differentcontents sections. Port mapping is done with:(portmap ports)
where the list of ports is of the form:
(qualify viewname portname)
Thus to equate port C of the mask-layout view with port D of the schematicview, the map would look like this:
(viewmap
(portmap
)(qualify real-geometry C))
(qualify more-abstract D)
Note that the viewname is the declared name given to the view.
To relate instances of a cell in different views, the same format appliesexcept that a many-to-one mapping is allowed. For example,
(instancemap
will map both the pullup and the pulldown in the mask-layout view to theinverter in the schematic view.(qualify real-geometry pullup pulldown))
(qualify more-abstract inverter)
B.3.5 Technology
The technology section provides a background of information for thedescription of a library. Defaults can be set for other statements in thelibrary, such as the figuregroup. Also, the real units of distance, time,power, and so on can be established. The technology section has the followingformat:(technology name
defines renames)
figuregroupdefaults
numberdefinitions gridmaps
simulation
where name is an identifier for this technology. A set of define statements can be used to declare default figuregroups for various signal types and rename statements can be used to establish name bindings in the library. The figuregroupdefault statement takes a name and a list of pathtype, width, color, fillpattern, and borderpattern constructs to establish the defaults for subsequent figuregroup statements in the library. The numberdefinition statement is important because it sets the scale of all EDIF units as follows:
(numberdefinition SI
(scale distance edif real))
(scale time edif real)
(scale capacitance edif real)
(scale current edif real)
(scale resistance edif real)
(scale voltage edif real)
(scale temperature edif real)
The name SI is a standard that should always appear unless an alternate set of unit values is being declared. Any of the scale clauses may be used to declare the number of units in the EDIF file that correspond with real units. Real units for distance are in meters, which means that the clause:
(scale distance 1000000 1)
Edif Netlist File Format Download
causes one million EDIF units to be a meter (or one EDIF unit to be amicron). The real-time unit is the second, capacitance is in farads, currentis in amperes, resistance is in ohms, voltage is in volts, and temperature isin degrees celsius.
The gridmap clause of the technology section can be used to declarenonuniform scaling in the x and y axes. For example,
(gridmap 3 4)
will set the x units to be three times the numberdefinitiondistance and the y coordinates to be four times that amount. Thisnonuniform scaling of all coordinates has limited application.
A final use of the technology section is for simulation defaults. As with allother simulation constructs, these will not be discussed here.
Next:
- B.3.2 Contents
- B.3.3 Interface
The Electronic Design Interchange Format (EDIF) is a recent effort atcapturing all aspects of VLSI design in a single representation. This isuseful not only as a communications medium to manufacturing equipment, butalso as an interchange format between CAD systems, since none of thehigh-level information is lost. EDIF is designed to be both easy to read byhumans and easy to parse by machines.EDIF files resemble the LISP programming language because of the use of prefixnotation enclosed in parentheses. For example, the CIF polygon:
P 100 100 150 200 200 100;
look like this in EDIF:
(polygon (point 100 100) (point 150 200) (point 200 100))
All EDIF statements consist of an open parenthesis, a keyword, someparameters, and a close parenthesis. The parameters can be other statements,which is what gives EDIF structure. Actually, an EDIF file contains only onestatement:
(edif parameters)
where parameters are the described circuit.Not only does EDIF resemble LISP, but in its highest level it contains all ofLISP and is an extension of this highly expressive language. However, in theinterest of making parsing simple, there are three levels of EDIF, and lowerlevels are less powerful. Level 1, the intermediate level, allows variables tobe used and cell definitions to be parameterized. EDIF level 0 has noprogrammability and requires constants in all statements. A LISP preprocessorcan translate from EDIF levels 1 or 2 down to level 0, and any given level ofEDIF can be read by a parser of a higher level. Since level 0 is all that isnecessary for most interchange and all manufacturing specification, only thatlevel will be discussed here. Also, some of the EDIF constructs that deal withsimulation, routing, behavior, and other unusual specifications will not becovered in detail.
B.3.1 EDIF Structure
An EDIF file contains a set of libraries, each containing a set of cells. Eachcell can be described with one or more views that show the cell in the form ofa schematic, layout, behavioral specification, document, and more. Each viewhas both an interface and contents so that it is cleanly defined and can belinked to other views with a view map. Libraries may also contain technologyinformation so that defaults can be given for behavior, graphics, and otherattributes. The overall structure of an EDIF file looks like this:
(edif name
(status information)
(design where-to-find-them)
(external reference-libraries)
(library name
(technology defaults)
(cell name
(viewmap map)
(view type name
The status statement is used to track design progress and contains authornames, modification dates, and program versions. Additional status statementsmay appear in each library, cell, and view. The design statement indicateswhere a completed design may be found by pointing to the top cell of ahierarchical description. The external statement names libraries that will beused but are not listed in this EDIF file. The library, cell, and view blockscan be repeated as necessary. There is also a comment statement that can beplaced at the end of most blocks to add readability to the file. Here is anexample of an EDIF file that further illustrates the outer level:)))(interface external))
(contents internal)
(edif my-design
(status
(edifversion 1 0 0)
(ediflevel 0)
(written
)(timestamp 2004 4 1 11 16 6))
(accounting author 'Rainer Minixhofer')
(accounting location 'Vienna')
(accounting program 'Virtuoso')
(comment 'timestamp contains year, month, day, hour,')
(comment ' minute, and second')
(design test-chip
(qualify test-library top-cell))
(comment 'look for top-cell in test-library')
(external pad-library pla-library)
(library test-library
(technology 0.35-micron-CMOS
...)
(cell top-cell
(viewmap ... )
(view masklayout real-geometry
(interface ... ))
(contents ... )
(view schematic more-abstract
The written part of a status block may be repeated to show allauthors and update events. Also note that the qualify statement whichnames a cell in a particular library, is generally useful and can appearanywhere that an isolated name may be ambiguous or undefined.)))(interface ... ))
(contents ... )
In the following sections, more information is given to describe the contents,interface, viewmap, and technology blocks.
B.3.2 Contents
The contents of a cell may be represented in a number of different waysdepending on the type of data. Each representation is a different view, andmultiple views can be used to define a circuit fully. EDIF accepts sevendifferent view types: netlist for pure topology as is required by simulators,schematic for connected logic symbols, symbolic for more abstract connectiondesigns, mask layout for the geometry of chip and board fabrication,behavior for functional description, document for general textual description, andstranger for any information that cannot fit into the other six view types.The statements allowed in the contents section vary with the view type (seeFig. D.1). The netlist, schematic, and symbolic views are essentially the same,because they describe circuit topology. The allowable statements in theseviews are the declarations define, unused, global, rename, and instance; therouting specifications joined, mustjoin, and criticalsignal; and the timingspecifications required andEdif Netlist File Format Example
measured. Schematic and symbolic views also allowthe annotate and wire statements. The mask-layout view allows all of thedeclarations, some of the routing constructs, and the figuregroup statementfor actual graphics. The behavior view allows only a few declarations and thelogicmodel statement. The document view allows only the instanceand section constructs. Finally, the stranger view allows everything but supportsnothing. It should be avoided whenever possible.
|
B.3.2.1 Declarations
Declarations establish the objects in a cell including signals, parts, andnames. Internal signals are defined with the statement:(define direction type names)
where direction is one of input, output, inout, local, or unspecified. Only local and unspecified signals have meaning inthe contents section of a view; the others are used when this statementappears in an interface section. The type of the declaration can be port,signal, or figuregroup, where port is for the interfacesection, signal isfor the contents section, and figuregroup is for the technology section of alibrary. The names being declared can be given as a single name or as a listof names aggregated with the multiple clause. In addition to all thesedeclaration options, it is possible to define arrays by having any name bethe construct:
(arraydefinition name dimensions)
These arrays can be indexed by using the construct:
(member name indexes)
Here are some examples of the define statement:
(define input port Clk)
(define unspecified signal (multiple a b c))
(define local signal (arraydefinition i-memory 10 32))
After the declaration of signals, a number of other declarations can bemade. The unused statement has the form:
(unused name)
and indicates that the defined name is not used in this cell view and shouldbe allowed in order to pass any analysis that might find it to be an error. The globaldeclaration has the form:
(global names)
and defines signals to be used inside the cell view and one level lower, insubcomponents that are placed inside the view. Where these subcomponents haveports that match globally declared names, they will be implicitly equated.Yet another declaration is rename, which can associate any EDIF name with anarbitrary string. This allows illegal EDIF naming conventions to be used, suchas in this example:
(rename bwest ``B-west{ss}')
B.3.2.2 Instances
Hierarchy is achieved by declaring an instance of a cell in the contents of another cell. The format of the instance statement is as follows:(instance cell view name transform)
The name of the other cell is in cell and the particular view to use is in view. This allows the hierarchy to mix view types where it makes sense. A local name is given to this instance in name and an optional transformation is specified in transform, which looks like this:
(transform scale rotate translate)
where scale can be:
(scalex numerator denominator)
or:
(scaley numerator denominator)
translate has the form:
(translate x y)
and rotate can be either:
(rotation counterclockwise-angle)
or:
(orientation manhattan-orientation)
where manhattan-orientation is one of R0, R90, R180, R270, MX, MY, MYR90, or MXR90. So, for example, the expression:
(transform (scalex 3 10) MX (translate 5 15))
will scale the instance to three-tenths of its size, mirror it about the xaxis (negate the y coordinate) and then translate it by 5 in x and 15 iny. Although any of the three transformation elements can be omitted, whenpresent they must be given in the order shown, and are applied in thatsequence. Unfortunately, versions of EDIF before 3.0 have no provision fornon-Manhattan orientation because the rotation clause did not exist beforethen.
Arrays of instances can be described by including a step function in the translate part of the transform clause. This will indicate a series of translated locations for the instances. The format of this iteration is:
(step origin count increment)
So, for example, the clause:
(step 7 3 5)
will place three instances translated by 7, 12, and 17 in whichever coordinatethis appears. The rotation and scale factors will apply to every arrayelement. Also, it is possible to use different instances in each arraylocation by mentioning multiple cell names in the instance clause. Forexample,
(instance (multiple carry add)
more-abstract add-chain
(transform (translate 0 (step 0 16 10))))
will create an array of 16 instances stacked vertically that alternate betweenthe 'more-abstract' view of the 'carry' cell and the 'more-abstract' view ofthe 'add' cell. This entire instance will be called 'add-chain.'
B.3.2.3 Routing and Simulation
To indicate connectivity, the joined construct identifies signals or portsthat are connected. TheEdif Netlist File Format Template
mustjoin construct indicates that signals do not yetconnect but should when routing takes place, and the criticalsignal constructestablishes priorities for the routing. To illustrate further EDIF'sexpressive power in routing specification, there is a weakjoined constructthat defines a set of joins, only one of which must be connected, and apermutable statement that declares sets of connection points to beinterchangeable. These last two statements are found only in the interfacesection; however, none of the routing constructs will be described in detail here.The final set of constructs in the netlist, schematic, and symbolic views arethose concerned with timing. As an example of the level of specificationavailable, the statement:
(required (delay (transition H L (minomax 10 20 30)) here there))specifies that the required delay of a high-to-low transition between points'here' and 'there' is between 10 and 30, with a nominal value of 20. Themeasured statement can be used in the same way to document actual timing. Thelogicmodel statement, found only in the behavior view, allows a detailed setof logic states and conditions that can control simulation andverification. The EDIF specification should be consulted for full details ofthese timing, behavior, and routing constructs [206].
B.3.2.4 Geometry
In the mask-layout view, geometry can be specified with the figuregroupconstruct which looks like this:(figuregroup groupname
pathtype width color fillpattern borderpattern
signals figures)
where the groupname refers to a figuregroupdefault clause in the technologysection of this library (described later). This set of defaults is availableso that the graphic characteristics pathtype, width, color, fillpattern, andborderpattern need not be explicitly mentioned in each figuregroupstatement. These five graphic characteristics are therefore optional and havethe following format:
(pathtype endtype cornertype)
(width distance)
(color red green blue)
(fillpattern width height pattern)
(borderpattern length pattern)
The pathtype describes how wire ends and corners will be drawn (eitherextend,truncate, or round). The width clause takes a single integer to be used as thewidth of the wire. The color clause takes three integers in the range of 0 to100, which give intensity of red, green, and blue. The fillpattern clausegives a raster pattern that will be tessellated inside of the figure. Twointegers specify the size of the pattern and a string of zeros and ones definethe pattern. Finally, the borderpattern describes an edge texture byspecifying a single integer for a pattern length followed by a pattern stringthat is repeated around the border of the figure. Here are examples of thesefiguregroup attributes:
(pathtype round round)
(width 200)
(color 0 0 100)
(fillpattern 4 4 '1010010110100101')
(borderpattern 2 '10')
Inside of a figuregroup statement, the actual geometry can be specifieddirectly with the figures constructs or can be aggregated by signal with thesignals construct, which has the form:
(signalgroup name figures)
The figures construct in a figuregroup can be either polygon, shape, arc,rectangle, circle, path, dot, or annotate. The polygon is of the form:
(polygon points)
where each point has the form:
(point x y)
A shape is the same as a polygon except that it can contain point or arc information, freely mixed. The arc has the form:
(arc start middle end)
where these three points are the start point, any point along the arc, and theendpoint. The rectangle takes two points that are diagonally opposite eachother and define a rectangle. A circle takes two points that are on oppositesides and therefore separated by the diameter. The path takes a set of pointsand uses the width and pathtype information to describe the geometryfurther. The dot construct takes a single point and draws it in adimensionless way (it should not be used in actual fabricationspecifications, but can be used for internal documentation ofspecial positions).
B.3.2.5 Miscellaneous Statements
In schematic and symbolic views, the annotate clause may be used to add textto a drawing. The form:(annotate text corner1 corner2 justify)
will place text in the box defined by the two diagonally opposite corners, andjustify the text according to one of nine options: upperleft, uppercenter,upperright, centerleft, centercenter, centerright, lowerleft, lowercenter, orlowerright. For example:
(annotate 'probe here' (point 50 50) (point 200 100) uppercenter)
will place the string 'probe here' in the upper part of the box and, centered.
Another construct allowed only in schematic and symbolic views is wire. Thisconnects two ports with a wire that can be described graphically. For example:
(wire clock.in gated.timer
(figuregroup metal
)(path (point 10 15) (point 20 15) (point 20 25)))
connects the two points on the metal layer.
The last contents statement to be mentioned is the section construct, which isfound only in document views and can hierarchically describe chapters,sections, subsections, and so on. For example:
(section 'Chapter 1'
(section 'Introduction'
)'This is a doctoral thesis')
'To receive the doctoral degree.'
B.3.3 Interface
In addition to there being seven different ways of specifying the contents ofa cell, there are the same seven views that apply to the interface of acell. The interface section is the specification of how a cell interacts withits environment when used in a supercell.Unlike the contents views, the seven interface views are all essentially thesame (see Table B.5). The netlist, schematic, symbolic, mask layout, behavior,and stranger views can all contain the same declarations: define, rename,unused, portimplementation, and body. They also allow the routing statementsjoined, mustjoin, weakjoined, and permutable, in addition to the simulationstatements timing and simulate. The symbolic, mask-layout, and stranger viewsadd the arrayrelatedinfo construct, which enables gate-array specification tobe handled. The document view offers no constructs as this text rightlybelongs in the contents section.
|
B.3.3.1 Ports and Bodies
The first interface statement to be discussed is portimplementation, whichdescribes the ports and their associated components, graphics, timing, andother properties. Although ports can be declared with the define statement,portimplementation allows more information to be included in thedeclaration. The format is:Edif Netlist
(portimplementation portname figuregroups instances properties)
where the portname is the name of the port as it will be used insupercells. The figuregroups describe any graphics attached to the port,the instances specify any subcells that describe the port, and the properties may indicate power-consumption ratings. Ports that are furtherdescribed by instances of other cells do not need figuregroups todefine them, so much of the portimplementation statement is optional.
The body statement is used to describe the external or interfaced aspect of a cell. In mask-layout views, this can describe a protection frame for design-rule checking and compaction. In other views it is simply used to give an external appearance to instances of the cell. The format is:
(body figuregroups instances)
where instances are subcells that can be used to describe the body.
B.3.3.2 Gate-Array and Behavioral Interface
The arrayrelatedinfo statement which is used in gate-arrayspecification, is allowed only in symbolic, mask-layout, and strangerviews. This can be used to declare the background array:(arrayrelatedinfo basearray (socket info))
or the individual cells:
(arrayrelatedinfo arraysite (plug info))
or macros of cells:
(arrayrelatedinfo arraymacro (plug info))
These statements define a grid that can be connected in a rigid manner,specified by the plugs and sockets. Sockets define permissible connectionoptions and plugs make these connections to give precise gate-arrayinterface [206].
The final interface section constructs, which will not be described in detail,are timing and simulate. The timing statement gives port delaysfor various transitions, and gives stability requirements for the signalvalues. The simulate statement lists test data and expected results.
B.3.4 View Maps
To relate different views, a viewmap section can exist in each cell, whichassociates ports from different interface sections or instances from differentcontents sections. Port mapping is done with:(portmap ports)
where the list of ports is of the form:
(qualify viewname portname)
Thus to equate port C of the mask-layout view with port D of the schematicview, the map would look like this:
(viewmap
(portmap
)(qualify real-geometry C))
(qualify more-abstract D)
Note that the viewname is the declared name given to the view.
To relate instances of a cell in different views, the same format appliesexcept that a many-to-one mapping is allowed. For example,
(instancemap
will map both the pullup and the pulldown in the mask-layout view to theinverter in the schematic view.(qualify real-geometry pullup pulldown))
(qualify more-abstract inverter)
B.3.5 Technology
The technology section provides a background of information for thedescription of a library. Defaults can be set for other statements in thelibrary, such as the figuregroup. Also, the real units of distance, time,power, and so on can be established. The technology section has the followingformat:(technology name
defines renames)
figuregroupdefaults
numberdefinitions gridmaps
simulation
where name is an identifier for this technology. A set of define statements can be used to declare default figuregroups for various signal types and rename statements can be used to establish name bindings in the library. The figuregroupdefault statement takes a name and a list of pathtype, width, color, fillpattern, and borderpattern constructs to establish the defaults for subsequent figuregroup statements in the library. The numberdefinition statement is important because it sets the scale of all EDIF units as follows:
(numberdefinition SI
(scale distance edif real))
(scale time edif real)
(scale capacitance edif real)
(scale current edif real)
(scale resistance edif real)
(scale voltage edif real)
(scale temperature edif real)
The name SI is a standard that should always appear unless an alternate set of unit values is being declared. Any of the scale clauses may be used to declare the number of units in the EDIF file that correspond with real units. Real units for distance are in meters, which means that the clause:
(scale distance 1000000 1)
Edif Netlist File Format Download
causes one million EDIF units to be a meter (or one EDIF unit to be amicron). The real-time unit is the second, capacitance is in farads, currentis in amperes, resistance is in ohms, voltage is in volts, and temperature isin degrees celsius.
The gridmap clause of the technology section can be used to declarenonuniform scaling in the x and y axes. For example,
(gridmap 3 4)
will set the x units to be three times the numberdefinitiondistance and the y coordinates to be four times that amount. Thisnonuniform scaling of all coordinates has limited application.
A final use of the technology section is for simulation defaults. As with allother simulation constructs, these will not be discussed here.
Next:B.4 Electron Beam ExposureUp:B. Layout Data Formats Previous:B.2 Calma GDS IIR. Minixhofer: Integrating Technology Simulationinto the Semiconductor Manufacturing Environment