New parameter "katana.trackFill" to control the dummy fill ratio.

This commit is contained in:
Jean-Paul Chaput 2021-06-27 20:16:42 +02:00
parent 106bc89cb5
commit c6f703b1cc
4 changed files with 12 additions and 3 deletions

View File

@ -51,6 +51,7 @@ namespace Katana {
, _ripupCost (Cfg::getParamInt ("katana.ripupCost" , 3)->asInt())
, _eventsLimit (Cfg::getParamInt ("katana.eventsLimit" ,4000000)->asInt())
, _bloatOverloadAdd (Cfg::getParamInt ("katana.bloatOverloadAdd" , 4)->asInt())
, _trackFill (Cfg::getParamInt ("katana.trackFill" , 0)->asInt())
, _flags (0)
, _profileEventCosts (Cfg::getParamBool("katana.profileEventCosts" ,false )->asBool())
, _runRealignStage (Cfg::getParamBool("katana.runRealignStage" ,true )->asBool())
@ -99,6 +100,7 @@ namespace Katana {
, _ripupCost (other._ripupCost)
, _eventsLimit (other._eventsLimit)
, _bloatOverloadAdd (other._bloatOverloadAdd)
, _trackFill (other._trackFill)
, _flags (other._flags)
, _profileEventCosts (other._profileEventCosts)
, _runRealignStage (other._runRealignStage)
@ -188,6 +190,7 @@ namespace Katana {
cout << Dots::asUInt (" - Ripup limit, globals" ,_ripupLimits[GlobalRipupLimit]) << endl;
cout << Dots::asUInt (" - Ripup limit, long globals" ,_ripupLimits[LongGlobalRipupLimit]) << endl;
cout << Dots::asUInt (" - Bloat overload additional penalty" ,_bloatOverloadAdd) << endl;
cout << Dots::asUInt (" - Fill every nth track" ,_trackFill) << endl;
Super::print( cell );
}

View File

@ -1168,7 +1168,8 @@ namespace Katana {
void Track::fillHole ( DbU::Unit umin, DbU::Unit umax ) const
{
if (getIndex() % 2) return;
if (not getKatanaEngine()->getTrackFill()) return;
if (getIndex() % getKatanaEngine()->getTrackFill() != 0) return;
if (getLayerGauge()->getType() == Constant::PinOnly) return;
if (getLayerGauge()->getDepth() > getKatanaEngine()->getConfiguration()->getAllowedDepth()) return;

View File

@ -1,14 +1,14 @@
// -*- mode: C++; explicit-buffer-name: "Configuration.h<katana>" -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2008-2018, All Rights Reserved
// Copyright (c) SU 2008-2021, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r |
// | |
// | Author : Jean-Paul CHAPUT |
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Header : "./katana/Configuration.h" |
// +-----------------------------------------------------------------+
@ -81,6 +81,7 @@ namespace Katana {
inline uint32_t getHTracksReservedMin () const;
inline uint32_t getVTracksReservedMin () const;
inline uint32_t getTermSatThreshold () const;
inline uint32_t getTrackFill () const;
inline void setEventsLimit ( uint64_t );
inline void setRipupCost ( uint32_t );
void setRipupLimit ( uint32_t limit, uint32_t type );
@ -112,6 +113,7 @@ namespace Katana {
uint32_t _ripupCost;
uint64_t _eventsLimit;
uint32_t _bloatOverloadAdd;
uint32_t _trackFill;
unsigned int _flags;
bool _profileEventCosts;
bool _runRealignStage;
@ -135,6 +137,7 @@ namespace Katana {
inline uint32_t Configuration::getHTracksReservedMin () const { return _hTracksReservedMin; }
inline uint32_t Configuration::getVTracksReservedMin () const { return _vTracksReservedMin; }
inline uint32_t Configuration::getTermSatThreshold () const { return _termSatThreshold; }
inline uint32_t Configuration::getTrackFill () const { return _trackFill; }
inline void Configuration::setBloatOverloadAdd ( uint32_t add ) { _bloatOverloadAdd = add; }
inline void Configuration::setRipupCost ( uint32_t cost ) { _ripupCost = cost; }
inline void Configuration::setPostEventCb ( PostEventCb_t cb ) { _postEventCb = cb; }

View File

@ -95,6 +95,7 @@ namespace Katana {
inline uint32_t getVTracksReservedLocal () const;
inline uint32_t getTermSatReservedLocal () const;
inline uint32_t getTermSatThreshold () const;
inline uint32_t getTrackFill () const;
inline bool profileEventCosts () const;
virtual const Name& getName () const;
inline Configuration::PostEventCb_t&
@ -211,6 +212,7 @@ namespace Katana {
inline uint32_t KatanaEngine::getTermSatReservedLocal () const { return _configuration->getTermSatReservedLocal(); }
inline uint32_t KatanaEngine::getTermSatThreshold () const { return _configuration->getTermSatThreshold(); }
inline uint32_t KatanaEngine::getRipupLimit ( uint32_t type ) const { return _configuration->getRipupLimit(type); }
inline uint32_t KatanaEngine::getTrackFill () const { return _configuration->getTrackFill(); }
inline bool KatanaEngine::profileEventCosts () const { return _configuration->profileEventCosts(); }
inline const DataSymmetricMap& KatanaEngine::getSymmetrics () const { return _symmetrics; }
inline Block* KatanaEngine::getBlock ( size_t i ) const { return (i < _blocks.size()) ? _blocks[i] : NULL; }