coriolis/bora/src/ChannelRouting.cpp

95 lines
2.4 KiB
C++

// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2015-2018, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
// | B o r a - A n a l o g S l i c i n g T r e e |
// | |
// | Authors : Eric LAO |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Module : "./ChannelRouting.cpp" |
// +-----------------------------------------------------------------+
#include "bora/ChannelRouting.h"
namespace Bora {
using namespace std;
// -------------------------------------------------------------------
// Class : "Bora::ChannelRouting".
ChannelRouting::ChannelRouting ()
: _wireIntervals()
{ }
ChannelRouting::~ChannelRouting ()
{ }
ChannelRouting* ChannelRouting::create ()
{
return new ChannelRouting();
}
void ChannelRouting::destroy ()
{
delete this;
}
void ChannelRouting::reset ()
{
_wireIntervals.clear();
}
int ChannelRouting::getMaxCount () const
{
return _wireIntervals.getThickness();
}
void ChannelRouting::insertChannel ( DbU::Unit xy1, DbU::Unit xy2, unsigned int w )
{
cdebug_log(535,0) << "ChannelRouting::insertChannel(DbU::Unit,DbU::Unit,unsigned) ["
<< DbU::getValueString(xy1) << " : "
<< DbU::getValueString(xy2) << "] width:"
<< w << endl;
for ( unsigned int i=0; i<w; ++i ) insertChannel( xy1, xy2, (Net*)NULL );
}
void ChannelRouting::insertChannel ( DbU::Unit xy1, DbU::Unit xy2, Net* net )
{
cdebug_log(535,0) << "ChannelRouting::insertChannel(DbU::Unit,DbU::Unit) ["
<< DbU::getValueString(xy1) << " : "
<< DbU::getValueString(xy2) << "] "
<< net
<< endl;
_wireIntervals.insert( WireInterval(net,xy1,xy2) );
}
void ChannelRouting::print () const
{
cerr << "Thickness: " << getMaxCount() << endl;
cerr << "Wires:" << endl;
for ( const WireInterval& wire : _wireIntervals.getElements() )
cerr << "| " << wire << endl;
}
} // Bora namespace.