coriolis/crlcore/etc/symbolic/vsc200/kite.conf

53 lines
2.4 KiB
Plaintext
Raw Normal View History

# -*- Mode:Python; explicit-buffer-name: "kite.conf<vsc200>" -*-
import helpers
# Contains the layout (shared by all technologies).
execfile( helpers.sysConfDir+'/common/kite.conf' )
parametersTable = \
( ('lefImport.minTerminalWidth' ,TypeDouble ,0.0 )
, ("katabatic.globalLengthThreshold",TypeInt ,1450 ) # Katabatic parameters.
, ("katabatic.saturateRatio" ,TypePercentage,80 )
, ("katabatic.saturateRp" ,TypeInt ,8 )
, ('katabatic.topRoutingLayer' ,TypeString , 'METAL5')
# Kite parameters.
, ("kite.hTracksReservedLocal" ,TypeInt ,4 , { 'min':0, 'max':18 } )
, ("kite.vTracksReservedLocal" ,TypeInt ,3 , { 'min':0, 'max':18 } )
, ("kite.eventsLimit" ,TypeInt ,4000002 )
, ("kite.ripupCost" ,TypeInt ,3 , { 'min':0 } )
, ("kite.strapRipupLimit" ,TypeInt ,16 , { 'min':1 } )
, ("kite.localRipupLimit" ,TypeInt ,9 , { 'min':1 } )
, ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
, ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
Corrections in the Dijkstra global routing (ripup) mechanism. * Bug: In Anabatic::Dijkstra, the degree of a vertex (the number of neighbors belonging to the same net) was miscalculated. This was leading, in the materialize step to some feed-through vertexes not being broken. Leading in turn to incomplete transformation of the detailed routing. Also in _trackback(), the degree of the first vertex we were backtracking from was not incremented. * Bug: In Anabatic::Dijkstra::materialize(), systematically use GCell::breakGoThrough() on both source and target. This is needed when we are in the ripup phase as both source and target can be go-through. This was also leading to incomplete detailed routing transformation. * Change: In Anabatic::Edge::ripup(), ripup one third of the segments instead of thoses exeeding the global length threshold. This way we are sure to desaturate an edge. Needs to be further calibrated. * Change: In Aanabatic::GCell::breakGoThrough(), no longer return NULL. Return existing gcontact if any. Break if it is a go-through and create a new gcontact in last resort. Maybe rename this function. * New: In Anabatic::Configuration, new parameters: - anabatic.edgeHScaling, to adjust the length of the horizontal edges relative to the vertical ones (this is a ratio). - anabatic.globalIterations, set the maximum number of ripup passes of the global router. * New: In CRL/etc/*/kite.conf, added new parameters anabatic.edgeHScaling and anabatic.globalIterations. * New: In Katana::GlobalRoute::DigitalDistance, take into account the new edgeHScaling factor. Must be used when the capacity of V-edges differs greatly for H-edges (case of AMS 350nm c35b4 for instance). * Bug: In Katana::GlobalRoute::DigitalDistance, the historic cost is computed for an edge length of "1". Must be multiplicated by the current edge length to have any measurable effect. This bug is finally explaining why the ripup was producing the same solutions over and over, the historical cost was negligible!
2018-04-16 05:10:48 -05:00
, ("anabatic.edgeHScaling" ,TypeDouble ,1.0 )
, ("anabatic.globalIterations" ,TypeInt ,10 , { 'min':1, 'max':100 } )
)
# Format of routingGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width, obs_dw) )
Support for Net alias names. Blif parser enhancements. * New: In Hurricane, In Net & Cell, support for Net aliases names. Use a structure based on a simple ring of NetAliasHook. The Net holds a global map, sorted by names of all the aliases of all Nets. Elements NetAliasesHook of the map are slaves of ring whose master is an attribute of the Net (it is *not* in the map, as the primary name of the Net). In case of merge, the aliases of both Nets are merged and the name of the merged one become an alias. The Cell::getNet() looks in both the Net map and the aliases to find a Net by name. * Bug: In CRL Core, in coriolisInit.py, reoder the loading of the configuration files so the real technology is read as early as possible to set up the <gridsPerLambda> factor before any lambda is actually computed... * Bug: In CRL Core, in AcmSigda, do not try to fed the file when it has failed to be opened. Throw a clean exception instead. * New: In CRL Core, in Toolbox, add a NamingScheme object to convert a design into VHDL compliant names (mainly from Blif/Verilog). This is extensible in any case. * New: In CRL Core, in BlifParser, slightly more informative warning messages. Align the loading progress information on the other parsers. Add a capability to select which component of the design will be returned, if there are more than one. Use the "." as separator. For exemple you can request "Processor.Alu", which will load the "Alu" component from the design in "Processor.blif". To be able to save a Blif loaded design, systematically convert all the name for VHDL compliance, as it is the format used by the Coriolis native files (vst). Export the Blif parser to the Python interface. * New: In Kite, In NegociateWindow, add a counter of the number of remaining events. Gives an idea of the ETA... * New: In Unicorn, in cgt.by, add an option to load a Blif design from the command line. * New: In Cumulus, new RSave plugin to save both netlist & layout. Partly redundant with the previous one. Have to better organize that later.
2015-04-16 08:40:02 -05:00
routingGaugesTable = {}
routingGaugesTable['vsclib'] = \
( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 4, 8, 3, 2, 6.5 ) )
, ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 8, 4, 2, 6 ) )
, ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 4, 8, 4, 2, 6 ) )
, ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 8, 4, 2, 6 ) )
, ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 4, 8, 4, 2, 6 ) )
#, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 8, 4, 2, 6 ) )
#, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 4, 8, 4, 2, 6 ) )
)
# Format of cellGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_PIN, xy_common_pitch, slice_height, slice_step )
cellGaugesTable = {}
cellGaugesTable['vsclib'] = ('metal2', 8.0, 72.0, 8.0)