14779 lines
782 KiB
HTML
14779 lines
782 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN" "http://www.w3.org/MarkUp/Wilbur/HTML32.dtd">
|
|
<html xmlns="http://www.w3.org/MarkUp/Wilbur/HTML32.dtd">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
|
<title>DEF 5.8 C/C++ Programming Interface -- A</title>
|
|
<META NAME="Approver" CONTENT="Technical Publications">
|
|
<META NAME="Author" CONTENT="Technical Publications">
|
|
<META NAME="CreateDate" CONTENT="2017-04-18">
|
|
<META NAME="CreateTime" CONTENT="1492498753">
|
|
<META NAME="DataType" CONTENT="Manuals">
|
|
<META NAME="Description" CONTENT="Describes the C/C++ programming interface used to read and write Design Exchange Format (DEF) files.">
|
|
<META NAME="DocTitle" CONTENT="DEF 5.8 C/C++ Programming Interface">
|
|
<META NAME="DocType" CONTENT="Reference">
|
|
<META NAME="EdmsRelease" CONTENT="FM-Wiki-1.0_P005">
|
|
<META NAME="FileTitle" CONTENT="A">
|
|
<META NAME="FileType" CONTENT="Chapter">
|
|
<META NAME="Keyword" CONTENT="defapi">
|
|
<META NAME="Language" CONTENT="English">
|
|
<META NAME="ModifiedDate" CONTENT="2017-04-18">
|
|
<META NAME="ModifiedTime" CONTENT="1492498753">
|
|
<META NAME="NextFile" CONTENT="">
|
|
<META NAME="PageCount" CONTENT="120">
|
|
<META NAME="Platform" CONTENT="ALL">
|
|
<META NAME="PrevFile" CONTENT="ch8lefdiff.html">
|
|
<META NAME="Product" CONTENT="Languages">
|
|
<META NAME="ProductFamily" CONTENT="Cadence Shared Tools">
|
|
<META NAME="ProductVersion" CONTENT="5.8">
|
|
<META NAME="RightsManagement" CONTENT="Copyright 2017 Cadence Design Systems Inc.">
|
|
<META NAME="Title" CONTENT="DEF 5.8 C/C++ Programming Interface -- A">
|
|
<META NAME="TopicTags" CONTENT="FALSE">
|
|
<META NAME="Version" CONTENT="5.8">
|
|
</head>
|
|
<body style="margin-left: 5%;">
|
|
<a name="pagetop"></a>
|
|
<a name="firstpage"></a>
|
|
<!-- Begin Buttons -->
|
|
<table width="650" cellpadding="0" cellspacing="0" border="0">
|
|
<tr>
|
|
<td height="36" width="650" colspan="10">
|
|
<img src="images/header_doc.gif" width="650" height="34">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td height="20" width="59">
|
|
<a href="javascript:openLibrary()"><img src="../support/nav2_library.gif" border="0" alt="View Library" height="20" width="59"></a>
|
|
</td>
|
|
<td height="20" width="73">
|
|
<a href="defapiTOC.html"><img src="../support/nav2_toc.gif" alt="Table of Contents" border="0"></a>
|
|
</td>
|
|
|
|
<td height="20" width="46">
|
|
<img src="../support/nav2_index_b.gif" border="0">
|
|
</td>
|
|
<td>
|
|
<a href="ch8lefdiff.html"><img src="images/nav2_previous.gif" alt="Previous" border="0"></a>
|
|
</td>
|
|
<td height="20">
|
|
<img src="images/nav2_next_b.gif" alt="Previous">
|
|
</td>
|
|
<td height="20">
|
|
<a>
|
|
<a href="defapi.pdf"><img src="../support/nav2_print.gif" border="0" alt="Open PDF to print book" height="20" width="114"></a>
|
|
</a>
|
|
</td>
|
|
<td height="20" width="59">
|
|
<img src="images/nav_next_b.gif" alt="Next" border="0">
|
|
</td>
|
|
<td height="20" width="61">
|
|
<img src="../support/nav2_black.gif" border="0" height="20" width="76">
|
|
</td>
|
|
<td height="20" width="76">
|
|
<a href="/feedback.htm"><img src="../support/nav2_feedback.gif" border="0" alt="Email Comments" height="20" width="76"></a>
|
|
</td>
|
|
<td height="20" width="43">
|
|
<a href="../cdsuser/help.html"><img src="../support/nav2_help.gif" border="0" alt="Help Using Documentation" height="20" width="43"></a>
|
|
</td>
|
|
<td height="20" width="37">
|
|
<a href="/exitsearch.htm"><img src="../support/nav2_exit.gif" border="0" alt="Shut Down Cadence Documentation Server" height="20" width="37"></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<!-- End Buttons -->
|
|
<p>
|
|
<hr>
|
|
<p>
|
|
<h3>
|
|
<center>
|
|
<font >
|
|
<div>DEF 5.8 C/C++ Programming Interface (Open Licensing Program)</div>
|
|
<font >
|
|
<div></div>
|
|
</font>
|
|
</font>
|
|
</center>
|
|
</h3>
|
|
<br>
|
|
</p>
|
|
<div>
|
|
<h1>A<a name="1008781"> </a></h1>
|
|
<h1><a name="1011663">DEF Reader and Writer Examples</a></h1>
|
|
<p><a name="1014148">This appendix contains examples of the Cadence</a><font color="#000000"><sup>®</sup></font> Design Exchange Format (DEF) reader and writer.</p>
|
|
<div>
|
|
<table border="0" cellspacing="0" cellpadding="3" summary="">
|
|
<tr valign="baseline">
|
|
<td width="31.999679999999998">
|
|
<div>
|
|
<nobr>
|
|
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
|
|
</nobr>
|
|
</div>
|
|
</td>
|
|
<td><a href="#1016399" title="A" name="1019629"><font color="#0000ff"><u>DEF Reader Example</u></font></a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div>
|
|
<table border="0" cellspacing="0" cellpadding="3" summary="">
|
|
<tr valign="baseline">
|
|
<td width="31.999679999999998">
|
|
<div>
|
|
<nobr>
|
|
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
|
|
</nobr>
|
|
</div>
|
|
</td>
|
|
<td><a href="#1021125" title="A" name="1019634"><font color="Blue"><u>DEF Writer Example</u></font></a><a href="#1021125" title="A"> </a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<h2><a name="1016399">DEF Reader Example</a></h2>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024113">#include <stdlib.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024114">#include <stdio.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024115">#include <string.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024116">#include <time.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024117">#ifndef WIN32</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024118"># include <unistd.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024119">#endif /* not WIN32 */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024120">#include "defrReader.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024121">#include "defiAlias.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024122"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024123">char defaultName[64];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024124">char defaultOut[64];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024125"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024126">// Global variables</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024127">FILE* fout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024128">int userData;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024129">int numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024130">int isSumSet; // to keep track if within SUM</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024131">int isProp = 0; // for PROPERTYDEFINITIONS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024132">int begOperand; // to keep track for constraint, to print - as the 1st char</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024133">static double curVer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024134">static int setSNetWireCbk = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024135"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024136">// TX_DIR:TRANSLATION ON</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024137"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024138">void myLogFunction(const char* errMsg){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024139"> fprintf(fout, "ERROR: found error: %s\n", errMsg);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024140">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024141"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024142">void myWarningLogFunction(const char* errMsg){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024143"> fprintf(fout, "WARNING: found error: %s\n", errMsg);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024144">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024145"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024146">void dataError() {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024147"> fprintf(fout, "ERROR: returned user data is not correct!\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024148">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024149"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024150">void checkType(defrCallbackType_e c) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024151"> if (c >= 0 && c <= defrDesignEndCbkType) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024152"> // OK</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024153"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024154"> fprintf(fout, "ERROR: callback type is out of bounds!\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024155"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024156">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024157"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024158"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024159">int done(defrCallbackType_e c, void* dummy, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024160"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024161"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024162"> fprintf(fout, "END DESIGN\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024163"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024164">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024165"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024166">int endfunc(defrCallbackType_e c, void* dummy, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024167"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024168"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024169"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024170">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024171"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024172"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024173">char* orientStr(int orient) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024174"> switch (orient) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024175"> case 0: return ((char*)"N");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024176"> case 1: return ((char*)"W");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024177"> case 2: return ((char*)"S");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024178"> case 3: return ((char*)"E");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024179"> case 4: return ((char*)"FN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024180"> case 5: return ((char*)"FW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024181"> case 6: return ((char*)"FS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024182"> case 7: return ((char*)"FE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024183"> };</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024184"> return ((char*)"BOGUS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024185">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024186"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024187"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024188">int compf(defrCallbackType_e c, defiComponent* co, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024189"> int i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024190"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024191"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024192"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024193"> fprintf(fout, "- %s %s ", co->defiComponent::id(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024194"> co->defiComponent::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024195"> if (co->defiComponent::hasNets()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024196"> for (i = 0; i < co->defiComponent::numNets(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024197"> fprintf(fout, "%s ", co->defiComponent::net(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024198"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024199"> if (co->defiComponent::isFixed()) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024200"> fprintf(fout, "+ FIXED %d %d %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024201"> co->defiComponent::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024202"> co->defiComponent::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024203"> //orientStr(co->defiComponent::placementOrient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024204"> co->defiComponent::placementOrientStr());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024205"> if (co->defiComponent::isCover()) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024206"> fprintf(fout, "+ COVER %d %d %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024207"> co->defiComponent::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024208"> co->defiComponent::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024209"> orientStr(co->defiComponent::placementOrient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024210"> if (co->defiComponent::isPlaced()) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024211"> fprintf(fout,"+ PLACED %d %d %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024212"> co->defiComponent::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024213"> co->defiComponent::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024214"> orientStr(co->defiComponent::placementOrient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024215"> if (co->defiComponent::isUnplaced()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024216"> fprintf(fout,"+ UNPLACED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024217"> if ((co->defiComponent::placementX() != -1) ||</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024218"> (co->defiComponent::placementY() != -1))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024219"> fprintf(fout,"%d %d %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024220"> co->defiComponent::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024221"> co->defiComponent::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024222"> orientStr(co->defiComponent::placementOrient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024223"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024224"> if (co->defiComponent::hasSource())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024225"> fprintf(fout, "+ SOURCE %s ", co->defiComponent::source());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024226"> if (co->defiComponent::hasGenerate()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024227"> fprintf(fout, "+ GENERATE %s ", co->defiComponent::generateName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024228"> if (co->defiComponent::macroName() &&</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024229"> *(co->defiComponent::macroName()))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024230"> fprintf(fout, "%s ", co->defiComponent::macroName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024231"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024232"> if (co->defiComponent::hasWeight())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024233"> fprintf(fout, "+ WEIGHT %d ", co->defiComponent::weight());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024234"> if (co->defiComponent::hasEEQ())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024235"> fprintf(fout, "+ EEQMASTER %s ", co->defiComponent::EEQ());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024236"> if (co->defiComponent::hasRegionName())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024237"> fprintf(fout, "+ REGION %s ", co->defiComponent::regionName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024238"> if (co->defiComponent::hasRegionBounds()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024239"> int *xl, *yl, *xh, *yh;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024240"> int size;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024241"> co->defiComponent::regionBounds(&size, &xl, &yl, &xh, &yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024242"> for (i = 0; i < size; i++) { </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024243"> fprintf(fout, "+ REGION %d %d %d %d \n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024244"> xl[i], yl[i], xh[i], yh[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024245"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024246"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024247"> if (co->defiComponent::hasHalo()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024248"> int left, bottom, right, top;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024249"> (void) co->defiComponent::haloEdges(&left, &bottom, &right, &top);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024250"> fprintf(fout, "+ HALO ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024251"> if (co->defiComponent::hasHaloSoft())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024252"> fprintf(fout, "SOFT ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024253"> fprintf(fout, "%d %d %d %d\n", left, bottom, right, top);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024254"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024255"> if (co->defiComponent::hasRouteHalo()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024256"> fprintf(fout, "+ ROUTEHALO %d %s %s\n", co->defiComponent::haloDist(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024257"> co->defiComponent::minLayer(), co->defiComponent::maxLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024258"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024259"> if (co->defiComponent::hasForeignName()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024260"> fprintf(fout, "+ FOREIGN %s %d %d %s %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024261"> co->defiComponent::foreignName(), co->defiComponent::foreignX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024262"> co->defiComponent::foreignY(), co->defiComponent::foreignOri(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024263"> co->defiComponent::foreignOrient());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024264"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024265"> if (co->defiComponent::numProps()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024266"> for (i = 0; i < co->defiComponent::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024267"> fprintf(fout, "+ PROPERTY %s %s ", co->defiComponent::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024268"> co->defiComponent::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024269"> switch (co->defiComponent::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024270"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024271"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024272"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024273"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024274"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024275"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024276"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024277"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024278"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024279"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024280"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024281"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024282"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024283"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024284"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024285"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024286"> fprintf(fout, "END COMPONENTS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024287"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024288">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024289"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024290"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024291">int netpath(defrCallbackType_e c, defiNet* ppath, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024292"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024293"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024294"> fprintf (fout, "Callback of partial path for net\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024295"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024296"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024297">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024298"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024299"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024300">int netNamef(defrCallbackType_e c, const char* netName, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024301"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024302"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024303"> fprintf(fout, "- %s ", netName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024304"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024305">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024306"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024307">int subnetNamef(defrCallbackType_e c, const char* subnetName, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024308"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024309"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024310"> if (curVer >= 5.6)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024311"> fprintf(fout, " + SUBNET CBK %s ", subnetName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024312"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024313">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024314"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024315">int nondefRulef(defrCallbackType_e c, const char* ruleName, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024316"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024317"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024318"> if (curVer >= 5.6)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024319"> fprintf(fout, " + NONDEFAULTRULE CBK %s ", ruleName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024320"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024321">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024322"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024323">int netf(defrCallbackType_e c, defiNet* net, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024324"> // For net and special net.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024325"> int i, j, k, x, y, z, count, newLayer;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024326"> defiPath* p;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024327"> defiSubnet *s;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024328"> int path;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024329"> defiVpin *vpin;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024330"> // defiShield *noShield;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024331"> defiWire *wire;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024332"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024333"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024334"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024335"> if (c != defrNetCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024336"> fprintf(fout, "BOGUS NET TYPE ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024337"> if (net->defiNet::pinIsMustJoin(0))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024338"> fprintf(fout, "- MUSTJOIN ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024339"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024340"> // compName & pinName</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024341"> for (i = 0; i < net->defiNet::numConnections(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024342"> // set the limit of only 5 items per line</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024343"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024344"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024345"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024346"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024347"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024348"> fprintf(fout, "( %s %s ) ", net->defiNet::instance(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024349"> net->defiNet::pin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024350"> if (net->defiNet::pinIsSynthesized(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024351"> fprintf(fout, "+ SYNTHESIZED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024352"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024353"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024354"> if (net->hasNonDefaultRule())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024355"> fprintf(fout, "+ NONDEFAULTRULE %s\n", net->nonDefaultRule());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024356"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024357"> for (i = 0; i < net->defiNet::numVpins(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024358"> vpin = net->defiNet::vpin(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024359"> fprintf(fout, " + %s", vpin->name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024360"> if (vpin->layer()) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024361"> fprintf(fout, " %s", vpin->layer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024362"> fprintf(fout, " %d %d %d %d", vpin->xl(), vpin->yl(), vpin->xh(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024363"> vpin->yh());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024364"> if (vpin->status() != ' ') {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024365"> fprintf(fout, " %c", vpin->status());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024366"> fprintf(fout, " %d %d", vpin->xLoc(), vpin->yLoc());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024367"> if (vpin->orient() != -1)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024368"> fprintf(fout, " %s", orientStr(vpin->orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024369"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024370"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024371"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024372"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024373"> // regularWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024374"> if (net->defiNet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024375"> for (i = 0; i < net->defiNet::numWires(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024376"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024377"> wire = net->defiNet::wire(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024378"> fprintf(fout, "\n + %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024379"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024380"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024381"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024382"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024383"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024384"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024385"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024386"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024387"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024388"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024389"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024390"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024391"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024392"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024393"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024394"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024395"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024396"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024397"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024398"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024399"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024400"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024401"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024402"> fprintf(fout, "%s ", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024403"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024404"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024405"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024406"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024407"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024408"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024409"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024410"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024411"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024412"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024413"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024414"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024415"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024416"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024417"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024418"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024419"> case DEFIPATH_TAPERRULE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024420"> fprintf(fout, "TAPERRULE %s ",p->defiPath::getTaperRule());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024421"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024422"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024423"> fprintf(fout, "STYLE %d ",p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024424"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024425"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024426"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024427"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024428"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024429"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024430"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024431"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024432"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024433"> // SHIELDNET</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024434"> if (net->defiNet::numShieldNets()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024435"> for (i = 0; i < net->defiNet::numShieldNets(); i++) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024436"> fprintf(fout, "\n + SHIELDNET %s", net->defiNet::shieldNet(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024437"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024438"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024439"> if (net->defiNet::hasSubnets()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024440"> for (i = 0; i < net->defiNet::numSubnets(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024441"> s = net->defiNet::subnet(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024442"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024443"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024444"> if (s->defiSubnet::numConnections()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024445"> if (s->defiSubnet::pinIsMustJoin(0))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024446"> fprintf(fout, "- MUSTJOIN ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024447"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024448"> fprintf(fout, " + SUBNET %s ", s->defiSubnet::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024449"> for (j = 0; j < s->defiSubnet::numConnections(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024450"> fprintf(fout, " ( %s %s )\n", s->defiSubnet::instance(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024451"> s->defiSubnet::pin(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024452"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024453"> // regularWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024454"> if (s->defiSubnet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024455"> for (k = 0; k < s->defiSubnet::numWires(); k++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024456"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024457"> wire = s->defiSubnet::wire(k);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024458"> fprintf(fout, " %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024459"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024460"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024461"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024462"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024463"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024464"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024465"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024466"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024467"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024468"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024469"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024470"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024471"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024472"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024473"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024474"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024475"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024476"> fprintf(fout, "NEW %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024477"> p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024478"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024479"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024480"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024481"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024482"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024483"> fprintf(fout, "%s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024484"> p->defiPath::getViaRotationStr());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024485"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024486"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024487"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024488"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024489"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024490"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024491"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024492"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024493"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024494"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024495"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024496"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024497"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024498"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024499"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024500"> case DEFIPATH_TAPERRULE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024501"> fprintf(fout, "TAPERRULE %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024502"> p->defiPath::getTaperRule());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024503"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024504"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024505"> fprintf(fout, "STYLE %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024506"> p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024507"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024508"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024509"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024510"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024511"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024512"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024513"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024514"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024515"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024516"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024517"> if (net->defiNet::numProps()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024518"> for (i = 0; i < net->defiNet::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024519"> fprintf(fout, " + PROPERTY %s ", net->defiNet::propName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024520"> switch (net->defiNet::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024521"> case 'R': fprintf(fout, "%g REAL ", net->defiNet::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024522"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024523"> case 'I': fprintf(fout, "%g INTEGER ", net->defiNet::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024524"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024525"> case 'S': fprintf(fout, "%s STRING ", net->defiNet::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024526"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024527"> case 'Q': fprintf(fout, "%s QUOTESTRING ", net->defiNet::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024528"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024529"> case 'N': fprintf(fout, "%g NUMBER ", net->defiNet::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024530"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024531"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024532"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024533"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024534"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024535"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024536"> if (net->defiNet::hasWeight())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024537"> fprintf(fout, "+ WEIGHT %d ", net->defiNet::weight());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024538"> if (net->defiNet::hasCap())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024539"> fprintf(fout, "+ ESTCAP %g ", net->defiNet::cap());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024540"> if (net->defiNet::hasSource())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024541"> fprintf(fout, "+ SOURCE %s ", net->defiNet::source());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024542"> if (net->defiNet::hasFixedbump())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024543"> fprintf(fout, "+ FIXEDBUMP ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024544"> if (net->defiNet::hasFrequency())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024545"> fprintf(fout, "+ FREQUENCY %g ", net->defiNet::frequency());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024546"> if (net->defiNet::hasPattern())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024547"> fprintf(fout, "+ PATTERN %s ", net->defiNet::pattern());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024548"> if (net->defiNet::hasOriginal())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024549"> fprintf(fout, "+ ORIGINAL %s ", net->defiNet::original());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024550"> if (net->defiNet::hasUse())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024551"> fprintf(fout, "+ USE %s ", net->defiNet::use());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024552"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024553"> fprintf (fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024554"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024555"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024556"> fprintf(fout, "END NETS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024557"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024558">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024559"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024560"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024561">int snetpath(defrCallbackType_e c, defiNet* ppath, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024562"> int i, j, x, y, z, count, newLayer;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024563"> char* layerName;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024564"> double dist, left, right;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024565"> defiPath* p;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024566"> defiSubnet *s;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024567"> int path;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024568"> defiShield* shield;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024569"> defiWire* wire;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024570"> int numX, numY, stepX, stepY;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024571"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024572"> if (c != defrSNetPartialPathCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024573"> return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024574"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024575"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024576"> fprintf (fout, "SPECIALNET partial data\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024577"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024578"> fprintf(fout, "- %s ", ppath->defiNet::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024579"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024580"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024581"> // compName & pinName</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024582"> for (i = 0; i < ppath->defiNet::numConnections(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024583"> // set the limit of only 5 items print out in one line</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024584"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024585"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024586"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024587"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024588"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024589"> fprintf (fout, "( %s %s ) ", ppath->defiNet::instance(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024590"> ppath->defiNet::pin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024591"> if (ppath->defiNet::pinIsSynthesized(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024592"> fprintf(fout, "+ SYNTHESIZED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024593"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024594"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024595"> // specialWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024596"> // POLYGON</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024597"> if (ppath->defiNet::numPolygons()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024598"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024599"> for (i = 0; i < ppath->defiNet::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024600"> fprintf(fout, "\n + POLYGON %s ", ppath->polygonName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024601"> points = ppath->getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024602"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024603"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024604"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024605"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024606"> // RECT</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024607"> if (ppath->defiNet::numRectangles()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024608"> for (i = 0; i < ppath->defiNet::numRectangles(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024609"> fprintf(fout, "\n + RECT %s %d %d %d %d", ppath->defiNet::rectName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024610"> ppath->defiNet::xl(i), ppath->defiNet::yl(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024611"> ppath->defiNet::xh(i), ppath->defiNet::yh(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024612"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024613"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024614"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024615"> // COVER, FIXED, ROUTED or SHIELD</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024616"> if (ppath->defiNet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024617"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024618"> for (i = 0; i < ppath->defiNet::numWires(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024619"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024620"> wire = ppath->defiNet::wire(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024621"> fprintf(fout, "\n + %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024622"> if (strcmp (wire->wireType(), "SHIELD") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024623"> fprintf(fout, "%s ", wire->wireShieldNetName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024624"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024625"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024626"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024627"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024628"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024629"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024630"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024631"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024632"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024633"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024634"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024635"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024636"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024637"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024638"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024639"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024640"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024641"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024642"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024643"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024644"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024645"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024646"> fprintf(fout, "%s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024647"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024648"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024649"> case DEFIPATH_VIADATA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024650"> p->defiPath::getViaData(&numX, &numY, &stepX, &stepY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024651"> fprintf(fout, "DO %d BY %d STEP %d %d ", numX, numY,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024652"> stepX, stepY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024653"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024654"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024655"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024656"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024657"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024658"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024659"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024660"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024661"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024662"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024663"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024664"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024665"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024666"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024667"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024668"> case DEFIPATH_SHAPE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024669"> fprintf(fout, "+ SHAPE %s ", p->defiPath::getShape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024670"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024671"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024672"> fprintf(fout, "+ STYLE %d ", p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024673"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024674"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024675"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024676"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024677"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024678"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024679"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024680"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024681"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024682"> if (ppath->defiNet::hasSubnets()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024683"> for (i = 0; i < ppath->defiNet::numSubnets(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024684"> s = ppath->defiNet::subnet(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024685"> if (s->defiSubnet::numConnections()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024686"> if (s->defiSubnet::pinIsMustJoin(0))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024687"> fprintf(fout, "- MUSTJOIN ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024688"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024689"> fprintf(fout, "- %s ", s->defiSubnet::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024690"> for (j = 0; j < s->defiSubnet::numConnections(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024691"> fprintf(fout, " ( %s %s )\n", s->defiSubnet::instance(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024692"> s->defiSubnet::pin(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024693"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024694"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024695"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024696"> // regularWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024697"> if (s->defiSubnet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024698"> for (i = 0; i < s->defiSubnet::numWires(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024699"> wire = s->defiSubnet::wire(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024700"> fprintf(fout, " + %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024701"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024702"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024703"> p->defiPath::print(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024704"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024705"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024706"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024707"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024708"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024709"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024710"> if (ppath->defiNet::numProps()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024711"> for (i = 0; i < ppath->defiNet::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024712"> if (ppath->defiNet::propIsString(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024713"> fprintf(fout, " + PROPERTY %s %s ", ppath->defiNet::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024714"> ppath->defiNet::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024715"> if (ppath->defiNet::propIsNumber(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024716"> fprintf(fout, " + PROPERTY %s %g ", ppath->defiNet::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024717"> ppath->defiNet::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024718"> switch (ppath->defiNet::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024719"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024720"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024721"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024722"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024723"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024724"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024725"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024726"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024727"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024728"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024729"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024730"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024731"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024732"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024733"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024734"> // SHIELD</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024735"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024736"> // testing the SHIELD for 5.3, obsolete in 5.4</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024737"> if (ppath->defiNet::numShields()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024738"> for (i = 0; i < ppath->defiNet::numShields(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024739"> shield = ppath->defiNet::shield(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024740"> fprintf(fout, "\n + SHIELD %s ", shield->defiShield::shieldName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024741"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024742"> for (j = 0; j < shield->defiShield::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024743"> p = shield->defiShield::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024744"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024745"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024746"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024747"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024748"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024749"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024750"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024751"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024752"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024753"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024754"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024755"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024756"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024757"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024758"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024759"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024760"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024761"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024762"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024763"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024764"> if (newLayer)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024765"> fprintf(fout, "%s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024766"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024767"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024768"> fprintf(fout, "Str %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024769"> p->defiPath::getViaRotationStr());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024770"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024771"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024772"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024773"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024774"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024775"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024776"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024777"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024778"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024779"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024780"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024781"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024782"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024783"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024784"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024785"> case DEFIPATH_SHAPE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024786"> fprintf(fout, "+ SHAPE %s ", p->defiPath::getShape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024787"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024788"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024789"> fprintf(fout, "+ STYLE %d ", p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024790"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024791"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024792"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024793"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024794"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024795"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024796"> // layerName width</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024797"> if (ppath->defiNet::hasWidthRules()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024798"> for (i = 0; i < ppath->defiNet::numWidthRules(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024799"> ppath->defiNet::widthRule(i, &layerName, &dist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024800"> fprintf (fout, "\n + WIDTH %s %g ", layerName, dist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024801"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024802"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024803"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024804"> // layerName spacing</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024805"> if (ppath->defiNet::hasSpacingRules()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024806"> for (i = 0; i < ppath->defiNet::numSpacingRules(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024807"> ppath->defiNet::spacingRule(i, &layerName, &dist, &left, &right);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024808"> if (left == right)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024809"> fprintf (fout, "\n + SPACING %s %g ", layerName, dist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024810"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024811"> fprintf (fout, "\n + SPACING %s %g RANGE %g %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024812"> layerName, dist, left, right);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024813"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024814"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024815"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024816"> if (ppath->defiNet::hasFixedbump())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024817"> fprintf(fout, "\n + FIXEDBUMP ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024818"> if (ppath->defiNet::hasFrequency())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024819"> fprintf(fout, "\n + FREQUENCY %g ", ppath->defiNet::frequency());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024820"> if (ppath->defiNet::hasVoltage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024821"> fprintf(fout, "\n + VOLTAGE %g ", ppath->defiNet::voltage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024822"> if (ppath->defiNet::hasWeight())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024823"> fprintf(fout, "\n + WEIGHT %d ", ppath->defiNet::weight());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024824"> if (ppath->defiNet::hasCap())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024825"> fprintf(fout, "\n + ESTCAP %g ", ppath->defiNet::cap());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024826"> if (ppath->defiNet::hasSource())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024827"> fprintf(fout, "\n + SOURCE %s ", ppath->defiNet::source());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024828"> if (ppath->defiNet::hasPattern())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024829"> fprintf(fout, "\n + PATTERN %s ", ppath->defiNet::pattern());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024830"> if (ppath->defiNet::hasOriginal())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024831"> fprintf(fout, "\n + ORIGINAL %s ", ppath->defiNet::original());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024832"> if (ppath->defiNet::hasUse())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024833"> fprintf(fout, "\n + USE %s ", ppath->defiNet::use());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024834"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024835"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024836"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024837"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024838">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024839"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024840"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024841">int snetwire(defrCallbackType_e c, defiNet* ppath, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024842"> int i, j, x, y, z, count = 0, newLayer;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024843"> defiPath* p;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024844"> int path;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024845"> defiWire* wire;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024846"> defiShield* shield;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024847"> int numX, numY, stepX, stepY;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024848"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024849"> if (c != defrSNetWireCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024850"> return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024851"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024852"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024853"> fprintf (fout, "SPECIALNET wire data\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024854"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024855"> fprintf(fout, "- %s ", ppath->defiNet::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024856"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024857"> // specialWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024858"> if (ppath->defiNet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024859"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024860"> for (i = 0; i < ppath->defiNet::numWires(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024861"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024862"> wire = ppath->defiNet::wire(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024863"> fprintf(fout, "\n + %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024864"> if (strcmp (wire->wireType(), "SHIELD") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024865"> fprintf(fout, "%s ", wire->wireShieldNetName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024866"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024867"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024868"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024869"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024870"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024871"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024872"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024873"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024874"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024875"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024876"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024877"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024878"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024879"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024880"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024881"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024882"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024883"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024884"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024885"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024886"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024887"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024888"> fprintf(fout, "%s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024889"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024890"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024891"> case DEFIPATH_VIADATA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024892"> p->defiPath::getViaData(&numX, &numY, &stepX, &stepY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024893"> fprintf(fout, "DO %d BY %d STEP %d %d ", numX, numY,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024894"> stepX, stepY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024895"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024896"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024897"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024898"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024899"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024900"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024901"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024902"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024903"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024904"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024905"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024906"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024907"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024908"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024909"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024910"> case DEFIPATH_SHAPE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024911"> fprintf(fout, "+ SHAPE %s ", p->defiPath::getShape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024912"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024913"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024914"> fprintf(fout, "+ STYLE %d ", p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024915"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024916"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024917"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024918"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024919"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024920"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024921"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024922"> } else if (ppath->defiNet::numShields()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024923"> for (i = 0; i < ppath->defiNet::numShields(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024924"> shield = ppath->defiNet::shield(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024925"> fprintf(fout, "\n + SHIELD %s ", shield->defiShield::shieldName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024926"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024927"> for (j = 0; j < shield->defiShield::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024928"> p = shield->defiShield::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024929"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024930"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024931"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024932"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024933"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024934"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024935"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024936"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024937"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024938"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024939"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024940"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024941"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024942"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024943"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024944"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024945"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024946"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024947"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024948"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024949"> fprintf(fout, "%s ", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024950"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024951"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024952"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024953"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024954"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024955"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024956"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024957"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024958"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024959"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024960"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024961"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024962"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024963"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024964"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024965"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024966"> case DEFIPATH_SHAPE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024967"> fprintf(fout, "+ SHAPE %s ", p->defiPath::getShape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024968"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024969"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024970"> fprintf(fout, "+ STYLE %d ", p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024971"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024972"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024973"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024974"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024975"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024976"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024977"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024978"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024979"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024980"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024981">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024982"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024983">int snetf(defrCallbackType_e c, defiNet* net, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024984"> // For net and special net.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024985"> int i, j, x, y, z, count, newLayer;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024986"> char* layerName;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024987"> double dist, left, right;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024988"> defiPath* p;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024989"> defiSubnet *s;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024990"> int path;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024991"> defiShield* shield;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024992"> defiWire* wire;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024993"> int numX, numY, stepX, stepY;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024994"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024995"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024996"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024997"> if (c != defrSNetCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024998"> fprintf(fout, "BOGUS NET TYPE ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024999"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025000"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025001"> // compName & pinName</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025002"> for (i = 0; i < net->defiNet::numConnections(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025003"> // set the limit of only 5 items print out in one line</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025004"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025005"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025006"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025007"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025008"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025009"> fprintf (fout, "( %s %s ) ", net->defiNet::instance(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025010"> net->defiNet::pin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025011"> if (net->defiNet::pinIsSynthesized(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025012"> fprintf(fout, "+ SYNTHESIZED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025013"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025014"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025015"> // specialWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025016"> if (net->defiNet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025017"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025018"> for (i = 0; i < net->defiNet::numWires(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025019"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025020"> wire = net->defiNet::wire(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025021"> fprintf(fout, "\n + %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025022"> if (strcmp (wire->wireType(), "SHIELD") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025023"> fprintf(fout, "%s ", wire->wireShieldNetName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025024"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025025"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025026"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025027"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025028"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025029"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025030"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025031"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025032"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025033"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025034"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025035"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025036"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025037"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025038"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025039"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025040"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025041"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025042"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025043"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025044"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025045"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025046"> fprintf(fout, "%s ", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025047"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025048"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025049"> case DEFIPATH_VIADATA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025050"> p->defiPath::getViaData(&numX, &numY, &stepX, &stepY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025051"> fprintf(fout, "DO %d BY %d STEP %d %d ", numX, numY,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025052"> stepX, stepY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025053"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025054"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025055"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025056"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025057"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025058"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025059"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025060"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025061"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025062"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025063"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025064"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025065"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025066"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025067"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025068"> case DEFIPATH_SHAPE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025069"> fprintf(fout, "+ SHAPE %s ", p->defiPath::getShape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025070"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025071"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025072"> fprintf(fout, "+ STYLE %d ", p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025073"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025074"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025075"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025076"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025077"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025078"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025079"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025080"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025081"> // POLYGON</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025082"> if (net->defiNet::numPolygons()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025083"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025084"> for (i = 0; i < net->defiNet::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025085"> fprintf(fout, "\n + POLYGON %s ", net->polygonName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025086"> points = net->getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025087"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025088"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025089"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025090"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025091"> // RECT</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025092"> if (net->defiNet::numRectangles()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025093"> for (i = 0; i < net->defiNet::numRectangles(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025094"> fprintf(fout, "\n + RECT %s %d %d %d %d", net->defiNet::rectName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025095"> net->defiNet::xl(i), net->defiNet::yl(i), net->defiNet::xh(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025096"> net->defiNet::yh(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025097"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025098"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025099"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025100"> if (net->defiNet::hasSubnets()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025101"> for (i = 0; i < net->defiNet::numSubnets(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025102"> s = net->defiNet::subnet(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025103"> if (s->defiSubnet::numConnections()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025104"> if (s->defiSubnet::pinIsMustJoin(0))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025105"> fprintf(fout, "- MUSTJOIN ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025106"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025107"> fprintf(fout, "- %s ", s->defiSubnet::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025108"> for (j = 0; j < s->defiSubnet::numConnections(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025109"> fprintf(fout, " ( %s %s )\n", s->defiSubnet::instance(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025110"> s->defiSubnet::pin(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025111"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025112"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025113"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025114"> // regularWiring</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025115"> if (s->defiSubnet::numWires()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025116"> for (i = 0; i < s->defiSubnet::numWires(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025117"> wire = s->defiSubnet::wire(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025118"> fprintf(fout, " + %s ", wire->wireType());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025119"> for (j = 0; j < wire->defiWire::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025120"> p = wire->defiWire::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025121"> p->defiPath::print(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025122"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025123"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025124"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025125"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025126"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025127"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025128"> if (net->defiNet::numProps()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025129"> for (i = 0; i < net->defiNet::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025130"> if (net->defiNet::propIsString(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025131"> fprintf(fout, " + PROPERTY %s %s ", net->defiNet::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025132"> net->defiNet::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025133"> if (net->defiNet::propIsNumber(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025134"> fprintf(fout, " + PROPERTY %s %g ", net->defiNet::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025135"> net->defiNet::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025136"> switch (net->defiNet::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025137"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025138"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025139"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025140"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025141"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025142"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025143"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025144"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025145"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025146"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025147"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025148"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025149"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025150"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025151"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025152"> // SHIELD</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025153"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025154"> // testing the SHIELD for 5.3, obsolete in 5.4</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025155"> if (net->defiNet::numShields()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025156"> for (i = 0; i < net->defiNet::numShields(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025157"> shield = net->defiNet::shield(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025158"> fprintf(fout, "\n + SHIELD %s ", shield->defiShield::shieldName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025159"> newLayer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025160"> for (j = 0; j < shield->defiShield::numPaths(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025161"> p = shield->defiShield::path(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025162"> p->initTraverse();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025163"> while ((path = (int)p->defiPath::next()) != DEFIPATH_DONE) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025164"> count++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025165"> // Don't want the line to be too long</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025166"> if (count >= 5) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025167"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025168"> count = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025169"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025170"> switch (path) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025171"> case DEFIPATH_LAYER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025172"> if (newLayer == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025173"> fprintf(fout, "%s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025174"> newLayer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025175"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025176"> fprintf(fout, "NEW %s ", p->defiPath::getLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025177"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025178"> case DEFIPATH_VIA:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025179"> fprintf(fout, "%s ", p->defiPath::getVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025180"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025181"> case DEFIPATH_VIAROTATION:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025182"> fprintf(fout, "%s ", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025183"> orientStr(p->defiPath::getViaRotation()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025184"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025185"> case DEFIPATH_WIDTH:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025186"> fprintf(fout, "%d ", p->defiPath::getWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025187"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025188"> case DEFIPATH_POINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025189"> p->defiPath::getPoint(&x, &y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025190"> fprintf(fout, "( %d %d ) ", x, y);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025191"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025192"> case DEFIPATH_FLUSHPOINT:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025193"> p->defiPath::getFlushPoint(&x, &y, &z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025194"> fprintf(fout, "( %d %d %d ) ", x, y, z);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025195"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025196"> case DEFIPATH_TAPER:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025197"> fprintf(fout, "TAPER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025198"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025199"> case DEFIPATH_SHAPE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025200"> fprintf(fout, "+ SHAPE %s ", p->defiPath::getShape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025201"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025202"> case DEFIPATH_STYLE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025203"> fprintf(fout, "+ STYLE %d ", p->defiPath::getStyle());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025204"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025205"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025206"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025207"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025208"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025209"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025210"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025211"> // layerName width</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025212"> if (net->defiNet::hasWidthRules()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025213"> for (i = 0; i < net->defiNet::numWidthRules(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025214"> net->defiNet::widthRule(i, &layerName, &dist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025215"> fprintf (fout, "\n + WIDTH %s %g ", layerName, dist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025216"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025217"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025218"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025219"> // layerName spacing</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025220"> if (net->defiNet::hasSpacingRules()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025221"> for (i = 0; i < net->defiNet::numSpacingRules(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025222"> net->defiNet::spacingRule(i, &layerName, &dist, &left, &right);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025223"> if (left == right)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025224"> fprintf (fout, "\n + SPACING %s %g ", layerName, dist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025225"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025226"> fprintf (fout, "\n + SPACING %s %g RANGE %g %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025227"> layerName, dist, left, right);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025228"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025229"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025230"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025231"> if (net->defiNet::hasFixedbump())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025232"> fprintf(fout, "\n + FIXEDBUMP ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025233"> if (net->defiNet::hasFrequency())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025234"> fprintf(fout, "\n + FREQUENCY %g ", net->defiNet::frequency());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025235"> if (net->defiNet::hasVoltage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025236"> fprintf(fout, "\n + VOLTAGE %g ", net->defiNet::voltage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025237"> if (net->defiNet::hasWeight())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025238"> fprintf(fout, "\n + WEIGHT %d ", net->defiNet::weight());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025239"> if (net->defiNet::hasCap())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025240"> fprintf(fout, "\n + ESTCAP %g ", net->defiNet::cap());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025241"> if (net->defiNet::hasSource())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025242"> fprintf(fout, "\n + SOURCE %s ", net->defiNet::source());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025243"> if (net->defiNet::hasPattern())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025244"> fprintf(fout, "\n + PATTERN %s ", net->defiNet::pattern());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025245"> if (net->defiNet::hasOriginal())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025246"> fprintf(fout, "\n + ORIGINAL %s ", net->defiNet::original());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025247"> if (net->defiNet::hasUse())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025248"> fprintf(fout, "\n + USE %s ", net->defiNet::use());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025249"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025250"> fprintf (fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025251"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025252"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025253"> fprintf(fout, "END SPECIALNETS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025254"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025255">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025256"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025257"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025258">int ndr(defrCallbackType_e c, defiNonDefault* nd, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025259"> // For nondefaultrule</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025260"> int i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025261"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025262"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025263"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025264"> if (c != defrNonDefaultCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025265"> fprintf(fout, "BOGUS NONDEFAULTRULE TYPE ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025266"> fprintf(fout, "- %s\n", nd->defiNonDefault::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025267"> if (nd->defiNonDefault::hasHardspacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025268"> fprintf(fout, " + HARDSPACING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025269"> for (i = 0; i < nd->defiNonDefault::numLayers(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025270"> fprintf(fout, " + LAYER %s", nd->defiNonDefault::layerName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025271"> fprintf(fout, " WIDTH %d", nd->defiNonDefault::layerWidthVal(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025272"> if (nd->defiNonDefault::hasLayerDiagWidth(i)) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025273"> fprintf(fout, " DIAGWIDTH %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025274"> nd->defiNonDefault::layerDiagWidthVal(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025275"> if (nd->defiNonDefault::hasLayerSpacing(i)) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025276"> fprintf(fout, " SPACING %d", nd->defiNonDefault::layerSpacingVal(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025277"> if (nd->defiNonDefault::hasLayerWireExt(i)) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025278"> fprintf(fout, " WIREEXT %d", nd->defiNonDefault::layerWireExtVal(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025279"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025280"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025281"> for (i = 0; i < nd->defiNonDefault::numVias(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025282"> fprintf(fout, " + VIA %s\n", nd->defiNonDefault::viaName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025283"> for (i = 0; i < nd->defiNonDefault::numViaRules(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025284"> fprintf(fout, " + VIARULE %s\n", nd->defiNonDefault::viaRuleName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025285"> for (i = 0; i < nd->defiNonDefault::numMinCuts(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025286"> fprintf(fout, " + MINCUTS %s %d\n", nd->defiNonDefault::cutLayerName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025287"> nd->defiNonDefault::numCuts(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025288"> for (i = 0; i < nd->defiNonDefault::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025289"> fprintf(fout, " + PROPERTY %s %s ", nd->defiNonDefault::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025290"> nd->defiNonDefault::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025291"> switch (nd->defiNonDefault::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025292"> case 'R': fprintf(fout, "REAL\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025293"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025294"> case 'I': fprintf(fout, "INTEGER\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025295"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025296"> case 'S': fprintf(fout, "STRING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025297"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025298"> case 'Q': fprintf(fout, "QUOTESTRING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025299"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025300"> case 'N': fprintf(fout, "NUMBER\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025301"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025302"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025303"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025304"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025305"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025306"> fprintf(fout, "END NONDEFAULTRULES\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025307"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025308">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025309"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025310">int tname(defrCallbackType_e c, const char* string, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025311"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025312"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025313"> fprintf(fout, "TECHNOLOGY %s ;\n", string);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025314"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025315">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025316"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025317">int dname(defrCallbackType_e c, const char* string, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025318"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025319"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025320"> fprintf(fout, "DESIGN %s ;\n", string);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025321"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025322"> // Test changing the user data.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025323"> userData = 89;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025324"> defrSetUserData((void*)userData);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025325"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025326"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025327">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025328"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025329"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025330">char* address(const char* in) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025331"> return ((char*)in);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025332">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025333"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025334">int cs(defrCallbackType_e c, int num, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025335"> char* name;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025336"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025337"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025338"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025339"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025340"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025341"> switch (c) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025342"> case defrComponentStartCbkType : name = address("COMPONENTS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025343"> case defrNetStartCbkType : name = address("NETS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025344"> case defrStartPinsCbkType : name = address("PINS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025345"> case defrViaStartCbkType : name = address("VIAS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025346"> case defrRegionStartCbkType : name = address("REGIONS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025347"> case defrSNetStartCbkType : name = address("SPECIALNETS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025348"> case defrGroupsStartCbkType : name = address("GROUPS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025349"> case defrScanchainsStartCbkType : name = address("SCANCHAINS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025350"> case defrIOTimingsStartCbkType : name = address("IOTIMINGS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025351"> case defrFPCStartCbkType : name = address("FLOORPLANCONSTRAINTS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025352"> case defrTimingDisablesStartCbkType : name = address("TIMING DISABLES"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025353"> case defrPartitionsStartCbkType : name = address("PARTITIONS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025354"> case defrPinPropStartCbkType : name = address("PINPROPERTIES"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025355"> case defrBlockageStartCbkType : name = address("BLOCKAGES"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025356"> case defrSlotStartCbkType : name = address("SLOTS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025357"> case defrFillStartCbkType : name = address("FILLS"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025358"> case defrNonDefaultStartCbkType : name = address("NONDEFAULTRULES"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025359"> case defrStylesStartCbkType : name = address("STYLES"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025360"> default : name = address("BOGUS"); return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025361"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025362"> fprintf(fout, "\n%s %d ;\n", name, num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025363"> numObjs = num;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025364"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025365">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025366"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025367">int constraintst(defrCallbackType_e c, int num, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025368"> // Handles both constraints and assertions</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025369"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025370"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025371"> if (c == defrConstraintsStartCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025372"> fprintf(fout, "\nCONSTRAINTS %d ;\n\n", num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025373"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025374"> fprintf(fout, "\nASSERTIONS %d ;\n\n", num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025375"> numObjs = num;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025376"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025377">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025378"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025379">void operand(defrCallbackType_e c, defiAssertion* a, int ind) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025380"> int i, first = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025381"> char* netName;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025382"> char* fromInst, * fromPin, * toInst, * toPin;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025383"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025384"> if (a->defiAssertion::isSum()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025385"> // Sum in operand, recursively call operand</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025386"> fprintf(fout, "- SUM ( ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025387"> a->defiAssertion::unsetSum();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025388"> isSumSet = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025389"> begOperand = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025390"> operand (c, a, ind);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025391"> fprintf(fout, ") ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025392"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025393"> // operand</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025394"> if (ind >= a->defiAssertion::numItems()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025395"> fprintf(fout, "ERROR: when writing out SUM in Constraints.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025396"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025397"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025398"> if (begOperand) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025399"> fprintf(fout, "- ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025400"> begOperand = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025401"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025402"> for (i = ind; i < a->defiAssertion::numItems(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025403"> if (a->defiAssertion::isNet(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025404"> a->defiAssertion::net(i, &netName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025405"> if (!first)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025406"> fprintf(fout, ", "); // print , as separator</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025407"> fprintf(fout, "NET %s ", netName); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025408"> } else if (a->defiAssertion::isPath(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025409"> a->defiAssertion::path(i, &fromInst, &fromPin, &toInst,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025410"> &toPin);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025411"> if (!first)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025412"> fprintf(fout, ", ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025413"> fprintf(fout, "PATH %s %s %s %s ", fromInst, fromPin, toInst,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025414"> toPin);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025415"> } else if (isSumSet) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025416"> // SUM within SUM, reset the flag</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025417"> a->defiAssertion::setSum();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025418"> operand(c, a, i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025419"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025420"> first = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025421"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025422"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025423"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025424">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025425"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025426">int constraint(defrCallbackType_e c, defiAssertion* a, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025427"> // Handles both constraints and assertions</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025428"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025429"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025430"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025431"> if (a->defiAssertion::isWiredlogic())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025432"> // Wirelogic</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025433"> fprintf(fout, "- WIREDLOGIC %s + MAXDIST %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025434"> a->defiAssertion::netName(), a->defiAssertion::fallMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025435"> else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025436"> // Call the operand function</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025437"> isSumSet = 0; // reset the global variable</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025438"> begOperand = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025439"> operand (c, a, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025440"> // Get the Rise and Fall</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025441"> if (a->defiAssertion::hasRiseMax())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025442"> fprintf(fout, "+ RISEMAX %g ", a->defiAssertion::riseMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025443"> if (a->defiAssertion::hasFallMax())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025444"> fprintf(fout, "+ FALLMAX %g ", a->defiAssertion::fallMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025445"> if (a->defiAssertion::hasRiseMin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025446"> fprintf(fout, "+ RISEMIN %g ", a->defiAssertion::riseMin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025447"> if (a->defiAssertion::hasFallMin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025448"> fprintf(fout, "+ FALLMIN %g ", a->defiAssertion::fallMin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025449"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025450"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025451"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025452"> if (numObjs <= 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025453"> if (c == defrConstraintCbkType)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025454"> fprintf(fout, "END CONSTRAINTS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025455"> else </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025456"> fprintf(fout, "END ASSERTIONS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025457"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025458"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025459">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025460"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025461"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025462">int propstart(defrCallbackType_e c, void* dummy, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025463"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025464"> fprintf(fout, "\nPROPERTYDEFINITIONS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025465"> isProp = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025466"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025467"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025468">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025469"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025470"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025471">int prop(defrCallbackType_e c, defiProp* p, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025472"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025473"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025474"> if (strcmp(p->defiProp::propType(), "design") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025475"> fprintf(fout, "DESIGN %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025476"> else if (strcmp(p->defiProp::propType(), "net") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025477"> fprintf(fout, "NET %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025478"> else if (strcmp(p->defiProp::propType(), "component") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025479"> fprintf(fout, "COMPONENT %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025480"> else if (strcmp(p->defiProp::propType(), "specialnet") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025481"> fprintf(fout, "SPECIALNET %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025482"> else if (strcmp(p->defiProp::propType(), "group") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025483"> fprintf(fout, "GROUP %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025484"> else if (strcmp(p->defiProp::propType(), "row") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025485"> fprintf(fout, "ROW %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025486"> else if (strcmp(p->defiProp::propType(), "componentpin") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025487"> fprintf(fout, "COMPONENTPIN %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025488"> else if (strcmp(p->defiProp::propType(), "region") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025489"> fprintf(fout, "REGION %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025490"> else if (strcmp(p->defiProp::propType(), "nondefaultrule") == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025491"> fprintf(fout, "NONDEFAULTRULE %s ", p->defiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025492"> if (p->defiProp::dataType() == 'I')</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025493"> fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025494"> if (p->defiProp::dataType() == 'R')</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025495"> fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025496"> if (p->defiProp::dataType() == 'S')</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025497"> fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025498"> if (p->defiProp::dataType() == 'Q')</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025499"> fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025500"> if (p->defiProp::hasRange()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025501"> fprintf(fout, "RANGE %g %g ", p->defiProp::left(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025502"> p->defiProp::right());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025503"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025504"> if (p->defiProp::hasNumber())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025505"> fprintf(fout, "%g ", p->defiProp::number());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025506"> if (p->defiProp::hasString())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025507"> fprintf(fout, "\"%s\" ", p->defiProp::string());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025508"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025509"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025510"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025511">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025512"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025513"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025514">int propend(defrCallbackType_e c, void* dummy, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025515"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025516"> if (isProp) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025517"> fprintf(fout, "END PROPERTYDEFINITIONS\n\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025518"> isProp = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025519"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025520"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025521"> defrSetCaseSensitivity(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025522"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025523">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025524"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025525"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025526">int hist(defrCallbackType_e c, const char* h, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025527"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025528"> defrSetCaseSensitivity(0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025529"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025530"> fprintf(fout, "HISTORY %s ;\n", h);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025531"> defrSetCaseSensitivity(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025532"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025533">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025534"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025535"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025536">int an(defrCallbackType_e c, const char* h, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025537"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025538"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025539"> fprintf(fout, "ARRAY %s ;\n", h);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025540"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025541">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025542"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025543"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025544">int fn(defrCallbackType_e c, const char* h, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025545"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025546"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025547"> fprintf(fout, "FLOORPLAN %s ;\n", h);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025548"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025549">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025550"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025551"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025552">int bbn(defrCallbackType_e c, const char* h, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025553"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025554"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025555"> fprintf(fout, "BUSBITCHARS \"%s\" ;\n", h);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025556"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025557">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025558"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025559"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025560">int vers(defrCallbackType_e c, double d, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025561"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025562"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025563"> fprintf(fout, "VERSION %g ;\n", d);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025564"> curVer = d;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025565"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025566"> defrAddAlias ("alias1", "aliasValue1", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025567"> defrAddAlias ("alias2", "aliasValue2", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025568"> defiAlias_itr *aliasStore;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025569"> aliasStore = (defiAlias_itr*)malloc(sizeof(defiAlias_itr*));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025570"> aliasStore->Init();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025571"> while (aliasStore->defiAlias_itr::Next()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025572"> fprintf(fout, "ALIAS %s %s %d ;\n", aliasStore->defiAlias_itr::Key(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025573"> aliasStore->defiAlias_itr::Data(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025574"> aliasStore->defiAlias_itr::Marked());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025575"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025576"> free(aliasStore);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025577"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025578">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025579"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025580"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025581">int versStr(defrCallbackType_e c, const char* versionName, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025582"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025583"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025584"> fprintf(fout, "VERSION %s ;\n", versionName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025585"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025586">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025587"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025588"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025589">int units(defrCallbackType_e c, double d, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025590"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025591"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025592"> fprintf(fout, "UNITS DISTANCE MICRONS %g ;\n", d);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025593"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025594">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025595"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025596"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025597">int casesens(defrCallbackType_e c, int d, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025598"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025599"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025600"> if (d == 1)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025601"> fprintf(fout, "NAMESCASESENSITIVE ON ;\n", d);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025602"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025603"> fprintf(fout, "NAMESCASESENSITIVE OFF ;\n", d);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025604"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025605">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025606"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025607"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025608">int cls(defrCallbackType_e c, void* cl, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025609"> defiSite* site; // Site and Canplace and CannotOccupy</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025610"> defiBox* box; // DieArea and </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025611"> defiPinCap* pc;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025612"> defiPin* pin;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025613"> int i, j;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025614"> defiRow* row;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025615"> defiTrack* track;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025616"> defiGcellGrid* gcg;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025617"> defiVia* via;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025618"> defiRegion* re;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025619"> defiGroup* group;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025620"> defiScanchain* sc;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025621"> defiIOTiming* iot;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025622"> defiFPC* fpc;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025623"> defiTimingDisable* td;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025624"> defiPartition* part;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025625"> defiPinProp* pprop;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025626"> defiBlockage* block;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025627"> defiSlot* slots;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025628"> defiFill* fills;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025629"> defiStyles* styles;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025630"> int xl, yl, xh, yh;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025631"> char *name, *a1, *b1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025632"> char **inst, **inPin, **outPin;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025633"> int *bits;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025634"> int size;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025635"> int corner, typ;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025636"> const char *itemT;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025637"> char dir;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025638"> defiPinAntennaModel* aModel;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025639"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025640"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025641"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025642"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025643"> switch (c) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025644"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025645"> case defrSiteCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025646"> site = (defiSite*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025647"> fprintf(fout, "SITE %s %g %g %s ", site->defiSite::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025648"> site->defiSite::x_orig(), site->defiSite::y_orig(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025649"> orientStr(site->defiSite::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025650"> fprintf(fout, "DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025651"> site->defiSite::x_num(), site->defiSite::y_num(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025652"> site->defiSite::x_step(), site->defiSite::y_step());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025653"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025654"> case defrCanplaceCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025655"> site = (defiSite*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025656"> fprintf(fout, "CANPLACE %s %g %g %s ", site->defiSite::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025657"> site->defiSite::x_orig(), site->defiSite::y_orig(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025658"> orientStr(site->defiSite::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025659"> fprintf(fout, "DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025660"> site->defiSite::x_num(), site->defiSite::y_num(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025661"> site->defiSite::x_step(), site->defiSite::y_step());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025662"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025663"> case defrCannotOccupyCbkType : </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025664"> site = (defiSite*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025665"> fprintf(fout, "CANNOTOCCUPY %s %g %g %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025666"> site->defiSite::name(), site->defiSite::x_orig(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025667"> site->defiSite::y_orig(), orientStr(site->defiSite::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025668"> fprintf(fout, "DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025669"> site->defiSite::x_num(), site->defiSite::y_num(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025670"> site->defiSite::x_step(), site->defiSite::y_step());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025671"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025672"> case defrDieAreaCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025673"> box = (defiBox*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025674"> fprintf(fout, "DIEAREA %d %d %d %d ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025675"> box->defiBox::xl(), box->defiBox::yl(), box->defiBox::xh(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025676"> box->defiBox::yh());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025677"> fprintf(fout, "DIEAREA ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025678"> points = box->defiBox::getPoint();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025679"> for (i = 0; i < points.numPoints; i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025680"> fprintf(fout, "%d %d ", points.x[i], points.y[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025681"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025682"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025683"> case defrPinCapCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025684"> pc = (defiPinCap*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025685"> fprintf(fout, "MINPINS %d WIRECAP %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025686"> pc->defiPinCap::pin(), pc->defiPinCap::cap());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025687"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025688"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025689"> fprintf(fout, "END DEFAULTCAP\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025690"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025691"> case defrPinCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025692"> pin = (defiPin*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025693"> fprintf(fout, "- %s + NET %s ", pin->defiPin::pinName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025694"> pin->defiPin::netName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025695"> if (pin->defiPin::hasDirection())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025696"> fprintf(fout, "+ DIRECTION %s ", pin->defiPin::direction());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025697"> if (pin->defiPin::hasUse())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025698"> fprintf(fout, "+ USE %s ", pin->defiPin::use());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025699"> if (pin->defiPin::hasNetExpr())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025700"> fprintf(fout, "+ NETEXPR \"%s\" ", pin->defiPin::netExpr());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025701"> if (pin->defiPin::hasSupplySensitivity())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025702"> fprintf(fout, "+ SUPPLYSENSITIVITY %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025703"> pin->defiPin::supplySensitivity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025704"> if (pin->defiPin::hasGroundSensitivity())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025705"> fprintf(fout, "+ GROUNDSENSITIVITY %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025706"> pin->defiPin::groundSensitivity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025707"> if (pin->defiPin::hasLayer()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025708"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025709"> for (i = 0; i < pin->defiPin::numLayer(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025710"> fprintf(fout, "\n + LAYER %s ", pin->defiPin::layer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025711"> if (pin->defiPin::hasLayerSpacing(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025712"> fprintf(fout, "SPACING %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025713"> pin->defiPin::layerSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025714"> if (pin->defiPin::hasLayerDesignRuleWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025715"> fprintf(fout, "DESIGNRULEWIDTH %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025716"> pin->defiPin::layerDesignRuleWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025717"> pin->defiPin::bounds(i, &xl, &yl, &xh, &yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025718"> fprintf(fout, "%d %d %d %d ", xl, yl, xh, yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025719"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025720"> for (i = 0; i < pin->defiPin::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025721"> fprintf(fout, "\n + POLYGON %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025722"> pin->defiPin::polygonName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025723"> if (pin->defiPin::hasPolygonSpacing(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025724"> fprintf(fout, "SPACING %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025725"> pin->defiPin::polygonSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025726"> if (pin->defiPin::hasPolygonDesignRuleWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025727"> fprintf(fout, "DESIGNRULEWIDTH %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025728"> pin->defiPin::polygonDesignRuleWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025729"> points = pin->defiPin::getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025730"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025731"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025732"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025733"> for (i = 0; i < pin->defiPin::numVias(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025734"> fprintf(fout, "\n + VIA %s %d %d ", pin->defiPin::viaName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025735"> pin->defiPin::viaPtX(i), pin->defiPin::viaPtY(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025736"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025737"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025738"> if (pin->defiPin::hasPort()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025739"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025740"> defiPinPort* port;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025741"> for (j = 0; j < pin->defiPin::numPorts(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025742"> port = pin->defiPin::pinPort(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025743"> fprintf(fout, "\n + PORT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025744"> for (i = 0; i < port->defiPinPort::numLayer(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025745"> fprintf(fout, "\n + LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025746"> port->defiPinPort::layer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025747"> if (port->defiPinPort::hasLayerSpacing(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025748"> fprintf(fout, "SPACING %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025749"> port->defiPinPort::layerSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025750"> if (port->defiPinPort::hasLayerDesignRuleWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025751"> fprintf(fout, "DESIGNRULEWIDTH %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025752"> port->defiPinPort::layerDesignRuleWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025753"> port->defiPinPort::bounds(i, &xl, &yl, &xh, &yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025754"> fprintf(fout, "%d %d %d %d ", xl, yl, xh, yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025755"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025756"> for (i = 0; i < port->defiPinPort::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025757"> fprintf(fout, "\n + POLYGON %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025758"> port->defiPinPort::polygonName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025759"> if (port->defiPinPort::hasPolygonSpacing(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025760"> fprintf(fout, "SPACING %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025761"> port->defiPinPort::polygonSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025762"> if (port->defiPinPort::hasPolygonDesignRuleWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025763"> fprintf(fout, "DESIGNRULEWIDTH %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025764"> port->defiPinPort::polygonDesignRuleWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025765"> points = port->defiPinPort::getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025766"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025767"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025768"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025769"> for (i = 0; i < port->defiPinPort::numVias(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025770"> fprintf(fout, "\n + VIA %s %g %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025771"> port->defiPinPort::viaName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025772"> port->defiPinPort::viaPtX(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025773"> port->defiPinPort::viaPtY(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025774"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025775"> if (port->defiPinPort::hasPlacement()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025776"> if (port->defiPinPort::isPlaced()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025777"> fprintf(fout, "\n + PLACED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025778"> fprintf(fout, "( %d %d ) %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025779"> port->defiPinPort::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025780"> port->defiPinPort::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025781"> orientStr(port->defiPinPort::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025782"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025783"> if (port->defiPinPort::isCover()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025784"> fprintf(fout, "\n + COVER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025785"> fprintf(fout, "( %d %d ) %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025786"> port->defiPinPort::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025787"> port->defiPinPort::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025788"> orientStr(port->defiPinPort::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025789"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025790"> if (port->defiPinPort::isFixed()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025791"> fprintf(fout, "\n + FIXED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025792"> fprintf(fout, "( %d %d ) %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025793"> port->defiPinPort::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025794"> port->defiPinPort::placementY(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025795"> orientStr(port->defiPinPort::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025796"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025797"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025798"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025799"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025800"> if (pin->defiPin::hasPlacement()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025801"> if (pin->defiPin::isPlaced()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025802"> fprintf(fout, "+ PLACED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025803"> fprintf(fout, "( %d %d ) %s ", pin->defiPin::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025804"> pin->defiPin::placementY(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025805"> orientStr(pin->defiPin::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025806"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025807"> if (pin->defiPin::isCover()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025808"> fprintf(fout, "+ COVER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025809"> fprintf(fout, "( %d %d ) %s ", pin->defiPin::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025810"> pin->defiPin::placementY(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025811"> orientStr(pin->defiPin::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025812"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025813"> if (pin->defiPin::isFixed()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025814"> fprintf(fout, "+ FIXED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025815"> fprintf(fout, "( %d %d ) %s ", pin->defiPin::placementX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025816"> pin->defiPin::placementY(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025817"> orientStr(pin->defiPin::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025818"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025819"> if (pin->defiPin::isUnplaced())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025820"> fprintf(fout, "+ UNPLACED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025821"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025822"> if (pin->defiPin::hasSpecial()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025823"> fprintf(fout, "+ SPECIAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025824"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025825"> if (pin->hasAPinPartialMetalArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025826"> for (i = 0; i < pin->defiPin::numAPinPartialMetalArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025827"> fprintf(fout, "ANTENNAPINPARTIALMETALAREA %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025828"> pin->APinPartialMetalArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025829"> if (*(pin->APinPartialMetalAreaLayer(i)))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025830"> fprintf(fout, " LAYER %s",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025831"> pin->APinPartialMetalAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025832"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025833"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025834"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025835"> if (pin->hasAPinPartialMetalSideArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025836"> for (i = 0; i < pin->defiPin::numAPinPartialMetalSideArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025837"> fprintf(fout, "ANTENNAPINPARTIALMETALSIDEAREA %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025838"> pin->APinPartialMetalSideArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025839"> if (*(pin->APinPartialMetalSideAreaLayer(i)))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025840"> fprintf(fout, " LAYER %s",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025841"> pin->APinPartialMetalSideAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025842"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025843"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025844"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025845"> if (pin->hasAPinDiffArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025846"> for (i = 0; i < pin->defiPin::numAPinDiffArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025847"> fprintf(fout, "ANTENNAPINDIFFAREA %d", pin->APinDiffArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025848"> if (*(pin->APinDiffAreaLayer(i)))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025849"> fprintf(fout, " LAYER %s", pin->APinDiffAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025850"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025851"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025852"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025853"> if (pin->hasAPinPartialCutArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025854"> for (i = 0; i < pin->defiPin::numAPinPartialCutArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025855"> fprintf(fout, "ANTENNAPINPARTIALCUTAREA %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025856"> pin->APinPartialCutArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025857"> if (*(pin->APinPartialCutAreaLayer(i)))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025858"> fprintf(fout, " LAYER %s", pin->APinPartialCutAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025859"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025860"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025861"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025862"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025863"> for (j = 0; j < pin->numAntennaModel(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025864"> aModel = pin->antennaModel(j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025865"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025866"> fprintf(fout, "ANTENNAMODEL %s\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025867"> aModel->defiPinAntennaModel::antennaOxide()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025868"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025869"> if (aModel->hasAPinGateArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025870"> for (i = 0; i < aModel->defiPinAntennaModel::numAPinGateArea();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025871"> i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025872"> fprintf(fout, "ANTENNAPINGATEAREA %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025873"> aModel->APinGateArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025874"> if (aModel->hasAPinGateAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025875"> fprintf(fout, " LAYER %s", aModel->APinGateAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025876"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025877"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025878"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025879"> if (aModel->hasAPinMaxAreaCar()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025880"> for (i = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025881"> i < aModel->defiPinAntennaModel::numAPinMaxAreaCar(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025882"> fprintf(fout, "ANTENNAPINMAXAREACAR %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025883"> aModel->APinMaxAreaCar(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025884"> if (aModel->hasAPinMaxAreaCarLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025885"> fprintf(fout,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025886"> " LAYER %s", aModel->APinMaxAreaCarLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025887"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025888"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025889"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025890"> if (aModel->hasAPinMaxSideAreaCar()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025891"> for (i = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025892"> i < aModel->defiPinAntennaModel::numAPinMaxSideAreaCar(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025893"> i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025894"> fprintf(fout, "ANTENNAPINMAXSIDEAREACAR %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025895"> aModel->APinMaxSideAreaCar(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025896"> if (aModel->hasAPinMaxSideAreaCarLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025897"> fprintf(fout,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025898"> " LAYER %s", aModel->APinMaxSideAreaCarLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025899"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025900"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025901"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025902"> if (aModel->hasAPinMaxCutCar()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025903"> for (i = 0; i < aModel->defiPinAntennaModel::numAPinMaxCutCar();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025904"> i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025905"> fprintf(fout, "ANTENNAPINMAXCUTCAR %d",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025906"> aModel->APinMaxCutCar(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025907"> if (aModel->hasAPinMaxCutCarLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025908"> fprintf(fout, " LAYER %s",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025909"> aModel->APinMaxCutCarLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025910"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025911"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025912"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025913"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025914"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025915"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025916"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025917"> fprintf(fout, "END PINS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025918"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025919"> case defrDefaultCapCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025920"> i = (long)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025921"> fprintf(fout, "DEFAULTCAP %d\n", i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025922"> numObjs = i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025923"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025924"> case defrRowCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025925"> row = (defiRow*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025926"> fprintf(fout, "ROW %s %s %g %g %s ", row->defiRow::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025927"> row->defiRow::macro(), row->defiRow::x(), row->defiRow::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025928"> orientStr(row->defiRow::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025929"> if (row->defiRow::hasDo()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025930"> fprintf(fout, "DO %g BY %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025931"> row->defiRow::xNum(), row->defiRow::yNum());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025932"> if (row->defiRow::hasDoStep())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025933"> fprintf(fout, "STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025934"> row->defiRow::xStep(), row->defiRow::yStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025935"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025936"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025937"> } else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025938"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025939"> if (row->defiRow::numProps() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025940"> for (i = 0; i < row->defiRow::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025941"> fprintf(fout, " + PROPERTY %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025942"> row->defiRow::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025943"> row->defiRow::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025944"> switch (row->defiRow::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025945"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025946"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025947"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025948"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025949"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025950"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025951"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025952"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025953"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025954"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025955"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025956"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025957"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025958"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025959"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025960"> case defrTrackCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025961"> track = (defiTrack*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025962"> fprintf(fout, "TRACKS %s %g DO %g STEP %g LAYER ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025963"> track->defiTrack::macro(), track->defiTrack::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025964"> track->defiTrack::xNum(), track->defiTrack::xStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025965"> for (i = 0; i < track->defiTrack::numLayers(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025966"> fprintf(fout, "%s ", track->defiTrack::layer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025967"> fprintf(fout, ";\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025968"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025969"> case defrGcellGridCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025970"> gcg = (defiGcellGrid*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025971"> fprintf(fout, "GCELLGRID %s %d DO %d STEP %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025972"> gcg->defiGcellGrid::macro(), gcg->defiGcellGrid::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025973"> gcg->defiGcellGrid::xNum(), gcg->defiGcellGrid::xStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025974"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025975"> case defrViaCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025976"> via = (defiVia*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025977"> fprintf(fout, "- %s ", via->defiVia::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025978"> if (via->defiVia::hasPattern())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025979"> fprintf(fout, "+ PATTERNNAME %s ", via->defiVia::pattern());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025980"> for (i = 0; i < via->defiVia::numLayers(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025981"> via->defiVia::layer(i, &name, &xl, &yl, &xh, &yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025982"> fprintf(fout, "+ RECT %s %d %d %d %d \n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025983"> name, xl, yl, xh, yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025984"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025985"> // POLYGON</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025986"> if (via->defiVia::numPolygons()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025987"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025988"> for (i = 0; i < via->defiVia::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025989"> fprintf(fout, "\n + POLYGON %s ", via->polygonName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025990"> points = via->getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025991"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025992"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025993"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025994"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025995"> fprintf(fout, " ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025996"> if (via->defiVia::hasViaRule()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025997"> char *vrn, *bl, *cl, *tl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025998"> int xs, ys, xcs, ycs, xbe, ybe, xte, yte;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025999"> int cr, cc, xo, yo, xbo, ybo, xto, yto;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026000"> (void)via->defiVia::viaRule(&vrn, &xs, &ys, &bl, &cl, &tl, &xcs,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026001"> &ycs, &xbe, &ybe, &xte, &yte);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026002"> fprintf(fout, "+ VIARULE '%s'\n", vrn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026003"> fprintf(fout, " + CUTSIZE %d %d\n", xs, ys);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026004"> fprintf(fout, " + LAYERS %s %s %s\n", bl, cl, tl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026005"> fprintf(fout, " + CUTSPACING %d %d\n", xcs, ycs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026006"> fprintf(fout, " + ENCLOSURE %d %d %d %d\n", xbe, ybe, xte, yte);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026007"> if (via->defiVia::hasRowCol()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026008"> (void)via->defiVia::rowCol(&cr, &cc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026009"> fprintf(fout, " + ROWCOL %d %d\n", cr, cc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026010"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026011"> if (via->defiVia::hasOrigin()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026012"> (void)via->defiVia::origin(&xo, &yo);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026013"> fprintf(fout, " + ORIGIN %d %d\n", xo, yo);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026014"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026015"> if (via->defiVia::hasOffset()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026016"> (void)via->defiVia::offset(&xbo, &ybo, &xto, &yto);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026017"> fprintf(fout, " + OFFSET %d %d %d %d\n", xbo, ybo, xto, yto);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026018"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026019"> if (via->defiVia::hasCutPattern())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026020"> fprintf(fout, " + PATTERN '%s'\n", via->defiVia::cutPattern());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026021"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026022"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026023"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026024"> fprintf(fout, "END VIAS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026025"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026026"> case defrRegionCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026027"> re = (defiRegion*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026028"> fprintf(fout, "- %s ", re->defiRegion::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026029"> for (i = 0; i < re->defiRegion::numRectangles(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026030"> fprintf(fout, "%d %d %d %d \n", re->defiRegion::xl(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026031"> re->defiRegion::yl(i), re->defiRegion::xh(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026032"> re->defiRegion::yh(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026033"> if (re->defiRegion::hasType())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026034"> fprintf(fout, "+ TYPE %s\n", re->defiRegion::type());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026035"> if (re->defiRegion::numProps()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026036"> for (i = 0; i < re->defiRegion::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026037"> fprintf(fout, "+ PROPERTY %s %s ", re->defiRegion::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026038"> re->defiRegion::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026039"> switch (re->defiRegion::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026040"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026041"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026042"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026043"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026044"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026045"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026046"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026047"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026048"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026049"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026050"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026051"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026052"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026053"> fprintf(fout, ";\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026054"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026055"> if (numObjs <= 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026056"> fprintf(fout, "END REGIONS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026057"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026058"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026059"> case defrGroupNameCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026060"> if ((char*)cl) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026061"> fprintf(fout, "- %s", (char*)cl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026062"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026063"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026064"> case defrGroupMemberCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026065"> if ((char*)cl) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026066"> fprintf(fout, " %s", (char*)cl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026067"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026068"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026069"> case defrGroupCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026070"> group = (defiGroup*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026071"> if (group->defiGroup::hasMaxX() | group->defiGroup::hasMaxY()</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026072"> | group->defiGroup::hasPerim()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026073"> fprintf(fout, "\n + SOFT ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026074"> if (group->defiGroup::hasPerim()) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026075"> fprintf(fout, "MAXHALFPERIMETER %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026076"> group->defiGroup::perim());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026077"> if (group->defiGroup::hasMaxX())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026078"> fprintf(fout, "MAXX %d ", group->defiGroup::maxX());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026079"> if (group->defiGroup::hasMaxY()) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026080"> fprintf(fout, "MAXY %d ", group->defiGroup::maxY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026081"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026082"> if (group->defiGroup::hasRegionName())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026083"> fprintf(fout, "\n + REGION %s ", group->defiGroup::regionName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026084"> if (group->defiGroup::hasRegionBox()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026085"> int *gxl, *gyl, *gxh, *gyh;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026086"> int size;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026087"> group->defiGroup::regionRects(&size, &gxl, &gyl, &gxh, &gyh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026088"> for (i = 0; i < size; i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026089"> fprintf(fout, "REGION %d %d %d %d ", gxl[i], gyl[i],</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026090"> gxh[i], gyh[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026091"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026092"> if (group->defiGroup::numProps()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026093"> for (i = 0; i < group->defiGroup::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026094"> fprintf(fout, "\n + PROPERTY %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026095"> group->defiGroup::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026096"> group->defiGroup::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026097"> switch (group->defiGroup::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026098"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026099"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026100"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026101"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026102"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026103"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026104"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026105"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026106"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026107"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026108"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026109"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026110"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026111"> fprintf(fout, " ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026112"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026113"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026114"> fprintf(fout, "END GROUPS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026115"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026116"> case defrScanchainCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026117"> sc = (defiScanchain*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026118"> fprintf(fout, "- %s\n", sc->defiScanchain::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026119"> if (sc->defiScanchain::hasStart()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026120"> sc->defiScanchain::start(&a1, &b1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026121"> fprintf(fout, " + START %s %s\n", a1, b1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026122"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026123"> if (sc->defiScanchain::hasStop()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026124"> sc->defiScanchain::stop(&a1, &b1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026125"> fprintf(fout, " + STOP %s %s\n", a1, b1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026126"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026127"> if (sc->defiScanchain::hasCommonInPin() ||</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026128"> sc->defiScanchain::hasCommonOutPin()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026129"> fprintf(fout, " + COMMONSCANPINS ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026130"> if (sc->defiScanchain::hasCommonInPin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026131"> fprintf(fout, " ( IN %s ) ", sc->defiScanchain::commonInPin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026132"> if (sc->defiScanchain::hasCommonOutPin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026133"> fprintf(fout, " ( OUT %s ) ",sc->defiScanchain::commonOutPin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026134"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026135"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026136"> if (sc->defiScanchain::hasFloating()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026137"> sc->defiScanchain::floating(&size, &inst, &inPin, &outPin, &bits);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026138"> if (size > 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026139"> fprintf(fout, " + FLOATING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026140"> for (i = 0; i < size; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026141"> fprintf(fout, " %s ", inst[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026142"> if (inPin[i])</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026143"> fprintf(fout, "( IN %s ) ", inPin[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026144"> if (outPin[i])</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026145"> fprintf(fout, "( OUT %s ) ", outPin[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026146"> if (bits[i] != -1)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026147"> fprintf(fout, "( BITS %d ) ", bits[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026148"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026149"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026150"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026151"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026152"> if (sc->defiScanchain::hasOrdered()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026153"> for (i = 0; i < sc->defiScanchain::numOrderedLists(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026154"> sc->defiScanchain::ordered(i, &size, &inst, &inPin, &outPin,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026155"> &bits);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026156"> if (size > 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026157"> fprintf(fout, " + ORDERED\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026158"> for (j = 0; j < size; j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026159"> fprintf(fout, " %s ", inst[j]); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026160"> if (inPin[j])</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026161"> fprintf(fout, "( IN %s ) ", inPin[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026162"> if (outPin[j])</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026163"> fprintf(fout, "( OUT %s ) ", outPin[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026164"> if (bits[j] != -1)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026165"> fprintf(fout, "( BITS %d ) ", bits[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026166"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026167"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026168"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026169"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026170"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026171"> if (sc->defiScanchain::hasPartition()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026172"> fprintf(fout, " + PARTITION %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026173"> sc->defiScanchain::partitionName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026174"> if (sc->defiScanchain::hasPartitionMaxBits())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026175"> fprintf(fout, "MAXBITS %d ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026176"> sc->defiScanchain::partitionMaxBits());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026177"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026178"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026179"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026180"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026181"> fprintf(fout, "END SCANCHAINS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026182"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026183"> case defrIOTimingCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026184"> iot = (defiIOTiming*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026185"> fprintf(fout, "- ( %s %s )\n", iot->defiIOTiming::inst(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026186"> iot->defiIOTiming::pin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026187"> if (iot->defiIOTiming::hasSlewRise())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026188"> fprintf(fout, " + RISE SLEWRATE %g %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026189"> iot->defiIOTiming::slewRiseMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026190"> iot->defiIOTiming::slewRiseMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026191"> if (iot->defiIOTiming::hasSlewFall())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026192"> fprintf(fout, " + FALL SLEWRATE %g %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026193"> iot->defiIOTiming::slewFallMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026194"> iot->defiIOTiming::slewFallMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026195"> if (iot->defiIOTiming::hasVariableRise())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026196"> fprintf(fout, " + RISE VARIABLE %g %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026197"> iot->defiIOTiming::variableRiseMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026198"> iot->defiIOTiming::variableRiseMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026199"> if (iot->defiIOTiming::hasVariableFall())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026200"> fprintf(fout, " + FALL VARIABLE %g %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026201"> iot->defiIOTiming::variableFallMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026202"> iot->defiIOTiming::variableFallMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026203"> if (iot->defiIOTiming::hasCapacitance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026204"> fprintf(fout, " + CAPACITANCE %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026205"> iot->defiIOTiming::capacitance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026206"> if (iot->defiIOTiming::hasDriveCell()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026207"> fprintf(fout, " + DRIVECELL %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026208"> iot->defiIOTiming::driveCell());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026209"> if (iot->defiIOTiming::hasFrom())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026210"> fprintf(fout, " FROMPIN %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026211"> iot->defiIOTiming::from());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026212"> if (iot->defiIOTiming::hasTo())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026213"> fprintf(fout, " TOPIN %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026214"> iot->defiIOTiming::to());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026215"> if (iot->defiIOTiming::hasParallel())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026216"> fprintf(fout, "PARALLEL %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026217"> iot->defiIOTiming::parallel());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026218"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026219"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026220"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026221"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026222"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026223"> fprintf(fout, "END IOTIMINGS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026224"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026225"> case defrFPCCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026226"> fpc = (defiFPC*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026227"> fprintf(fout, "- %s ", fpc->defiFPC::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026228"> if (fpc->defiFPC::isVertical())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026229"> fprintf(fout, "VERTICAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026230"> if (fpc->defiFPC::isHorizontal())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026231"> fprintf(fout, "HORIZONTAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026232"> if (fpc->defiFPC::hasAlign())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026233"> fprintf(fout, "ALIGN ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026234"> if (fpc->defiFPC::hasMax())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026235"> fprintf(fout, "%g ", fpc->defiFPC::alignMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026236"> if (fpc->defiFPC::hasMin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026237"> fprintf(fout, "%g ", fpc->defiFPC::alignMin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026238"> if (fpc->defiFPC::hasEqual())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026239"> fprintf(fout, "%g ", fpc->defiFPC::equal());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026240"> for (i = 0; i < fpc->defiFPC::numParts(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026241"> fpc->defiFPC::getPart(i, &corner, &typ, &name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026242"> if (corner == 'B')</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026243"> fprintf(fout, "BOTTOMLEFT ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026244"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026245"> fprintf(fout, "TOPRIGHT ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026246"> if (typ == 'R')</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026247"> fprintf(fout, "ROWS %s ", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026248"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026249"> fprintf(fout, "COMPS %s ", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026250"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026251"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026252"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026253"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026254"> fprintf(fout, "END FLOORPLANCONSTRAINTS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026255"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026256"> case defrTimingDisableCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026257"> td = (defiTimingDisable*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026258"> if (td->defiTimingDisable::hasFromTo())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026259"> fprintf(fout, "- FROMPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026260"> td->defiTimingDisable::fromInst(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026261"> td->defiTimingDisable::fromPin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026262"> td->defiTimingDisable::toInst(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026263"> td->defiTimingDisable::toPin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026264"> if (td->defiTimingDisable::hasThru())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026265"> fprintf(fout, "- THRUPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026266"> td->defiTimingDisable::thruInst(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026267"> td->defiTimingDisable::thruPin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026268"> if (td->defiTimingDisable::hasMacroFromTo())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026269"> fprintf(fout, "- MACRO %s FROMPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026270"> td->defiTimingDisable::macroName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026271"> td->defiTimingDisable::fromPin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026272"> td->defiTimingDisable::toPin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026273"> if (td->defiTimingDisable::hasMacroThru())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026274"> fprintf(fout, "- MACRO %s THRUPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026275"> td->defiTimingDisable::macroName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026276"> td->defiTimingDisable::fromPin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026277"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026278"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026279"> case defrPartitionCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026280"> part = (defiPartition*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026281"> fprintf(fout, "- %s ", part->defiPartition::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026282"> if (part->defiPartition::isSetupRise() |</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026283"> part->defiPartition::isSetupFall() |</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026284"> part->defiPartition::isHoldRise() |</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026285"> part->defiPartition::isHoldFall()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026286"> // has turnoff </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026287"> fprintf(fout, "TURNOFF "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026288"> if (part->defiPartition::isSetupRise())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026289"> fprintf(fout, "SETUPRISE "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026290"> if (part->defiPartition::isSetupFall())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026291"> fprintf(fout, "SETUPFALL "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026292"> if (part->defiPartition::isHoldRise())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026293"> fprintf(fout, "HOLDRISE "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026294"> if (part->defiPartition::isHoldFall())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026295"> fprintf(fout, "HOLDFALL "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026296"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026297"> itemT = part->defiPartition::itemType();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026298"> dir = part->defiPartition::direction();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026299"> if (strcmp(itemT, "CLOCK") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026300"> if (dir == 'T') // toclockpin</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026301"> fprintf(fout, "+ TOCLOCKPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026302"> part->defiPartition::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026303"> part->defiPartition::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026304"> if (dir == 'F') // fromclockpin</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026305"> fprintf(fout, "+ FROMCLOCKPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026306"> part->defiPartition::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026307"> part->defiPartition::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026308"> if (part->defiPartition::hasMin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026309"> fprintf(fout, "MIN %g %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026310"> part->defiPartition::partitionMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026311"> part->defiPartition::partitionMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026312"> if (part->defiPartition::hasMax())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026313"> fprintf(fout, "MAX %g %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026314"> part->defiPartition::partitionMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026315"> part->defiPartition::partitionMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026316"> fprintf(fout, "PINS ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026317"> for (i = 0; i < part->defiPartition::numPins(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026318"> fprintf(fout, "%s ", part->defiPartition::pin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026319"> } else if (strcmp(itemT, "IO") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026320"> if (dir == 'T') // toiopin</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026321"> fprintf(fout, "+ TOIOPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026322"> part->defiPartition::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026323"> part->defiPartition::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026324"> if (dir == 'F') // fromiopin</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026325"> fprintf(fout, "+ FROMIOPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026326"> part->defiPartition::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026327"> part->defiPartition::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026328"> } else if (strcmp(itemT, "COMP") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026329"> if (dir == 'T') // tocomppin</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026330"> fprintf(fout, "+ TOCOMPPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026331"> part->defiPartition::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026332"> part->defiPartition::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026333"> if (dir == 'F') // fromcomppin</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026334"> fprintf(fout, "+ FROMCOMPPIN %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026335"> part->defiPartition::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026336"> part->defiPartition::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026337"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026338"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026339"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026340"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026341"> fprintf(fout, "END PARTITIONS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026342"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026343"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026344"> case defrPinPropCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026345"> pprop = (defiPinProp*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026346"> if (pprop->defiPinProp::isPin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026347"> fprintf(fout, "- PIN %s ", pprop->defiPinProp::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026348"> else </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026349"> fprintf(fout, "- %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026350"> pprop->defiPinProp::instName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026351"> pprop->defiPinProp::pinName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026352"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026353"> if (pprop->defiPinProp::numProps() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026354"> for (i = 0; i < pprop->defiPinProp::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026355"> fprintf(fout, " + PROPERTY %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026356"> pprop->defiPinProp::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026357"> pprop->defiPinProp::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026358"> switch (pprop->defiPinProp::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026359"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026360"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026361"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026362"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026363"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026364"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026365"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026366"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026367"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026368"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026369"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026370"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026371"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026372"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026373"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026374"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026375"> fprintf(fout, "END PINPROPERTIES\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026376"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026377"> case defrBlockageCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026378"> block = (defiBlockage*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026379"> if (block->defiBlockage::hasLayer()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026380"> fprintf(fout, "- LAYER %s\n", block->defiBlockage::layerName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026381"> if (block->defiBlockage::hasComponent())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026382"> fprintf(fout, " + COMPONENT %s\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026383"> block->defiBlockage::layerComponentName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026384"> if (block->defiBlockage::hasSlots())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026385"> fprintf(fout, " + SLOTS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026386"> if (block->defiBlockage::hasFills())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026387"> fprintf(fout, " + FILLS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026388"> if (block->defiBlockage::hasPushdown())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026389"> fprintf(fout, " + PUSHDOWN\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026390"> if (block->defiBlockage::hasExceptpgnet())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026391"> fprintf(fout, " + EXCEPTPGNET\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026392"> if (block->defiBlockage::hasSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026393"> fprintf(fout, " + SPACING %d\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026394"> block->defiBlockage::minSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026395"> if (block->defiBlockage::hasDesignRuleWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026396"> fprintf(fout, " + DESIGNRULEWIDTH %d\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026397"> block->defiBlockage::designRuleWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026398"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026399"> else if (block->defiBlockage::hasPlacement()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026400"> fprintf(fout, "- PLACEMENT\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026401"> if (block->defiBlockage::hasSoft())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026402"> fprintf(fout, " + SOFT\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026403"> if (block->defiBlockage::hasPartial())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026404"> fprintf(fout, " + PARTIAL %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026405"> block->defiBlockage::placementMaxDensity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026406"> if (block->defiBlockage::hasComponent())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026407"> fprintf(fout, " + COMPONENT %s\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026408"> block->defiBlockage::placementComponentName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026409"> if (block->defiBlockage::hasPushdown())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026410"> fprintf(fout, " + PUSHDOWN\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026411"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026412"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026413"> for (i = 0; i < block->defiBlockage::numRectangles(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026414"> fprintf(fout, " RECT %d %d %d %d\n", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026415"> block->defiBlockage::xl(i), block->defiBlockage::yl(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026416"> block->defiBlockage::xh(i), block->defiBlockage::yh(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026417"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026418"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026419"> for (i = 0; i < block->defiBlockage::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026420"> fprintf(fout, " POLYGON ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026421"> points = block->getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026422"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026423"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026424"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026425"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026426"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026427"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026428"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026429"> fprintf(fout, "END BLOCKAGES\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026430"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026431"> case defrSlotCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026432"> slots = (defiSlot*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026433"> if (slots->defiSlot::hasLayer())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026434"> fprintf(fout, "- LAYER %s\n", slots->defiSlot::layerName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026435"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026436"> for (i = 0; i < slots->defiSlot::numRectangles(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026437"> fprintf(fout, " RECT %d %d %d %d\n", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026438"> slots->defiSlot::xl(i), slots->defiSlot::yl(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026439"> slots->defiSlot::xh(i), slots->defiSlot::yh(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026440"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026441"> for (i = 0; i < slots->defiSlot::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026442"> fprintf(fout, " POLYGON ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026443"> points = slots->getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026444"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026445"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026446"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026447"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026448"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026449"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026450"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026451"> fprintf(fout, "END SLOTS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026452"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026453"> case defrFillCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026454"> fills = (defiFill*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026455"> if (fills->defiFill::hasLayer()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026456"> fprintf(fout, "- LAYER %s", fills->defiFill::layerName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026457"> if (fills->defiFill::hasLayerOpc())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026458"> fprintf(fout, " + OPC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026459"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026460"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026461"> for (i = 0; i < fills->defiFill::numRectangles(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026462"> fprintf(fout, " RECT %d %d %d %d\n", </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026463"> fills->defiFill::xl(i), fills->defiFill::yl(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026464"> fills->defiFill::xh(i), fills->defiFill::yh(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026465"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026466"> for (i = 0; i < fills->defiFill::numPolygons(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026467"> fprintf(fout, " POLYGON "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026468"> points = fills->getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026469"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026470"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026471"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026472"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026473"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026474"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026475"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026476"> if (fills->defiFill::hasVia()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026477"> fprintf(fout, "- VIA %s", fills->defiFill::viaName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026478"> if (fills->defiFill::hasViaOpc())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026479"> fprintf(fout, " + OPC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026480"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026481"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026482"> for (i = 0; i < fills->defiFill::numViaPts(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026483"> points = fills->getViaPts(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026484"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026485"> fprintf(fout, " %d %d", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026486"> fprintf(fout, ";\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026487"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026488"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026489"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026490"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026491"> fprintf(fout, "END FILLS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026492"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026493"> case defrStylesCbkType :</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026494"> struct defiPoints points;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026495"> styles = (defiStyles*)cl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026496"> fprintf(fout, "- STYLE %d ", styles->defiStyles::style());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026497"> points = styles->defiStyles::getPolygon();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026498"> for (j = 0; j < points.numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026499"> fprintf(fout, "%d %d ", points.x[j], points.y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026500"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026501"> --numObjs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026502"> if (numObjs <= 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026503"> fprintf(fout, "END STYLES\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026504"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026505"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026506"> default: fprintf(fout, "BOGUS callback to cls.\n"); return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026507"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026508"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026509">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026510"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026511"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026512">int dn(defrCallbackType_e c, const char* h, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026513"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026514"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026515"> fprintf(fout, "DIVIDERCHAR \"%s\" ;\n",h);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026516"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026517">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026518"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026519"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026520">int ext(defrCallbackType_e t, const char* c, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026521"> char* name;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026522"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026523"> checkType(t);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026524"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026525"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026526"> switch (t) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026527"> case defrNetExtCbkType : name = address("net"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026528"> case defrComponentExtCbkType : name = address("component"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026529"> case defrPinExtCbkType : name = address("pin"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026530"> case defrViaExtCbkType : name = address("via"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026531"> case defrNetConnectionExtCbkType : name = address("net connection"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026532"> case defrGroupExtCbkType : name = address("group"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026533"> case defrScanChainExtCbkType : name = address("scanchain"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026534"> case defrIoTimingsExtCbkType : name = address("io timing"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026535"> case defrPartitionsExtCbkType : name = address("partition"); break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026536"> default: name = address("BOGUS"); return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026537"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026538"> fprintf(fout, " %s extension %s\n", name, c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026539"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026540">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026541"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026542">int extension(defrCallbackType_e c, const char* extsn, defiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026543"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026544"> if ((long)ud != userData) dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026545"> fprintf(fout, "BEGINEXT %s\n", extsn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026546"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026547">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026548"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026549">void* mallocCB(int size) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026550"> return malloc(size);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026551">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026552"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026553">void* reallocCB(void* name, int size) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026554"> return realloc(name, size);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026555">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026556"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026557">void freeCB(void* name) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026558"> free(name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026559"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026560">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026561"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026562">void lineNumberCB(int lineNo) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026563"> fprintf(fout, "Parsed %d number of lines!!\n", lineNo);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026564"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026565">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026566"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026567">int main(int argc, char** argv) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026568"> int num = 1734;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026569"> char* inFile[6];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026570"> char* outFile;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026571"> FILE* f;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026572"> int res;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026573"> int noCalls = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026574"> int retStr = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026575"> int numInFile = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026576"> int fileCt = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026577"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026578"> strcpy(defaultName, "def.in");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026579"> strcpy(defaultOut, "list");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026580"> inFile[0] = defaultName;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026581"> outFile = defaultOut;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026582"> fout = stdout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026583"> userData = 0x01020304;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026584"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026585"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026586"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026587"> while (argc--) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026588"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026589"> if (strcmp(*argv, "-d") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026590"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026591"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026592"> sscanf(*argv, "%d", &num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026593"> defiSetDebug(num, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026594"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026595"> } else if (strcmp(*argv, "-nc") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026596"> noCalls = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026597"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026598"> } else if (strcmp(*argv, "-o") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026599"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026600"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026601"> outFile = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026602"> if ((fout = fopen(outFile, "w")) == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026603"> fprintf(stderr, "ERROR: could not open output file\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026604"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026605"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026606"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026607"> } else if (strcmp(*argv, "-verStr") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026608"> /* New to set the version callback routine to return a string */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026609"> /* instead of double. */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026610"> retStr = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026611"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026612"> } else if (argv[0][0] != '-') {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026613"> if (numInFile >= 6) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026614"> fprintf(stderr, "ERROR: too many input files, max = 6.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026615"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026616"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026617"> inFile[numInFile++] = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026618"> } else if (strcmp(*argv, "-h") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026619"> fprintf(stderr, "Usage: defrw [<defFilename>] [-o <outputFilename>]\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026620"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026621"> } else if (strcmp(*argv, "-setSNetWireCbk") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026622"> setSNetWireCbk = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026623"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026624"> fprintf(stderr, "ERROR: Illegal command line option: '%s'\n", *argv);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026625"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026626"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026627"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026628"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026629"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026630"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026631"> if (noCalls == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026632"> defrSetUserData((void*)3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026633"> defrSetDesignCbk(dname);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026634"> defrSetTechnologyCbk(tname);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026635"> defrSetExtensionCbk(extension);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026636"> defrSetDesignEndCbk(done);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026637"> defrSetPropDefStartCbk(propstart);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026638"> defrSetPropCbk(prop);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026639"> defrSetPropDefEndCbk(propend);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026640"> defrSetNetCbk(netf);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026641"> defrSetNetNameCbk(netNamef);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026642"> defrSetNetNonDefaultRuleCbk(nondefRulef);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026643"> defrSetNetSubnetNameCbk(subnetNamef);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026644"> defrSetNetPartialPathCbk(netpath);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026645"> defrSetSNetCbk(snetf);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026646"> defrSetSNetPartialPathCbk(snetpath);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026647"> if (setSNetWireCbk)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026648"> defrSetSNetWireCbk(snetwire);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026649"> defrSetComponentCbk(compf);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026650"> defrSetAddPathToNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026651"> defrSetHistoryCbk(hist);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026652"> defrSetConstraintCbk(constraint);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026653"> defrSetAssertionCbk(constraint);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026654"> defrSetArrayNameCbk(an);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026655"> defrSetFloorPlanNameCbk(fn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026656"> defrSetDividerCbk(dn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026657"> defrSetBusBitCbk(bbn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026658"> defrSetNonDefaultCbk(ndr);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026659"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026660"> defrSetAssertionsStartCbk(constraintst);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026661"> defrSetConstraintsStartCbk(constraintst);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026662"> defrSetComponentStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026663"> defrSetPinPropStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026664"> defrSetNetStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026665"> defrSetStartPinsCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026666"> defrSetViaStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026667"> defrSetRegionStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026668"> defrSetSNetStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026669"> defrSetGroupsStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026670"> defrSetScanchainsStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026671"> defrSetIOTimingsStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026672"> defrSetFPCStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026673"> defrSetTimingDisablesStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026674"> defrSetPartitionsStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026675"> defrSetBlockageStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026676"> defrSetSlotStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026677"> defrSetFillStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026678"> defrSetNonDefaultStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026679"> defrSetStylesStartCbk(cs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026680"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026681"> // All of the extensions point to the same function.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026682"> defrSetNetExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026683"> defrSetComponentExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026684"> defrSetPinExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026685"> defrSetViaExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026686"> defrSetNetConnectionExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026687"> defrSetGroupExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026688"> defrSetScanChainExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026689"> defrSetIoTimingsExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026690"> defrSetPartitionsExtCbk(ext);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026691"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026692"> defrSetUnitsCbk(units);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026693"> if (!retStr)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026694"> defrSetVersionCbk(vers);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026695"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026696"> defrSetVersionStrCbk(versStr);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026697"> defrSetCaseSensitiveCbk(casesens);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026698"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026699"> // The following calls are an example of using one function "cls"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026700"> // to be the callback for many DIFFERENT types of constructs.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026701"> // We have to cast the function type to meet the requirements</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026702"> // of each different set function.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026703"> defrSetSiteCbk((defrSiteCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026704"> defrSetCanplaceCbk((defrSiteCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026705"> defrSetCannotOccupyCbk((defrSiteCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026706"> defrSetDieAreaCbk((defrBoxCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026707"> defrSetPinCapCbk((defrPinCapCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026708"> defrSetPinCbk((defrPinCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026709"> defrSetPinPropCbk((defrPinPropCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026710"> defrSetDefaultCapCbk((defrIntegerCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026711"> defrSetRowCbk((defrRowCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026712"> defrSetTrackCbk((defrTrackCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026713"> defrSetGcellGridCbk((defrGcellGridCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026714"> defrSetViaCbk((defrViaCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026715"> defrSetRegionCbk((defrRegionCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026716"> defrSetGroupNameCbk((defrStringCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026717"> defrSetGroupMemberCbk((defrStringCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026718"> defrSetGroupCbk((defrGroupCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026719"> defrSetScanchainCbk((defrScanchainCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026720"> defrSetIOTimingCbk((defrIOTimingCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026721"> defrSetFPCCbk((defrFPCCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026722"> defrSetTimingDisableCbk((defrTimingDisableCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026723"> defrSetPartitionCbk((defrPartitionCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026724"> defrSetBlockageCbk((defrBlockageCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026725"> defrSetSlotCbk((defrSlotCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026726"> defrSetFillCbk((defrFillCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026727"> defrSetStylesCbk((defrStylesCbkFnType)cls);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026728"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026729"> defrSetAssertionsEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026730"> defrSetComponentEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026731"> defrSetConstraintsEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026732"> defrSetNetEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026733"> defrSetFPCEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026734"> defrSetFPCEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026735"> defrSetGroupsEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026736"> defrSetIOTimingsEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026737"> defrSetNetEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026738"> defrSetPartitionsEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026739"> defrSetRegionEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026740"> defrSetSNetEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026741"> defrSetScanchainsEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026742"> defrSetPinEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026743"> defrSetTimingDisablesEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026744"> defrSetViaEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026745"> defrSetPinPropEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026746"> defrSetBlockageEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026747"> defrSetSlotEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026748"> defrSetFillEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026749"> defrSetNonDefaultEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026750"> defrSetStylesEndCbk(endfunc);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026751"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026752"> defrSetMallocFunction(mallocCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026753"> defrSetReallocFunction(reallocCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026754"> defrSetFreeFunction(freeCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026755"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026756"> defrSetLineNumberFunction(lineNumberCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026757"> defrSetDeltaNumberLines(50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026758"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026759"> // Testing to set the number of warnings</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026760"> defrSetAssertionWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026761"> defrSetBlockageWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026762"> defrSetCaseSensitiveWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026763"> defrSetComponentWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026764"> defrSetConstraintWarnings(0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026765"> defrSetDefaultCapWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026766"> defrSetGcellGridWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026767"> defrSetIOTimingWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026768"> defrSetNetWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026769"> defrSetNonDefaultWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026770"> defrSetPinExtWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026771"> defrSetPinWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026772"> defrSetRegionWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026773"> defrSetRowWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026774"> defrSetScanchainWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026775"> defrSetSNetWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026776"> defrSetStylesWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026777"> defrSetTrackWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026778"> defrSetUnitsWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026779"> defrSetVersionWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026780"> defrSetViaWarnings(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026781"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026782"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026783"> defrInit();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026784"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026785"> for (fileCt = 0; fileCt < numInFile; fileCt++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026786"> defrReset();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026787"> if ((f = fopen(inFile[fileCt],"r")) == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026788"> fprintf(stderr,"Couldn't open input file '%s'\n", inFile[fileCt]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026789"> return(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026790"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026791"> // Set case sensitive to 0 to start with, in History & PropertyDefinition</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026792"> // reset it to 1.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026793"> res = defrRead(f, inFile[fileCt], (void*)userData, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026794"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026795"> if (res)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026796"> fprintf(stderr, "Reader returns bad status.\n", inFile[fileCt]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026797"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026798"> (void)defrPrintUnusedCallbacks(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026799"> (void)defrReleaseNResetMemory();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026800"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026801"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026802"> fclose(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026803"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026804"> return res;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026805">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="3" face="Sans-Serif" color="#000000"><a name="1026806"> </a></font>
|
|
</p>
|
|
<h2><a name="1021125">DEF Writer Example</a></h2>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026997">#include <stdlib.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026998">#include <stdio.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026999">#include <string.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027000">#ifndef WIN32</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027001"># include <unistd.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027002">#endif /* not WIN32 */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027003">#include "defwWriter.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027004"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027005">char defaultOut[128];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027006"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027007">// Global variables</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027008">FILE* fout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027009"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027010">#define CHECK_STATUS(status) \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027011"> if (status) { \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027012"> defwPrintError(status); \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027013"> return(status); \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027014"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027015"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027016">int main(int argc, char** argv) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027017"> char* outfile;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027018"> int status; // return code, if none 0 means error</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027019"> int lineNumber = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027020"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027021"> const char** layers;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027022"> const char** foreigns;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027023"> int *foreignX, *foreignY, *foreignOrient;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027024"> const char** foreignOrientStr;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027025"> const char **coorX, **coorY;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027026"> const char **coorValue;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027027"> const char **groupExpr;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027028"> int *xPoints, *yPoints;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027029"> double *xP, *yP;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027030"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027031"> // assign the default</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027032"> strcpy(defaultOut, "def.in");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027033"> outfile = defaultOut;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027034"> fout = stdout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027035"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027036"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027037"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027038"> while (argc--) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027039"> if (strcmp(*argv, "-o") == 0) { // output filename</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027040"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027041"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027042"> outfile = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027043"> if ((fout = fopen(outfile, "w")) == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027044"> fprintf(stderr, "ERROR: could not open output file\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027045"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027046"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027047"> } else if (strncmp(*argv, "-h", 2) == 0) { // compare with -h[elp]</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027048"> fprintf(stderr, "Usage: defwrite [-o <filename>] [-help]\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027049"> return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027050"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027051"> fprintf(stderr, "ERROR: Illegal command line option: '%s'\n", *argv);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027052"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027053"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027054"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027055"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027056"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027057"> status = defwInitCbk(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027058"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027059"> status = defwVersion (5, 7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027060"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027061"> status = defwDividerChar(":");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027062"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027063"> status = defwBusBitChars("[]");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027064"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027065"> status = defwDesignName("muk");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027066"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027067"> status = defwTechnology("muk");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027068"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027069"> status = defwArray("core_array");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027070"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027071"> status = defwFloorplan("DEFAULT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027072"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027073"> status = defwUnits(100);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027074"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027075"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027076"> // initalize</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027077"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027078"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027079"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027080"> // history</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027081"> status = defwHistory("Corrected STEP for ROW_9 and added ROW_10 of SITE CORE1 (def)");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027082"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027083"> status = defwHistory("Removed NONDEFAULTRULE from the net XX100 (def)");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027084"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027085"> status = defwHistory("Changed some cell orientations (def)");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027086"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027087"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027088"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027089"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027090"> // PROPERTYDEFINITIONS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027091"> status = defwStartPropDef();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027092"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027093"> defwAddComment("defwPropDef is broken into 3 routines, defwStringPropDef");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027094"> defwAddComment("defwIntPropDef, and defwRealPropDef");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027095"> status = defwStringPropDef("REGION", "scum", 0, 0, 0 );</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027096"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027097"> status = defwIntPropDef("REGION", "center", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027098"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027099"> status = defwRealPropDef("REGION", "area", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027100"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027101"> status = defwStringPropDef("GROUP", "ggrp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027102"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027103"> status = defwIntPropDef("GROUP", "site", 0, 25, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027104"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027105"> status = defwRealPropDef("GROUP", "maxarea", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027106"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027107"> status = defwStringPropDef("COMPONENT", "cc", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027108"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027109"> status = defwIntPropDef("COMPONENT", "index", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027110"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027111"> status = defwRealPropDef("COMPONENT", "size", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027112"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027113"> status = defwIntPropDef("NET", "alt", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027114"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027115"> status = defwStringPropDef("NET", "lastName", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027116"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027117"> status = defwRealPropDef("NET", "length", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027118"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027119"> status = defwStringPropDef("SPECIALNET", "contype", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027120"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027121"> status = defwIntPropDef("SPECIALNET", "ind", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027122"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027123"> status = defwRealPropDef("SPECIALNET", "maxlength", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027124"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027125"> status = defwStringPropDef("DESIGN", "title", 0, 0, "Buffer");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027126"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027127"> status = defwIntPropDef("DESIGN", "priority", 0, 0, 14);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027128"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027129"> status = defwRealPropDef("DESIGN", "howbig", 0, 0, 15.16);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027130"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027131"> status = defwRealPropDef("ROW", "minlength", 1.0, 100.0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027132"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027133"> status = defwStringPropDef("ROW", "firstName", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027134"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027135"> status = defwIntPropDef("ROW", "idx", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027136"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027137"> status = defwIntPropDef("COMPONENTPIN", "dpIgnoreTerm", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027138"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027139"> status = defwStringPropDef("COMPONENTPIN", "dpBit", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027140"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027141"> status = defwRealPropDef("COMPONENTPIN", "realProperty", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027142"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027143"> status = defwStringPropDef("NET", "IGNOREOPTIMIZATION", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027144"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027145"> status = defwStringPropDef("SPECIALNET", "IGNOREOPTIMIZATION", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027146"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027147"> status = defwRealPropDef("NET", "FREQUENCY", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027148"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027149"> status = defwRealPropDef("SPECIALNET", "FREQUENCY", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027150"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027151"> status = defwStringPropDef("NONDEFAULTRULE", "ndprop1", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027152"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027153"> status = defwIntPropDef("NONDEFAULTRULE", "ndprop2", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027154"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027155"> status = defwRealPropDef("NONDEFAULTRULE", "ndprop3", 0, 0, 0.009);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027156"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027157"> status = defwRealPropDef("NONDEFAULTRULE", "ndprop4", .1, 1.0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027158"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027159"> status = defwEndPropDef();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027160"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027161"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027162"> // DIEAREA</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027163"> xPoints = (int*)malloc(sizeof(int)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027164"> yPoints = (int*)malloc(sizeof(int)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027165"> xPoints[0] = 2000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027166"> yPoints[0] = 2000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027167"> xPoints[1] = 3000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027168"> yPoints[1] = 3000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027169"> xPoints[2] = 4000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027170"> yPoints[2] = 4000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027171"> xPoints[3] = 5000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027172"> yPoints[3] = 5000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027173"> xPoints[4] = 6000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027174"> yPoints[4] = 6000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027175"> xPoints[5] = 7000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027176"> yPoints[5] = 7000;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027177"> status = defwDieAreaList(6, xPoints, yPoints);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027178"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027179"> free((char*)xPoints);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027180"> free((char*)yPoints);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027181"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027182"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027183"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027184"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027185"> // ROW</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027186"> status = defwRow("ROW_9", "CORE", -177320, -111250, 6, 911, 1, 360, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027187"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027188"> status = defwRealProperty("minlength", 50.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027189"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027190"> status = defwStringProperty("firstName", "Only");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027191"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027192"> status = defwIntProperty("idx", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027193"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027194"> status = defwRowStr("ROW_10", "CORE1", -19000, -11000, "FN", 1, 100, 0, 600);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027195"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027196"> status = defwRowStr("ROW_11", "CORE1", -19000, -11000, "FN", 1, 100, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027197"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027198"> status = defwRow("ROW_12", "CORE1", -19000, -11000, 3, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027199"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027200"> status = defwRowStr("ROW_13", "CORE1", -19000, -11000, "FN", 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027201"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027202"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027203"> // TRACKS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027204"> layers = (const char**)malloc(sizeof(char*)*1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027205"> layers[0] = strdup("M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027206"> status = defwTracks("X", 3000, 40, 120, 1, layers);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027207"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027208"> free((char*)layers[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027209"> layers[0] = strdup("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027210"> status = defwTracks("Y", 5000, 10, 20, 1,layers);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027211"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027212"> free((char*)layers[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027213"> free((char*)layers);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027214"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027215"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027216"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027217"> // GCELLGRID</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027218"> status = defwGcellGrid("X", 0, 100, 600);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027219"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027220"> status = defwGcellGrid("Y", 10, 120, 400);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027221"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027222"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027223"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027224"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027225"> // CANPLACE</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027226"> status = defwCanPlaceStr("dp", 45, 64, "N", 35, 1, 39, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027227"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027228"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027229"> status = defwCanPlace("dp", 45, 64, 1, 35, 1, 39, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027230"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027231"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027232"> // CANNOTOCCUPY</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027233"> status = defwCannotOccupyStr("dp", 54, 44, "S", 55, 2, 45, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027234"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027235"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027236"> // VIAS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027237"> status = defwStartVias(7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027238"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027239"> status = defwViaName("VIA_ARRAY");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027240"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027241"> status = defwViaPattern("P1-435-543-IJ1FS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027242"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027243"> status = defwViaRect("M1", -40, -40, 40, 40);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027244"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027245"> status = defwViaRect("V1", -40, -40, 40, 40);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027246"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027247"> status = defwViaRect("M2", -50, -50, 50, 50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027248"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027249"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027250"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027251"> status = defwViaName("VIA_ARRAY1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027252"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027253"> status = defwViaRect("M1", -40, -40, 40, 40);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027254"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027255"> status = defwViaRect("V1", -40, -40, 40, 40);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027256"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027257"> status = defwViaRect("M2", -50, -50, 50, 50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027258"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027259"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027260"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027261"> status = defwViaName("myUnshiftedVia");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027262"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027263"> status = defwViaViarule("myViaRule", 20, 20, "metal1", "cut12", "metal2",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027264"> 5, 5, 0, 4, 0, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027265"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027266"> status = defwViaViaruleRowCol(2, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027267"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027268"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027269"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027270"> status = defwViaName("via2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027271"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027272"> status = defwViaViarule("viaRule2", 5, 6, "botLayer2", "cutLayer2",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027273"> "topLayer2", 6, 6, 1, 4, 1, 4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027274"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027275"> status = defwViaViaruleOrigin(10, -10);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027276"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027277"> status = defwViaViaruleOffset(0, 0, 20, -20);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027278"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027279"> status = defwViaViarulePattern("2_F0_2_F8_1_78");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027280"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027281"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027282"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027283"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027284"> status = defwViaName("via3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027285"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027286"> status = defwViaPattern("P2-435-543-IJ1FS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027287"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027288"> status = defwViaRect("M2", -40, -40, 40, 40);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027289"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027290"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027291"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027292"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027293"> xP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027294"> yP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027295"> xP[0] = -2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027296"> yP[0] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027297"> xP[1] = -2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027298"> yP[1] = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027299"> xP[2] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027300"> yP[2] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027301"> xP[3] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027302"> yP[3] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027303"> status = defwViaName("via4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027304"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027305"> status = defwViaPolygon("M3", 4, xP, yP); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027306"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027307"> status = defwViaRect("M4", -40, -40, 40, 40);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027308"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027309"> xP[0] = 100;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027310"> yP[0] = 100;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027311"> xP[1] = 200;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027312"> yP[1] = 200;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027313"> xP[2] = 300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027314"> yP[2] = 300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027315"> xP[3] = 400;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027316"> yP[3] = 400;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027317"> xP[4] = 500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027318"> yP[4] = 500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027319"> xP[5] = 600;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027320"> yP[5] = 600;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027321"> status = defwViaPolygon("M5", 6, xP, yP); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027322"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027323"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027324"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027325"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027326"> xP[0] = 200;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027327"> yP[0] = 200;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027328"> xP[1] = 300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027329"> yP[1] = 300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027330"> xP[2] = 400;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027331"> yP[2] = 500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027332"> xP[3] = 100;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027333"> yP[3] = 300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027334"> xP[4] = 300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027335"> yP[4] = 200;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027336"> status = defwViaName("via5");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027337"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027338"> status = defwViaPolygon("M6", 5, xP, yP); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027339"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027340"> status = defwOneViaEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027341"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027342"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027343"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027344"> status = defwEndVias();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027345"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027346"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027347"> // REGIONS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027348"> status = defwStartRegions(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027349"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027350"> status = defwRegionName("region1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027351"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027352"> status = defwRegionPoints(-500, -500, 300, 100); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027353"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027354"> status = defwRegionPoints(500, 500, 1000, 1000); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027355"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027356"> status = defwRegionType("FENCE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027357"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027358"> status = defwStringProperty("scum", "on top");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027359"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027360"> status = defwIntProperty("center", 250);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027361"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027362"> status = defwIntProperty("area", 730000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027363"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027364"> status = defwRegionName("region2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027365"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027366"> status = defwRegionPoints(4000, 0, 5000, 1000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027367"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027368"> status = defwStringProperty("scum", "on bottom");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027369"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027370"> status = defwEndRegions();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027371"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027372"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027373"> // COMPONENTS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027374"> foreigns = (const char**)malloc(sizeof(char*)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027375"> foreignX = (int*)malloc(sizeof(int)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027376"> foreignY = (int*)malloc(sizeof(int)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027377"> foreignOrient = (int*)malloc(sizeof(int)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027378"> foreignOrientStr = (const char**)malloc(sizeof(char*)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027379"> status = defwStartComponents(11);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027380"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027381"> status = defwComponent("Z38A01", "DFF3", 0, NULL, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027382"> 0, NULL, NULL, NULL, NULL, "PLACED", 18592, 5400, 6, 0,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027383"> NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027384"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027385"> status = defwComponentHalo(100, 0, 50, 200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027386"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027387"> status = defwComponentStr("Z38A03", "DFF3", 0, NULL, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027388"> 0, NULL, NULL, NULL, NULL, "PLACED", 16576, 45600,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027389"> "FS", 0, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027390"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027391"> status = defwComponentHalo(200, 2, 60, 300);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027392"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027393"> status = defwComponent("Z38A05", "DFF3", 0, NULL, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027394"> 0, NULL, NULL, NULL, NULL, "PLACED", 51520, 9600, 6, 0,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027395"> NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027396"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027397"> status = defwComponent("|i0", "INV_B", 0, NULL, "INV", NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027398"> 0, NULL, NULL, NULL, NULL, NULL, 0, 0, -1, 0,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027399"> "region1", 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027400"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027401"> status = defwComponentHaloSoft(100, 0, 50, 200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027402"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027403"> status = defwComponent("|i1", "INV_B", 0, NULL, "INV", NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027404"> 0, NULL, NULL, NULL, NULL, "UNPLACED", 1000, 1000, 0,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027405"> 0, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027406"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027407"> status = defwComponent("cell1", "CHM6A", 0, NULL, NULL, "generator", NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027408"> "USER", 0, NULL, NULL, NULL, NULL, "FIXED", 0, 10, 0,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027409"> 100.4534535, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027410"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027411"> status = defwComponent("cell2", "CHM6A", 0, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027412"> "NETLIST", 0, NULL, NULL, NULL, NULL, "COVER", 120,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027413"> 10, 4, 2, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027414"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027415"> foreigns[0] = strdup("gds2name");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027416"> foreignX[0] = -500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027417"> foreignY[0] = -500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027418"> foreignOrient[0] = 3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027419"> status = defwComponent("cell3", "CHM6A", 0, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027420"> "TIMING", 1, foreigns, foreignX, foreignY,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027421"> foreignOrient, "PLACED", 240,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027422"> 10, 0, 0, "region1", 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027423"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027424"> status = defwComponentRouteHalo(100, "metal1", "metal3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027425"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027426"> free((char*)foreigns[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027427"> foreigns[0] = strdup("gds3name");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027428"> foreignX[0] = -500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027429"> foreignY[0] = -500;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027430"> foreignOrientStr[0] = strdup("FW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027431"> foreigns[1] = strdup("gds4name");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027432"> foreignX[1] = -300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027433"> foreignY[1] = -300;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027434"> foreignOrientStr[1] = strdup("FS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027435"> status = defwComponentStr("cell4", "CHM3A", 0, NULL, "CHM6A", NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027436"> "DIST", 2, foreigns, foreignX, foreignY, </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027437"> foreignOrientStr, "PLACED", 360,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027438"> 10, "W", 0, "region2", 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027439"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027440"> status = defwComponentHaloSoft(100, 0, 50, 200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027441"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027442"> status = defwStringProperty("cc", "This is the copy list");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027443"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027444"> status = defwIntProperty("index", 9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027445"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027446"> status = defwRealProperty("size", 7.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027447"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027448"> status = defwComponent("scancell1", "CHK3A", 0, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027449"> NULL, 0, NULL, NULL, NULL, NULL, "PLACED", 500,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027450"> 10, 7, 0, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027451"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027452"> status = defwComponent("scancell2", "CHK3A", 0, NULL, NULL, NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027453"> NULL, 0, NULL, NULL, NULL, NULL, "PLACED", 700,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027454"> 10, 6, 0, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027455"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027456"> status = defwEndComponents();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027457"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027458"> free((char*)foreigns[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027459"> free((char*)foreigns[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027460"> free((char*)foreigns);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027461"> free((char*)foreignX);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027462"> free((char*)foreignY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027463"> free((char*)foreignOrient);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027464"> free((char*)foreignOrientStr[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027465"> free((char*)foreignOrientStr[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027466"> free((char*)foreignOrientStr);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027467"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027468"> xP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027469"> yP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027470"> xP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027471"> yP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027472"> xP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027473"> yP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027474"> xP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027475"> yP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027476"> xP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027477"> yP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027478"> xP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027479"> yP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027480"> xP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027481"> yP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027482"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027483"> // PINS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027484"> status = defwStartPins(11);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027485"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027486"> status = defwPin("scanpin", "net1", 0, "INPUT", NULL, NULL, 0, 0, -1, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027487"> 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027488"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027489"> status = defwPinPolygon("metal1", 0, 1000, 6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027490"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027491"> status = defwPinNetExpr("power1 VDD1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027492"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027493"> status = defwPin("pin0", "net1", 0, "INPUT", "SCAN", NULL, 0, 0, -1, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027494"> 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027495"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027496"> status = defwPinStr("pin0.5", "net1", 0, "INPUT", "RESET", "FIXED", 0, 0, "S",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027497"> NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027498"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027499"> status = defwPinPolygon("metal2", 0, 0, 4, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027500"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027501"> status = defwPinLayer("metal3", 500, 0, -5000, -100, -4950, -90);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027502"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027503"> status = defwPin("pin1", "net1", 1, NULL, "POWER", NULL, 0, 0, -1, "M1",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027504"> -5000, -100, -4950, -90);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027505"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027506"> status = defwPinAntennaPinPartialMetalArea(4580, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027507"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027508"> status = defwPinAntennaPinPartialMetalArea(4580, "M11");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027509"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027510"> status = defwPinAntennaPinPartialMetalArea(4580, "M12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027511"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027512"> status = defwPinAntennaPinGateArea(4580, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027513"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027514"> status = defwPinAntennaPinDiffArea(4580, "M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027515"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027516"> status = defwPinAntennaPinDiffArea(4580, "M31");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027517"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027518"> status = defwPinAntennaPinMaxAreaCar(5000, "L1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027519"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027520"> status = defwPinAntennaPinMaxSideAreaCar(5000, "M4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027521"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027522"> status = defwPinAntennaPinPartialCutArea(4580, "M4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027523"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027524"> status = defwPinAntennaPinMaxCutCar(5000, "L1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027525"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027526"> status = defwPin("pin2", "net2", 0, "INPUT", "SIGNAL", NULL, 0, 0, -1, "M1",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027527"> -5000, 0, -4950, 10);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027528"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027529"> status = defwPinLayer("M1", 500, 0, -5000, 0, -4950, 10);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027530"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027531"> status = defwPinPolygon("M2", 0, 0, 4, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027532"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027533"> status = defwPinPolygon("M3", 0, 0, 3, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027534"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027535"> status = defwPinLayer("M4", 0, 500, 0, 100, -400, 100);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027536"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027537"> status = defwPinSupplySensitivity("vddpin1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027538"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027539"> status = defwPinGroundSensitivity("gndpin1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027540"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027541"> status = defwPinAntennaPinPartialMetalArea(5000, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027542"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027543"> status = defwPinAntennaPinPartialMetalSideArea(4580, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027544"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027545"> status = defwPinAntennaPinGateArea(5000, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027546"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027547"> status = defwPinAntennaPinPartialCutArea(5000, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027548"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027549"> status = defwPin("INBUS[1]", "|INBUS[1]", 0, "INPUT", "SIGNAL", "FIXED",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027550"> 45, -2160, 0, "M2", 0, 0, 30, 135);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027551"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027552"> status = defwPinLayer("M2", 0, 0, 0, 0, 30, 135);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027553"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027554"> status = defwPinAntennaPinPartialMetalArea(1, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027555"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027556"> status = defwPinAntennaPinPartialMetalSideArea(2, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027557"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027558"> status = defwPinAntennaPinDiffArea(4, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027559"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027560"> status = defwPinAntennaPinPartialCutArea(5, "V1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027561"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027562"> status = defwPinAntennaModel("OXIDE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027563"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027564"> status = defwPinAntennaPinGateArea(3, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027565"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027566"> status = defwPinAntennaPinMaxAreaCar(6, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027567"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027568"> status = defwPinAntennaPinMaxSideAreaCar(7, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027569"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027570"> status = defwPinAntennaPinMaxCutCar(8, "V1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027571"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027572"> status = defwPinAntennaModel("OXIDE2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027573"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027574"> status = defwPinAntennaPinGateArea(30, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027575"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027576"> status = defwPinAntennaPinMaxAreaCar(60, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027577"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027578"> status = defwPinAntennaPinMaxSideAreaCar(70, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027579"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027580"> status = defwPinAntennaPinMaxCutCar(80, "V1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027581"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027582"> status = defwPin("INBUS<0>", "|INBUS<0>", 0, "INPUT", "SIGNAL", "PLACED",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027583"> -45, 2160, 1, "M2", 0, 0, 30, 134);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027584"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027585"> status = defwPinLayer("M2", 0, 1000, 0, 0, 30, 134);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027586"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027587"> status = defwPin("OUTBUS<1>", "|OUTBUS<1>", 0, "OUTPUT", "SIGNAL", "COVER",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027588"> 2160, 645, 2, "M1", 0, 0, 30, 135);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027589"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027590"> status = defwPinLayer("M1", 0, 0, 0, 0, 30, 134);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027591"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027592"> status = defwPinNetExpr("gnd1 GND");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027593"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027594"> status = defwPin("VDD", "VDD", 1, "INOUT", "POWER", NULL, 0, 0, -1, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027595"> 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027596"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027597"> status = defwPin("BUSA[0]", "BUSA[0]", 0, "INPUT", "SIGNAL", "PLACED",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027598"> 0, 2500, 1, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027599"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027600"> status = defwPinLayer("M1", 0, 0, -25, 0, 25, 50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027601"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027602"> status = defwPinLayer("M2", 0, 0, -10, 0, 10, 75);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027603"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027604"> status = defwPinVia("via12", 0, 25);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027605"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027606"> status = defwPin("VDD", "VDD", 1, "INOUT", "POWER", NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027607"> 0, 0, -1, NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027608"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027609"> status = defwPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027610"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027611"> status = defwPinPortLayer("M2", 0, 0, -25, 0, 25, 50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027612"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027613"> status = defwPinPortLocation("PLACED", 0, 2500, "S");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027614"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027615"> status = defwPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027616"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027617"> status = defwPinPortLayer("M1", 0, 0, -25, 0, 25, 50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027618"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027619"> status = defwPinPortLocation("COVER", 0, 2500, "S");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027620"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027621"> status = defwPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027622"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027623"> status = defwPinPortLayer("M1", 0, 0, -25, 0, 25, 50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027624"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027625"> status = defwPinPortLocation("FIXED", 0, 2500, "S");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027626"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027627"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027628"> status = defwEndPins();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027629"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027630"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027631"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027632"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027633"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027634"> // PINPROPERTIES</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027635"> status = defwStartPinProperties(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027636"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027637"> status = defwPinProperty("cell1", "PB1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027638"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027639"> status = defwStringProperty("dpBit", "1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027640"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027641"> status = defwRealProperty("realProperty", 3.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027642"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027643"> status = defwPinProperty("cell2", "vdd");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027644"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027645"> status = defwIntProperty("dpIgnoreTerm", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027646"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027647"> status = defwEndPinProperties();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027648"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027649"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027650"> // SPECIALNETS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027651"> status = defwStartSpecialNets(7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027652"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027653"> status = defwSpecialNet("net1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027654"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027655"> status = defwSpecialNetConnection("cell1", "VDD", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027656"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027657"> status = defwSpecialNetConnection("cell2", "VDD", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027658"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027659"> status = defwSpecialNetConnection("cell3", "VDD", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027660"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027661"> status = defwSpecialNetConnection("cell4", "VDD", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027662"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027663"> status = defwSpecialNetWidth("M1", 200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027664"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027665"> status = defwSpecialNetWidth("M2", 300);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027666"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027667"> status = defwSpecialNetVoltage(3.2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027668"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027669"> status = defwSpecialNetSpacing("M1", 200, 190, 210);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027670"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027671"> status = defwSpecialNetSource("TIMING");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027672"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027673"> status = defwSpecialNetOriginal("VDD");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027674"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027675"> status = defwSpecialNetUse("POWER");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027676"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027677"> status = defwSpecialNetWeight(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027678"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027679"> status = defwStringProperty("contype", "star");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027680"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027681"> status = defwIntProperty("ind", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027682"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027683"> status = defwRealProperty("maxlength", 12.13);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027684"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027685"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027686"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027687"> status = defwSpecialNet("VSS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027688"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027689"> status = defwSpecialNetConnection("cell1", "GND", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027690"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027691"> status = defwSpecialNetConnection("cell2", "GND", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027692"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027693"> status = defwSpecialNetConnection("cell3", "GND", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027694"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027695"> status = defwSpecialNetConnection("cell4", "GND", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027696"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027697"> status = defwSpecialNetUse("SCAN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027698"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027699"> status = defwSpecialNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027700"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027701"> status = defwSpecialNetPathLayer("M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027702"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027703"> status = defwSpecialNetPathWidth(250);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027704"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027705"> status = defwSpecialNetPathShape("IOWIRE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027706"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027707"> coorX = (const char**)malloc(sizeof(char*)*3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027708"> coorY = (const char**)malloc(sizeof(char*)*3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027709"> coorValue = (const char**)malloc(sizeof(char*)*3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027710"> coorX[0] = strdup("5");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027711"> coorY[0] = strdup("15");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027712"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027713"> coorX[1] = strdup("125");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027714"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027715"> coorValue[1] = strdup("235");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027716"> coorX[2] = strdup("245");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027717"> coorY[2] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027718"> coorValue[2] = strdup("255");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027719"> status = defwSpecialNetPathPointWithWireExt(3, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027720"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027721"> status = defwSpecialNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027722"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027723"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027724"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027725"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027726"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027727"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027728"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027729"> free((char*)coorValue[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027730"> free((char*)coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027731"> status = defwSpecialNetShieldStart("my_net");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027732"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027733"> status = defwSpecialNetShieldLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027734"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027735"> status = defwSpecialNetShieldWidth(90);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027736"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027737"> status = defwSpecialNetShieldShape("STRIPE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027738"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027739"> coorX[0] = strdup("14100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027740"> coorY[0] = strdup("342440");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027741"> coorX[1] = strdup("13920");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027742"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027743"> status = defwSpecialNetShieldPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027744"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027745"> status = defwSpecialNetShieldVia("M2_TURN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027746"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027747"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027748"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027749"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027750"> coorY[0] = strdup("263200");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027751"> status = defwSpecialNetShieldPoint(1, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027752"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027753"> status = defwSpecialNetShieldVia("M1_M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027754"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027755"> status = defwSpecialNetShieldViaData(10, 20, 1000, 2000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027756"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027757"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027758"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027759"> coorX[0] = strdup("2400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027760"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027761"> status = defwSpecialNetShieldPoint(1, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027762"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027763"> status = defwSpecialNetShieldEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027764"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027765"> status = defwSpecialNetShieldStart("my_net1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027766"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027767"> status = defwSpecialNetShieldLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027768"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027769"> status = defwSpecialNetShieldWidth(90);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027770"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027771"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027772"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027773"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027774"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027775"> coorX[0] = strdup("14100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027776"> coorY[0] = strdup("342440");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027777"> coorX[1] = strdup("13920");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027778"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027779"> status = defwSpecialNetShieldPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027780"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027781"> status = defwSpecialNetShieldVia("M2_TURN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027782"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027783"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027784"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027785"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027786"> coorY[0] = strdup("263200");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027787"> status = defwSpecialNetShieldPoint(1, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027788"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027789"> status = defwSpecialNetShieldVia("M1_M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027790"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027791"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027792"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027793"> coorX[0] = strdup("2400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027794"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027795"> status = defwSpecialNetShieldPoint(1, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027796"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027797"> status = defwSpecialNetShieldEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027798"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027799"> status = defwSpecialNetPattern("STEINER");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027800"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027801"> status = defwSpecialNetEstCap(100);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027802"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027803"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027804"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027805"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027806"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027807"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027808"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027809"> free((char*)coorX[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027810"> free((char*)coorY[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027811"> status = defwSpecialNet("VDD");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027812"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027813"> status = defwSpecialNetConnection("*", "VDD", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027814"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027815"> status = defwSpecialNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027816"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027817"> status = defwSpecialNetPathLayer("metal2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027818"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027819"> status = defwSpecialNetPathWidth(100);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027820"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027821"> status = defwSpecialNetPathShape("RING");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027822"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027823"> status = defwSpecialNetPathStyle(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027824"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027825"> coorX[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027826"> coorY[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027827"> coorX[1] = strdup("100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027828"> coorY[1] = strdup("100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027829"> coorX[2] = strdup("200");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027830"> coorY[2] = strdup("100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027831"> status = defwSpecialNetPathPoint(3, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027832"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027833"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027834"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027835"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027836"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027837"> free((char*)coorX[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027838"> free((char*)coorY[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027839"> status = defwSpecialNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027840"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027841"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027842"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027843"> status = defwSpecialNetPathWidth(270);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027844"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027845"> status = defwSpecialNetPathShape("PADRING");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027846"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027847"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027848"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027849"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027850"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027851"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027852"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027853"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027854"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027855"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027856"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027857"> status = defwSpecialNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027858"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027859"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027860"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027861"> status = defwSpecialNetPathWidth(270);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027862"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027863"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027864"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027865"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027866"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027867"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027868"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027869"> status = defwSpecialNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027870"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027871"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027872"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027873"> status = defwSpecialNet("CLOCK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027874"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027875"> status = defwSpecialNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027876"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027877"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027878"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027879"> status = defwSpecialNetPathWidth(200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027880"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027881"> status = defwSpecialNetPathShape("BLOCKRING");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027882"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027883"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027884"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027885"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027886"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027887"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027888"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027889"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027890"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027891"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027892"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027893"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027894"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027895"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027896"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027897"> status = defwSpecialNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027898"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027899"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027900"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027901"> status = defwSpecialNetPathWidth(270);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027902"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027903"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027904"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027905"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027906"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027907"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027908"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027909"> status = defwSpecialNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027910"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027911"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027912"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027913"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027914"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027915"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027916"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027917"> status = defwSpecialNet("VCC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027918"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027919"> status = defwSpecialNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027920"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027921"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027922"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027923"> status = defwSpecialNetPathWidth(200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027924"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027925"> status = defwSpecialNetPathShape("DRCFILL");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027926"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027927"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027928"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027929"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027930"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027931"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027932"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027933"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027934"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027935"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027936"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027937"> status = defwSpecialNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027938"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027939"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027940"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027941"> status = defwSpecialNetPathWidth(270);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027942"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027943"> status = defwSpecialNetPathShape("STRIPE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027944"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027945"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027946"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027947"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027948"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027949"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027950"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027951"> status = defwSpecialNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027952"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027953"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027954"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027955"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027956"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027957"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027958"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027959"> status = defwSpecialNet("n1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027960"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027961"> status = defwSpecialNetConnection("PIN", "n1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027962"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027963"> status = defwSpecialNetConnection("driver1", "in", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027964"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027965"> status = defwSpecialNetConnection("bumpa1", "bumppin", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027966"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027967"> status = defwSpecialNetFixedbump();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027968"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027969"> status = defwSpecialNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027970"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027971"> status = defwSpecialNetPathLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027972"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027973"> status = defwSpecialNetPathWidth(200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027974"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027975"> status = defwSpecialNetPathShape("FILLWIREOPC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027976"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027977"> coorX[0] = strdup("-45");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027978"> coorY[0] = strdup("1350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027979"> coorX[1] = strdup("44865");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027980"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027981"> status = defwSpecialNetPathPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027982"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027983"> status = defwSpecialNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027984"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027985"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027986"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027987"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027988"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027989"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027990"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027991"> free((char*)coorX);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027992"> free((char*)coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027993"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027994"> status = defwSpecialNet("VSS1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027995"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027996"> status = defwSpecialNetUse("POWER");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027997"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027998"> xP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027999"> yP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028000"> xP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028001"> yP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028002"> xP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028003"> yP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028004"> xP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028005"> yP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028006"> xP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028007"> yP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028008"> xP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028009"> yP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028010"> xP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028011"> yP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028012"> status = defwSpecialNetPolygon("metal1", 4, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028013"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028014"> status = defwSpecialNetPolygon("metal1", 6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028015"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028016"> status = defwSpecialNetRect("metal1", 0, 0, 100, 200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028017"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028018"> status = defwSpecialNetRect("metal2", 1, 1, 100, 200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028019"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028020"> status = defwSpecialNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028021"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028022"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028023"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028024"> status = defwEndSpecialNets();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028025"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028026"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028027"> // NETS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028028"> status = defwStartNets(12);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028029"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028030"> status = defwNet("net1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028031"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028032"> status = defwNetConnection("Z38A01", "Q", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028033"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028034"> status = defwNetConnection("Z38A03", "Q", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028035"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028036"> status = defwNetConnection("Z38A05", "Q", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028037"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028038"> status = defwNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028039"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028040"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028041"> status = defwNet("net2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028042"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028043"> status = defwNetConnection("cell1", "PB1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028044"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028045"> status = defwNetConnection("cell2", "PB1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028046"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028047"> status = defwNetConnection("cell3", "PB1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028048"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028049"> status = defwNetEstCap(200);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028050"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028051"> status = defwNetWeight(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028052"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028053"> status = defwNetVpin("P1", NULL, 0, 0, 0, 0, "PLACED", 54, 64, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028054"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028055"> status = defwNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028056"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028057"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028058"> status = defwNet("net3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028059"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028060"> status = defwNetConnection("cell4", "PA3", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028061"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028062"> status = defwNetConnection("cell2", "P10", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028063"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028064"> status = defwNetXtalk(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028065"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028066"> status = defwNetOriginal("extra_crispy");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028067"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028068"> status = defwNetSource("USER");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028069"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028070"> status = defwNetUse("SIGNAL");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028071"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028072"> status = defwNetFrequency(100);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028073"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028074"> status = defwIntProperty("alt", 37);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028075"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028076"> status = defwStringProperty("lastName", "Unknown");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028077"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028078"> status = defwRealProperty("length", 10.11);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028079"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028080"> status = defwNetPattern("BALANCED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028081"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028082"> status = defwNetVpinStr("P2", "L1", 45, 54, 3, 46, "FIXED", 23, 12, "FN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028083"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028084"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028085"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028086"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028087"> coorX = (const char**)malloc(sizeof(char*)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028088"> coorY = (const char**)malloc(sizeof(char*)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028089"> coorValue = (const char**)malloc(sizeof(char*)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028090"> status = defwNet("my_net");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028091"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028092"> status = defwNetConnection("I1", "A", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028093"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028094"> status = defwNetConnection("BUF", "Z", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028095"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028096"> status = defwNetNondefaultRule("RULE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028097"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028098"> status = defwNetUse("RESET");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028099"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028100"> status = defwNetShieldnet("VSS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028101"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028102"> status = defwNetShieldnet("VDD");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028103"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028104"> status = defwNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028105"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028106"> status = defwNetPathLayer("M2", 0, NULL); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028107"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028108"> status = defwNetPathStyle(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028109"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028110"> coorX[0] = strdup("14000");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028111"> coorY[0] = strdup("341440");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028112"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028113"> coorX[1] = strdup("9600");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028114"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028115"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028116"> coorX[2] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028117"> coorY[2] = strdup("282400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028118"> coorValue[2] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028119"> status = defwNetPathPoint(3, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028120"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028121"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028122"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028123"> status = defwNetPathVia("nd1VIA12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028124"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028125"> coorX[0] = strdup("2400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028126"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028127"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028128"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028129"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028130"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028131"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028132"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028133"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028134"> status = defwNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028135"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028136"> status = defwNetPathLayer("M1", 1, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028137"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028138"> status = defwNetPathStyle(4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028139"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028140"> coorX[0] = strdup("2400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028141"> coorY[0] = strdup("282400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028142"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028143"> coorX[1] = strdup("240");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028144"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028145"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028146"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028147"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028148"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028149"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028150"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028151"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028152"> free((char*)coorX[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028153"> free((char*)coorY[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028154"> status = defwNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028155"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028156"> status = defwNetNoshieldStart("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028157"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028158"> coorX[0] = strdup("14100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028159"> coorY[0] = strdup("341440");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028160"> coorX[1] = strdup("14000");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028161"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028162"> status = defwNetNoshieldPoint(2, coorX, coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028163"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028164"> status = defwNetNoshieldEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028165"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028166"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028167"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028168"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028169"> status = defwNet("|INBUS[1]");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028170"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028171"> status = defwNetConnection("|i1", "A", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028172"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028173"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028174"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028175"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028176"> status = defwNet("|INBUS<0>");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028177"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028178"> status = defwNetConnection("|i0", "A", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028179"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028180"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028181"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028182"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028183"> status = defwNet("|OUTBUS<1>");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028184"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028185"> status = defwNetConnection("|i0", "Z", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028186"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028187"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028188"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028189"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028190"> status = defwNet("MUSTJOIN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028191"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028192"> status = defwNetConnection("cell4", "PA1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028193"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028194"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028195"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028196"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028197"> status = defwNet("XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028198"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028199"> status = defwNetConnection("Z38A05", "G", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028200"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028201"> status = defwNetConnection("Z38A03", "G", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028202"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028203"> status = defwNetConnection("Z38A01", "G", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028204"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028205"> status = defwNetVpin("V_SUB3_XX100", NULL, -333, -333, 333, 333, "PLACED",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028206"> 189560, 27300, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028207"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028208"> status = defwNetVpin("V_SUB2_XX100", NULL, -333, -333, 333, 333, "PLACED",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028209"> 169400, 64500, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028210"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028211"> status = defwNetVpin("V_SUB1_XX100", NULL, -333, -333, 333, 333, "PLACED",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028212"> 55160, 31500, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028213"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028214"> status = defwNetSubnetStart("SUB1_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028215"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028216"> status = defwNetSubnetPin("Z38A05", "G");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028217"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028218"> status = defwNetSubnetPin("VPIN", "V_SUB1_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028219"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028220"> status = defwNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028221"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028222"> status = defwNetPathLayer("M1", 0, "RULE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028223"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028224"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028225"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028226"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028227"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028228"> coorX[0] = strdup("54040");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028229"> coorY[0] = strdup("30300");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028230"> coorValue[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028231"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028232"> coorY[1] = strdup("30900");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028233"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028234"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028235"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028236"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028237"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028238"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028239"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028240"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028241"> status = defwNetPathVia("nd1VIA12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028242"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028243"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028244"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028245"> coorValue[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028246"> coorX[1] = strdup("56280");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028247"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028248"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028249"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028250"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028251"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028252"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028253"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028254"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028255"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028256"> status = defwNetPathViaWithOrient("nd1VIA23", 6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028257"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028258"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028259"> coorY[0] = strdup("31500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028260"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028261"> coorX[1] = strdup("55160");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028262"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028263"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028264"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028265"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028266"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028267"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028268"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028269"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028270"> status = defwNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028271"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028272"> status = defwNetSubnetEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028273"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028274"> status = defwNetSubnetStart("SUB2_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028275"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028276"> status = defwNetSubnetPin("Z38A03", "G");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028277"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028278"> status = defwNetSubnetPin("VPIN", "V_SUB2_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028279"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028280"> status = defwNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028281"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028282"> status = defwNetPathLayer("M1", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028283"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028284"> coorX[0] = strdup("168280");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028285"> coorY[0] = strdup("63300");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028286"> coorValue[0] = strdup("7");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028287"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028288"> coorY[1] = strdup("64500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028289"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028290"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028291"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028292"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028293"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028294"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028295"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028296"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028297"> status = defwNetPathVia("M1_M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028298"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028299"> coorX[0] = strdup("169400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028300"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028301"> coorValue[0] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028302"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028303"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028304"> status = defwNetPathViaWithOrientStr("M2_M3", "SE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028305"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028306"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028307"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028308"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028309"> status = defwNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028310"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028311"> status = defwNetSubnetEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028312"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028313"> status = defwNetSubnetStart("SUB3_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028314"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028315"> status = defwNetSubnetPin("Z38A01", "G");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028316"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028317"> status = defwNetSubnetPin("VPIN", "V_SUB3_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028318"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028319"> status = defwNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028320"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028321"> status = defwNetPathLayer("M1", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028322"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028323"> coorX[0] = strdup("188400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028324"> coorY[0] = strdup("26100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028325"> coorValue[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028326"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028327"> coorY[1] = strdup("27300");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028328"> coorValue[1] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028329"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028330"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028331"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028332"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028333"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028334"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028335"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028336"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028337"> status = defwNetPathVia("M1_M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028338"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028339"> coorX[0] = strdup("189560");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028340"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028341"> coorValue[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028342"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028343"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028344"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028345"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028346"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028347"> status = defwNetPathVia("M1_M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028348"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028349"> status = defwNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028350"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028351"> status = defwNetSubnetEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028352"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028353"> status = defwNetSubnetStart("SUB0_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028354"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028355"> status = defwNetSubnetPin("VPIN", "V_SUB1_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028356"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028357"> status = defwNetSubnetPin("VPIN", "V_SUB2_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028358"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028359"> status = defwNetSubnetPin("VPIN", "V_SUB3_XX100");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028360"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028361"> status = defwNetNondefaultRule("RULE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028362"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028363"> status = defwNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028364"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028365"> status = defwNetPathLayer("M3", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028366"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028367"> coorX[0] = strdup("269400");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028368"> coorY[0] = strdup("64500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028369"> coorValue[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028370"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028371"> coorY[1] = strdup("54900");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028372"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028373"> coorX[2] = strdup("170520");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028374"> coorY[2] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028375"> coorValue[2] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028376"> coorX[3] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028377"> coorY[3] = strdup("37500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028378"> coorValue[3] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028379"> coorX[4] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028380"> coorY[4] = strdup("30300");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028381"> coorValue[4] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028382"> status = defwNetPathPoint(5, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028383"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028384"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028385"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028386"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028387"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028388"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028389"> free((char*)coorX[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028390"> free((char*)coorY[2]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028391"> free((char*)coorX[3]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028392"> free((char*)coorY[3]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028393"> free((char*)coorX[4]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028394"> free((char*)coorY[4]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028395"> status = defwNetPathVia("nd1VIA23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028396"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028397"> coorX[0] = strdup("171080");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028398"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028399"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028400"> coorX[1] = strdup("17440");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028401"> coorY[1] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028402"> coorValue[1] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028403"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028404"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028405"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028406"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028407"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028408"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028409"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028410"> status = defwNetPathVia("nd1VIA23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028411"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028412"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028413"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028414"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028415"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028416"> coorY[1] = strdup("26700");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028417"> coorValue[1] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028418"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028419"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028420"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028421"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028422"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028423"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028424"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028425"> status = defwNetPathVia("nd1VIA23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028426"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028427"> coorX[0] = strdup("177800");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028428"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028429"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028430"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028431"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028432"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028433"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028434"> status = defwNetPathVia("nd1VIA23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028435"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028436"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028437"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028438"> coorValue[0] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028439"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028440"> coorY[1] = strdup("30300");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028441"> coorValue[1] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028442"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028443"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028444"> status = defwNetPathVia("nd1VIA23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028445"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028446"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028447"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028448"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028449"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028450"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028451"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028452"> status = defwNetPathVia("nd1VIA23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028453"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028454"> coorX[0] = strdup("189560");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028455"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028456"> coorValue[0] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028457"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028458"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028459"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028460"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028461"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028462"> status = defwNetPathVia("nd1VIA12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028463"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028464"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028465"> coorY[0] = strdup("27300");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028466"> coorValue[0] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028467"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028468"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028469"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028470"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028471"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028472"> status = defwNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028473"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028474"> status = defwNetPathLayer("M3", 1, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028475"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028476"> coorX[0] = strdup("55160");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028477"> coorY[0] = strdup("31500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028478"> coorValue[0] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028479"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028480"> coorY[1] = strdup("34500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028481"> coorValue[1] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028482"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028483"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028484"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028485"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028486"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028487"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028488"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028489"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028490"> status = defwNetPathVia("M2_M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028491"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028492"> coorX[0] = strdup("149800");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028493"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028494"> coorValue[0] = strdup("8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028495"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028496"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028497"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028498"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028499"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028500"> status = defwNetPathVia("M2_M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028501"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028502"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028503"> coorY[0] = strdup("35700");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028504"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028505"> coorX[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028506"> coorY[1] = strdup("37500");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028507"> coorValue[1] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028508"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028509"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028510"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028511"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028512"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028513"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028514"> status = defwNetPathVia("M2_M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028515"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028516"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028517"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028518"> coorValue[0] = strdup("8");;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028519"> coorX[1] = strdup("170520");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028520"> coorY[1] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028521"> coorValue[1] = strdup("0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028522"> status = defwNetPathPoint(2, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028523"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028524"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028525"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028526"> free((char*)coorValue[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028527"> free((char*)coorX[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028528"> free((char*)coorY[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028529"> free((char*)coorValue[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028530"> status = defwNetPathVia("M2_M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028531"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028532"> status = defwNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028533"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028534"> status = defwNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028535"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028536"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028537"> status = defwNet("SCAN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028538"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028539"> status = defwNetConnection("scancell1", "P10", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028540"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028541"> status = defwNetConnection("scancell2", "PA0", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028542"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028543"> status = defwNetSource("TEST");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028544"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028545"> status = defwNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028546"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028547"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028548"> status = defwNet("testBug");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028549"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028550"> status = defwNetConnection("Z38A05", "G", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028551"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028552"> status = defwNetConnection("Z38A03", "G", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028553"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028554"> status = defwNetConnection("Z38A01", "G", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028555"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028556"> status = defwNetPathStart("ROUTED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028557"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028558"> status = defwNetPathLayer("M1", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028559"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028560"> coorX[0] = strdup("1288210");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028561"> coorY[0] = strdup("580930");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028562"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028563"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028564"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028565"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028566"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028567"> status = defwNetPathVia("GETH1W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028568"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028569"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028570"> coorY[0] = strdup("582820");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028571"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028572"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028573"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028574"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028575"> status = defwNetPathVia("GETH2W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028576"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028577"> status = defwNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028578"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028579"> status = defwNetPathLayer("M3", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028580"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028581"> coorX[0] = strdup("1141350");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028582"> coorY[0] = strdup("582820");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028583"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028584"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028585"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028586"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028587"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028588"> status = defwNetPathVia("GETH2W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028589"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028590"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028591"> coorY[0] = strdup("580930");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028592"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028593"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028594"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028595"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028596"> status = defwNetPathVia("GETH1W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028597"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028598"> status = defwNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028599"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028600"> status = defwNetPathLayer("M1", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028601"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028602"> coorX[0] = strdup("1278410");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028603"> coorY[0] = strdup("275170");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028604"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028605"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028606"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028607"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028608"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028609"> status = defwNetPathStart("NEW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028610"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028611"> status = defwNetPathLayer("M1", 0, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028612"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028613"> coorX[0] = strdup("1141210");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028614"> coorY[0] = strdup("271250");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028615"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028616"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028617"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028618"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028619"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028620"> status = defwNetPathVia("GETH1W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028621"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028622"> coorX[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028623"> coorY[0] = strdup("271460");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028624"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028625"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028626"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028627"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028628"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028629"> status = defwNetPathVia("GETH2W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028630"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028631"> coorX[0] = strdup("1142820");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028632"> coorY[0] = strdup("*");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028633"> coorValue[0] = NULL;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028634"> status = defwNetPathPoint(1, coorX, coorY, coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028635"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028636"> free((char*)coorX[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028637"> free((char*)coorY[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028638"> status = defwNetPathVia("GETH3W1W1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028639"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028640"> status = defwNetPathEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028641"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028642"> status = defwNetEndOneNet();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028643"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028644"> free((char*)coorX);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028645"> free((char*)coorY);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028646"> free((char*)coorValue);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028647"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028648"> status = defwNet("n1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028649"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028650"> status = defwNetConnection("PIN", "n1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028651"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028652"> status = defwNetConnection("driver1", "in", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028653"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028654"> status = defwNetConnection("bumpa1", "bumppin", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028655"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028656"> status = defwNetFixedbump();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028657"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028658"> status = defwNetEndOneNet(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028659"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028660"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028661"> status = defwEndNets();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028662"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028663"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028664"> // SCANCHAIN</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028665"> status = defwStartScanchains(4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028666"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028667"> status = defwScanchain("the_chain");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028668"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028669"> status = defwScanchainCommonscanpins("IN", "PA1", "OUT", "PA2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028670"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028671"> status = defwScanchainStart("PIN", "scanpin");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028672"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028673"> status = defwScanchainStop("cell4", "PA2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028674"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028675"> status = defwScanchainOrdered("cell2", "IN", "PA0", NULL, NULL,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028676"> "cell1", "OUT", "P10", NULL, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028677"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028678"> status = defwScanchainFloating("scancell1", "IN", "PA0", NULL, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028679"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028680"> status = defwScanchainFloating("scancell2", "OUT", "P10", NULL, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028681"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028682"> status = defwScanchain("chain1_clock1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028683"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028684"> status = defwScanchainPartition("clock1", -1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028685"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028686"> status = defwScanchainStart("block1/current_state_reg_0_QZ", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028687"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028688"> status = defwScanchainFloating("block1/pgm_cgm_en_reg", "IN", "SD", "OUT", "QZ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028689"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028690"> status = defwScanchainFloating("block1/start_reset_dd_reg", "IN", "SD", "OUT", "QZ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028691"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028692"> status = defwScanchainStop("block1/start_reset_d_reg", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028693"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028694"> status = defwScanchain("chain2_clock2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028695"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028696"> status = defwScanchainPartition("clock2", 1000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028697"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028698"> status = defwScanchainStart("block1/current_state_reg_0_QZ", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028699"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028700"> status = defwScanchainFloating("block1/port2_phy_addr_reg_0_", "IN", "SD", "OUT", "QZ ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028701"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028702"> status = defwScanchainFloating("block1/port2_phy_addr_reg_4_", "IN", "SD", "OUT", "QZ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028703"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028704"> status = defwScanchainFloatingBits("block1/port3_intfc", "IN", "SD", "OUT", "QZ", 4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028705"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028706"> status = defwScanchainOrderedBits("block1/mux1", "IN", "A", "OUT", "X", 0,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028707"> "block1/ff2", "IN", "SD", "OUT", "Q", -1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028708"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028709"> status = defwScanchain("chain4_clock3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028710"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028711"> status = defwScanchainPartition("clock3", -1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028712"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028713"> status = defwScanchainStart("block1/prescaler_IO/lfsr_reg1", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028714"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028715"> status = defwScanchainFloating("block1/dp1_timers", NULL, NULL, NULL, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028716"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028717"> status = defwScanchainFloatingBits("block1/bus8", NULL, NULL, NULL, NULL, 8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028718"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028719"> status = defwScanchainOrderedBits("block1/dsl/ffl", "IN", "SD", "OUT", "Q",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028720"> -1, "block1/dsl/mux1", "IN", "B", "OUT", "Y", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028721"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028722"> status = defwScanchainOrderedBits("block1/dsl/ff2", "IN", "SD", "OUT", "Q",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028723"> -1, "block1/dsl/mux2", "IN", "B", "OUT", "Y", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028724"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028725"> status = defwScanchainStop("block1/start_reset_d_reg", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028726"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028727"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028728"> status = defwEndScanchain();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028729"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028730"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028731"> // GROUPS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028732"> groupExpr = (const char**)malloc(sizeof(char*)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028733"> status = defwStartGroups(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028734"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028735"> groupExpr[0] = strdup("cell2"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028736"> groupExpr[1] = strdup("cell3"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028737"> status = defwGroup("group1", 2, groupExpr);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028738"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028739"> free((char*)groupExpr[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028740"> free((char*)groupExpr[1]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028741"> status = defwGroupRegion(0, 0, 0, 0, "region1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028742"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028743"> status = defwStringProperty("ggrp", "xx");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028744"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028745"> status = defwIntProperty("side", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028746"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028747"> status = defwRealProperty("maxarea", 5.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028748"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028749"> groupExpr[0] = strdup("cell1"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028750"> status = defwGroup("group2", 1, groupExpr);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028751"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028752"> free((char*)groupExpr[0]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028753"> status = defwGroupRegion(0, 10, 1000, 1010, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028754"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028755"> status = defwStringProperty("ggrp", "after the fall");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028756"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028757"> status = defwGroupSoft("MAXHALFPERIMETER", 4000, "MAXX", 10000, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028758"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028759"> status = defwEndGroups();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028760"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028761"> free((char*)groupExpr);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028762"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028763"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028764"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028765"> // BLOCKAGES</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028766"> xP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028767"> yP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028768"> xP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028769"> yP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028770"> xP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028771"> yP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028772"> xP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028773"> yP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028774"> xP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028775"> yP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028776"> xP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028777"> yP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028778"> xP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028779"> yP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028780"> xP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028781"> yP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028782"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028783"> status = defwStartBlockages(12);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028784"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028785"> status = defwBlockageLayer("m1", "comp1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028786"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028787"> status = defwBlockageRect(3456, 4535, 3000, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028788"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028789"> status = defwBlockageRect(4500, 6500, 5500, 6000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028790"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028791"> status = defwBlockagePolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028792"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028793"> status = defwBlockagePolygon(6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028794"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028795"> status = defwBlockageRect(5000, 6000, 4000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028796"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028797"> status = defwBlockagePlacementComponent("m2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028798"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028799"> status = defwBlockageRect(4000, 6000, 8000, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028800"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028801"> status = defwBlockageRect(8000, 400, 600, 800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028802"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028803"> status = defwBlockageLayer("m3", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028804"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028805"> status = defwBlockageSpacing(1000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028806"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028807"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028808"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028809"> status = defwBlockageLayerSlots("m4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028810"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028811"> status = defwBlockageDesignRuleWidth(1000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028812"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028813"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028814"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028815"> status = defwBlockageLayerFills("m5");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028816"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028817"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028818"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028819"> status = defwBlockageLayerPushdown("m6");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028820"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028821"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028822"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028823"> status = defwBlockagePolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028824"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028825"> status = defwBlockagePlacementComponent("m7");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028826"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028827"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028828"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028829"> status = defwBlockagePlacementPushdown();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028830"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028831"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028832"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028833"> status = defwBlockagePlacement();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028834"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028835"> status = defwBlockageRect(3000, 4000, 6000, 5000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028836"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028837"> status = defwBlockagePlacementSoft();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028838"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028839"> status = defwBlockageRect(4000, 6000, 8000, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028840"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028841"> status = defwBlockagePlacementPartial (1.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028842"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028843"> status = defwBlockageRect(4000, 6000, 8000, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028844"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028845"> status = defwBlockageLayerExceptpgnet("metal1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028846"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028847"> status = defwBlockageSpacing(4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028848"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028849"> status = defwBlockagePolygon(3, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028850"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028851"> status = defwEndBlockages();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028852"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028853"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028854"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028855"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028856"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028857"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028858"> // SLOTS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028859"> xP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028860"> yP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028861"> xP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028862"> yP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028863"> xP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028864"> yP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028865"> xP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028866"> yP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028867"> xP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028868"> yP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028869"> xP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028870"> yP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028871"> xP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028872"> yP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028873"> xP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028874"> yP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028875"> status = defwStartSlots(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028876"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028877"> status = defwSlotLayer("MET1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028878"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028879"> status = defwSlotPolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028880"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028881"> status = defwSlotPolygon(3, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028882"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028883"> status = defwSlotRect(1000, 2000, 1500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028884"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028885"> status = defwSlotRect(2000, 2000, 2500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028886"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028887"> status = defwSlotRect(3000, 2000, 3500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028888"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028889"> status = defwSlotLayer("MET2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028890"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028891"> status = defwSlotRect(1000, 2000, 1500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028892"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028893"> status = defwSlotPolygon(6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028894"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028895"> status = defwEndSlots();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028896"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028897"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028898"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028899"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028900"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028901"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028902"> // FILLS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028903"> xP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028904"> yP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028905"> xP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028906"> yP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028907"> xP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028908"> yP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028909"> xP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028910"> yP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028911"> xP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028912"> yP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028913"> xP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028914"> yP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028915"> xP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028916"> yP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028917"> xP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028918"> yP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028919"> status = defwStartFills(5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028920"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028921"> status = defwFillLayer("MET1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028922"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028923"> status = defwFillRect(1000, 2000, 1500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028924"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028925"> status = defwFillPolygon(5, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028926"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028927"> status = defwFillRect(2000, 2000, 2500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028928"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028929"> status = defwFillPolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028930"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028931"> status = defwFillRect(3000, 2000, 3500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028932"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028933"> status = defwFillLayer("MET2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028934"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028935"> status = defwFillRect(1000, 2000, 1500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028936"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028937"> status = defwFillRect(1000, 4500, 1500, 6500);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028938"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028939"> status = defwFillRect(1000, 7000, 1500, 9000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028940"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028941"> status = defwFillRect(1000, 9500, 1500, 11500);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028942"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028943"> status = defwFillPolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028944"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028945"> status = defwFillPolygon(6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028946"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028947"> status = defwFillLayer("metal1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028948"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028949"> status = defwFillLayerOPC();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028950"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028951"> status = defwFillRect(100, 200, 150, 400);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028952"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028953"> status = defwFillRect(300, 200, 350, 400);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028954"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028955"> status = defwFillVia("via28");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028956"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028957"> status = defwFillViaOPC();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028958"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028959"> status = defwFillPoints(1, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028960"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028961"> status = defwFillVia("via26");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028962"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028963"> status = defwFillPoints(3, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028964"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028965"> status = defwEndFills();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028966"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028967"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028968"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028969"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028970"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028971"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028972"> // SLOTS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028973"> xP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028974"> yP = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028975"> xP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028976"> yP[0] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028977"> xP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028978"> yP[1] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028979"> xP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028980"> yP[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028981"> xP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028982"> yP[3] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028983"> xP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028984"> yP[4] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028985"> xP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028986"> yP[5] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028987"> xP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028988"> yP[6] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028989"> status = defwStartSlots(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028990"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028991"> status = defwSlotLayer("MET1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028992"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028993"> status = defwSlotRect(1000, 2000, 1500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028994"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028995"> status = defwSlotPolygon(5, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028996"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028997"> status = defwSlotRect(2000, 2000, 2500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028998"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1028999"> status = defwSlotPolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029000"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029001"> status = defwSlotRect(3000, 2000, 3500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029002"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029003"> status = defwSlotLayer("MET2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029004"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029005"> status = defwSlotRect(1000, 2000, 1500, 4000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029006"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029007"> status = defwSlotRect(1000, 4500, 1500, 6500);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029008"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029009"> status = defwSlotRect(1000, 7000, 1500, 9000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029010"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029011"> status = defwSlotRect(1000, 9500, 1500, 11500);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029012"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029013"> status = defwSlotPolygon(7, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029014"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029015"> status = defwSlotPolygon(6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029016"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029017"> status = defwEndSlots();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029018"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029019"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029020"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029021"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029022"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029023"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029024"> // NONDEFAULTRULES</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029025"> status = defwStartNonDefaultRules(4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029026"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029027"> status = defwNonDefaultRule("doubleSpaceRule", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029028"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029029"> status = defwNonDefaultRuleLayer("metal1", 2, 0, 1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029030"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029031"> status = defwNonDefaultRuleLayer("metal2", 2, 0, 1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029032"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029033"> status = defwNonDefaultRuleLayer("metal3", 2, 0, 1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029034"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029035"> status = defwNonDefaultRule("lowerResistance", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029036"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029037"> status = defwNonDefaultRuleLayer("metal1", 6, 0, 0, 5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029038"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029039"> status = defwNonDefaultRuleLayer("metal2", 5, 1, 6, 4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029040"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029041"> status = defwNonDefaultRuleLayer("metal3", 5, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029042"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029043"> status = defwNonDefaultRuleMinCuts("cut12", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029044"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029045"> status = defwNonDefaultRuleMinCuts("cut23", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029046"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029047"> status = defwNonDefaultRule("myRule", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029048"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029049"> status = defwNonDefaultRuleLayer("metal1", 2, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029050"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029051"> status = defwNonDefaultRuleLayer("metal2", 2, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029052"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029053"> status = defwNonDefaultRuleLayer("metal3", 2, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029054"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029055"> status = defwNonDefaultRuleViaRule("myvia12rule");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029056"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029057"> status = defwNonDefaultRuleViaRule("myvia23rule");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029058"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029059"> status = defwRealProperty("minlength", 50.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029060"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029061"> status = defwStringProperty("firstName", "Only");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029062"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029063"> status = defwIntProperty("idx", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029064"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029065"> status = defwNonDefaultRule("myCustomRule", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029066"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029067"> status = defwNonDefaultRuleLayer("metal1", 5, 0, 1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029068"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029069"> status = defwNonDefaultRuleLayer("metal2", 5, 0, 1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029070"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029071"> status = defwNonDefaultRuleLayer("metal3", 5, 0, 1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029072"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029073"> status = defwNonDefaultRuleVia("myvia12_custom1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029074"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029075"> status = defwNonDefaultRuleVia("myvia12_custom2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029076"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029077"> status = defwNonDefaultRuleVia("myvia23_custom1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029078"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029079"> status = defwNonDefaultRuleVia("myvia23_custom2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029080"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029081"> status = defwEndNonDefaultRules();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029082"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029083"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029084"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029085"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029086"> // STYLES</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029087"> status = defwStartStyles(3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029088"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029089"> xP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029090"> yP = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029091"> xP[0] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029092"> yP[0] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029093"> xP[1] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029094"> yP[1] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029095"> xP[2] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029096"> yP[2] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029097"> xP[3] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029098"> yP[3] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029099"> xP[4] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029100"> yP[4] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029101"> xP[5] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029102"> yP[5] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029103"> status = defwStyles(1, 6, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029104"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029105"> status = defwStyles(2, 5, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029106"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029107"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029108"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029109"> xP = (double*)malloc(sizeof(double)*8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029110"> yP = (double*)malloc(sizeof(double)*8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029111"> xP[0] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029112"> yP[0] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029113"> xP[1] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029114"> yP[1] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029115"> xP[2] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029116"> yP[2] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029117"> xP[3] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029118"> yP[3] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029119"> xP[4] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029120"> yP[4] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029121"> xP[5] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029122"> yP[5] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029123"> xP[6] = 10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029124"> yP[6] = -30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029125"> xP[7] = 30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029126"> yP[7] = -10;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029127"> status = defwStyles(3, 8, xP, yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029128"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029129"> status = defwEndStyles();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029130"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029131"> free((char*)xP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029132"> free((char*)yP);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029133"> status = defwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029134"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029135"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029136"> // BEGINEXT</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029137"> status = defwStartBeginext("tag");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029138"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029139"> defwAddIndent();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029140"> status = defwBeginextCreator("CADENCE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029141"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029142"> status = defwBeginextSyntax("OTTER", "furry");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029143"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029144"> status = defwStringProperty("arrg", "later");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029145"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029146"> status = defwBeginextSyntax("SEAL", "cousin to WALRUS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029147"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029148"> status = defwEndBeginext();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029149"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029150"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029151"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029152"> status = defwEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029153"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029154"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029155"> lineNumber = defwCurrentLineNumber();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029156"> if (lineNumber == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029157"> fprintf(stderr, "ERROR: nothing has been read.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029158"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029159"> fclose(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029160"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029161"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029162">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1029315"> </a></font>
|
|
</p>
|
|
</div>
|
|
<br>
|
|
<a href="#pagetop">Return to top of page</a>
|
|
<hr>
|
|
<hr align="left">
|
|
<div style="text-align: left;">
|
|
<!-- Begin Buttons -->
|
|
<table width="650" cellpadding="0" cellspacing="0" border="0">
|
|
<tr>
|
|
<td height="20" width="59">
|
|
<a href="javascript:openLibrary()"><img src="../support/nav2_library.gif" border="0" alt="View Library" height="20" width="59"></a>
|
|
</td>
|
|
<td height="20" width="73">
|
|
<a href="defapiTOC.html"><img src="../support/nav2_toc.gif" alt="Table of Contents" border="0"></a>
|
|
</td>
|
|
|
|
<td height="20" width="46">
|
|
<img src="../support/nav2_index_b.gif" border="0">
|
|
</td>
|
|
<td>
|
|
<a href="ch8lefdiff.html"><img src="images/nav2_previous.gif" alt="Previous" border="0"></a>
|
|
</td>
|
|
<td height="20">
|
|
<img src="images/nav2_next_b.gif" alt="Previous">
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<a href="defapi.pdf"><img src="../support/nav2_print.gif" border="0" alt="Open PDF to print book" height="20" width="114"></a>
|
|
</a>
|
|
</td>
|
|
<td height="20" width="59">
|
|
<img src="images/nav_next_b.gif" alt="Next" border="0">
|
|
</td>
|
|
<td height="20" width="61">
|
|
<img src="../support/nav2_black.gif" border="0" height="20" width="76">
|
|
</td>
|
|
<td height="20" width="76">
|
|
<a href="/feedback.htm"><img src="../support/nav2_feedback.gif" border="0" alt="Email Comments" height="20" width="76"></a>
|
|
</td>
|
|
<td height="20" width="43">
|
|
<a href="../cdsuser/help.html"><img src="../support/nav2_help.gif" border="0" alt="Help Using Documentation" height="20" width="43"></a>
|
|
</td>
|
|
<td height="20" width="37">
|
|
<a href="/exitsearch.htm"><img src="../support/nav2_exit.gif" border="0" alt="Shut Down Cadence Documentation Server" height="20" width="37"></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<!-- End Buttons -->
|
|
</div>
|
|
<br>
|
|
<font size="-1" >
|
|
For support, see <a href="http://support.cadence.com" target="_blank">Cadence Online Support</a> service.</font>
|
|
<br>
|
|
<br>
|
|
<font size="-1" >
|
|
<font size="-1"><i>Copyright © 2016, <a href ="http://www.cadence.com">Cadence Design Systems, Inc.</a></i></font>
|
|
</font>
|
|
<br>
|
|
<font size="-1" >
|
|
All rights reserved.</font>
|
|
<br>
|
|
<br>
|
|
</body>
|
|
</html>
|