67 lines
3.2 KiB
C++
67 lines
3.2 KiB
C++
|
|
// -*- C++ -*-
|
|
|
|
namespace Katabatic {
|
|
|
|
/*! \class AutoContactTerminal
|
|
*
|
|
* \brief AutoContact Terminal (S/T is a Terminal)
|
|
*
|
|
* AutoContact that are directly attached by either source or target
|
|
* or both to a terminal.
|
|
*/
|
|
|
|
//! \function AutoContactTerminal* AutoContactTerminal::create ( GCell* gcell, Component* rp, const Layer* layer, const DbU::Unit x, const DbU::Unit y, const DbU::Unit width, const DbU::Unit height );
|
|
//! \param gcell The GCell into which create the AutoContact.
|
|
//! \param rp The Component on which to anchor the AutoContact.
|
|
//! \param layer The Layer of the AutoContact.
|
|
//! \param x The absolute X position.
|
|
//! \param y The absolute Y position.
|
|
//! \param width The width of the AutoContact.
|
|
//! \param height The height of the AutoContact.
|
|
//! \return The created AutoContact.
|
|
//!
|
|
//! Create a new AutoContactTerminal anchored on \c rp. <code>(x,y)</code> gives
|
|
//! the \e absolute position.
|
|
//!
|
|
//! The anchor component \c rp is most often a Hurricane::RoutingPad (occurrencing
|
|
//! a Hurricane::Segment) or directly a Hurricane::Segment, in case of RoutingPad
|
|
//! layer promotion.
|
|
|
|
//! \function AutoContactTerminal* AutoContactTerminal::create ( GCell* gcell, Component* rp, const Layer* layer, Point point, const DbU::Unit width, const DbU::Unit height );
|
|
//! \param gcell The GCell into which create the AutoContact.
|
|
//! \param rp The RoutingPad on which to anchor the AutoContact.
|
|
//! \param layer The Layer of the AutoContact.
|
|
//! \param point The absolute position.
|
|
//! \param width The width of the AutoContact.
|
|
//! \param height The height of the AutoContact.
|
|
//! \return The created AutoContact.
|
|
//!
|
|
//! Create a new AutoContactTerminal anchored on \c rp. \c point gives
|
|
//! the \e absolute position.
|
|
|
|
//! \function void AutoContactTerminal::updateTopology ();
|
|
//! Restore the topology (i.e. connexity) of the contact after the incident
|
|
//! segment has changed layer.
|
|
//!
|
|
//! Based on the layer depth delta between the terminal and the segment
|
|
//! three case can occurs:
|
|
//! - The delta is \b zero, then just sets the layer of the contact
|
|
//! to the common metal layer.
|
|
//! - The delta is \b one, then sets the contact layer to VIA connecting
|
|
//! the two layers.
|
|
//! - The delta is \b two, then create a dogleg to restore the connexity.
|
|
//! Depending on whether the terminal was attached to the source or
|
|
//! target, sets the layer of the segments.
|
|
//! - A delta of more than \b two is an error, and must never occurs.
|
|
//!
|
|
//! As, by default, the perpandicular is set in the layer above the
|
|
//! parallel, it may be necessary to adjust his layer as well (to the
|
|
//! one below).
|
|
//!
|
|
//! \image html updateTopologyTerminal.png "Update Terminal Topology"
|
|
|
|
}
|
|
|
|
|