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

77 lines
4.0 KiB
Plaintext
Raw Normal View History

ISPD05 loading speed issues. IO PAD support for LEF importation. * New: In Hurricane::IntrusiveMap, introduce IntrusiveMapConst which allow to search with a "const Key&" instead of a "Key", sparing the copy construction of the Key. * Change: In Hurricane::Cell::NetMap, use the new kind of map with "const Name&" key access. This speeds up the Cell::getNet() method by suppressing one copy construction of a Name, which are costly after all... Should review the whole code to use "const Name&" everywhere it is possible. * Change: In Hurricane::Entity & Hurricane::DBo, displace the unique identifier from Entity to DBo (move up to the base class).This to allow us to build deterministic map of DBo requireds in UpdateSession (which is built upon a SharedProperty). WARNING: This break the JSON database exportation support, do not use it until fixed/rewritten. * Change: In Hurricane::Layer, add an attribute to know if a layer is associated to a blockage. Modificate accordingly PyLayer and BasicLayer. * Change: In Hurricane::SharedProperty, the set of owners (DBo*) is now stored in a std::set sorted on the objects Ids, instead of a simple vector. The linera search time through the std::vector was starting to show (ISPD05 bigblue1). * Bug: In Isobar::PyInstance, make full contructor signature (5 arguments) conform to the C++ one. It was only accepting the four first and forcing the placement status to be FIXED. * Bug: In CRL/etc/symbolic/ispd05/kite.conf, update for the new configuration requirements where all distance must be converted into DbU in the file itself (use "helpers.l()", "helpers.m()"). Apply to the cell & routing gauges. * Bug: In CRL/etc/symbolic/ispd05/technology.conf, update for the new configuration. "helpers.initTechno()" *must* by called first thing in this file in order for the Technology to be created. * New: In CRL::AllianceFramework, add matchCellGauge() & matchCellgaugeByHeight() * New: In CRL::CellGauge, add a flag to distinguish gauges meant for IO Pads and an "isPad()" predicate. * Change: In CRL::Ispd05Bookshelf, flush the UpdateSession stack every 1000 elements additions. Maybe not necessary now the the UpdateSession property relies on a std::set instead of a std::vector. * New: In CRL::LefImport, support for SITE and match/create the appropriate CellGauge on the fly. Specific support for MACROS that are flagged PAD. Add a dedicated post-treatment for PAD connectors, extend them toward the boundary of the nearest abutment box side. Tested only on AMS 350nm c35b4 for now. This part is most likely to be tweaked for every kind of real foundry pad that we may encounter... * Change: In EtesianEngine::findYSpin(), use the C++ "for" construct to loop over Collections. * Change: In Unicorn/cgt.py, register the Python/C++ tutorial support by default.
2019-04-22 05:16:16 -05:00
# -*- Mode:Python; explicit-buffer-name: "kite.conf<ispd05>" -*-
import helpers
ISPD05 loading speed issues. IO PAD support for LEF importation. * New: In Hurricane::IntrusiveMap, introduce IntrusiveMapConst which allow to search with a "const Key&" instead of a "Key", sparing the copy construction of the Key. * Change: In Hurricane::Cell::NetMap, use the new kind of map with "const Name&" key access. This speeds up the Cell::getNet() method by suppressing one copy construction of a Name, which are costly after all... Should review the whole code to use "const Name&" everywhere it is possible. * Change: In Hurricane::Entity & Hurricane::DBo, displace the unique identifier from Entity to DBo (move up to the base class).This to allow us to build deterministic map of DBo requireds in UpdateSession (which is built upon a SharedProperty). WARNING: This break the JSON database exportation support, do not use it until fixed/rewritten. * Change: In Hurricane::Layer, add an attribute to know if a layer is associated to a blockage. Modificate accordingly PyLayer and BasicLayer. * Change: In Hurricane::SharedProperty, the set of owners (DBo*) is now stored in a std::set sorted on the objects Ids, instead of a simple vector. The linera search time through the std::vector was starting to show (ISPD05 bigblue1). * Bug: In Isobar::PyInstance, make full contructor signature (5 arguments) conform to the C++ one. It was only accepting the four first and forcing the placement status to be FIXED. * Bug: In CRL/etc/symbolic/ispd05/kite.conf, update for the new configuration requirements where all distance must be converted into DbU in the file itself (use "helpers.l()", "helpers.m()"). Apply to the cell & routing gauges. * Bug: In CRL/etc/symbolic/ispd05/technology.conf, update for the new configuration. "helpers.initTechno()" *must* by called first thing in this file in order for the Technology to be created. * New: In CRL::AllianceFramework, add matchCellGauge() & matchCellgaugeByHeight() * New: In CRL::CellGauge, add a flag to distinguish gauges meant for IO Pads and an "isPad()" predicate. * Change: In CRL::Ispd05Bookshelf, flush the UpdateSession stack every 1000 elements additions. Maybe not necessary now the the UpdateSession property relies on a std::set instead of a std::vector. * New: In CRL::LefImport, support for SITE and match/create the appropriate CellGauge on the fly. Specific support for MACROS that are flagged PAD. Add a dedicated post-treatment for PAD connectors, extend them toward the boundary of the nearest abutment box side. Tested only on AMS 350nm c35b4 for now. This part is most likely to be tweaked for every kind of real foundry pad that we may encounter... * Change: In EtesianEngine::findYSpin(), use the C++ "for" construct to loop over Collections. * Change: In Unicorn/cgt.py, register the Python/C++ tutorial support by default.
2019-04-22 05:16:16 -05:00
from helpers import l, u, n
# 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 ,3 , { 'min':0, 'max':20 } )
, ("kite.vTracksReservedLocal" ,TypeInt ,3 , { 'min':0, 'max':20 } )
, ("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 } )
ISPD05 loading speed issues. IO PAD support for LEF importation. * New: In Hurricane::IntrusiveMap, introduce IntrusiveMapConst which allow to search with a "const Key&" instead of a "Key", sparing the copy construction of the Key. * Change: In Hurricane::Cell::NetMap, use the new kind of map with "const Name&" key access. This speeds up the Cell::getNet() method by suppressing one copy construction of a Name, which are costly after all... Should review the whole code to use "const Name&" everywhere it is possible. * Change: In Hurricane::Entity & Hurricane::DBo, displace the unique identifier from Entity to DBo (move up to the base class).This to allow us to build deterministic map of DBo requireds in UpdateSession (which is built upon a SharedProperty). WARNING: This break the JSON database exportation support, do not use it until fixed/rewritten. * Change: In Hurricane::Layer, add an attribute to know if a layer is associated to a blockage. Modificate accordingly PyLayer and BasicLayer. * Change: In Hurricane::SharedProperty, the set of owners (DBo*) is now stored in a std::set sorted on the objects Ids, instead of a simple vector. The linera search time through the std::vector was starting to show (ISPD05 bigblue1). * Bug: In Isobar::PyInstance, make full contructor signature (5 arguments) conform to the C++ one. It was only accepting the four first and forcing the placement status to be FIXED. * Bug: In CRL/etc/symbolic/ispd05/kite.conf, update for the new configuration requirements where all distance must be converted into DbU in the file itself (use "helpers.l()", "helpers.m()"). Apply to the cell & routing gauges. * Bug: In CRL/etc/symbolic/ispd05/technology.conf, update for the new configuration. "helpers.initTechno()" *must* by called first thing in this file in order for the Technology to be created. * New: In CRL::AllianceFramework, add matchCellGauge() & matchCellgaugeByHeight() * New: In CRL::CellGauge, add a flag to distinguish gauges meant for IO Pads and an "isPad()" predicate. * Change: In CRL::Ispd05Bookshelf, flush the UpdateSession stack every 1000 elements additions. Maybe not necessary now the the UpdateSession property relies on a std::set instead of a std::vector. * New: In CRL::LefImport, support for SITE and match/create the appropriate CellGauge on the fly. Specific support for MACROS that are flagged PAD. Add a dedicated post-treatment for PAD connectors, extend them toward the boundary of the nearest abutment box side. Tested only on AMS 350nm c35b4 for now. This part is most likely to be tweaked for every kind of real foundry pad that we may encounter... * Change: In EtesianEngine::findYSpin(), use the C++ "for" construct to loop over Collections. * Change: In Unicorn/cgt.py, register the Python/C++ tutorial support by default.
2019-04-22 05:16:16 -05:00
# Anabatic & Katana parameters are temporarily hosted here.
, ('anabatic.routingGauge' ,TypeString , 'sxlib' )
, ("anabatic.globalLengthThreshold" ,TypeInt ,1450 )
, ("anabatic.saturateRatio" ,TypePercentage,80 )
, ("anabatic.saturateRp" ,TypeInt ,8 )
, ('anabatic.topRoutingLayer' ,TypeString , 'METAL5')
, ("anabatic.edgeLength" ,TypeInt ,24 )
, ("anabatic.edgeWidth" ,TypeInt ,4 )
, ("anabatic.edgeCostH" ,TypeDouble ,19.0 )
, ("anabatic.edgeCostK" ,TypeDouble ,-60.0 )
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 } )
ISPD05 loading speed issues. IO PAD support for LEF importation. * New: In Hurricane::IntrusiveMap, introduce IntrusiveMapConst which allow to search with a "const Key&" instead of a "Key", sparing the copy construction of the Key. * Change: In Hurricane::Cell::NetMap, use the new kind of map with "const Name&" key access. This speeds up the Cell::getNet() method by suppressing one copy construction of a Name, which are costly after all... Should review the whole code to use "const Name&" everywhere it is possible. * Change: In Hurricane::Entity & Hurricane::DBo, displace the unique identifier from Entity to DBo (move up to the base class).This to allow us to build deterministic map of DBo requireds in UpdateSession (which is built upon a SharedProperty). WARNING: This break the JSON database exportation support, do not use it until fixed/rewritten. * Change: In Hurricane::Layer, add an attribute to know if a layer is associated to a blockage. Modificate accordingly PyLayer and BasicLayer. * Change: In Hurricane::SharedProperty, the set of owners (DBo*) is now stored in a std::set sorted on the objects Ids, instead of a simple vector. The linera search time through the std::vector was starting to show (ISPD05 bigblue1). * Bug: In Isobar::PyInstance, make full contructor signature (5 arguments) conform to the C++ one. It was only accepting the four first and forcing the placement status to be FIXED. * Bug: In CRL/etc/symbolic/ispd05/kite.conf, update for the new configuration requirements where all distance must be converted into DbU in the file itself (use "helpers.l()", "helpers.m()"). Apply to the cell & routing gauges. * Bug: In CRL/etc/symbolic/ispd05/technology.conf, update for the new configuration. "helpers.initTechno()" *must* by called first thing in this file in order for the Technology to be created. * New: In CRL::AllianceFramework, add matchCellGauge() & matchCellgaugeByHeight() * New: In CRL::CellGauge, add a flag to distinguish gauges meant for IO Pads and an "isPad()" predicate. * Change: In CRL::Ispd05Bookshelf, flush the UpdateSession stack every 1000 elements additions. Maybe not necessary now the the UpdateSession property relies on a std::set instead of a std::vector. * New: In CRL::LefImport, support for SITE and match/create the appropriate CellGauge on the fly. Specific support for MACROS that are flagged PAD. Add a dedicated post-treatment for PAD connectors, extend them toward the boundary of the nearest abutment box side. Tested only on AMS 350nm c35b4 for now. This part is most likely to be tweaked for every kind of real foundry pad that we may encounter... * Change: In EtesianEngine::findYSpin(), use the C++ "for" construct to loop over Collections. * Change: In Unicorn/cgt.py, register the Python/C++ tutorial support by default.
2019-04-22 05:16:16 -05:00
, ("anabatic.gcell.displayMode" ,TypeEnumerate ,1
, { 'values':( ("Boundary" , 1)
, ("Density" , 2) ) }
)
, ("katana.hTracksReservedLocal" ,TypeInt ,3 , { 'min':0, 'max':20 } )
, ("katana.vTracksReservedLocal" ,TypeInt ,3 , { 'min':0, 'max':20 } )
, ("katana.eventsLimit" ,TypeInt ,4000002 )
, ("katana.ripupCost" ,TypeInt ,3 , { 'min':0 } )
, ("katana.strapRipupLimit" ,TypeInt ,16 , { 'min':1 } )
, ("katana.localRipupLimit" ,TypeInt ,9 , { 'min':1 } )
, ("katana.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
, ("katana.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
, ('chip.padCoreSide' ,TypeString ,'South' )
)
# 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) )
routingGaugesTable = {}
routingGaugesTable['sxlib'] = \
ISPD05 loading speed issues. IO PAD support for LEF importation. * New: In Hurricane::IntrusiveMap, introduce IntrusiveMapConst which allow to search with a "const Key&" instead of a "Key", sparing the copy construction of the Key. * Change: In Hurricane::Cell::NetMap, use the new kind of map with "const Name&" key access. This speeds up the Cell::getNet() method by suppressing one copy construction of a Name, which are costly after all... Should review the whole code to use "const Name&" everywhere it is possible. * Change: In Hurricane::Entity & Hurricane::DBo, displace the unique identifier from Entity to DBo (move up to the base class).This to allow us to build deterministic map of DBo requireds in UpdateSession (which is built upon a SharedProperty). WARNING: This break the JSON database exportation support, do not use it until fixed/rewritten. * Change: In Hurricane::Layer, add an attribute to know if a layer is associated to a blockage. Modificate accordingly PyLayer and BasicLayer. * Change: In Hurricane::SharedProperty, the set of owners (DBo*) is now stored in a std::set sorted on the objects Ids, instead of a simple vector. The linera search time through the std::vector was starting to show (ISPD05 bigblue1). * Bug: In Isobar::PyInstance, make full contructor signature (5 arguments) conform to the C++ one. It was only accepting the four first and forcing the placement status to be FIXED. * Bug: In CRL/etc/symbolic/ispd05/kite.conf, update for the new configuration requirements where all distance must be converted into DbU in the file itself (use "helpers.l()", "helpers.m()"). Apply to the cell & routing gauges. * Bug: In CRL/etc/symbolic/ispd05/technology.conf, update for the new configuration. "helpers.initTechno()" *must* by called first thing in this file in order for the Technology to be created. * New: In CRL::AllianceFramework, add matchCellGauge() & matchCellgaugeByHeight() * New: In CRL::CellGauge, add a flag to distinguish gauges meant for IO Pads and an "isPad()" predicate. * Change: In CRL::Ispd05Bookshelf, flush the UpdateSession stack every 1000 elements additions. Maybe not necessary now the the UpdateSession property relies on a std::set instead of a std::vector. * New: In CRL::LefImport, support for SITE and match/create the appropriate CellGauge on the fly. Specific support for MACROS that are flagged PAD. Add a dedicated post-treatment for PAD connectors, extend them toward the boundary of the nearest abutment box side. Tested only on AMS 350nm c35b4 for now. This part is most likely to be tweaked for every kind of real foundry pad that we may encounter... * Change: In EtesianEngine::findYSpin(), use the C++ "for" construct to loop over Collections. * Change: In Unicorn/cgt.py, register the Python/C++ tutorial support by default.
2019-04-22 05:16:16 -05:00
( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, l(0), l(5), l(2), l(1), l(4) ) )
, ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, l(0), l(5), l(2), l(1), l(4) ) )
, ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, l(0), l(5), l(2), l(1), l(4) ) )
, ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, l(0), l(5), l(2), l(1), l(4) ) )
, ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, l(0), l(5), l(2), l(1), l(4) ) )
#, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, l(0), l(5), l(2), l(1), l(4) ) )
#, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, l(0), l(5), l(2), l(1), l(4) ) )
)
# Format of cellGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_PIN, xy_common_pitch, slice_height, slice_step )
cellGaugesTable = {}
ISPD05 loading speed issues. IO PAD support for LEF importation. * New: In Hurricane::IntrusiveMap, introduce IntrusiveMapConst which allow to search with a "const Key&" instead of a "Key", sparing the copy construction of the Key. * Change: In Hurricane::Cell::NetMap, use the new kind of map with "const Name&" key access. This speeds up the Cell::getNet() method by suppressing one copy construction of a Name, which are costly after all... Should review the whole code to use "const Name&" everywhere it is possible. * Change: In Hurricane::Entity & Hurricane::DBo, displace the unique identifier from Entity to DBo (move up to the base class).This to allow us to build deterministic map of DBo requireds in UpdateSession (which is built upon a SharedProperty). WARNING: This break the JSON database exportation support, do not use it until fixed/rewritten. * Change: In Hurricane::Layer, add an attribute to know if a layer is associated to a blockage. Modificate accordingly PyLayer and BasicLayer. * Change: In Hurricane::SharedProperty, the set of owners (DBo*) is now stored in a std::set sorted on the objects Ids, instead of a simple vector. The linera search time through the std::vector was starting to show (ISPD05 bigblue1). * Bug: In Isobar::PyInstance, make full contructor signature (5 arguments) conform to the C++ one. It was only accepting the four first and forcing the placement status to be FIXED. * Bug: In CRL/etc/symbolic/ispd05/kite.conf, update for the new configuration requirements where all distance must be converted into DbU in the file itself (use "helpers.l()", "helpers.m()"). Apply to the cell & routing gauges. * Bug: In CRL/etc/symbolic/ispd05/technology.conf, update for the new configuration. "helpers.initTechno()" *must* by called first thing in this file in order for the Technology to be created. * New: In CRL::AllianceFramework, add matchCellGauge() & matchCellgaugeByHeight() * New: In CRL::CellGauge, add a flag to distinguish gauges meant for IO Pads and an "isPad()" predicate. * Change: In CRL::Ispd05Bookshelf, flush the UpdateSession stack every 1000 elements additions. Maybe not necessary now the the UpdateSession property relies on a std::set instead of a std::vector. * New: In CRL::LefImport, support for SITE and match/create the appropriate CellGauge on the fly. Specific support for MACROS that are flagged PAD. Add a dedicated post-treatment for PAD connectors, extend them toward the boundary of the nearest abutment box side. Tested only on AMS 350nm c35b4 for now. This part is most likely to be tweaked for every kind of real foundry pad that we may encounter... * Change: In EtesianEngine::findYSpin(), use the C++ "for" construct to loop over Collections. * Change: In Unicorn/cgt.py, register the Python/C++ tutorial support by default.
2019-04-22 05:16:16 -05:00
cellGaugesTable['ispd05'] = ('metal2', l(5.0), l(60.0), l(5.0))