<ahref="#pub-methods">Public Member Functions</a>|
<ahref="classKite_1_1SegmentAction-members.html">List of all members</a></div>
<divclass="headertitle">
<divclass="title">SegmentAction Class Reference</div></div>
</div><!--header-->
<divclass="contents">
<p>Store request for an event to be generated on a <aclass="el"href="classKite_1_1TrackElement.html"title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>.
<divclass="textblock"><p>Store request for an event to be generated on a <aclass="el"href="classKite_1_1TrackElement.html"title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. </p>
<p>When an event on a <aclass="el"href="classKite_1_1TrackElement.html"title="Abstract Class for all Elements inserted inside a Track. ">Kite::TrackElement</a> is being processed (with the <aclass="el"href="classKite_1_1SegmentFsm.html"title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a> helper), it may generate events on <aclass="el"href="classKite_1_1TrackElement.html"title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> already placed and belonging either to the same net or other ones. Those events are not generated and queued immediatly but instead <aclass="el"href="classKite_1_1SegmentAction.html"title="Store request for an event to be generated on a TrackElement. ">SegmentAction</a>, requesting the event generation are created and stored into a simple vector in <aclass="el"href="classKite_1_1SegmentFsm.html"title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a>. The last operation of the <aclass="el"href="classKite_1_1SegmentFsm.html"title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a> object is to call the <aclass="el"href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a> method on all the action to actually generate and queue the events. </p>
<p>Indicates the kind of action to be performed on the segment. In the following <b>flags</b> and <b>masks</b> descriptions, we uses the term <em>reference segment</em> for the <aclass="el"href="classKite_1_1TrackElement.html"title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> which is associated with the currently processed <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> (also referenced in <aclass="el"href="classKite_1_1SegmentFsm.html"title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a>).</p>
<p>Here is the list of the availables actions that can be performed when (re)scheduling a <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. It is here that we uses the <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> level feature to perform a local reordering of the top of the queue. Reordering is used to allows perpandiculars to be routed <em>before</em> the reference segment (instead of after) or <em>other</em> segments in conflict.</p>
<b>Action:</b> The reference segment is to be inserted in a <aclass="el"href="classKite_1_1Track.html"title="Structure managing one routing track. ">Track</a> (placed).<br/>
<b>Action:</b> Ripup a segment which is a perpandicular to the reference segment. Ordering considerations: this perpandicular will be put back into the <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> queue with a lower level (priority) than the reference segment, so it will be processed again <em>after</em> the reference segment.<br/>
<b>Action:</b> Ripup a segment which is a perpandicular to the reference segment, supplies an axis hint and put it back into the <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> queue so that it will be processed <em>before</em> the reference segment.<br/>
<b>Event Level:</b> Increased to <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ab8346062d5bbccb98893c4675b8d5098">SegmentAction::EventLevel4</a>.</li>
<b>Action:</b> Ripping up a segment from another net and in perpandicular direction. The level is elevated so it's priority is greater than the reference segment this it will be reprocessed first. An axis hint is also supplied in order to make room for the reference segment.<br/>
<b>Event Level:</b> Increased to <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a11ef388ea422168a9c79fd9b4d81ea34">SegmentAction::EventLevel3</a>.</li>
<b>Action:</b> Ripping up a segment from another net and in perpandicular direction. The level is elevated so it's priority is greater than the reference segment this it will be reprocessed first. The generated event is in packing mode only.<br/>
<tr><thcolspan="2">Enumerator</th></tr><tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7aacd3ef9d889b306ca7e7bdcd37ba659a"></a>Self </td><tdclass="fielddoc"><p><b>[Flag]</b> The segment associated to the action is the reference segment <em>or segments from the same net</em>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a75f0c3176be2226dfe8ad164a0a034a2"></a>Other </td><tdclass="fielddoc"><p><b>[Flag]</b> The segment associated to the action is <b>not</b> from the same net as the reference segment. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a02330ea306385a34162a1e620a1c37df"></a>Perpandicular </td><tdclass="fielddoc"><p><b>[Flag]</b> The action concern a perpandicular to the reference segment. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a8c1f14f07c9eedcbbb2cc61988030646"></a>Insert </td><tdclass="fielddoc"><p><b>[Flag]</b> Request that the segment is to be inserted in the given track. It is the task of <aclass="el"href="classKite_1_1SegmentFsm.html"title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a> to determine that there is sufficent space to do so. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a08900dc237aef7e4a7f50d2ba1ffd748"></a>Ripup </td><tdclass="fielddoc"><p><b>[Flag]</b> Request that the segment is to be ripped up. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a4fab9c042ba690bdb62d3c34eab8472d"></a>RipedByLocal </td><tdclass="fielddoc"><p><b>[Flag]</b> Indicate that the segment has been ripped up by a local one. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a9e16316a13899c2e02dd49cf2fb6e91f"></a>ResetRipup </td><tdclass="fielddoc"><p><b>[Flag]</b> The ripup count is to be reset. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a6c00c46010d69247a3edc18b70d700fa"></a>ToRipupLimit </td><tdclass="fielddoc"><p><b>[Flag]</b> The ripup count is directly increased to the ripup limit, triggering a state change the next time the segment will be processed. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a46c4ca7a69b5eae786be28f75523b78b"></a>AxisHint </td><tdclass="fielddoc"><p><b>[Flag]</b> An axis hint has been supplied, and is to be passed to the generated <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a4fe6b9a3b3816492b9a99ab6689c4b20"></a>PackingMode </td><tdclass="fielddoc"><p><b>[Flag]</b> Whether the <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> should be processed in <em>packing</em> mode or <em>negociated</em> mode (transmitted to the <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>). </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a8b27ea2f99b2e6446eac77626aef0711"></a>ToState </td><tdclass="fielddoc"><p><b>[Flag]</b> Force the change of state of the <aclass="el"href="classKite_1_1RoutingEvent.html"title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> (i.e. <aclass="el"href="classKite_1_1DataNegociate.html"title="Algorimthmic datas associated the TrackSegment. ">DataNegociate</a>). Normally the state change is done through the increase of the ripup count in <aclass="el"href="classKite_1_1DataNegociate.html"title="Algorimthmic datas associated the TrackSegment. ">DataNegociate</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7adb9a006587bc8a635ffdd034c53a546f"></a>EventLevel1 </td><tdclass="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em><b>1</b>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a5bad02627a87d3e38d5812363e46d7b1"></a>EventLevel2 </td><tdclass="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em><b>2</b>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a11ef388ea422168a9c79fd9b4d81ea34"></a>EventLevel3 </td><tdclass="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em><b>3</b>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7ab8346062d5bbccb98893c4675b8d5098"></a>EventLevel4 </td><tdclass="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em><b>4</b>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a432d5152211bf70a2d561b8bda34c9e0"></a>EventLevel5 </td><tdclass="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em><b>5</b>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a930d0718b2afc37983ffe708f8261b19"></a>SelfInsert </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a837e07a8b4101cff32018683072f2d78"></a>SelfRipup </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a85fd77114c99a0827e08de2fc6a53ed7"></a>SelfRipupPerpand </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7ae30745ee276038ba4d7b5f92d80f3715"></a>SelfRipupPerpandWithAxisHint </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7a22374bab829fac7d12af4784d80eeb6e"></a>OtherRipup </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7ad9caf9375b714a403e4af8a142cf9991"></a>OtherRipupPerpandAndPushAside </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="fieldname"><aid="a1d1cfd8ffb84e947f82999c682b666a7aed50f579a9e6b7ac698b2edf1a5da5c8"></a>OtherRipupPerpandAndPacking </td><tdclass="fielddoc"><p><b>[Mask]</b>, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
<tr><tdclass="paramname">segment</td><td>On what the action is to be performed. </td></tr>
<tr><tdclass="paramname">type</td><td>Defines the type of action, see <aclass="el"href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </td></tr>
<tr><tdclass="paramname">axisHint</td><td>Specifies a preferred axis. </td></tr>
<tr><tdclass="paramname">toState</td><td>The <aclass="el"href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7">DataNegociate::SlackState</a> into which the segment is to be set.</td></tr>
</table>
</dd>
</dl>
<p>Create segment action. </p>
</div>
</div>
<h2class="groupheader">Member Function Documentation</h2>
<p>The axis preferred position to be transmitted to the generated event. The transmition will be effective <em>only</em> if the SegmentAction::Type::AxisHint flag is set. </p>