45 lines
1.9 KiB
C++
45 lines
1.9 KiB
C++
|
|
// -*- C++ -*-
|
|
|
|
namespace Katabatic {
|
|
|
|
/*! \class AutoContactTurn
|
|
*
|
|
* \brief AutoContact Turn (one H, one V)
|
|
*
|
|
* AutoContact to make a turn (one H, one V).
|
|
*/
|
|
|
|
//! \function AutoContactTurn* AutoContactTurn::create ( GCell* gcell, Net* net, const Layer* layer );
|
|
//! \param gcell The GCell into which create the AutoContact.
|
|
//! \param net The Net to which this AutoContact belongs.
|
|
//! \param layer The Layer of the AutoContact.
|
|
//! \return The created AutoContactTurn.
|
|
//!
|
|
//! Create a new AutoContactTurn.
|
|
|
|
//! \function void AutoContactTurn::updateTopology ();
|
|
//! Restore the topology (i.e. connexity) of the contact after one or both
|
|
//! connected segments has changed layer.
|
|
//!
|
|
//! Based on the layer depth delta between the two perpandiculars segments.
|
|
//! Three case can occurs:
|
|
//! - The delta is \b zero, then just sets the layer of the contact
|
|
//! to the common metal layer (turn in same layer).
|
|
//! - The delta is \b one, then sets the contact layer to VIA connecting
|
|
//! the two layers.
|
|
//! - The delta <b>cannot be equal to two</b>, due to the alternatives
|
|
//! routing directions, it would mean a \e turn connecting two \e horizontals
|
|
//! (or verticals) in different layers.
|
|
//! - The delta is \b three, then create a dogleg to restore the connexity.
|
|
//! The dogleg will be created on the connected segment which as been
|
|
//! <em>layer invalidated</em>. If both of them have been invalidated,
|
|
//! the horizontal one is preferred.
|
|
//! - A delta of more than \b three is an error, and must never occurs.
|
|
//!
|
|
//! \image html updateTopologyTurn.png "Update Turn Topology"
|
|
|
|
}
|
|
|
|
|