Overall
The TRIO input/output file format is GDIF, which is EDIF-like and designed to be:
This manual only gives some simple features of GDIF to explore the TRIO capabilties.
Structure of a GDIF File
A GDIF file consists of items where each item is defined by
A GDIF file is simply one item whose keyword is ``gdif''. For example, the following is a valid GDIF file:
(gdif
(comment example of a simple GDIF file)
)
The keyword of an item identifies the contents of the item. The item can be
named optionally by appending the name to the keyword separated by a
colon ':'. For example, the keyword ``cell:and'' defines a ``cell'' that is
named ``and''. TRIO only optimizes the netlists of the top level cell,
i.e., ``cell:top'' (must be the last cell if there are many).
Keywords are context sensitive and are usually defined using
a hierarchical way:
cell
port
type // IN, OUT, INOUT. OUT is source, IN is sink
layer // layer name, e.g., MET2
pt // x-y location, in um.
For example:
(port:out0 (type OUT)(layer MET2)(pt 0 0))
instance
cellRef // which cell type for the cell instance
pt // x-y location of the cell instances
For example:
(instance:src1 (cellRef bufx10) (pt 0 0))
path
layer // which layer
width // width of the path
pt //
For example:
(path:path_net15
(new)(layer MET2)(width 0.22)(pt 9000 16.5)(pt 10000 16.5)
(new)(layer MET2)(width 0.66)(pt 8000 16.5)(pt 9000 16.5))
net
portRef // which port, it can be a top level port
// or a port in its cell instances
pathRef // which path
For example:
(net:net15
(pathRef path_net15)
(portRef out (instRef src2))
// port reference to a port 'out' of cell instance 'src2'
(portRef out3)
// port reference to a top level port 'out3'
)
Unless specifically stated, each item can be defined zero or more times. For example, the cell item can contain zero or more port items.
Netlist Example
(gdif
(gdifVersion 1 0 1)
(comment "Netlist with cell instances")
(cell:bufx10
(comment "This is a schematic cell with no real position info")
(port:in (layer MET2) (type IN) (pt 0 0 ))
(port:out (layer MET2) (type OUT) (pt 0 0 ))
)
(cell:top
(comment "This is a point to point route (2mm) route")
(instance:src1 (cellRef bufx10) (pt 0 0))
(instance:load1a (cellRef bufx10) (pt 1000.0 1000.0))
(instance:load1b (cellRef bufx10) (pt 1000.0 -1000.0))
(instance:src2 (cellRef bufx10) (pt 0 3))
(instance:load2a (cellRef bufx10) (pt 800 3))
(path:p1a (layer MET2)(pt 0 0)(pt 1000 0)(pt 1000 1000)
(new) (pt 1000 0)(pt 1000 -1000))
(path:p2a (layer MET2)(pt 0 3)(pt 500 3)(pt 800 3))
(net:net1a
(pathRef p1a)
(portRef out (instRef src1))
(portRef in (instRef load1a))
(portRef in (instRef load1b))
)
(net:net2a
(group net2)
(pathRef p2a)
(portRef out (instRef src2))
(portRef in (instRef load2a))
)
)
)
2. A 10-pin net without topology. TRIO can construct the topology
(gdif
(gdifVersion 1 0 0)
(comment 10-pin net)
(cell:top
(port:src (layer MET2) (type OUT) (pt 1500 5800) )
(port:sink1 (layer MET2) (type IN) (pt 500 200) )
(port:sink2 (layer MET2) (type IN) (pt 1500 9900) )
(port:sink3 (layer MET2) (type IN) (pt 6200 7500) )
(port:sink4 (layer MET2) (type IN) (pt 4500 3200) )
(port:sink5 (layer MET2) (type IN) (pt 2900 4900) )
(port:sink6 (layer MET2) (type IN) (pt 9500 8000) )
(port:sink7 (layer MET2) (type IN) (pt 3700 2700) )
(port:sink8 (layer MET2) (type IN) (pt 8100 9600) )
(port:sink9 (layer MET2) (type IN) (pt 600 5200) )
(net:net1
(portRef src)
(portRef sink1)
(portRef sink2)
(portRef sink3)
(portRef sink4)
(portRef sink5)
(portRef sink6)
(portRef sink7)
(portRef sink8)
(portRef sink9)
)
)
)
3. A 4-bit bus structure with topoloty. TRIO can perform GISS
(gdif
(gdifVersion 1 0 0)
(comment 4-bit Bus)
(cell:top
(port:out0 (layer MET2 ) (type OUT) (pt 0 0 ))
(port:out1 (layer MET2 ) (type OUT) (pt 0 3 ))
(port:out2 (layer MET2 ) (type OUT) (pt 0 6 ))
(port:out3 (layer MET2 ) (type OUT) (pt 0 9 ))
(port:in0 (layer MET2 ) (type IN) (pt 10000 0 ))
(port:in1 (layer MET2 ) (type IN) (pt 10000 3 ))
(port:in2 (layer MET2 ) (type IN) (pt 10000 6 ))
(port:in3 (layer MET2 ) (type IN) (pt 10000 9 ))
(path:p0 (layer MET2 ) (pt 0 0 ) (pt 10000 0 ) )
(net:net0
(pathRef p0)
(portRef in0)
(portRef out0)
)
(path:p1 (layer MET2 ) (pt 0 3 ) (pt 10000 3 ) )
(net:net1
(pathRef p1)
(portRef in1)
(portRef out1)
)
(path:p2 (layer MET2 ) (pt 0 6 ) (pt 10000 6 ) )
(net:net2
(pathRef p2)
(portRef in2)
(portRef out2)
)
(path:p3 (layer MET2 )
(new) (pt 0 9 ) (pt 1000 9 )
(new) (pt 1000 9 ) (pt 2000 9 )
(new) (pt 2000 9 ) (pt 3000 9 )
(new) (pt 3000 9 ) (pt 4000 9 )
(new) (pt 4000 9 ) (pt 5000 9 )
(new) (pt 5000 9 ) (pt 6000 9 )
(new) (pt 6000 9 ) (pt 7000 9 )
(new) (pt 7000 9 ) (pt 8000 9 )
(new) (pt 8000 9 ) (pt 9000 9 )
(new) (pt 9000 9 ) (pt 10000 9 )
)
(net:net3
(pathRef p3)
(portRef in3)
(portRef out3)
)
)
)
Go back to TRIO User Manual