413 lines
15 KiB
Groff
413 lines
15 KiB
Groff
.TH "Katabatic" 3 "Fri Oct 1 2021" "Version 1.0" "Katabatic - Routing Toolbox" \" -*- nroff -*-
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
Katabatic \- The namespace dedicated to \fBKatabatic\fP\&.
|
|
|
|
.SH SYNOPSIS
|
|
.br
|
|
.PP
|
|
.SS "Classes"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "class \fBAutoContact\fP"
|
|
.br
|
|
.RI "Abstract base class for \fBAutoContact\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoContactHTee\fP"
|
|
.br
|
|
.RI "\fBAutoContact\fP H-Tee (two H, one V) "
|
|
.ti -1c
|
|
.RI "class \fBAutoContactTerminal\fP"
|
|
.br
|
|
.RI "\fBAutoContact\fP Terminal (S/T is a Terminal) "
|
|
.ti -1c
|
|
.RI "class \fBAutoContactTurn\fP"
|
|
.br
|
|
.RI "\fBAutoContact\fP Turn (one H, one V) "
|
|
.ti -1c
|
|
.RI "class \fBAutoContactVTee\fP"
|
|
.br
|
|
.RI "\fBAutoContact\fP V-Tee (one H, two V) "
|
|
.ti -1c
|
|
.RI "class \fBAutoHorizontal\fP"
|
|
.br
|
|
.RI "Concrete Horizontal \fBAutoSegment\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegment\fP"
|
|
.br
|
|
.RI "Abstract base class for \fBAutoSegment\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegments_Aligneds\fP"
|
|
.br
|
|
.RI "All aligned \fBAutoSegment\fP of a set\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegments_AnchorOnGCell\fP"
|
|
.br
|
|
.RI "All \fBAutoSegment\fP Beginning and/or Stopping in a \fBGCell\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegments_InDirection\fP"
|
|
.br
|
|
.RI "Filter to select \fBAutoSegment\fP in a given direction\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegments_IsAccountable\fP"
|
|
.br
|
|
.RI "Filter to select accoutable \fBAutoSegment\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegments_OnContact\fP"
|
|
.br
|
|
.RI "All \fBAutoSegment\fP anchored on a Contact\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoSegments_Perpandiculars\fP"
|
|
.br
|
|
.RI "All perpandicular \fBAutoSegment\fP to a set of aligneds\&. "
|
|
.ti -1c
|
|
.RI "class \fBAutoVertical\fP"
|
|
.br
|
|
.RI "Concrete Vertical \fBAutoSegment\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBBaseGrid\fP"
|
|
.br
|
|
.RI "Abstract Base Class for Irregular \fBGrid\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBBaseObserver\fP"
|
|
.br
|
|
.RI "\fBObserver\fP Design Pattern, \fBObserver\fP part\&. "
|
|
.ti -1c
|
|
.RI "class \fBChipTools\fP"
|
|
.br
|
|
.RI "Utilities for Chip Level Design\&. "
|
|
.ti -1c
|
|
.RI "class \fBGCell\fP"
|
|
.br
|
|
.RI "Routing Global Cell\&. "
|
|
.ti -1c
|
|
.RI "class \fBGCellDensitySet\fP"
|
|
.br
|
|
.RI "\fBGCell\fP Set, sorted by density\&. "
|
|
.ti -1c
|
|
.RI "class \fBGCellGrid\fP"
|
|
.br
|
|
.RI "\fBGCell\fP \fBGrid\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBGrid\fP"
|
|
.br
|
|
.RI "Template Class for Regular \fBGrid\fP\&. "
|
|
.ti -1c
|
|
.RI "class \fBKatabaticEngine\fP"
|
|
.br
|
|
.RI "The \fBKatabatic\fP Tool\&. "
|
|
.ti -1c
|
|
.RI "class \fBLocatorHelper\fP"
|
|
.br
|
|
.RI "Locator Helper Collection's Locators\&. "
|
|
.ti -1c
|
|
.RI "class \fBObservable\fP"
|
|
.br
|
|
.RI "\fBObserver\fP Design Pattern, Subject part\&. "
|
|
.ti -1c
|
|
.RI "class \fBObserver\fP"
|
|
.br
|
|
.RI "\fBObserver\fP Design Pattern, \fBObserver\fP part\&. "
|
|
.ti -1c
|
|
.RI "class \fBSession\fP"
|
|
.br
|
|
.RI "Modification \fBSession\fP for \fBKatabatic\fP\&. "
|
|
.in -1c
|
|
.SS "Typedefs"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "typedef \fBHurricane::Filter\fP< \fBAutoSegment\fP * > \fBAutoSegmentHF\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBHurricane::Locator\fP< \fBAutoSegment\fP * > \fBAutoSegmentHL\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBHurricane::Collection\fP< \fBAutoSegment\fP * > \fBAutoSegmentHC\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBGenericCollection\fP< \fBAutoSegment\fP * > \fBAutoSegments\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBGenericLocator\fP< \fBAutoSegment\fP * > \fBAutoSegmentLocator\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBGenericFilter\fP< \fBAutoSegment\fP * > \fBAutoSegmentFilter\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBGenericCollection\fP< \fBGCell\fP * > \fBGCells\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBGenericLocator\fP< \fBGCell\fP * > \fBGCellLocator\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "typedef \fBGenericFilter\fP< \fBGCell\fP * > \fBGCellFilter\fP"
|
|
.br
|
|
.in -1c
|
|
.SS "Enumerations"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "enum \fBFunctionFlag\fP { , \fBKbOpenSession\fP = 0x00000001, \fBKbRealignate\fP = 0x00000002, \fBKbNativeConstraints\fP = 0x00000004, \fBKbForceMove\fP = 0x00000008, \fBKbHorizontal\fP = 0x00000010, \fBKbVertical\fP = 0x00000020, \fBKbWithPerpands\fP = 0x00000040, \fBKbSource\fP = 0x00000080, \fBKbTarget\fP = 0x00000100, \fBKbWarnOnError\fP = 0x00000200, \fBKbPropagate\fP = 0x00008000, \fBKbUseAboveLayer\fP = 0x00020000, \fBKbUseBelowLayer\fP = 0x00040000, \fBKbDoglegOnLeft\fP = 0x00080000, \fBKbDoglegOnRight\fP = 0x00100000, \fBKbHalfSlacken\fP = 0x00800000 }"
|
|
.br
|
|
.ti -1c
|
|
.RI "enum \fBEngineState\fP { \fBEngineCreation\fP = 1, \fBEngineGlobalLoaded\fP = 2, \fBEngineActive\fP = 3, \fBEngineDriving\fP = 4, \fBEnginePreDestroying\fP = 5, \fBEngineGutted\fP = 6 }"
|
|
.br
|
|
.ti -1c
|
|
.RI "enum \fBAutoContactFlag\fP { \fBCntFixed\fP = 0x00000001, \fBCntTerminal\fP = 0x00000002, \fBCntTurn\fP = 0x00000004, \fBCntHTee\fP = 0x00000008, \fBCntVTee\fP = 0x00000010, \fBCntInvalidated\fP = 0x00000020, \fBCntInvalidatedCache\fP = 0x00000040, \fBCntInCreationStage\fP = 0x00000080, \fBCntBadTopology\fP = 0x00000100 }"
|
|
.br
|
|
.ti -1c
|
|
.RI "enum \fBAutoSegmentFlag\fP { , \fBSegHorizontal\fP = (1<< 0), \fBSegFixed\fP = (1<< 1), \fBSegGlobal\fP = (1<< 2), \fBSegWeakGlobal\fP = (1<< 3), \fBSegCanonical\fP = (1<< 4), \fBSegBipoint\fP = (1<< 5), \fBSegDogleg\fP = (1<< 6), \fBSegStrap\fP = (1<< 7), \fBSegSourceTop\fP = (1<< 8), \fBSegSourceBottom\fP = (1<< 9), \fBSegTargetTop\fP = (1<<10), \fBSegTargetBottom\fP = (1<<11), \fBSegIsReduced\fP = (1<<12), \fBSegLayerChange\fP = (1<<13), \fBSegStrongTerminal\fP = SegSourceTerminal|SegTargetTerminal, \fBSegWeakTerminal1\fP = (1<<16), \fBSegWeakTerminal2\fP = (1<<17), \fBSegNotSourceAligned\fP = (1<<18), \fBSegNotTargetAligned\fP = (1<<19), \fBSegSlackened\fP = (1<<22), \fBSegAxisSet\fP = (1<<23), \fBSegInvalidated\fP = (1<<24), \fBSegInvalidatedLayer\fP = (1<<27), \fBSegCreated\fP = (1<<28), \fBSegWeakTerminal\fP = SegStrongTerminal|SegWeakTerminal1|SegWeakTerminal2, \fBSegNotAligned\fP = SegNotSourceAligned|SegNotTargetAligned }"
|
|
.br
|
|
.in -1c
|
|
.SH "Detailed Description"
|
|
.PP
|
|
The namespace dedicated to \fBKatabatic\fP\&.
|
|
.SH "Typedef Documentation"
|
|
.PP
|
|
.SS "typedef \fBHurricane::Filter\fP< \fBAutoSegment\fP * > \fBAutoSegmentHF\fP"
|
|
Shorthand for \fBAutoSegment\fP Hurricane Filter\&.
|
|
.SS "typedef \fBHurricane::Locator\fP< \fBAutoSegment\fP * > \fBAutoSegmentHL\fP"
|
|
Shorthand for \fBAutoSegment\fP Hurricane Locator\&.
|
|
.SS "typedef \fBHurricane::Collection\fP< \fBAutoSegment\fP * > \fBAutoSegmentHC\fP"
|
|
Shorthand for \fBAutoSegment\fP Hurricane Collection\&.
|
|
.SS "typedef \fBGenericCollection\fP< \fBAutoSegment\fP * > \fBAutoSegments\fP"
|
|
Shorthand for \fBAutoSegment\fP Hurricane Generic Collection (collection with \fCunique_ptr<>\fP like support)\&.
|
|
.SS "typedef \fBGenericLocator\fP< \fBAutoSegment\fP * > \fBAutoSegmentLocator\fP"
|
|
Shorthand for \fBAutoSegment\fP Hurricane Generic Locator (locator with \fCunique_ptr<>\fP like support)\&.
|
|
.SS "typedef \fBGenericFilter\fP< \fBAutoSegment\fP * > \fBAutoSegmentFilter\fP"
|
|
Shorthand for \fBAutoSegment\fP Hurricane Generic Filter (filter with \fCunique_ptr<>\fP like support)\&.
|
|
.SS "typedef \fBGenericCollection\fP< \fBGCell\fP * > \fBGCells\fP"
|
|
\fBGCell\fP Collection with auto-pointer like support\&.
|
|
.SS "typedef \fBGenericLocator\fP< \fBGCell\fP * > \fBGCellLocator\fP"
|
|
\fBGCell\fP Locator with auto-pointer like support\&.
|
|
.SS "typedef \fBGenericFilter\fP< \fBGCell\fP * > \fBGCellFilter\fP"
|
|
\fBGCell\fP Filter with auto-pointer like support\&.
|
|
.SH "Enumeration Type Documentation"
|
|
.PP
|
|
.SS "enum \fBFunctionFlag\fP"
|
|
A set of flags to that can be passed to functions/methods througout all \fBKatabatic\fP\&.
|
|
.PP
|
|
\fBEnumerator\fP
|
|
.in +1c
|
|
.TP
|
|
\fB\fIKbOpenSession \fP\fP
|
|
Tells the function to open it's own \fBSession\fP, otherwise use the one that should already have been opened\&.
|
|
.TP
|
|
\fB\fIKbRealignate \fP\fP
|
|
On \fBAutoSegment\fP axis manipulation, force the realignment of all the segment on an aligned set, even is the axis of the canonical is already at the right coordinate\&.
|
|
.TP
|
|
\fB\fIKbNativeConstraints \fP\fP
|
|
Ignore user-defined constraints or terminal induced ones (for AutoContacts anchored on terminals) and return the owning \fBGCell\fP alone\&.
|
|
.TP
|
|
\fB\fIKbForceMove \fP\fP
|
|
Tells the function to force move, even if it is not needed\&.
|
|
.TP
|
|
\fB\fIKbHorizontal \fP\fP
|
|
Request some action to be done in the horizontal direction\&.
|
|
.TP
|
|
\fB\fIKbVertical \fP\fP
|
|
Request some action to be done in the vertical direction\&.
|
|
.TP
|
|
\fB\fIKbWithPerpands \fP\fP
|
|
Request that AutoSegments in perpandicular direction should be includeds\&.
|
|
.TP
|
|
\fB\fIKbSource \fP\fP
|
|
Request AutoSegments anchored by their source anchor or that some operation has to be performed on the source\&.
|
|
.TP
|
|
\fB\fIKbTarget \fP\fP
|
|
Request AutoSegments anchored by their target anchor or that some operation has to be performed on the target\&.
|
|
.TP
|
|
\fB\fIKbWarnOnError \fP\fP
|
|
Display a warning if something has gone wrong\&.
|
|
.TP
|
|
\fB\fIKbPropagate \fP\fP
|
|
The action will affect all the segments on an aligned set\&.
|
|
.TP
|
|
\fB\fIKbUseAboveLayer \fP\fP
|
|
Request/tell the a above layer has been used\&.
|
|
.TP
|
|
\fB\fIKbUseBelowLayer \fP\fP
|
|
Request/tell the a below layer has been used\&.
|
|
.TP
|
|
\fB\fIKbDoglegOnLeft \fP\fP
|
|
The dogleg has occured on the left \fIof something\fP
|
|
.TP
|
|
\fB\fIKbDoglegOnRight \fP\fP
|
|
The dogleg has occured on the right \fIof something\fP
|
|
.TP
|
|
\fB\fIKbHalfSlacken \fP\fP
|
|
For \fBAutoSegment::slacken()\fP, change the overconstrained limit from 10 tracks down to 3 (hard-wired)\&.
|
|
.SS "enum \fBEngineState\fP"
|
|
Describe the current state of the \fBKatabaticEngine\fP\&.
|
|
.PP
|
|
\fBEnumerator\fP
|
|
.in +1c
|
|
.TP
|
|
\fB\fIEngineCreation \fP\fP
|
|
The tool is created, but still in the \fC_postCreate\fP stage\&.
|
|
.TP
|
|
\fB\fIEngineGlobalLoaded \fP\fP
|
|
The global routing has been loaded from Knik\&.
|
|
.TP
|
|
\fB\fIEngineActive \fP\fP
|
|
The Engine is in normal running mode (routing ordinary wires)\&.
|
|
.TP
|
|
\fB\fIEngineDriving \fP\fP
|
|
The Engine is transforming the AutoContact/AutoSegment into normal Contact/Segment (prior to tool deletion)\&.
|
|
.TP
|
|
\fB\fIEnginePreDestroying \fP\fP
|
|
This state is used whenever the tool is destroyed without passing through the EngineDriving state\&.
|
|
.TP
|
|
\fB\fIEngineGutted \fP\fP
|
|
After the EngineDriving state, all the working structures are removed and the tool can no longer be used\&. It only awaits clean destruction\&.
|
|
.SS "enum \fBAutoContactFlag\fP"
|
|
Set of flags to describe the internal state of an \fBAutoContact\fP\&.
|
|
.PP
|
|
\fBEnumerator\fP
|
|
.in +1c
|
|
.TP
|
|
\fB\fICntFixed \fP\fP
|
|
This contact cannot be moved\&.
|
|
.TP
|
|
\fB\fICntTerminal \fP\fP
|
|
This contact is anchored on a terminal (\fBAutoContactTerminal\fP), \fBmust not be changed\fP\&.
|
|
.TP
|
|
\fB\fICntTurn \fP\fP
|
|
The object true class is \fBAutoContactTurn\fP, \fBmust not be changed\fP\&.
|
|
.TP
|
|
\fB\fICntHTee \fP\fP
|
|
The object true class is \fBAutoContactHTee\fP, \fBmust not be changed\fP\&.
|
|
.TP
|
|
\fB\fICntVTee \fP\fP
|
|
The object true class is \fBAutoContactVTee\fP, \fBmust not be changed\fP\&.
|
|
.TP
|
|
\fB\fICntInvalidated \fP\fP
|
|
At least one \fBAutoSegment\fP of this contact has been moved, the contact position must be recomputed (in the \fBSession\fP revalidation)\&.
|
|
.TP
|
|
\fB\fICntInvalidatedCache \fP\fP
|
|
At least one \fBAutoSegment\fP has been broken or moved up, the connexity must be checked and possibly corrected (in \fBSession\fP revalidation)\&.
|
|
.TP
|
|
\fB\fICntInCreationStage \fP\fP
|
|
Sets only during the initial creation process\&.
|
|
.TP
|
|
\fB\fICntBadTopology \fP\fP
|
|
Something wrong has happened and the connexity of the \fBAutoContact\fP is no longer ensured (too much or too less AutoSegments, too wide span of \fBAutoSegment\fP layers)\&.
|
|
.SS "enum \fBAutoSegmentFlag\fP"
|
|
Set of flags to describe the internal state of an \fBAutoSegment\fP\&.
|
|
.PP
|
|
\fBEnumerator\fP
|
|
.in +1c
|
|
.TP
|
|
\fB\fISegHorizontal \fP\fP
|
|
This \fBAutoSegment\fP is associated to a \fBHurricane::Horizontal\fP, if not set, it is associated to a \fBHurricane::Vertical\fP\&. Set when the object is constructed\&.
|
|
.TP
|
|
\fB\fISegFixed \fP\fP
|
|
The \fBHurricane::Segment\fP associated must/cannot be moved\&.
|
|
.TP
|
|
\fB\fISegGlobal \fP\fP
|
|
The \fBAutoSegment\fP span between at least two GCells (i\&.e\&. not fully enclosed in one)\&.
|
|
.TP
|
|
\fB\fISegWeakGlobal \fP\fP
|
|
The \fBAutoSegment\fP is part of an aligned set which contains at least a global\&. The global segment is itself tagged as weak global\&.
|
|
.TP
|
|
\fB\fISegCanonical \fP\fP
|
|
This \fBAutoSegment\fP is the designated representant of a set of aligned \fBAutoSegment\fP\&.
|
|
.TP
|
|
\fB\fISegBipoint \fP\fP
|
|
This \fBAutoSegment\fP is a straight wire between two terminal \fBAutoContact\fP\&.
|
|
.TP
|
|
\fB\fISegDogleg \fP\fP
|
|
This \fBAutoSegment\fP has been created as the perpandicular part of a dogleg\&.
|
|
.TP
|
|
\fB\fISegStrap \fP\fP
|
|
This \fBAutoSegment\fP has been created to to reconnect parts of an \fBAutoSegment\fP after slackening\&.
|
|
.TP
|
|
\fB\fISegSourceTop \fP\fP
|
|
The source contact of this segment is connected to the \fItop\fP layer\&.
|
|
.TP
|
|
\fB\fISegSourceBottom \fP\fP
|
|
The source contact of this segment is connected to the \fIbottom\fP layer\&.
|
|
.TP
|
|
\fB\fISegTargetTop \fP\fP
|
|
The target contact of this segment is connected to the \fItop\fP layer\&.
|
|
.TP
|
|
\fB\fISegTargetBottom \fP\fP
|
|
The target contact of this segment is connected to the \fIbottom\fP layer\&.
|
|
.TP
|
|
\fB\fISegIsReduced \fP\fP
|
|
This segment is the perpandicular part of a dogleg which will use the \fIsame\fP layer as the parallels\&.
|
|
.TP
|
|
\fB\fISegLayerChange \fP\fP
|
|
This \fBAutoSegment\fP has been created to to reconnect parts of an \fBAutoSegment\fP after a layer change\&.
|
|
.TP
|
|
\fB\fISegStrongTerminal \fP\fP
|
|
This \fBAutoSegment\fP directly connected to a terminal\&.
|
|
.TP
|
|
\fB\fISegWeakTerminal1 \fP\fP
|
|
This \fBAutoSegment\fP indirectly connected to a terminal with medium strength\&.
|
|
.TP
|
|
\fB\fISegWeakTerminal2 \fP\fP
|
|
This \fBAutoSegment\fP indirectly connected to a terminal with weak strength\&.
|
|
.TP
|
|
\fB\fISegNotSourceAligned \fP\fP
|
|
This source contact of the segment is not the aligned part of a tee (\fCh1\fP or \fCh2\fP for a \fCHTee\fP, \fCv1\fP or \fCv2\fP for a \fCVTee\fP)\&.
|
|
.PP
|
|
\fBSee also:\fP
|
|
.RS 4
|
|
AutoSegmentFlag::SegNotAligned
|
|
.RE
|
|
.PP
|
|
|
|
.TP
|
|
\fB\fISegNotTargetAligned \fP\fP
|
|
This target contact of the segment is not the aligned part of a tee (\fCh1\fP or \fCh2\fP for a \fCHTee\fP, \fCv1\fP or \fCv2\fP for a \fCVTee\fP)\&.
|
|
.PP
|
|
\fBSee also:\fP
|
|
.RS 4
|
|
AutoSegmentFlag::SegNotAligned
|
|
.RE
|
|
.PP
|
|
|
|
.TP
|
|
\fB\fISegSlackened \fP\fP
|
|
This \fBAutoSegment\fP has been slackened, that is freed from any constraints from source or target through the insertion of straps\&.
|
|
.TP
|
|
\fB\fISegAxisSet \fP\fP
|
|
This \fBAutoSegment\fP has been explicitly positionned at least once\&.
|
|
.TP
|
|
\fB\fISegInvalidated \fP\fP
|
|
This position or topology of this \fBAutoSegment\fP has been changed, needing a revalidation\&.
|
|
.TP
|
|
\fB\fISegInvalidatedLayer \fP\fP
|
|
The segment has been chenged of layer, but the source & target \fBAutoContact\fP have not been topologicaly checked yet\&. This flag \fBmust\fP be used in whith AutoSegmentFlag::SegInvalidated\&.
|
|
.TP
|
|
\fB\fISegCreated \fP\fP
|
|
The \fBAutoSegment\fP has just been created\&. This flag is set only from the contruction of the object until is \fIfirst\fP revalidation\&. Used to disable some tests that cannot be satisfied initially\&.
|
|
.TP
|
|
\fB\fISegWeakTerminal \fP\fP
|
|
A mask composed of:
|
|
.IP "\(bu" 2
|
|
\fBKatabatic::SegStrongTerminal\fP
|
|
.IP "\(bu" 2
|
|
\fBKatabatic::SegWeakTerminal1\fP
|
|
.IP "\(bu" 2
|
|
\fBKatabatic::SegWeakTerminal2\fP
|
|
.PP
|
|
|
|
.TP
|
|
\fB\fISegNotAligned \fP\fP
|
|
A mask composed of:
|
|
.IP "\(bu" 2
|
|
\fBKatabatic::SegNotSourceAligned\fP
|
|
.IP "\(bu" 2
|
|
\fBKatabatic::SegNotTargetAligned\fP
|
|
.PP
|
|
.PP
|
|
This mask is a quick way to know if a segment is \fBnot\fP part of an aligned set\&. It means that the segment is, on both ends, either connected to a terminal, a turn \fIor the stem part of a tee\fP\&.
|
|
.SH "Author"
|
|
.PP
|
|
Generated automatically by Doxygen for Katabatic - Routing Toolbox from the source code\&.
|