Games / Command flash cards / Layout and parasitic formats / DEF (Design Exchange Format)

DEF (Design Exchange Format)

Each card shows a command to explain. A missed card returns later in the round and starts the schedule over. A card answered correctly moves up the schedule and next appears after 1, 3, 7, then 21 days. Keys 1 to 4 choose an option, h shows a hint, and Enter moves on. A hint keeps the card where it is on the schedule. An ordering card is answered by clicking its items in order, and one wrong click ends it. Time values are in nanoseconds. Progress is stored in this browser.

SourceFour formats carry a design between tools: LEF (Library Exchange Format) for the technology and the cells, DEF (Design Exchange Format) for the layout, SPEF (Standard Parasitic Exchange Format) for extracted wires, and SDF (Standard Delay Format) for annotated delays. The LEF (Library Exchange Format) excerpts here are quoted from the Nangate45 files that OpenROAD-flow-scripts ships; the rest follow the formats as OpenROAD and OpenSTA read them. Reference: the OpenSTA command reference (the open flow on GitHub).
All 10 cards in this section, with answers
  • UNITS DISTANCE MICRONS 2000 ;
    Coordinates are integers of one two-thousandth of a micron.

    Hint: Ask what a coordinate of 1000 means after this line.

    DEF (Design Exchange Format) stores coordinates as integers in database units to avoid rounding, so 1000 here is 0.5 microns. The factor also sets the manufacturing grid a tool will snap to, which is why a mismatch between files is a real problem. the open flow reference

  • DIEAREA ( 0 0 ) ( 200000 200000 ) ; ROW ROW_0 FreePDK45_38x28_10R_NP_162NW_34O 380 2800 N DO 520 BY 1 STEP 380 0 ;
    The die outline, and a row repeated across 520 sites.

    Hint: The row line ends with a repetition. Ask what it describes.

    The row is 520 sites across, stepping in x. DO ... BY ... STEP is how DEF (Design Exchange Format) repeats a row without listing every site: 520 sites across, one row deep, stepping by one site width. N is the orientation, which alternates between rows so neighbouring rows share power rails. the open flow reference

  • COMPONENTS 1250 ; - _123_ INV_X1 + PLACED ( 12540 28000 ) N ; - _124_ DFF_X1 + FIXED ( 15200 28000 ) FS ; END COMPONENTS
    Instances with cell, location, and whether they may be moved.

    Hint: Two instances, two different status words. Ask what the difference means to a tool.

    The status word decides whether a tool may move it: PLACED means yes, FIXED means no, which is how macros and pre-placed cells are protected. UNPLACED has no coordinates. The orientation, N or FS here, matters because it decides which way the cell's rails and pins face. the open flow reference

  • NETS 980 ; - clk ( PIN clk ) ( _124_ CK ) + USE CLOCK + ROUTED metal3 ( 12540 28000 ) ( 12540 45000 ) NEW metal4 ( 12540 45000 ) ( 30000 45000 ) ; END NETS
    A net's connections and its routed wire segments.

    Hint: The net lists connections first, then something else. Ask what NEW starts.

    Connections come first, then the wires. A routed net is a list of segments, each with a layer and points; NEW begins a segment that does not continue the previous one, which is how branches are written. USE CLOCK marks what kind of net it is, so tools can treat clocks specially. the open flow reference

  • SPECIALNETS 2 ; - VDD ( * VDD ) + USE POWER + ROUTED metal1 480 + SHAPE FOLLOWPIN ( 0 2800 ) ( 200000 2800 ) ; END SPECIALNETS
    Power and ground, whose wires carry an explicit width and shape.

    Hint: Ask what is special: compare the width and the connection list with an ordinary net.

    Ordinary nets take their width from the layer's rule; supply wires are drawn wide and are written with their own width and a SHAPE that says what they are, such as FOLLOWPIN for a standard-cell rail. The ( * VDD ) connection means every instance's VDD pin. the open flow reference

  • PINS 42 ; - clk + NET clk + DIRECTION INPUT + USE SIGNAL + LAYER metal3 ( -70 -70 ) ( 70 70 ) + PLACED ( 45000 0 ) N ; END PINS
    A boundary pin's net, direction, shape, and placement.

    Hint: Two coordinate pairs appear. Ask which is the shape and which the position.

    The shape is relative to the pin's own origin, and PLACED puts that origin on the die. The LAYER rectangle is the shape, and PLACED puts that origin on the die. This is what place_pins writes and what a top level reads to know where a block's connections are. the open flow reference

  • TRACKS X 190 DO 193 STEP 380 LAYER metal1 ; TRACKS Y 140 DO 262 STEP 280 LAYER metal1 ;
    The routing grid: 193 vertical tracks from 190, every 380 database units.

    Hint: Three numbers: where they start, how many, and how far apart.

    With 2000 database units to the micron, the step is 0.19 microns. A router places wire centres on these tracks, so the count is the hard limit on how many wires cross the block on that layer. The two directions are given separately because each layer has a preferred one. the open flow reference

  • - FILLER_0_1 FILLCELL_X32 + SOURCE DIST + PLACED ( 2660 2800 ) N ; - _504_ NAND2_X1 + PLACED ( 12540 28000 ) FS ;
    Which stage created the instance, and the orientation it sits at.

    Hint: One instance says where it came from, and the other says how it is turned.

    SOURCE DIST marks a cell added by the tool for distribution, such as filler; the alternatives include netlist, timing, and user. The orientation FS is flipped about the horizontal axis, which is how cells in an odd row line their supply rails up with the row below. the open flow reference

  • NONDEFAULTRULES 1 ; - CTS_NDR_0 + LAYER metal1 WIDTH 140 SPACING 280 + LAYER metal4 WIDTH 280 SPACING 560 ; - clk ( PIN clk ) ( clkbuf_0_clk A ) + USE CLOCK + NONDEFAULTRULE CTS_NDR_0
    A rule giving some nets wider wires and more space, here the clock.

    Hint: Compare the widths and spacings against what the technology allows as a minimum.

    Widening a clock wire lowers its resistance, and doubling its spacing cuts coupling from neighbours, which protects the clock from crosstalk it would otherwise pick up. The cost is routing area, so the rule is applied to the nets that need it rather than to everything. the open flow reference

  • - _002_ ( _597_ A2 ) ( _595_ A2 ) + USE SIGNAL + ROUTED metal3 ( 31350 49140 ) ( 40090 * ) NEW metal2 ( 40850 48860 ) ( * 49140 ) NEW metal1 ( 31350 51940 ) via1_4
    Wire segments, where an asterisk repeats the unchanged coordinate.

    Hint: The asterisk stands for a coordinate. Ask which one.

    A segment runs from one point to another, and because wires are straight only one coordinate changes, so the other is written as an asterisk. NEW starts a segment that does not continue from the last one, and a via name in place of an end point drops that via at the point given. the open flow reference