12547 lines
664 KiB
HTML
12547 lines
664 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>LEF 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-12">
|
|
<META NAME="CreateTime" CONTENT="1491994560">
|
|
<META NAME="DataType" CONTENT="Manuals">
|
|
<META NAME="Description" CONTENT="Describes the C/C++ programming interface used to read and write Library Exchange Format (LEF) files.">
|
|
<META NAME="DocTitle" CONTENT="LEF 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="lefapi">
|
|
<META NAME="Language" CONTENT="English">
|
|
<META NAME="ModifiedDate" CONTENT="2017-04-12">
|
|
<META NAME="ModifiedTime" CONTENT="1491994560">
|
|
<META NAME="NextFile" CONTENT="">
|
|
<META NAME="PageCount" CONTENT="102">
|
|
<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="LEF 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="lefapiTOC.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="lefapi.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>LEF 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">LEF Reader and Writer Examples</a></h1>
|
|
<p><a name="1021897">This appendix contains examples of the Cadence</a><font color="#000000"><sup>®</sup></font> Library Exchange Format (LEF) 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="#1014148" title="A" name="1021898"><font color="#0000ff"><u>LEF Reader Program</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="#1016399" title="A" name="1021903"><font color="Blue"><u>LEF Writer Program</u></font></a><a href="#1016399" title="A"> </a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<h2><a name="1014148">LEF Reader Program</a></h2>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023238">#ifdef WIN32</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023239">#pragma warning (disable : 4786)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023240">#endif</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023241"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023242">#include <stdio.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023243">#include <string.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023244">#include <iostream.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023245">#include <malloc.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023246"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023247">#ifndef WIN32</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023248"># include <unistd.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023249">#else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023250"># include <windows.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023251">#endif /* not WIN32 */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023252">#include "lefrReader.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023253">#include "lefwWriter.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023254">#include "lefiDebug.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023255">#include "lefiEncryptInt.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023256">#include "lefiUtil.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023257"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023258">char defaultName[128];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023259">char defaultOut[128];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023260">FILE* fout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023261">int printing = 0; // Printing the output.</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023262">int parse65nm = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023263"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023264">// TX_DIR:TRANSLATION ON</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023265"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023266">void dataError() {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023267"> fprintf(fout, "ERROR: returned user data is not correct!\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023268">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023269"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023270">void checkType(lefrCallbackType_e c) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023271"> if (c >= 0 && c <= lefrLibraryEndCbkType) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023272"> // OK</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023273"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023274"> fprintf(fout, "ERROR: callback type is out of bounds!\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023275"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023276">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023277"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023278">char* orientStr(int orient) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023279"> switch (orient) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023280"> case 0: return ((char*)"N");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023281"> case 1: return ((char*)"W");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023282"> case 2: return ((char*)"S");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023283"> case 3: return ((char*)"E");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023284"> case 4: return ((char*)"FN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023285"> case 5: return ((char*)"FW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023286"> case 6: return ((char*)"FS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023287"> case 7: return ((char*)"FE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023288"> };</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023289"> return ((char*)"BOGUS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023290">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023291"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023292">void lefVia(lefiVia* via) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023293"> int i, j;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023294"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023295"> lefrSetCaseSensitivity(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023296"> fprintf(fout, "VIA %s ", via->lefiVia::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023297"> if (via->lefiVia::hasDefault())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023298"> fprintf(fout, "DEFAULT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023299"> else if (via->lefiVia::hasGenerated())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023300"> fprintf(fout, "GENERATED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023301"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023302"> if (via->lefiVia::hasTopOfStack())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023303"> fprintf(fout, " TOPOFSTACKONLY\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023304"> if (via->lefiVia::hasForeign()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023305"> fprintf(fout, " FOREIGN %s ", via->lefiVia::foreign());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023306"> if (via->lefiVia::hasForeignPnt()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023307"> fprintf(fout, "( %g %g ) ", via->lefiVia::foreignX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023308"> via->lefiVia::foreignY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023309"> if (via->lefiVia::hasForeignOrient())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023310"> fprintf(fout, "%s ", orientStr(via->lefiVia::foreignOrient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023311"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023312"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023313"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023314"> if (via->lefiVia::hasProperties()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023315"> fprintf(fout, " PROPERTY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023316"> for (i = 0; i < via->lefiVia::numProperties(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023317"> fprintf(fout, "%s ", via->lefiVia::propName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023318"> if (via->lefiVia::propIsNumber(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023319"> fprintf(fout, "%g ", via->lefiVia::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023320"> if (via->lefiVia::propIsString(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023321"> fprintf(fout, "%s ", via->lefiVia::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023322"> switch (via->lefiVia::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023323"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023324"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023325"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023326"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023327"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023328"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023329"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023330"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023331"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023332"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023333"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023334"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023335"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023336"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023337"> if (via->lefiVia::hasResistance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023338"> fprintf(fout, " RESISTANCE %g ;\n", via->lefiVia::resistance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023339"> if (via->lefiVia::numLayers() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023340"> for (i = 0; i < via->lefiVia::numLayers(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023341"> fprintf(fout, " LAYER %s\n", via->lefiVia::layerName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023342"> for (j = 0; j < via->lefiVia::numRects(i); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023343"> fprintf(fout, " RECT ( %f %f ) ( %f %f ) ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023344"> via->lefiVia::xl(i, j), via->lefiVia::yl(i, j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023345"> via->lefiVia::xh(i, j), via->lefiVia::yh(i, j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023346"> for (j = 0; j < via->lefiVia::numPolygons(i); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023347"> struct lefiGeomPolygon poly;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023348"> poly = via->lefiVia::getPolygon(i, j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023349"> fprintf(fout, " POLYGON ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023350"> for (int k = 0; k < poly.numPoints; k++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023351"> fprintf(fout, " %g %g ", poly.x[k], poly.y[k]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023352"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023353"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023354"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023355"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023356"> if (via->lefiVia::hasViaRule()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023357"> fprintf(fout, " VIARULE %s ;\n", via->lefiVia::viaRuleName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023358"> fprintf(fout, " CUTSIZE %g %g ;\n", via->lefiVia::xCutSize(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023359"> via->lefiVia::yCutSize());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023360"> fprintf(fout, " LAYERS %s %s %s ;\n", via->lefiVia::botMetalLayer(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023361"> via->lefiVia::cutLayer(), via->lefiVia::topMetalLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023362"> fprintf(fout, " CUTSPACING %g %g ;\n", via->lefiVia::xCutSpacing(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023363"> via->lefiVia::yCutSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023364"> fprintf(fout, " ENCLOSURE %g %g %g %g ;\n", via->lefiVia::xBotEnc(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023365"> via->lefiVia::yBotEnc(), via->lefiVia::xTopEnc(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023366"> via->lefiVia::yTopEnc());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023367"> if (via->lefiVia::hasRowCol())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023368"> fprintf(fout, " ROWCOL %d %d ;\n", via->lefiVia::numCutRows(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023369"> via->lefiVia::numCutCols());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023370"> if (via->lefiVia::hasOrigin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023371"> fprintf(fout, " ORIGIN %g %g ;\n", via->lefiVia::xOffset(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023372"> via->lefiVia::yOffset());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023373"> if (via->lefiVia::hasOffset())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023374"> fprintf(fout, " OFFSET %g %g %g %g ;\n", via->lefiVia::xBotOffset(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023375"> via->lefiVia::yBotOffset(), via->lefiVia::xTopOffset(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023376"> via->lefiVia::yTopOffset());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023377"> if (via->lefiVia::hasCutPattern())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023378"> fprintf(fout, " PATTERN %s ;\n", via->lefiVia::cutPattern());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023379"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023380"> fprintf(fout, "END %s\n", via->lefiVia::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023381"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023382"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023383">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023384"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023385">void lefSpacing(lefiSpacing* spacing) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023386"> fprintf(fout, " SAMENET %s %s %g ", spacing->lefiSpacing::name1(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023387"> spacing->lefiSpacing::name2(), spacing->lefiSpacing::distance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023388"> if (spacing->lefiSpacing::hasStack())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023389"> fprintf(fout, "STACK ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023390"> fprintf(fout,";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023391"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023392">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023393"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023394">void lefViaRuleLayer(lefiViaRuleLayer* vLayer) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023395"> fprintf(fout, " LAYER %s ;\n", vLayer->lefiViaRuleLayer::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023396"> if (vLayer->lefiViaRuleLayer::hasDirection()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023397"> if (vLayer->lefiViaRuleLayer::isHorizontal())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023398"> fprintf(fout, " DIRECTION HORIZONTAL ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023399"> if (vLayer->lefiViaRuleLayer::isVertical())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023400"> fprintf(fout, " DIRECTION VERTICAL ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023401"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023402"> if (vLayer->lefiViaRuleLayer::hasEnclosure()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023403"> fprintf(fout, " ENCLOSURE %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023404"> vLayer->lefiViaRuleLayer::enclosureOverhang1(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023405"> vLayer->lefiViaRuleLayer::enclosureOverhang2());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023406"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023407"> if (vLayer->lefiViaRuleLayer::hasWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023408"> fprintf(fout, " WIDTH %g TO %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023409"> vLayer->lefiViaRuleLayer::widthMin(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023410"> vLayer->lefiViaRuleLayer::widthMax());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023411"> if (vLayer->lefiViaRuleLayer::hasResistance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023412"> fprintf(fout, " RESISTANCE %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023413"> vLayer->lefiViaRuleLayer::resistance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023414"> if (vLayer->lefiViaRuleLayer::hasOverhang())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023415"> fprintf(fout, " OVERHANG %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023416"> vLayer->lefiViaRuleLayer::overhang());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023417"> if (vLayer->lefiViaRuleLayer::hasMetalOverhang())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023418"> fprintf(fout, " METALOVERHANG %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023419"> vLayer->lefiViaRuleLayer::metalOverhang());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023420"> if (vLayer->lefiViaRuleLayer::hasSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023421"> fprintf(fout, " SPACING %g BY %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023422"> vLayer->lefiViaRuleLayer::spacingStepX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023423"> vLayer->lefiViaRuleLayer::spacingStepY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023424"> if (vLayer->lefiViaRuleLayer::hasRect())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023425"> fprintf(fout, " RECT ( %f %f ) ( %f %f ) ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023426"> vLayer->lefiViaRuleLayer::xl(), vLayer->lefiViaRuleLayer::yl(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023427"> vLayer->lefiViaRuleLayer::xh(), vLayer->lefiViaRuleLayer::yh());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023428"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023429">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023430"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023431">void prtGeometry(lefiGeometries* geometry) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023432"> int numItems = geometry->lefiGeometries::numItems();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023433"> int i, j;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023434"> lefiGeomPath* path;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023435"> lefiGeomPathIter* pathIter;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023436"> lefiGeomRect* rect;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023437"> lefiGeomRectIter* rectIter;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023438"> lefiGeomPolygon* polygon;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023439"> lefiGeomPolygonIter* polygonIter;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023440"> lefiGeomVia* via;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023441"> lefiGeomViaIter* viaIter;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023442"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023443"> for (i = 0; i < numItems; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023444"> switch (geometry->lefiGeometries::itemType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023445"> case lefiGeomClassE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023446"> fprintf(fout, "CLASS %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023447"> geometry->lefiGeometries::getClass(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023448"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023449"> case lefiGeomLayerE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023450"> fprintf(fout, " LAYER %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023451"> geometry->lefiGeometries::getLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023452"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023453"> case lefiGeomLayerExceptPgNetE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023454"> fprintf(fout, " EXCEPTPGNET ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023455"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023456"> case lefiGeomLayerMinSpacingE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023457"> fprintf(fout, " SPACING %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023458"> geometry->lefiGeometries::getLayerMinSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023459"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023460"> case lefiGeomLayerRuleWidthE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023461"> fprintf(fout, " DESIGNRULEWIDTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023462"> geometry->lefiGeometries::getLayerRuleWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023463"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023464"> case lefiGeomWidthE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023465"> fprintf(fout, " WIDTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023466"> geometry->lefiGeometries::getWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023467"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023468"> case lefiGeomPathE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023469"> path = geometry->lefiGeometries::getPath(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023470"> fprintf(fout, " PATH ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023471"> for (j = 0; j < path->numPoints; j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023472"> if (j+1 == path->numPoints) // last one on the list</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023473"> fprintf(fout, " ( %g %g ) ;\n", path->x[j], path->y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023474"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023475"> fprintf(fout, " ( %g %g )\n", path->x[j], path->y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023476"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023477"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023478"> case lefiGeomPathIterE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023479"> pathIter = geometry->lefiGeometries::getPathIter(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023480"> fprintf(fout, " PATH ITERATED ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023481"> for (j = 0; j < pathIter->numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023482"> fprintf(fout, " ( %g %g )\n", pathIter->x[j],</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023483"> pathIter->y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023484"> fprintf(fout, " DO %g BY %g STEP %g %g ;\n", pathIter->xStart,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023485"> pathIter->yStart, pathIter->xStep, pathIter->yStep);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023486"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023487"> case lefiGeomRectE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023488"> rect = geometry->lefiGeometries::getRect(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023489"> fprintf(fout, " RECT ( %f %f ) ( %f %f ) ;\n", rect->xl, </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023490"> rect->yl, rect->xh, rect->yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023491"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023492"> case lefiGeomRectIterE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023493"> rectIter = geometry->lefiGeometries::getRectIter(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023494"> fprintf(fout, " RECT ITERATE ( %f %f ) ( %f %f )\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023495"> rectIter->xl, rectIter->yl, rectIter->xh, rectIter->yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023496"> fprintf(fout, " DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023497"> rectIter->xStart, rectIter->yStart, rectIter->xStep,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023498"> rectIter->yStep);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023499"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023500"> case lefiGeomPolygonE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023501"> polygon = geometry->lefiGeometries::getPolygon(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023502"> fprintf(fout, " POLYGON ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023503"> for (j = 0; j < polygon->numPoints; j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023504"> if (j+1 == polygon->numPoints) // last one on the list</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023505"> fprintf(fout, " ( %g %g ) ;\n", polygon->x[j],</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023506"> polygon->y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023507"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023508"> fprintf(fout, " ( %g %g )\n", polygon->x[j],</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023509"> polygon->y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023510"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023511"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023512"> case lefiGeomPolygonIterE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023513"> polygonIter = geometry->lefiGeometries::getPolygonIter(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023514"> fprintf(fout, " POLYGON ITERATE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023515"> for (j = 0; j < polygonIter->numPoints; j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023516"> fprintf(fout, " ( %g %g )\n", polygonIter->x[j],</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023517"> polygonIter->y[j]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023518"> fprintf(fout, " DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023519"> polygonIter->xStart, polygonIter->yStart,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023520"> polygonIter->xStep, polygonIter->yStep);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023521"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023522"> case lefiGeomViaE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023523"> via = geometry->lefiGeometries::getVia(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023524"> fprintf(fout, " VIA ( %g %g ) %s ;\n", via->x, via->y,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023525"> via->name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023526"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023527"> case lefiGeomViaIterE:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023528"> viaIter = geometry->lefiGeometries::getViaIter(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023529"> fprintf(fout, " VIA ITERATE ( %g %g ) %s\n", viaIter->x,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023530"> viaIter->y, viaIter->name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023531"> fprintf(fout, " DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023532"> viaIter->xStart, viaIter->yStart,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023533"> viaIter->xStep, viaIter->yStep);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023534"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023535"> default:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023536"> fprintf(fout, "BOGUS geometries type.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023537"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023538"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023539"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023540">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023541"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023542">int antennaCB(lefrCallbackType_e c, double value, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023543"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023544"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023545"> switch (c) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023546"> case lefrAntennaInputCbkType:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023547"> fprintf(fout, "ANTENNAINPUTGATEAREA %g ;\n", value);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023548"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023549"> case lefrAntennaInoutCbkType:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023550"> fprintf(fout, "ANTENNAINOUTDIFFAREA %g ;\n", value);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023551"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023552"> case lefrAntennaOutputCbkType:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023553"> fprintf(fout, "ANTENNAOUTPUTDIFFAREA %g ;\n", value);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023554"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023555"> case lefrInputAntennaCbkType:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023556"> fprintf(fout, "INPUTPINANTENNASIZE %g ;\n", value);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023557"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023558"> case lefrOutputAntennaCbkType:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023559"> fprintf(fout, "OUTPUTPINANTENNASIZE %g ;\n", value);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023560"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023561"> case lefrInoutAntennaCbkType:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023562"> fprintf(fout, "INOUTPINANTENNASIZE %g ;\n", value);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023563"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023564"> default:</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023565"> fprintf(fout, "BOGUS antenna type.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023566"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023567"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023568"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023569">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023570"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023571">int arrayBeginCB(lefrCallbackType_e c, const char* name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023572"> int status;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023573"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023574"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023575"> status = lefwStartArray(name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023576"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023577"> return status;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023578"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023579">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023580"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023581">int arrayCB(lefrCallbackType_e c, lefiArray* a, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023582"> int status, i, j, defCaps;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023583"> lefiSitePattern* pattern;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023584"> lefiTrackPattern* track;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023585"> lefiGcellPattern* gcell;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023586"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023587"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023588"> if (a->lefiArray::numSitePattern() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023589"> for (i = 0; i < a->lefiArray::numSitePattern(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023590"> pattern = a->lefiArray::sitePattern(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023591"> status = lefwArraySite(pattern->lefiSitePattern::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023592"> pattern->lefiSitePattern::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023593"> pattern->lefiSitePattern::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023594"> pattern->lefiSitePattern::orient(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023595"> pattern->lefiSitePattern::xStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023596"> pattern->lefiSitePattern::yStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023597"> pattern->lefiSitePattern::xStep(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023598"> pattern->lefiSitePattern::yStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023599"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023600"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023601"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023602"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023603"> if (a->lefiArray::numCanPlace() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023604"> for (i = 0; i < a->lefiArray::numCanPlace(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023605"> pattern = a->lefiArray::canPlace(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023606"> status = lefwArrayCanplace(pattern->lefiSitePattern::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023607"> pattern->lefiSitePattern::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023608"> pattern->lefiSitePattern::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023609"> pattern->lefiSitePattern::orient(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023610"> pattern->lefiSitePattern::xStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023611"> pattern->lefiSitePattern::yStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023612"> pattern->lefiSitePattern::xStep(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023613"> pattern->lefiSitePattern::yStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023614"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023615"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023616"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023617"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023618"> if (a->lefiArray::numCannotOccupy() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023619"> for (i = 0; i < a->lefiArray::numCannotOccupy(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023620"> pattern = a->lefiArray::cannotOccupy(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023621"> status = lefwArrayCannotoccupy(pattern->lefiSitePattern::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023622"> pattern->lefiSitePattern::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023623"> pattern->lefiSitePattern::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023624"> pattern->lefiSitePattern::orient(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023625"> pattern->lefiSitePattern::xStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023626"> pattern->lefiSitePattern::yStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023627"> pattern->lefiSitePattern::xStep(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023628"> pattern->lefiSitePattern::yStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023629"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023630"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023631"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023632"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023633"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023634"> if (a->lefiArray::numTrack() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023635"> for (i = 0; i < a->lefiArray::numTrack(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023636"> track = a->lefiArray::track(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023637"> fprintf(fout, " TRACKS %s, %g DO %d STEP %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023638"> track->lefiTrackPattern::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023639"> track->lefiTrackPattern::start(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023640"> track->lefiTrackPattern::numTracks(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023641"> track->lefiTrackPattern::space()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023642"> if (track->lefiTrackPattern::numLayers() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023643"> fprintf(fout, " LAYER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023644"> for (j = 0; j < track->lefiTrackPattern::numLayers(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023645"> fprintf(fout, "%s ", track->lefiTrackPattern::layerName(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023646"> fprintf(fout, ";\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023647"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023648"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023649"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023650"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023651"> if (a->lefiArray::numGcell() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023652"> for (i = 0; i < a->lefiArray::numGcell(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023653"> gcell = a->lefiArray::gcell(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023654"> fprintf(fout, " GCELLGRID %s, %g DO %d STEP %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023655"> gcell->lefiGcellPattern::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023656"> gcell->lefiGcellPattern::start(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023657"> gcell->lefiGcellPattern::numCRs(), </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023658"> gcell->lefiGcellPattern::space()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023659"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023660"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023661"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023662"> if (a->lefiArray::numFloorPlans() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023663"> for (i = 0; i < a->lefiArray::numFloorPlans(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023664"> status = lefwStartArrayFloorplan(a->lefiArray::floorPlanName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023665"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023666"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023667"> for (j = 0; j < a->lefiArray::numSites(i); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023668"> pattern = a->lefiArray::site(i, j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023669"> status = lefwArrayFloorplan(a->lefiArray::siteType(i, j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023670"> pattern->lefiSitePattern::name(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023671"> pattern->lefiSitePattern::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023672"> pattern->lefiSitePattern::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023673"> pattern->lefiSitePattern::orient(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023674"> (int)pattern->lefiSitePattern::xStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023675"> (int)pattern->lefiSitePattern::yStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023676"> pattern->lefiSitePattern::xStep(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023677"> pattern->lefiSitePattern::yStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023678"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023679"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023680"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023681"> status = lefwEndArrayFloorplan(a->lefiArray::floorPlanName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023682"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023683"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023684"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023685"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023686"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023687"> defCaps = a->lefiArray::numDefaultCaps();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023688"> if (defCaps > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023689"> status = lefwStartArrayDefaultCap(defCaps);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023690"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023691"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023692"> for (i = 0; i < defCaps; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023693"> status = lefwArrayDefaultCap(a->lefiArray::defaultCapMinPins(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023694"> a->lefiArray::defaultCap(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023695"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023696"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023697"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023698"> status = lefwEndArrayDefaultCap();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023699"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023700"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023701"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023702"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023703">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023704"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023705">int arrayEndCB(lefrCallbackType_e c, const char* name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023706"> int status;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023707"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023708"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023709"> status = lefwEndArray(name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023710"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023711"> return status;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023712"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023713">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023714"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023715">int busBitCharsCB(lefrCallbackType_e c, const char* busBit, lefiUserData ud)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023716">{</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023717"> int status;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023718"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023719"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023720"> status = lefwBusBitChars(busBit);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023721"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023722"> dataError();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023723"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023724">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023725"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023726">int caseSensCB(lefrCallbackType_e c, int caseSense, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023727"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023728"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023729"> if (caseSense == TRUE)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023730"> fprintf(fout, "NAMESCASESENSITIVE ON ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023731"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023732"> fprintf(fout, "NAMESCASESENSITIVE OFF ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023733"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023734">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023735"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023736">int clearanceCB(lefrCallbackType_e c, const char* name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023737"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023738"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023739"> fprintf(fout, "CLEARANCEMEASURE %s ;\n", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023740"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023741">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023742"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023743">int dividerCB(lefrCallbackType_e c, const char* name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023744"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023745"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023746"> fprintf(fout, "DIVIDER %s ;\n", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023747"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023748">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023749"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023750">int noWireExtCB(lefrCallbackType_e c, const char* name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023751"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023752"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023753"> fprintf(fout, "NOWIREEXTENSION %s ;\n", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023754"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023755">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023756"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023757">int edge1CB(lefrCallbackType_e c, double name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023758"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023759"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023760"> fprintf(fout, "EDGERATETHRESHOLD1 %g ;\n", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023761"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023762">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023763"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023764">int edge2CB(lefrCallbackType_e c, double name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023765"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023766"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023767"> fprintf(fout, "EDGERATETHRESHOLD2 %g ;\n", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023768"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023769">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023770"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023771">int edgeScaleCB(lefrCallbackType_e c, double name, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023772"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023773"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023774"> fprintf(fout, "EDGERATESCALEFACTORE %g ;\n", name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023775"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023776">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023777"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023778">int dielectricCB(lefrCallbackType_e c, double dielectric, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023779"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023780"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023781"> fprintf(fout, "DIELECTRIC %g ;\n", dielectric);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023782"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023783">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023784"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023785">int irdropBeginCB(lefrCallbackType_e c, void* ptr, lefiUserData ud){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023786"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023787"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023788"> fprintf(fout, "IRDROP\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023789"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023790">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023791"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023792">int irdropCB(lefrCallbackType_e c, lefiIRDrop* irdrop, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023793"> int i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023794"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023795"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023796"> fprintf(fout, " TABLE %s ", irdrop->lefiIRDrop::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023797"> for (i = 0; i < irdrop->lefiIRDrop::numValues(); i++) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023798"> fprintf(fout, "%g %g ", irdrop->lefiIRDrop::value1(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023799"> irdrop->lefiIRDrop::value2(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023800"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023801"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023802">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023803"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023804">int irdropEndCB(lefrCallbackType_e c, void* ptr, lefiUserData ud){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023805"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023806"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023807"> fprintf(fout, "END IRDROP\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023808"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023809">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023810"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023811">int layerCB(lefrCallbackType_e c, lefiLayer* layer, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023812"> int i, j, k;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023813"> int numPoints, propNum;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023814"> double *widths, *current;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023815"> lefiLayerDensity* density;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023816"> lefiAntennaPWL* pwl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023817"> lefiSpacingTable* spTable;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023818"> lefiInfluence* influence;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023819"> lefiParallel* parallel;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023820"> lefiTwoWidths* twoWidths;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023821"> char pType;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023822"> int numMinCut, numMinenclosed;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023823"> lefiAntennaModel* aModel;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023824"> lefiOrthogonal* ortho;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023825"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023826"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023827"> lefrSetCaseSensitivity(0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023828"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023829"> if (parse65nm)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023830"> layer->lefiLayer::parse65nmRules();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023831"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023832"> fprintf(fout, "LAYER %s\n", layer->lefiLayer::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023833"> if (layer->lefiLayer::hasType())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023834"> fprintf(fout, " TYPE %s ;\n", layer->lefiLayer::type());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023835"> if (layer->lefiLayer::hasPitch())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023836"> fprintf(fout, " PITCH %g ;\n", layer->lefiLayer::pitch());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023837"> else if (layer->lefiLayer::hasXYPitch())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023838"> fprintf(fout, " PITCH %g %g ;\n", layer->lefiLayer::pitchX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023839"> layer->lefiLayer::pitchY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023840"> if (layer->lefiLayer::hasOffset())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023841"> fprintf(fout, " OFFSET %g ;\n", layer->lefiLayer::offset());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023842"> else if (layer->lefiLayer::hasXYOffset())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023843"> fprintf(fout, " OFFSET %g %g ;\n", layer->lefiLayer::offsetX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023844"> layer->lefiLayer::offsetY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023845"> if (layer->lefiLayer::hasDiagPitch())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023846"> fprintf(fout, " DIAGPITCH %g ;\n", layer->lefiLayer::diagPitch());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023847"> else if (layer->lefiLayer::hasXYDiagPitch())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023848"> fprintf(fout, " DIAGPITCH %g %g ;\n", layer->lefiLayer::diagPitchX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023849"> layer->lefiLayer::diagPitchY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023850"> if (layer->lefiLayer::hasDiagWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023851"> fprintf(fout, " DIAGWIDTH %g ;\n", layer->lefiLayer::diagWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023852"> if (layer->lefiLayer::hasDiagSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023853"> fprintf(fout, " DIAGSPACING %g ;\n", layer->lefiLayer::diagSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023854"> if (layer->lefiLayer::hasWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023855"> fprintf(fout, " WIDTH %g ;\n", layer->lefiLayer::width());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023856"> if (layer->lefiLayer::hasArea())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023857"> fprintf(fout, " AREA %g ;\n", layer->lefiLayer::area());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023858"> if (layer->lefiLayer::hasSlotWireWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023859"> fprintf(fout, " SLOTWIREWIDTH %g ;\n", layer->lefiLayer::slotWireWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023860"> if (layer->lefiLayer::hasSlotWireLength())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023861"> fprintf(fout, " SLOTWIRELENGTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023862"> layer->lefiLayer::slotWireLength());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023863"> if (layer->lefiLayer::hasSlotWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023864"> fprintf(fout, " SLOTWIDTH %g ;\n", layer->lefiLayer::slotWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023865"> if (layer->lefiLayer::hasSlotLength())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023866"> fprintf(fout, " SLOTLENGTH %g ;\n", layer->lefiLayer::slotLength());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023867"> if (layer->lefiLayer::hasMaxAdjacentSlotSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023868"> fprintf(fout, " MAXADJACENTSLOTSPACING %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023869"> layer->lefiLayer::maxAdjacentSlotSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023870"> if (layer->lefiLayer::hasMaxCoaxialSlotSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023871"> fprintf(fout, " MAXCOAXIALSLOTSPACING %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023872"> layer->lefiLayer::maxCoaxialSlotSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023873"> if (layer->lefiLayer::hasMaxEdgeSlotSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023874"> fprintf(fout, " MAXEDGESLOTSPACING %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023875"> layer->lefiLayer::maxEdgeSlotSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023876"> if (layer->lefiLayer::hasMaxFloatingArea()) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023877"> fprintf(fout, " MAXFLOATINGAREA %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023878"> layer->lefiLayer::maxFloatingArea());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023879"> if (layer->lefiLayer::hasArraySpacing()) { // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023880"> fprintf(fout, " ARRAYSPACING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023881"> if (layer->lefiLayer::hasLongArray())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023882"> fprintf(fout, "LONGARRAY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023883"> if (layer->lefiLayer::hasViaWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023884"> fprintf(fout, "WIDTH %g ", layer->lefiLayer::viaWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023885"> fprintf(fout, "CUTSPACING %g", layer->lefiLayer::cutSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023886"> for (i = 0; i < layer->lefiLayer::numArrayCuts(); i++) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023887"> fprintf(fout, "\n\tARRAYCUTS %g SPACING %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023888"> layer->lefiLayer::arrayCuts(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023889"> layer->lefiLayer::arraySpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023890"> fprintf(fout, " ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023891"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023892"> if (layer->lefiLayer::hasSplitWireWidth())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023893"> fprintf(fout, " SPLITWIREWIDTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023894"> layer->lefiLayer::splitWireWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023895"> if (layer->lefiLayer::hasMinimumDensity())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023896"> fprintf(fout, " MINIMUMDENSITY %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023897"> layer->lefiLayer::minimumDensity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023898"> if (layer->lefiLayer::hasMaximumDensity())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023899"> fprintf(fout, " MAXIMUMDENSITY %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023900"> layer->lefiLayer::maximumDensity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023901"> if (layer->lefiLayer::hasDensityCheckWindow())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023902"> fprintf(fout, " DENSITYCHECKWINDOW %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023903"> layer->lefiLayer::densityCheckWindowLength(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023904"> layer->lefiLayer::densityCheckWindowWidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023905"> if (layer->lefiLayer::hasDensityCheckStep())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023906"> fprintf(fout, " DENSITYCHECKSTEP %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023907"> layer->lefiLayer::densityCheckStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023908"> if (layer->lefiLayer::hasFillActiveSpacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023909"> fprintf(fout, " FILLACTIVESPACING %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023910"> layer->lefiLayer::fillActiveSpacing());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023911"> // 5.4.1</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023912"> numMinCut = layer->lefiLayer::numMinimumcut();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023913"> if (numMinCut > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023914"> for (i = 0; i < numMinCut; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023915"> fprintf(fout, " MINIMUMCUT %d WIDTH %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023916"> layer->lefiLayer::minimumcut(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023917"> layer->lefiLayer::minimumcutWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023918"> if (layer->lefiLayer::hasMinimumcutWithin(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023919"> fprintf(fout, "WITHIN %g ", layer->lefiLayer::minimumcutWithin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023920"> if (layer->lefiLayer::hasMinimumcutConnection(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023921"> fprintf(fout, "%s ", layer->lefiLayer::minimumcutConnection(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023922"> if (layer->lefiLayer::hasMinimumcutNumCuts(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023923"> fprintf(fout, "LENGTH %g WITHIN %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023924"> layer->lefiLayer::minimumcutLength(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023925"> layer->lefiLayer::minimumcutDistance(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023926"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023927"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023928"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023929"> // 5.4.1</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023930"> if (layer->lefiLayer::hasMaxwidth()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023931"> fprintf(fout, " MAXWIDTH %g ;\n", layer->lefiLayer::maxwidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023932"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023933"> // 5.5</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023934"> if (layer->lefiLayer::hasMinwidth()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023935"> fprintf(fout, " MINWIDTH %g ;\n", layer->lefiLayer::minwidth());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023936"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023937"> // 5.5</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023938"> numMinenclosed = layer->lefiLayer::numMinenclosedarea();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023939"> if (numMinenclosed > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023940"> for (i = 0; i < numMinenclosed; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023941"> fprintf(fout, " MINENCLOSEDAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023942"> layer->lefiLayer::minenclosedarea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023943"> if (layer->lefiLayer::hasMinenclosedareaWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023944"> fprintf(fout, "MINENCLOSEDAREAWIDTH %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023945"> layer->lefiLayer::minenclosedareaWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023946"> fprintf (fout, ";\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023947"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023948"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023949"> // 5.4.1 & 5.6</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023950"> if (layer->lefiLayer::hasMinstep()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023951"> for (i = 0; i < layer->lefiLayer::numMinstep(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023952"> fprintf(fout, " MINSTEP %g ", layer->lefiLayer::minstep(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023953"> if (layer->lefiLayer::hasMinstepType(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023954"> fprintf(fout, "%s ", layer->lefiLayer::minstepType(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023955"> if (layer->lefiLayer::hasMinstepLengthsum(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023956"> fprintf(fout, "LENGTHSUM %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023957"> layer->lefiLayer::minstepLengthsum(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023958"> if (layer->lefiLayer::hasMinstepMaxedges(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023959"> fprintf(fout, "MAXEDGES %d ", layer->lefiLayer::minstepMaxedges(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023960"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023961"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023962"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023963"> // 5.4.1</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023964"> if (layer->lefiLayer::hasProtrusion()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023965"> fprintf(fout, " PROTRUSIONWIDTH %g LENGTH %g WIDTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023966"> layer->lefiLayer::protrusionWidth1(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023967"> layer->lefiLayer::protrusionLength(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023968"> layer->lefiLayer::protrusionWidth2());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023969"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023970"> if (layer->lefiLayer::hasSpacingNumber()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023971"> for (i = 0; i < layer->lefiLayer::numSpacing(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023972"> fprintf(fout, " SPACING %g ", layer->lefiLayer::spacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023973"> if (layer->lefiLayer::hasSpacingName(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023974"> fprintf(fout, "LAYER %s ", layer->lefiLayer::spacingName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023975"> if (layer->lefiLayer::hasSpacingLayerStack(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023976"> fprintf(fout, "STACK "); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023977"> if (layer->lefiLayer::hasSpacingAdjacent(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023978"> fprintf(fout, "ADJACENTCUTS %d WITHIN %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023979"> layer->lefiLayer::spacingAdjacentCuts(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023980"> layer->lefiLayer::spacingAdjacentWithin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023981"> if (layer->lefiLayer::hasSpacingAdjacentExcept(i)) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023982"> fprintf(fout, "EXCEPTSAMEPGNET "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023983"> if (layer->lefiLayer::hasSpacingCenterToCenter(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023984"> fprintf(fout, "CENTERTOCENTER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023985"> if (layer->lefiLayer::hasSpacingSamenet(i)) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023986"> fprintf(fout, "SAMENET ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023987"> if (layer->lefiLayer::hasSpacingSamenetPGonly(i)) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023988"> fprintf(fout, "PGONLY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023989"> if (layer->lefiLayer::hasSpacingArea(i)) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023990"> fprintf(fout, "AREA %g ", layer->lefiLayer::spacingArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023991"> if (layer->lefiLayer::hasSpacingRange(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023992"> fprintf(fout, "RANGE %g %g ", layer->lefiLayer::spacingRangeMin(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023993"> layer->lefiLayer::spacingRangeMax(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023994"> if (layer->lefiLayer::hasSpacingRangeUseLengthThreshold(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023995"> fprintf(fout, "USELENGTHTHRESHOLD "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023996"> else if (layer->lefiLayer::hasSpacingRangeInfluence(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023997"> fprintf(fout, "INFLUENCE %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023998"> layer->lefiLayer::spacingRangeInfluence(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1023999"> if (layer->lefiLayer::hasSpacingRangeInfluenceRange(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024000"> fprintf(fout, "RANGE %g %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024001"> layer->lefiLayer::spacingRangeInfluenceMin(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024002"> layer->lefiLayer::spacingRangeInfluenceMax(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024003"> } else if (layer->lefiLayer::hasSpacingRangeRange(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024004"> fprintf(fout, "RANGE %g %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024005"> layer->lefiLayer::spacingRangeRangeMin(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024006"> layer->lefiLayer::spacingRangeRangeMax(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024007"> } else if (layer->lefiLayer::hasSpacingLengthThreshold(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024008"> fprintf(fout, "LENGTHTHRESHOLD %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024009"> layer->lefiLayer::spacingLengthThreshold(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024010"> if (layer->lefiLayer::hasSpacingLengthThresholdRange(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024011"> fprintf(fout, "RANGE %g %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024012"> layer->lefiLayer::spacingLengthThresholdRangeMin(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024013"> layer->lefiLayer::spacingLengthThresholdRangeMax(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024014"> } else if (layer->lefiLayer::hasSpacingNotchLength(i)) {// 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024015"> fprintf(fout, "NOTCHLENGTH %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024016"> layer->lefiLayer::spacingNotchLength(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024017"> } else if (layer->lefiLayer::hasSpacingEndOfNotchWidth(i)) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024018"> fprintf(fout, "ENDOFNOTCHWIDTH %g NOTCHSPACING %g, NOTCHLENGTH %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024019"> layer->lefiLayer::spacingEndOfNotchWidth(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024020"> layer->lefiLayer::spacingEndOfNotchSpacing(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024021"> layer->lefiLayer::spacingEndOfNotchLength(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024022"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024023"> if (layer->lefiLayer::hasSpacingParallelOverlap(i)) // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024024"> fprintf(fout, "PARALLELOVERLAP "); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024025"> if (layer->lefiLayer::hasSpacingEndOfLine(i)) { // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024026"> fprintf(fout, "ENDOFLINE %g WITHING %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024027"> layer->lefiLayer::spacingEolWidth(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024028"> layer->lefiLayer::spacingEolWithin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024029"> if (layer->lefiLayer::hasSpacingParellelEdge(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024030"> fprintf(fout, "PARALLELEDGE %g WITHING %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024031"> layer->lefiLayer::spacingParSpace(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024032"> layer->lefiLayer::spacingParWithin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024033"> if (layer->lefiLayer::hasSpacingTwoEdges(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024034"> fprintf(fout, "TWOEDGES ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024035"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024036"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024037"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024038"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024039"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024040"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024041"> if (layer->lefiLayer::hasSpacingTableOrtho()) { // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024042"> fprintf(fout, "SPACINGTABLE ORTHOGONAL"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024043"> ortho = layer->lefiLayer::orthogonal();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024044"> for (i = 0; i < ortho->lefiOrthogonal::numOrthogonal(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024045"> fprintf(fout, "\n WITHIN %g SPACING %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024046"> ortho->lefiOrthogonal::cutWithin(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024047"> ortho->lefiOrthogonal::orthoSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024048"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024049"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024050"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024051"> for (i = 0; i < layer->lefiLayer::numEnclosure(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024052"> fprintf(fout, "ENCLOSURE ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024053"> if (layer->lefiLayer::hasEnclosureRule(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024054"> fprintf(fout, "%s ", layer->lefiLayer::enclosureRule(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024055"> fprintf(fout, "%g %g ", layer->lefiLayer::enclosureOverhang1(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024056"> layer->lefiLayer::enclosureOverhang2(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024057"> if (layer->lefiLayer::hasEnclosureWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024058"> fprintf(fout, "WIDTH %g ", layer->lefiLayer::enclosureMinWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024059"> if (layer->lefiLayer::hasEnclosureExceptExtraCut(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024060"> fprintf(fout, "EXCEPTEXTRACUT %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024061"> layer->lefiLayer::enclosureExceptExtraCut(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024062"> if (layer->lefiLayer::hasEnclosureMinLength(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024063"> fprintf(fout, "LENGTH %g ", layer->lefiLayer::enclosureMinLength(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024064"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024065"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024066"> for (i = 0; i < layer->lefiLayer::numPreferEnclosure(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024067"> fprintf(fout, "PREFERENCLOSURE ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024068"> if (layer->lefiLayer::hasPreferEnclosureRule(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024069"> fprintf(fout, "%s ", layer->lefiLayer::preferEnclosureRule(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024070"> fprintf(fout, "%g %g ", layer->lefiLayer::preferEnclosureOverhang1(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024071"> layer->lefiLayer::preferEnclosureOverhang2(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024072"> if (layer->lefiLayer::hasPreferEnclosureWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024073"> fprintf(fout, "WIDTH %g ",layer->lefiLayer::preferEnclosureMinWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024074"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024075"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024076"> if (layer->lefiLayer::hasResistancePerCut())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024077"> fprintf(fout, " RESISTANCE %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024078"> layer->lefiLayer::resistancePerCut());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024079"> if (layer->lefiLayer::hasCurrentDensityPoint())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024080"> fprintf(fout, " CURRENTDEN %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024081"> layer->lefiLayer::currentDensityPoint());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024082"> if (layer->lefiLayer::hasCurrentDensityArray()) { </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024083"> layer->lefiLayer::currentDensityArray(&numPoints, &widths, &current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024084"> for (i = 0; i < numPoints; i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024085"> fprintf(fout, " CURRENTDEN ( %g %g ) ;\n", widths[i], current[i]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024086"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024087"> if (layer->lefiLayer::hasDirection())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024088"> fprintf(fout, " DIRECTION %s ;\n", layer->lefiLayer::direction());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024089"> if (layer->lefiLayer::hasResistance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024090"> fprintf(fout, " RESISTANCE RPERSQ %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024091"> layer->lefiLayer::resistance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024092"> if (layer->lefiLayer::hasCapacitance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024093"> fprintf(fout, " CAPACITANCE CPERSQDIST %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024094"> layer->lefiLayer::capacitance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024095"> if (layer->lefiLayer::hasEdgeCap())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024096"> fprintf(fout, " EDGECAPACITANCE %g ;\n", layer->lefiLayer::edgeCap());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024097"> if (layer->lefiLayer::hasHeight())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024098"> fprintf(fout, " TYPE %g ;\n", layer->lefiLayer::height());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024099"> if (layer->lefiLayer::hasThickness())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024100"> fprintf(fout, " THICKNESS %g ;\n", layer->lefiLayer::thickness());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024101"> if (layer->lefiLayer::hasWireExtension())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024102"> fprintf(fout, " WIREEXTENSION %g ;\n", layer->lefiLayer::wireExtension());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024103"> if (layer->lefiLayer::hasShrinkage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024104"> fprintf(fout, " SHRINKAGE %g ;\n", layer->lefiLayer::shrinkage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024105"> if (layer->lefiLayer::hasCapMultiplier())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024106"> fprintf(fout, " CAPMULTIPLIER %g ;\n", layer->lefiLayer::capMultiplier());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024107"> if (layer->lefiLayer::hasAntennaArea())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024108"> fprintf(fout, " ANTENNAAREAFACTOR %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024109"> layer->lefiLayer::antennaArea());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024110"> if (layer->lefiLayer::hasAntennaLength())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024111"> fprintf(fout, " ANTENNALENGTHFACTOR %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024112"> layer->lefiLayer::antennaLength());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024113"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024114"> // 5.5 AntennaModel</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024115"> for (i = 0; i < layer->lefiLayer::numAntennaModel(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024116"> aModel = layer->lefiLayer::antennaModel(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024117"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024118"> fprintf(fout, " ANTENNAMODEL %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024119"> aModel->lefiAntennaModel::antennaOxide());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024120"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024121"> if (aModel->lefiAntennaModel::hasAntennaAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024122"> fprintf(fout, " ANTENNAAREARATIO %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024123"> aModel->lefiAntennaModel::antennaAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024124"> if (aModel->lefiAntennaModel::hasAntennaDiffAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024125"> fprintf(fout, " ANTENNADIFFAREARATIO %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024126"> aModel->lefiAntennaModel::antennaDiffAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024127"> else if (aModel->lefiAntennaModel::hasAntennaDiffAreaRatioPWL()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024128"> pwl = aModel->lefiAntennaModel::antennaDiffAreaRatioPWL();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024129"> fprintf(fout, " ANTENNADIFFAREARATIO PWL ( ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024130"> for (j = 0; j < pwl->lefiAntennaPWL::numPWL(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024131"> fprintf(fout, "( %g %g ) ", pwl->lefiAntennaPWL::PWLdiffusion(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024132"> pwl->lefiAntennaPWL::PWLratio(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024133"> fprintf(fout, ") ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024134"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024135"> if (aModel->lefiAntennaModel::hasAntennaCumAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024136"> fprintf(fout, " ANTENNACUMAREARATIO %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024137"> aModel->lefiAntennaModel::antennaCumAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024138"> if (aModel->lefiAntennaModel::hasAntennaCumDiffAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024139"> fprintf(fout, " ANTENNACUMDIFFAREARATIO %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024140"> aModel->lefiAntennaModel::antennaCumDiffAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024141"> if (aModel->lefiAntennaModel::hasAntennaCumDiffAreaRatioPWL()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024142"> pwl = aModel->lefiAntennaModel::antennaCumDiffAreaRatioPWL();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024143"> fprintf(fout, " ANTENNACUMDIFFAREARATIO PWL ( ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024144"> for (j = 0; j < pwl->lefiAntennaPWL::numPWL(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024145"> fprintf(fout, "( %g %g ) ", pwl->lefiAntennaPWL::PWLdiffusion(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024146"> pwl->lefiAntennaPWL::PWLratio(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024147"> fprintf(fout, ") ;\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"> if (aModel->lefiAntennaModel::hasAntennaAreaFactor()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024150"> fprintf(fout, " ANTENNAAREAFACTOR %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024151"> aModel->lefiAntennaModel::antennaAreaFactor());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024152"> if (aModel->lefiAntennaModel::hasAntennaAreaFactorDUO())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024153"> fprintf(fout, " DIFFUSEONLY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024154"> fprintf(fout, ";\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"> if (aModel->lefiAntennaModel::hasAntennaSideAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024157"> fprintf(fout, " ANTENNASIDEAREARATIO %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024158"> aModel->lefiAntennaModel::antennaSideAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024159"> if (aModel->lefiAntennaModel::hasAntennaDiffSideAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024160"> fprintf(fout, " ANTENNADIFFSIDEAREARATIO %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024161"> aModel->lefiAntennaModel::antennaDiffSideAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024162"> else if (aModel->lefiAntennaModel::hasAntennaDiffSideAreaRatioPWL()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024163"> pwl = aModel->lefiAntennaModel::antennaDiffSideAreaRatioPWL();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024164"> fprintf(fout, " ANTENNADIFFSIDEAREARATIO PWL ( ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024165"> for (j = 0; j < pwl->lefiAntennaPWL::numPWL(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024166"> fprintf(fout, "( %g %g ) ", pwl->lefiAntennaPWL::PWLdiffusion(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024167"> pwl->lefiAntennaPWL::PWLratio(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024168"> fprintf(fout, ") ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024169"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024170"> if (aModel->lefiAntennaModel::hasAntennaCumSideAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024171"> fprintf(fout, " ANTENNACUMSIDEAREARATIO %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024172"> aModel->lefiAntennaModel::antennaCumSideAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024173"> if (aModel->lefiAntennaModel::hasAntennaCumDiffSideAreaRatio())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024174"> fprintf(fout, " ANTENNACUMDIFFSIDEAREARATIO %g\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024175"> aModel->lefiAntennaModel::antennaCumDiffSideAreaRatio());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024176"> else if (aModel->lefiAntennaModel::hasAntennaCumDiffSideAreaRatioPWL()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024177"> pwl = aModel->lefiAntennaModel::antennaCumDiffSideAreaRatioPWL();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024178"> fprintf(fout, " ANTENNACUMDIFFSIDEAREARATIO PWL ( ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024179"> for (j = 0; j < pwl->lefiAntennaPWL::numPWL(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024180"> fprintf(fout, "( %g %g ) ", pwl->lefiAntennaPWL::PWLdiffusion(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024181"> pwl->lefiAntennaPWL::PWLratio(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024182"> fprintf(fout, ") ;\n");</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"> if (aModel->lefiAntennaModel::hasAntennaSideAreaFactor()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024185"> fprintf(fout, " ANTENNASIDEAREAFACTOR %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024186"> aModel->lefiAntennaModel::antennaSideAreaFactor());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024187"> if (aModel->lefiAntennaModel::hasAntennaSideAreaFactorDUO())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024188"> fprintf(fout, " DIFFUSEONLY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024189"> fprintf(fout, ";\n");</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"> if (aModel->lefiAntennaModel::hasAntennaCumRoutingPlusCut())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024192"> fprintf(fout, " ANTENNACUMROUTINGPLUSCUT ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024193"> if (aModel->lefiAntennaModel::hasAntennaGatePlusDiff())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024194"> fprintf(fout, " ANTENNAGATEPLUSDIFF %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024195"> aModel->lefiAntennaModel::antennaGatePlusDiff());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024196"> if (aModel->lefiAntennaModel::hasAntennaAreaMinusDiff())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024197"> fprintf(fout, " ANTENNAAREAMINUSDIFF %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024198"> aModel->lefiAntennaModel::antennaAreaMinusDiff());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024199"> if (aModel->lefiAntennaModel::hasAntennaAreaDiffReducePWL()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024200"> pwl = aModel->lefiAntennaModel::antennaAreaDiffReducePWL();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024201"> fprintf(fout, " ANTENNAAREADIFFREDUCEPWL ( ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024202"> for (j = 0; j < pwl->lefiAntennaPWL::numPWL(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024203"> fprintf(fout, "( %g %g ) ", pwl->lefiAntennaPWL::PWLdiffusion(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024204"> pwl->lefiAntennaPWL::PWLratio(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024205"> fprintf(fout, ") ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024206"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024207"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024208"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024209"> if (layer->lefiLayer::numAccurrentDensity()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024210"> for (i = 0; i < layer->lefiLayer::numAccurrentDensity(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024211"> density = layer->lefiLayer::accurrent(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024212"> fprintf(fout, " ACCURRENTDENSITY %s", density->type()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024213"> if (density->hasOneEntry())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024214"> fprintf(fout, " %g ;\n", density->oneEntry()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024215"> else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024216"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024217"> if (density->numFrequency()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024218"> fprintf(fout, " FREQUENCY");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024219"> for (j = 0; j < density->numFrequency(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024220"> fprintf(fout, " %g", density->frequency(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024221"> fprintf(fout, " ;\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024222"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024223"> if (density->numCutareas()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024224"> fprintf(fout, " CUTAREA");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024225"> for (j = 0; j < density->numCutareas(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024226"> fprintf(fout, " %g", density->cutArea(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024227"> fprintf(fout, " ;\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024228"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024229"> if (density->numWidths()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024230"> fprintf(fout, " WIDTH");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024231"> for (j = 0; j < density->numWidths(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024232"> fprintf(fout, " %g", density->width(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024233"> fprintf(fout, " ;\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024234"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024235"> if (density->numTableEntries()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024236"> k = 5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024237"> fprintf(fout, " TABLEENTRIES");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024238"> for (j = 0; j < density->numTableEntries(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024239"> if (k > 4) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024240"> fprintf(fout, "\n %g", density->tableEntry(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024241"> k = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024242"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024243"> fprintf(fout, " %g", density->tableEntry(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024244"> k++;</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"> fprintf(fout, " ;\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024247"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024248"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024249"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024250"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024251"> if (layer->lefiLayer::numDccurrentDensity()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024252"> for (i = 0; i < layer->lefiLayer::numDccurrentDensity(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024253"> density = layer->lefiLayer::dccurrent(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024254"> fprintf(fout, " DCCURRENTDENSITY %s", density->type()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024255"> if (density->hasOneEntry())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024256"> fprintf(fout, " %g ;\n", density->oneEntry()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024257"> else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024258"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024259"> if (density->numCutareas()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024260"> fprintf(fout, " CUTAREA");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024261"> for (j = 0; j < density->numCutareas(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024262"> fprintf(fout, " %g", density->cutArea(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024263"> fprintf(fout, " ;\n"); </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 (density->numWidths()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024266"> fprintf(fout, " WIDTH");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024267"> for (j = 0; j < density->numWidths(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024268"> fprintf(fout, " %g", density->width(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024269"> fprintf(fout, " ;\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024270"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024271"> if (density->numTableEntries()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024272"> fprintf(fout, " TABLEENTRIES");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024273"> for (j = 0; j < density->numTableEntries(); j++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024274"> fprintf(fout, " %g", density->tableEntry(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024275"> fprintf(fout, " ;\n"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024276"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024277"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024278"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024279"> }</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"> for (i = 0; i < layer->lefiLayer::numSpacingTable(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024282"> spTable = layer->lefiLayer::spacingTable(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024283"> fprintf(fout, " SPACINGTABLE\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024284"> if (spTable->lefiSpacingTable::isInfluence()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024285"> influence = spTable->lefiSpacingTable::influence();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024286"> fprintf(fout, " INFLUENCE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024287"> for (j = 0; j < influence->lefiInfluence::numInfluenceEntry(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024288"> fprintf(fout, "\n WIDTH %g WITHIN %g SPACING %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024289"> influence->lefiInfluence::width(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024290"> influence->lefiInfluence::distance(j),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024291"> influence->lefiInfluence::spacing(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024292"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024293"> fprintf(fout, " ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024294"> } else if (spTable->lefiSpacingTable::isParallel()){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024295"> parallel = spTable->lefiSpacingTable::parallel();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024296"> fprintf(fout, " PARALLELRUNLENGTH");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024297"> for (j = 0; j < parallel->lefiParallel::numLength(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024298"> fprintf(fout, " %g", parallel->lefiParallel::length(j));</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"> for (j = 0; j < parallel->lefiParallel::numWidth(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024301"> fprintf(fout, "\n WIDTH %g",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024302"> parallel->lefiParallel::width(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024303"> for (k = 0; k < parallel->lefiParallel::numLength(); k++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024304"> fprintf(fout, " %g", parallel->lefiParallel::widthSpacing(j, k));</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"> fprintf(fout, " ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024308"> } else { // 5.7 TWOWIDTHS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024309"> twoWidths = spTable->lefiSpacingTable::twoWidths();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024310"> fprintf(fout, " TWOWIDTHS"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024311"> for (j = 0; j < twoWidths->lefiTwoWidths::numWidth(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024312"> fprintf(fout, "\n WIDTH %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024313"> twoWidths->lefiTwoWidths::width(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024314"> if (twoWidths->lefiTwoWidths::hasWidthPRL(j))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024315"> fprintf(fout, "PRL %g ", twoWidths->lefiTwoWidths::widthPRL(j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024316"> for (k = 0; k < twoWidths->lefiTwoWidths::numWidthSpacing(j); k++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024317"> fprintf(fout, "%g ",twoWidths->lefiTwoWidths::widthSpacing(j, k));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024318"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024319"> fprintf(fout, " ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024320"> }</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"> propNum = layer->lefiLayer::numProps();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024324"> if (propNum > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024325"> fprintf(fout, " PROPERTY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024326"> for (i = 0; i < propNum; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024327"> // value can either be a string or number</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024328"> fprintf(fout, "%s ", layer->lefiLayer::propName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024329"> if (layer->lefiLayer::propIsNumber(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024330"> fprintf(fout, "%g ", layer->lefiLayer::propNumber(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024331"> if (layer->lefiLayer::propIsString(i)) </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024332"> fprintf(fout, "%s ", layer->lefiLayer::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024333"> pType = layer->lefiLayer::propType(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024334"> switch (pType) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024335"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024336"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024337"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024338"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024339"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024340"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024341"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024342"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024343"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024344"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024345"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024346"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024347"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024348"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024349"> if (layer->lefiLayer::hasDiagMinEdgeLength())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024350"> fprintf(fout, " DIAGMINEDGELENGTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024351"> layer->lefiLayer::diagMinEdgeLength());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024352"> if (layer->lefiLayer::numMinSize()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024353"> fprintf(fout, " MINSIZE ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024354"> for (i = 0; i < layer->lefiLayer::numMinSize(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024355"> fprintf(fout, "%g %g ", layer->lefiLayer::minSizeWidth(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024356"> layer->lefiLayer::minSizeLength(i)); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024357"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024358"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024359"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024360"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024361"> fprintf(fout, "END %s\n", layer->lefiLayer::name()); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024362"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024363"> // Set it to case sensitive from here on</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024364"> lefrSetCaseSensitivity(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024365"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024366"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024367">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024368"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024369">int macroBeginCB(lefrCallbackType_e c, const char* macroName, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024370"> checkType(c);</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"> fprintf(fout, "MACRO %s\n", macroName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024373"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024374">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024375"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024376">int macroClassTypeCB(lefrCallbackType_e c, const char* macroClassType,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024377"> lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024378"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024379"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024380"> fprintf(fout, "MACRO CLASS %s\n", macroClassType);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024381"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024382">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024383"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024384">int macroCB(lefrCallbackType_e c, lefiMacro* macro, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024385"> lefiSitePattern* pattern;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024386"> int propNum, i, hasPrtSym = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024387"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024388"> checkType(c);</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"> if (macro->lefiMacro::hasClass())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024391"> fprintf(fout, " CLASS %s ;\n", macro->lefiMacro::macroClass());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024392"> if (macro->lefiMacro::hasEEQ())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024393"> fprintf(fout, " EEQ %s ;\n", macro->lefiMacro::EEQ());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024394"> if (macro->lefiMacro::hasLEQ())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024395"> fprintf(fout, " LEQ %s ;\n", macro->lefiMacro::LEQ());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024396"> if (macro->lefiMacro::hasSource())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024397"> fprintf(fout, " SOURCE %s ;\n", macro->lefiMacro::source());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024398"> if (macro->lefiMacro::hasXSymmetry()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024399"> fprintf(fout, " SYMMETRY X ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024400"> hasPrtSym = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024401"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024402"> if (macro->lefiMacro::hasYSymmetry()) { // print X Y & R90 in one line</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024403"> if (!hasPrtSym) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024404"> fprintf(fout, " SYMMETRY Y ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024405"> hasPrtSym = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024406"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024407"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024408"> fprintf(fout, "Y ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024409"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024410"> if (macro->lefiMacro::has90Symmetry()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024411"> if (!hasPrtSym) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024412"> fprintf(fout, " SYMMETRY R90 ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024413"> hasPrtSym = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024414"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024415"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024416"> fprintf(fout, "R90 ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024417"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024418"> if (hasPrtSym) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024419"> fprintf (fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024420"> hasPrtSym = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024421"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024422"> if (macro->lefiMacro::hasSiteName())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024423"> fprintf(fout, " SITE %s ;\n", macro->lefiMacro::siteName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024424"> if (macro->lefiMacro::hasSitePattern()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024425"> for (i = 0; i < macro->lefiMacro::numSitePattern(); i++ ) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024426"> pattern = macro->lefiMacro::sitePattern(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024427"> if (pattern->lefiSitePattern::hasStepPattern()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024428"> fprintf(fout, " SITE %s %g %g %s DO %g BY %g STEP %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024429"> pattern->lefiSitePattern::name(), pattern->lefiSitePattern::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024430"> pattern->lefiSitePattern::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024431"> orientStr(pattern->lefiSitePattern::orient()),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024432"> pattern->lefiSitePattern::xStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024433"> pattern->lefiSitePattern::yStart(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024434"> pattern->lefiSitePattern::xStep(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024435"> pattern->lefiSitePattern::yStep());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024436"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024437"> fprintf(fout, " SITE %s %g %g %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024438"> pattern->lefiSitePattern::name(), pattern->lefiSitePattern::x(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024439"> pattern->lefiSitePattern::y(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024440"> orientStr(pattern->lefiSitePattern::orient()));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024441"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024442"> }</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 (macro->lefiMacro::hasSize())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024445"> fprintf(fout, " SIZE %g BY %g ;\n", macro->lefiMacro::sizeX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024446"> macro->lefiMacro::sizeY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024447"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024448"> if (macro->lefiMacro::hasForeign()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024449"> for (i = 0; i < macro->lefiMacro::numForeigns(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024450"> fprintf(fout, " FOREIGN %s ", macro->lefiMacro::foreignName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024451"> if (macro->lefiMacro::hasForeignPoint(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024452"> fprintf(fout, "( %g %g ) ", macro->lefiMacro::foreignX(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024453"> macro->lefiMacro::foreignY(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024454"> if (macro->lefiMacro::hasForeignOrient(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024455"> fprintf(fout, "%s ", macro->lefiMacro::foreignOrientStr(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024456"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024457"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024458"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024459"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024460"> if (macro->lefiMacro::hasOrigin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024461"> fprintf(fout, " ORIGIN ( %g %g ) ;\n", macro->lefiMacro::originX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024462"> macro->lefiMacro::originY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024463"> if (macro->lefiMacro::hasPower())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024464"> fprintf(fout, " POWER %g ;\n", macro->lefiMacro::power());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024465"> propNum = macro->lefiMacro::numProperties();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024466"> if (propNum > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024467"> fprintf(fout, " PROPERTY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024468"> for (i = 0; i < propNum; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024469"> // value can either be a string or number</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024470"> if (macro->lefiMacro::propValue(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024471"> fprintf(fout, "%s %s ", macro->lefiMacro::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024472"> macro->lefiMacro::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024473"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024474"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024475"> fprintf(fout, "%s %g ", macro->lefiMacro::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024476"> macro->lefiMacro::propNum(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024477"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024478"> switch (macro->lefiMacro::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024479"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024480"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024481"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024482"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024483"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024484"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024485"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024486"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024487"> case 'N': fprintf(fout, "NUMBER ");</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"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024490"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024491"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024492"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024493"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024494">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024495"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024496">int macroEndCB(lefrCallbackType_e c, const char* macroName, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024497"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024498"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024499"> fprintf(fout, "END %s\n", macroName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024500"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024501">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024502"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024503">int manufacturingCB(lefrCallbackType_e c, double num, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024504"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024505"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024506"> fprintf(fout, "MANUFACTURINGGRID %g ;\n", num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024507"> return 0;</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">int maxStackViaCB(lefrCallbackType_e c, lefiMaxStackVia* maxStack,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024511"> lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024512"> checkType(c);</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"> fprintf(fout, "MAXVIASTACK %d ", maxStack->lefiMaxStackVia::maxStackVia());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024515"> if (maxStack->lefiMaxStackVia::hasMaxStackViaRange())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024516"> fprintf(fout, "RANGE %s %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024517"> maxStack->lefiMaxStackVia::maxStackViaBottomLayer(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024518"> maxStack->lefiMaxStackVia::maxStackViaTopLayer());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024519"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024520"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024521">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024522"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024523">int minFeatureCB(lefrCallbackType_e c, lefiMinFeature* min, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024524"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024525"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024526"> fprintf(fout, "MINFEATURE %g %g ;\n", min->lefiMinFeature::one(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024527"> min->lefiMinFeature::two());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024528"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024529">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024530"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024531">int nonDefaultCB(lefrCallbackType_e c, lefiNonDefault* def, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024532"> int i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024533"> lefiVia* via;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024534"> lefiSpacing* spacing;</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"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024537"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024538"> fprintf(fout, "NONDEFAULTRULE %s\n", def->lefiNonDefault::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024539"> if (def->lefiNonDefault::hasHardspacing())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024540"> fprintf(fout, " HARDSPACING ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024541"> for (i = 0; i < def->lefiNonDefault::numLayers(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024542"> fprintf(fout, " LAYER %s\n", def->lefiNonDefault::layerName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024543"> if (def->lefiNonDefault::hasLayerWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024544"> fprintf(fout, " WIDTH %g ;\n", def->lefiNonDefault::layerWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024545"> if (def->lefiNonDefault::hasLayerSpacing(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024546"> fprintf(fout, " SPACING %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024547"> def->lefiNonDefault::layerSpacing(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024548"> if (def->lefiNonDefault::hasLayerDiagWidth(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024549"> fprintf(fout, " DIAGWIDTH %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024550"> def->lefiNonDefault::layerDiagWidth(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024551"> if (def->lefiNonDefault::hasLayerWireExtension(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024552"> fprintf(fout, " WIREEXTENSION %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024553"> def->lefiNonDefault::layerWireExtension(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024554"> if (def->lefiNonDefault::hasLayerResistance(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024555"> fprintf(fout, " RESISTANCE RPERSQ %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024556"> def->lefiNonDefault::layerResistance(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024557"> if (def->lefiNonDefault::hasLayerCapacitance(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024558"> fprintf(fout, " CAPACITANCE CPERSQDIST %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024559"> def->lefiNonDefault::layerCapacitance(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024560"> if (def->lefiNonDefault::hasLayerEdgeCap(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024561"> fprintf(fout, " EDGECAPACITANCE %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024562"> def->lefiNonDefault::layerEdgeCap(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024563"> fprintf(fout, " END %s\n", def->lefiNonDefault::layerName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024564"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024565"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024566"> // handle via in nondefaultrule</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024567"> for (i = 0; i < def->lefiNonDefault::numVias(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024568"> via = def->lefiNonDefault::viaRule(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024569"> lefVia(via);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024570"> }</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"> // handle spacing in nondefaultrule</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024573"> for (i = 0; i < def->lefiNonDefault::numSpacingRules(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024574"> spacing = def->lefiNonDefault::spacingRule(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024575"> lefSpacing(spacing);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024576"> }</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"> // handle usevia</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024579"> for (i = 0; i < def->lefiNonDefault::numUseVia(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024580"> fprintf(fout, " USEVIA %s ;\n", def->lefiNonDefault::viaName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024581"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024582"> // handle useviarule</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024583"> for (i = 0; i < def->lefiNonDefault::numUseViaRule(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024584"> fprintf(fout, " USEVIARULE %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024585"> def->lefiNonDefault::viaRuleName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024586"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024587"> // handle mincuts</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024588"> for (i = 0; i < def->lefiNonDefault::numMinCuts(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024589"> fprintf(fout, " MINCUTS %s %d ;\n", def->lefiNonDefault::cutLayerName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024590"> def->lefiNonDefault::numCuts(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024591"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024592"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024593"> // handle property in nondefaultrule</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024594"> if (def->lefiNonDefault::numProps() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024595"> fprintf(fout, " PROPERTY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024596"> for (i = 0; i < def->lefiNonDefault::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024597"> fprintf(fout, "%s ", def->lefiNonDefault::propName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024598"> if (def->lefiNonDefault::propIsNumber(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024599"> fprintf(fout, "%g ", def->lefiNonDefault::propNumber(i)); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024600"> if (def->lefiNonDefault::propIsString(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024601"> fprintf(fout, "%s ", def->lefiNonDefault::propValue(i)); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024602"> switch(def->lefiNonDefault::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024603"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024604"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024605"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024606"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024607"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024608"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024609"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024610"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024611"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024612"> break;</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"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024616"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024617"> fprintf(fout, "END %s ;\n", def->lefiNonDefault::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024618"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024619"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024620">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024621"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024622">int obstructionCB(lefrCallbackType_e c, lefiObstruction* obs,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024623"> lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024624"> lefiGeometries* geometry;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024625"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024626"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024627"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024628"> fprintf(fout, " OBS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024629"> geometry = obs->lefiObstruction::geometries();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024630"> prtGeometry(geometry);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024631"> fprintf(fout, " END\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024632"> return 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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024635">int pinCB(lefrCallbackType_e c, lefiPin* pin, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024636"> int numPorts, i, j;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024637"> lefiGeometries* geometry;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024638"> lefiPinAntennaModel* aModel;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024639"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024640"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024641"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024642"> fprintf(fout, " PIN %s\n", pin->lefiPin::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024643"> if (pin->lefiPin::hasForeign()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024644"> for (i = 0; i < pin->lefiPin::numForeigns(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024645"> if (pin->lefiPin::hasForeignOrient(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024646"> fprintf(fout, " FOREIGN %s STRUCTURE ( %g %g ) %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024647"> pin->lefiPin::foreignName(i), pin->lefiPin::foreignX(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024648"> pin->lefiPin::foreignY(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024649"> pin->lefiPin::foreignOrientStr(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024650"> else if (pin->lefiPin::hasForeignPoint(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024651"> fprintf(fout, " FOREIGN %s STRUCTURE ( %g %g ) ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024652"> pin->lefiPin::foreignName(i), pin->lefiPin::foreignX(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024653"> pin->lefiPin::foreignY(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024654"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024655"> fprintf(fout, " FOREIGN %s ;\n", pin->lefiPin::foreignName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024656"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024657"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024658"> if (pin->lefiPin::hasLEQ())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024659"> fprintf(fout, " LEQ %s ;\n", pin->lefiPin::LEQ());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024660"> if (pin->lefiPin::hasDirection())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024661"> fprintf(fout, " DIRECTION %s ;\n", pin->lefiPin::direction());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024662"> if (pin->lefiPin::hasUse())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024663"> fprintf(fout, " USE %s ;\n", pin->lefiPin::use());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024664"> if (pin->lefiPin::hasShape())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024665"> fprintf(fout, " SHAPE %s ;\n", pin->lefiPin::shape());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024666"> if (pin->lefiPin::hasMustjoin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024667"> fprintf(fout, " MUSTJOIN %s ;\n", pin->lefiPin::mustjoin());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024668"> if (pin->lefiPin::hasOutMargin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024669"> fprintf(fout, " OUTPUTNOISEMARGIN %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024670"> pin->lefiPin::outMarginHigh(), pin->lefiPin::outMarginLow());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024671"> if (pin->lefiPin::hasOutResistance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024672"> fprintf(fout, " OUTPUTRESISTANCE %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024673"> pin->lefiPin::outResistanceHigh(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024674"> pin->lefiPin::outResistanceLow());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024675"> if (pin->lefiPin::hasInMargin())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024676"> fprintf(fout, " INPUTNOISEMARGIN %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024677"> pin->lefiPin::inMarginHigh(), pin->lefiPin::inMarginLow());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024678"> if (pin->lefiPin::hasPower())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024679"> fprintf(fout, " POWER %g ;\n", pin->lefiPin::power());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024680"> if (pin->lefiPin::hasLeakage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024681"> fprintf(fout, " LEAKAGE %g ;\n", pin->lefiPin::leakage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024682"> if (pin->lefiPin::hasMaxload())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024683"> fprintf(fout, " MAXLOAD %g ;\n", pin->lefiPin::maxload());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024684"> if (pin->lefiPin::hasCapacitance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024685"> fprintf(fout, " CAPACITANCE %g ;\n", pin->lefiPin::capacitance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024686"> if (pin->lefiPin::hasResistance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024687"> fprintf(fout, " RESISTANCE %g ;\n", pin->lefiPin::resistance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024688"> if (pin->lefiPin::hasPulldownres())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024689"> fprintf(fout, " PULLDOWNRES %g ;\n", pin->lefiPin::pulldownres());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024690"> if (pin->lefiPin::hasTieoffr())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024691"> fprintf(fout, " TIEOFFR %g ;\n", pin->lefiPin::tieoffr());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024692"> if (pin->lefiPin::hasVHI())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024693"> fprintf(fout, " VHI %g ;\n", pin->lefiPin::VHI());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024694"> if (pin->lefiPin::hasVLO())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024695"> fprintf(fout, " VLO %g ;\n", pin->lefiPin::VLO());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024696"> if (pin->lefiPin::hasRiseVoltage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024697"> fprintf(fout, " RISEVOLTAGETHRESHOLD %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024698"> pin->lefiPin::riseVoltage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024699"> if (pin->lefiPin::hasFallVoltage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024700"> fprintf(fout, " FALLVOLTAGETHRESHOLD %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024701"> pin->lefiPin::fallVoltage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024702"> if (pin->lefiPin::hasRiseThresh())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024703"> fprintf(fout, " RISETHRESH %g ;\n", pin->lefiPin::riseThresh());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024704"> if (pin->lefiPin::hasFallThresh())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024705"> fprintf(fout, " FALLTHRESH %g ;\n", pin->lefiPin::fallThresh());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024706"> if (pin->lefiPin::hasRiseSatcur())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024707"> fprintf(fout, " RISESATCUR %g ;\n", pin->lefiPin::riseSatcur());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024708"> if (pin->lefiPin::hasFallSatcur())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024709"> fprintf(fout, " FALLSATCUR %g ;\n", pin->lefiPin::fallSatcur());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024710"> if (pin->lefiPin::hasRiseSlewLimit())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024711"> fprintf(fout, " RISESLEWLIMIT %g ;\n", pin->lefiPin::riseSlewLimit());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024712"> if (pin->lefiPin::hasFallSlewLimit())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024713"> fprintf(fout, " FALLSLEWLIMIT %g ;\n", pin->lefiPin::fallSlewLimit());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024714"> if (pin->lefiPin::hasCurrentSource())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024715"> fprintf(fout, " CURRENTSOURCE %s ;\n", pin->lefiPin::currentSource());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024716"> if (pin->lefiPin::hasTables())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024717"> fprintf(fout, " IV_TABLES %s %s ;\n", pin->lefiPin::tableHighName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024718"> pin->lefiPin::tableLowName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024719"> if (pin->lefiPin::hasTaperRule())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024720"> fprintf(fout, " TAPERRULE %s ;\n", pin->lefiPin::taperRule());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024721"> if (pin->lefiPin::hasNetExpr())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024722"> fprintf(fout, " NETEXPR \"%s\" ;\n", pin->lefiPin::netExpr());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024723"> if (pin->lefiPin::hasSupplySensitivity())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024724"> fprintf(fout, " SUPPLYSENSITIVITY %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024725"> pin->lefiPin::supplySensitivity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024726"> if (pin->lefiPin::hasGroundSensitivity())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024727"> fprintf(fout, " GROUNDSENSITIVITY %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024728"> pin->lefiPin::groundSensitivity());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024729"> if (pin->lefiPin::hasAntennaSize()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024730"> for (i = 0; i < pin->lefiPin::numAntennaSize(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024731"> fprintf(fout, " ANTENNASIZE %g ", pin->lefiPin::antennaSize(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024732"> if (pin->lefiPin::antennaSizeLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024733"> fprintf(fout, "LAYER %s ", pin->lefiPin::antennaSizeLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024734"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024735"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024736"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024737"> if (pin->lefiPin::hasAntennaMetalArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024738"> for (i = 0; i < pin->lefiPin::numAntennaMetalArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024739"> fprintf(fout, " ANTENNAMETALAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024740"> pin->lefiPin::antennaMetalArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024741"> if (pin->lefiPin::antennaMetalAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024742"> fprintf(fout, "LAYER %s ", pin->lefiPin::antennaMetalAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024743"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024744"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024745"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024746"> if (pin->lefiPin::hasAntennaMetalLength()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024747"> for (i = 0; i < pin->lefiPin::numAntennaMetalLength(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024748"> fprintf(fout, " ANTENNAMETALLENGTH %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024749"> pin->lefiPin::antennaMetalLength(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024750"> if (pin->lefiPin::antennaMetalLengthLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024751"> fprintf(fout, "LAYER %s ", pin->lefiPin::antennaMetalLengthLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024752"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024753"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024754"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024755"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024756"> if (pin->lefiPin::hasAntennaPartialMetalArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024757"> for (i = 0; i < pin->lefiPin::numAntennaPartialMetalArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024758"> fprintf(fout, " ANTENNAPARTIALMETALAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024759"> pin->lefiPin::antennaPartialMetalArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024760"> if (pin->lefiPin::antennaPartialMetalAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024761"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024762"> pin->lefiPin::antennaPartialMetalAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024763"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024764"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024765"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024766"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024767"> if (pin->lefiPin::hasAntennaPartialMetalSideArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024768"> for (i = 0; i < pin->lefiPin::numAntennaPartialMetalSideArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024769"> fprintf(fout, " ANTENNAPARTIALMETALSIDEAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024770"> pin->lefiPin::antennaPartialMetalSideArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024771"> if (pin->lefiPin::antennaPartialMetalSideAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024772"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024773"> pin->lefiPin::antennaPartialMetalSideAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024774"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024775"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024776"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024777"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024778"> if (pin->lefiPin::hasAntennaPartialCutArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024779"> for (i = 0; i < pin->lefiPin::numAntennaPartialCutArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024780"> fprintf(fout, " ANTENNAPARTIALCUTAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024781"> pin->lefiPin::antennaPartialCutArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024782"> if (pin->lefiPin::antennaPartialCutAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024783"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024784"> pin->lefiPin::antennaPartialCutAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024785"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024786"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024787"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024788"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024789"> if (pin->lefiPin::hasAntennaDiffArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024790"> for (i = 0; i < pin->lefiPin::numAntennaDiffArea(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024791"> fprintf(fout, " ANTENNADIFFAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024792"> pin->lefiPin::antennaDiffArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024793"> if (pin->lefiPin::antennaDiffAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024794"> fprintf(fout, "LAYER %s ", pin->lefiPin::antennaDiffAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024795"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024796"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024797"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024798"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024799"> for (j = 0; j < pin->lefiPin::numAntennaModel(); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024800"> aModel = pin->lefiPin::antennaModel(j); </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"> fprintf(fout, " ANTENNAMODEL %s ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024803"> aModel->lefiPinAntennaModel::antennaOxide());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024804"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024805"> if (aModel->lefiPinAntennaModel::hasAntennaGateArea()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024806"> for (i = 0; i < aModel->lefiPinAntennaModel::numAntennaGateArea(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024807"> {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024808"> fprintf(fout, " ANTENNAGATEAREA %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024809"> aModel->lefiPinAntennaModel::antennaGateArea(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024810"> if (aModel->lefiPinAntennaModel::antennaGateAreaLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024811"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024812"> aModel->lefiPinAntennaModel::antennaGateAreaLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024813"> fprintf(fout, ";\n");</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024817"> if (aModel->lefiPinAntennaModel::hasAntennaMaxAreaCar()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024818"> for (i = 0; i < aModel->lefiPinAntennaModel::numAntennaMaxAreaCar();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024819"> i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024820"> fprintf(fout, " ANTENNAMAXAREACAR %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024821"> aModel->lefiPinAntennaModel::antennaMaxAreaCar(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024822"> if (aModel->lefiPinAntennaModel::antennaMaxAreaCarLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024823"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024824"> aModel->lefiPinAntennaModel::antennaMaxAreaCarLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024825"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024826"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024827"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024828"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024829"> if (aModel->lefiPinAntennaModel::hasAntennaMaxSideAreaCar()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024830"> for (i = 0; i < aModel->lefiPinAntennaModel::numAntennaMaxSideAreaCar();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024831"> i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024832"> fprintf(fout, " ANTENNAMAXSIDEAREACAR %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024833"> aModel->lefiPinAntennaModel::antennaMaxSideAreaCar(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024834"> if (aModel->lefiPinAntennaModel::antennaMaxSideAreaCarLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024835"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024836"> aModel->lefiPinAntennaModel::antennaMaxSideAreaCarLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024837"> fprintf(fout, ";\n");</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"> if (aModel->lefiPinAntennaModel::hasAntennaMaxCutCar()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024842"> for (i = 0; i < aModel->lefiPinAntennaModel::numAntennaMaxCutCar(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024843"> {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024844"> fprintf(fout, " ANTENNAMAXCUTCAR %g ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024845"> aModel->lefiPinAntennaModel::antennaMaxCutCar(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024846"> if (aModel->lefiPinAntennaModel::antennaMaxCutCarLayer(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024847"> fprintf(fout, "LAYER %s ",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024848"> aModel->lefiPinAntennaModel::antennaMaxCutCarLayer(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024849"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024850"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024851"> }</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024854"> if (pin->lefiPin::numProperties() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024855"> fprintf(fout, " PROPERTY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024856"> for (i = 0; i < pin->lefiPin::numProperties(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024857"> // value can either be a string or number</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024858"> if (pin->lefiPin::propValue(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024859"> fprintf(fout, "%s %s ", pin->lefiPin::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024860"> pin->lefiPin::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024861"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024862"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024863"> fprintf(fout, "%s %g ", pin->lefiPin::propName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024864"> pin->lefiPin::propNum(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024865"> switch (pin->lefiPin::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024866"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024867"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024868"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024869"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024870"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024871"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024872"> case 'Q': fprintf(fout, "QUOTESTRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024873"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024874"> case 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024875"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024876"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024877"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024878"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024879"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024880"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024881"> numPorts = pin->lefiPin::numPorts();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024882"> for (i = 0; i < numPorts; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024883"> fprintf(fout," PORT\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024884"> geometry = pin->lefiPin::port(i);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024885"> prtGeometry(geometry);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024886"> fprintf(fout, " END\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024887"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024888"> fprintf(fout, " END %s\n", pin->lefiPin::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024889"> return 0; </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024890">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024891"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024892">int densityCB(lefrCallbackType_e c, lefiDensity* density,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024893"> lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024894"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024895"> struct lefiGeomRect rect;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024896"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024897"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024898"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024899"> fprintf(fout, " DENSITY\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024900"> for (int i = 0; i < density->lefiDensity::numLayer(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024901"> fprintf(fout, " LAYER %s ;\n", density->lefiDensity::layerName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024902"> for (int j = 0; j < density->lefiDensity::numRects(i); j++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024903"> rect = density->lefiDensity::getRect(i,j);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024904"> fprintf(fout, " RECT %g %g %g %g ", rect.xl, rect.yl, rect.xh,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024905"> rect.yh);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024906"> fprintf(fout, "%g ;\n", density->lefiDensity::densityValue(i,j));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024907"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024908"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024909"> fprintf(fout, " END\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024910"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024911">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024912"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024913">int propDefBeginCB(lefrCallbackType_e c, void* ptr, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024914"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024915"> checkType(c);</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"> fprintf(fout, "PROPERTYDEFINITIONS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024918"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024919">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024920"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024921">int propDefCB(lefrCallbackType_e c, lefiProp* prop, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024922"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024923"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024924"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024925"> fprintf(fout, " %s %s", prop->lefiProp::propType(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024926"> prop->lefiProp::propName());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024927"> switch(prop->lefiProp::dataType()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024928"> case 'I':</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024929"> fprintf(fout, " INTEGER"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024930"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024931"> case 'R':</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024932"> fprintf(fout, " REAL"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024933"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024934"> case 'S':</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024935"> fprintf(fout, " STRING"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024936"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024937"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024938"> if (prop->lefiProp::hasNumber())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024939"> fprintf(fout, " %g", prop->lefiProp::number());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024940"> if (prop->lefiProp::hasRange())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024941"> fprintf(fout, " RANGE %g %g", prop->lefiProp::left(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024942"> prop->lefiProp::right());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024943"> if (prop->lefiProp::hasString())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024944"> fprintf(fout, " %s", prop->lefiProp::string());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024945"> fprintf(fout, "\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024946"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024947">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024948"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024949">int propDefEndCB(lefrCallbackType_e c, void* ptr, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024950"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024951"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024952"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024953"> fprintf(fout, "END PROPERTYDEFINITIONS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024954"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024955">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024956"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024957">int siteCB(lefrCallbackType_e c, lefiSite* site, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024958"> int hasPrtSym = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024959"> int i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024960"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024961"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024962"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024963"> fprintf(fout, "SITE %s\n", site->lefiSite::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024964"> if (site->lefiSite::hasClass())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024965"> fprintf(fout, " CLASS %s ;\n", site->lefiSite::siteClass());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024966"> if (site->lefiSite::hasXSymmetry()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024967"> fprintf(fout, " SYMMETRY X ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024968"> hasPrtSym = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024969"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024970"> if (site->lefiSite::hasYSymmetry()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024971"> if (hasPrtSym)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024972"> fprintf(fout, "Y ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024973"> else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024974"> fprintf(fout, " SYMMETRY Y ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024975"> hasPrtSym = 1;</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"> if (site->lefiSite::has90Symmetry()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024979"> if (hasPrtSym)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024980"> fprintf(fout, "R90 ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024981"> else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024982"> fprintf(fout, " SYMMETRY R90 ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024983"> hasPrtSym = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024984"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024985"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024986"> if (hasPrtSym)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024987"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024988"> if (site->lefiSite::hasSize())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024989"> fprintf(fout, " SIZE %g BY %g ;\n", site->lefiSite::sizeX(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024990"> site->lefiSite::sizeY());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024991"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024992"> if (site->hasRowPattern()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024993"> fprintf(fout, " ROWPATTERN ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024994"> for (i = 0; i < site->lefiSite::numSites(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024995"> fprintf(fout, " %s %s ", site->lefiSite::siteName(i),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024996"> site->lefiSite::siteOrientStr(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024997"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1024998"> }</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"> fprintf(fout, "END %s\n", site->lefiSite::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025001"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025002">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025003"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025004">int spacingBeginCB(lefrCallbackType_e c, void* ptr, lefiUserData ud){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025005"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025006"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025007"> fprintf(fout, "SPACING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025008"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025009">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025010"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025011">int spacingCB(lefrCallbackType_e c, lefiSpacing* spacing, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025012"> checkType(c);</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"> lefSpacing(spacing);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025015"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025016">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025017"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025018">int spacingEndCB(lefrCallbackType_e c, void* ptr, lefiUserData ud){</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025019"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025020"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025021"> fprintf(fout, "END SPACING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025022"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025023">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025024"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025025">int timingCB(lefrCallbackType_e c, lefiTiming* timing, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025026"> int i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025027"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025028"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025029"> fprintf(fout, "TIMING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025030"> for (i = 0; i < timing->numFromPins(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025031"> fprintf(fout, " FROMPIN %s ;\n", timing->fromPin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025032"> for (i = 0; i < timing->numToPins(); i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025033"> fprintf(fout, " TOPIN %s ;\n", timing->toPin(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025034"> fprintf(fout, " RISE SLEW1 %g %g %g %g ;\n", timing->riseSlewOne(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025035"> timing->riseSlewTwo(), timing->riseSlewThree(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025036"> timing->riseSlewFour());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025037"> if (timing->hasRiseSlew2())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025038"> fprintf(fout, " RISE SLEW2 %g %g %g ;\n", timing->riseSlewFive(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025039"> timing->riseSlewSix(), timing->riseSlewSeven());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025040"> if (timing->hasFallSlew())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025041"> fprintf(fout, " FALL SLEW1 %g %g %g %g ;\n", timing->fallSlewOne(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025042"> timing->fallSlewTwo(), timing->fallSlewThree(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025043"> timing->fallSlewFour());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025044"> if (timing->hasFallSlew2())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025045"> fprintf(fout, " FALL SLEW2 %g %g %g ;\n", timing->fallSlewFive(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025046"> timing->fallSlewSix(), timing->riseSlewSeven());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025047"> if (timing->hasRiseIntrinsic()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025048"> fprintf(fout, "TIMING RISE INTRINSIC %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025049"> timing->riseIntrinsicOne(), timing->riseIntrinsicTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025050"> fprintf(fout, "TIMING RISE VARIABLE %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025051"> timing->riseIntrinsicThree(), timing->riseIntrinsicFour());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025052"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025053"> if (timing->hasFallIntrinsic()) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025054"> fprintf(fout, "TIMING FALL INTRINSIC %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025055"> timing->fallIntrinsicOne(), timing->fallIntrinsicTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025056"> fprintf(fout, "TIMING RISE VARIABLE %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025057"> timing->fallIntrinsicThree(), timing->fallIntrinsicFour());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025058"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025059"> if (timing->hasRiseRS())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025060"> fprintf(fout, "TIMING RISERS %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025061"> timing->riseRSOne(), timing->riseRSTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025062"> if (timing->hasRiseCS())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025063"> fprintf(fout, "TIMING RISECS %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025064"> timing->riseCSOne(), timing->riseCSTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025065"> if (timing->hasFallRS())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025066"> fprintf(fout, "TIMING FALLRS %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025067"> timing->fallRSOne(), timing->fallRSTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025068"> if (timing->hasFallCS())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025069"> fprintf(fout, "TIMING FALLCS %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025070"> timing->fallCSOne(), timing->fallCSTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025071"> if (timing->hasUnateness())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025072"> fprintf(fout, "TIMING UNATENESS %s ;\n", timing->unateness());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025073"> if (timing->hasRiseAtt1())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025074"> fprintf(fout, "TIMING RISESATT1 %g %g ;\n", timing->riseAtt1One(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025075"> timing->riseAtt1Two());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025076"> if (timing->hasFallAtt1())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025077"> fprintf(fout, "TIMING FALLSATT1 %g %g ;\n", timing->fallAtt1One(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025078"> timing->fallAtt1Two());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025079"> if (timing->hasRiseTo())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025080"> fprintf(fout, "TIMING RISET0 %g %g ;\n", timing->riseToOne(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025081"> timing->riseToTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025082"> if (timing->hasFallTo())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025083"> fprintf(fout, "TIMING FALLT0 %g %g ;\n", timing->fallToOne(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025084"> timing->fallToTwo());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025085"> if (timing->hasSDFonePinTrigger())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025086"> fprintf(fout, " %s TABLEDIMENSION %g %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025087"> timing->SDFonePinTriggerType(), timing->SDFtriggerOne(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025088"> timing->SDFtriggerTwo(), timing->SDFtriggerThree());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025089"> if (timing->hasSDFtwoPinTrigger())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025090"> fprintf(fout, " %s %s %s TABLEDIMENSION %g %g %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025091"> timing->SDFtwoPinTriggerType(), timing->SDFfromTrigger(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025092"> timing->SDFtoTrigger(), timing->SDFtriggerOne(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025093"> timing->SDFtriggerTwo(), timing->SDFtriggerThree());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025094"> fprintf(fout, "END TIMING\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025095"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025096">}</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">int unitsCB(lefrCallbackType_e c, lefiUnits* unit, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025099"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025100"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025101"> fprintf(fout, "UNITS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025102"> if (unit->lefiUnits::hasDatabase())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025103"> fprintf(fout, " DATABASE %s %g ;\n", unit->lefiUnits::databaseName(),</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025104"> unit->lefiUnits::databaseNumber());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025105"> if (unit->lefiUnits::hasCapacitance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025106"> fprintf(fout, " CAPACITANCE PICOFARADS %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025107"> unit->lefiUnits::capacitance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025108"> if (unit->lefiUnits::hasResistance())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025109"> fprintf(fout, " RESISTANCE OHMS %g ;\n", unit->lefiUnits::resistance());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025110"> if (unit->lefiUnits::hasPower())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025111"> fprintf(fout, " POWER MILLIWATTS %g ;\n", unit->lefiUnits::power());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025112"> if (unit->lefiUnits::hasCurrent())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025113"> fprintf(fout, " CURRENT MILLIAMPS %g ;\n", unit->lefiUnits::current());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025114"> if (unit->lefiUnits::hasVoltage())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025115"> fprintf(fout, " VOLTAGE VOLTS %g ;\n", unit->lefiUnits::voltage());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025116"> if (unit->lefiUnits::hasFrequency())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025117"> fprintf(fout, " FREQUENCY MEGAHERTZ %g ;\n",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025118"> unit->lefiUnits::frequency());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025119"> fprintf(fout, "END UNITS\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025120"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025121">}</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">int useMinSpacingCB(lefrCallbackType_e c, lefiUseMinSpacing* spacing,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025124"> lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025125"> checkType(c);</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"> fprintf(fout, "USEMINSPACING %s ", spacing->lefiUseMinSpacing::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025128"> if (spacing->lefiUseMinSpacing::value())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025129"> fprintf(fout, "ON ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025130"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025131"> fprintf(fout, "OFF ;\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025132"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025133">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025134"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025135">int versionCB(lefrCallbackType_e c, double num, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025136"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025137"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025138"> fprintf(fout, "VERSION %g ;\n", num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025139"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025140">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025141"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025142">int versionStrCB(lefrCallbackType_e c, const char* versionName, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025143"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025144"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025145"> fprintf(fout, "VERSION %s ;\n", versionName);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025146"> return 0;</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025149">int viaCB(lefrCallbackType_e c, lefiVia* via, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025150"> checkType(c);</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"> lefVia(via);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025153"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025154">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025155"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025156">int viaRuleCB(lefrCallbackType_e c, lefiViaRule* viaRule, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025157"> int numLayers, numVias, i;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025158"> lefiViaRuleLayer* vLayer;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025159"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025160"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025161"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025162"> fprintf(fout, "VIARULE %s", viaRule->lefiViaRule::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025163"> if (viaRule->lefiViaRule::hasGenerate())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025164"> fprintf(fout, " GENERATE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025165"> if (viaRule->lefiViaRule::hasDefault())</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025166"> fprintf(fout, " DEFAULT");</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025169"> numLayers = viaRule->lefiViaRule::numLayers();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025170"> for (i = 0; i < numLayers; i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025171"> vLayer = viaRule->lefiViaRule::layer(i); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025172"> lefViaRuleLayer(vLayer);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025173"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025174"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025175"> if (numLayers == 2 && !(viaRule->lefiViaRule::hasGenerate())) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025176"> numVias = viaRule->lefiViaRule::numVias();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025177"> if (numVias == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025178"> fprintf(fout, "Should have via names in VIARULE.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025179"> else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025180"> for (i = 0; i < numVias; i++)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025181"> fprintf(fout, " VIA %s ;\n", viaRule->lefiViaRule::viaName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025182"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025183"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025184"> if (viaRule->lefiViaRule::numProps() > 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025185"> fprintf(fout, " PROPERTY ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025186"> for (i = 0; i < viaRule->lefiViaRule::numProps(); i++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025187"> fprintf(fout, "%s ", viaRule->lefiViaRule::propName(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025188"> if (viaRule->lefiViaRule::propValue(i))</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025189"> fprintf(fout, "%s ", viaRule->lefiViaRule::propValue(i));</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025190"> switch (viaRule->lefiViaRule::propType(i)) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025191"> case 'R': fprintf(fout, "REAL ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025192"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025193"> case 'I': fprintf(fout, "INTEGER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025194"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025195"> case 'S': fprintf(fout, "STRING ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025196"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025197"> case 'Q': fprintf(fout, "QUOTESTRING ");</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 'N': fprintf(fout, "NUMBER ");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025200"> break;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025201"> } </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025202"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025203"> fprintf(fout, ";\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025204"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025205"> fprintf(fout, "END %s\n", viaRule->lefiViaRule::name());</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025206"> return 0;</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">int extensionCB(lefrCallbackType_e c, const char* extsn, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025210"> checkType(c);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025211"> fprintf(fout, "BEGINEXT %s ;\n", extsn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025212"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025213">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025214"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025215">int doneCB(lefrCallbackType_e c, void* ptr, lefiUserData ud) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025216"> checkType(c);</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"> fprintf(fout, "END LIBRARY\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025219"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025220">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025221"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025222">void errorCB(const char* msg) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025223"> printf ("%s : %s\n", lefrGetUserData(), msg);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025224">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025225"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025226">void warningCB(const char* msg) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025227"> printf ("%s : %s\n", lefrGetUserData(), msg);</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">void* mallocCB(int size) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025231"> return malloc(size);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025232">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025233"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025234">void* reallocCB(void* name, int size) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025235"> return realloc(name, size);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025236">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025237"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025238">void freeCB(void* name) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025239"> free(name);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025240"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025241">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025242"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025243">void lineNumberCB(int lineNo) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025244"> fprintf(fout, "Parsed %d number of lines!!\n", lineNo);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025245"> return;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025246">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025247"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025248">int</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025249">main(int argc, char** argv) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025250"> char* inFile[100];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025251"> char* outFile;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025252"> FILE* f;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025253"> int res;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025254"> int noCalls = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025255"> int num;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025256"> int status;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025257"> int retStr = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025258"> int numInFile = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025259"> int fileCt = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025260"> int relax = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025261"> char* version;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025262"> int setVer = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025263"> char* userData;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025264"> int msgCb = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025265"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025266"> userData = strdup ("(lefrw-5100)");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025267"> strcpy(defaultName,"lef.in");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025268"> strcpy(defaultOut,"list");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025269"> inFile[0] = defaultName;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025270"> outFile = defaultOut;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025271"> fout = stdout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025272"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025273"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025274"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025275"> while (argc--) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025276"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025277"> if (strcmp(*argv, "-d") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025278"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025279"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025280"> sscanf(*argv, "%d", &num);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025281"> lefiSetDebug(num, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025282"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025283"> } else if (strcmp(*argv, "-nc") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025284"> noCalls = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025285"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025286"> } else if (strcmp(*argv, "-p") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025287"> printing = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025288"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025289"> } else if (strcmp(*argv, "-m") == 0) { // use the user error/warning CB</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025290"> msgCb = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025291"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025292"> } else if (strcmp(*argv, "-o") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025293"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025294"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025295"> outFile = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025296"> if ((fout = fopen(outFile, "w")) == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025297"> fprintf(stderr, "ERROR: could not open output file\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025298"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025299"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025300"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025301"> } else if (strcmp(*argv, "-verStr") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025302"> /* 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="1025303"> /* instead of double. */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025304"> retStr = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025305"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025306"> } else if (strcmp(*argv, "-relax") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025307"> relax = 1;</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"> } else if (strcmp(*argv, "-65nm") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025310"> parse65nm = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025311"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025312"> } else if (strcmp(*argv, "-ver") == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025313"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025314"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025315"> setVer = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025316"> version = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025317"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025318"> } else if (argv[0][0] != '-') {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025319"> if (numInFile >= 100) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025320"> fprintf(stderr, "ERROR: too many input files, max = 3.\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025321"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025322"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025323"> inFile[numInFile++] = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025324"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025325"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025326"> fprintf(stderr, "ERROR: Illegal command line option: '%s'\n", *argv);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025327"> return 2;</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"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025331"> }</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"> if (noCalls == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025334"> lefrSetAntennaInputCbk(antennaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025335"> lefrSetAntennaInoutCbk(antennaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025336"> lefrSetAntennaOutputCbk(antennaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025337"> lefrSetArrayBeginCbk(arrayBeginCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025338"> lefrSetArrayCbk(arrayCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025339"> lefrSetArrayEndCbk(arrayEndCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025340"> lefrSetBusBitCharsCbk(busBitCharsCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025341"> lefrSetCaseSensitiveCbk(caseSensCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025342"> lefrSetClearanceMeasureCbk(clearanceCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025343"> lefrSetDensityCbk(densityCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025344"> lefrSetDividerCharCbk(dividerCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025345"> lefrSetNoWireExtensionCbk(noWireExtCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025346"> lefrSetEdgeRateThreshold1Cbk(edge1CB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025347"> lefrSetEdgeRateThreshold2Cbk(edge2CB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025348"> lefrSetEdgeRateScaleFactorCbk(edgeScaleCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025349"> lefrSetExtensionCbk(extensionCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025350"> lefrSetDielectricCbk(dielectricCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025351"> lefrSetIRDropBeginCbk(irdropBeginCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025352"> lefrSetIRDropCbk(irdropCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025353"> lefrSetIRDropEndCbk(irdropEndCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025354"> lefrSetLayerCbk(layerCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025355"> lefrSetLibraryEndCbk(doneCB); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025356"> lefrSetMacroBeginCbk(macroBeginCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025357"> lefrSetMacroCbk(macroCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025358"> lefrSetMacroClassTypeCbk(macroClassTypeCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025359"> lefrSetMacroEndCbk(macroEndCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025360"> lefrSetManufacturingCbk(manufacturingCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025361"> lefrSetMaxStackViaCbk(maxStackViaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025362"> lefrSetMinFeatureCbk(minFeatureCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025363"> lefrSetNonDefaultCbk(nonDefaultCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025364"> lefrSetObstructionCbk(obstructionCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025365"> lefrSetPinCbk(pinCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025366"> lefrSetPropBeginCbk(propDefBeginCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025367"> lefrSetPropCbk(propDefCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025368"> lefrSetPropEndCbk(propDefEndCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025369"> lefrSetSiteCbk(siteCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025370"> lefrSetSpacingBeginCbk(spacingBeginCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025371"> lefrSetSpacingCbk(spacingCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025372"> lefrSetSpacingEndCbk(spacingEndCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025373"> lefrSetTimingCbk(timingCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025374"> lefrSetUnitsCbk(unitsCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025375"> lefrSetUseMinSpacingCbk(useMinSpacingCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025376"> lefrSetUserData((void*)3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025377"> if (!retStr)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025378"> lefrSetVersionCbk(versionCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025379"> else</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025380"> lefrSetVersionStrCbk(versionStrCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025381"> lefrSetViaCbk(viaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025382"> lefrSetViaRuleCbk(viaRuleCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025383"> lefrSetInputAntennaCbk(antennaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025384"> lefrSetOutputAntennaCbk(antennaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025385"> lefrSetInoutAntennaCbk(antennaCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025386"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025387"> if (msgCb) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025388"> lefrSetLogFunction(errorCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025389"> lefrSetWarningLogFunction(warningCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025390"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025391"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025392"> lefrSetMallocFunction(mallocCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025393"> lefrSetReallocFunction(reallocCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025394"> lefrSetFreeFunction(freeCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025395"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025396"> lefrSetLineNumberFunction(lineNumberCB);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025397"> lefrSetDeltaNumberLines(50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025398"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025399"> lefrSetRegisterUnusedCallbacks();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025400"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025401"> if (relax)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025402"> lefrSetRelaxMode();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025403"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025404"> if (setVer)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025405"> (void)lefrSetVersionValue(version);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025406"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025407"> lefrSetAntennaInoutWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025408"> lefrSetAntennaInputWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025409"> lefrSetAntennaOutputWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025410"> lefrSetArrayWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025411"> lefrSetCaseSensitiveWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025412"> lefrSetCorrectionTableWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025413"> lefrSetDielectricWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025414"> lefrSetEdgeRateThreshold1Warnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025415"> lefrSetEdgeRateThreshold2Warnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025416"> lefrSetEdgeRateScaleFactorWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025417"> lefrSetInoutAntennaWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025418"> lefrSetInputAntennaWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025419"> lefrSetIRDropWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025420"> lefrSetLayerWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025421"> lefrSetMacroWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025422"> lefrSetMaxStackViaWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025423"> lefrSetMinFeatureWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025424"> lefrSetNoiseMarginWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025425"> lefrSetNoiseTableWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025426"> lefrSetNonDefaultWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025427"> lefrSetNoWireExtensionWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025428"> lefrSetOutputAntennaWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025429"> lefrSetPinWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025430"> lefrSetSiteWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025431"> lefrSetSpacingWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025432"> lefrSetTimingWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025433"> lefrSetUnitsWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025434"> lefrSetUseMinSpacingWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025435"> lefrSetViaRuleWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025436"> lefrSetViaWarnings(30);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025437"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025438"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025439"> (void) lefrSetShiftCase(); // will shift name to uppercase if caseinsensitive</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025440"> // is set to off or not set</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025441"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025442"> lefrInit();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025443"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025444"> for (fileCt = 0; fileCt < numInFile; fileCt++) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025445"> lefrReset();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025446"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025447"> if ((f = fopen(inFile[fileCt],"r")) == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025448"> 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="1025449"> return(2);</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025452"> (void)lefrEnableReadEncrypted();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025453"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025454"> status = lefwInit(fout); // initialize the lef writer, need to be called 1st</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025455"> if (status != LEFW_OK)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025456"> return 1;</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"> res = lefrRead(f, inFile[fileCt], (void*)userData);</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"> if (res)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025461"> fprintf(stderr, "Reader returns bad status.\n", inFile[fileCt]);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025462"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025463"> (void)lefrPrintUnusedCallbacks(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025464"> (void)lefrReleaseNResetMemory();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025465"> </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"> fclose(fout);</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"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025470">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="3" face="Sans-Serif" color="#000000"><a name="1025471"> </a></font>
|
|
</p>
|
|
<h2><a name="1016399">LEF Writer Program</a></h2>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025613">#include <stdlib.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025614">#include <stdio.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025615">#include <string.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025616">#ifndef WIN32</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025617"># include <unistd.h></a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025618">#endif /* not WIN32 */</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025619">#include "lefwWriter.hpp"</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025620"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025621">char defaultOut[128];</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025622"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025623">// Global variables</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025624">FILE* fout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025625"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025626">#define CHECK_STATUS(status) \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025627"> if (status) { \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025628"> lefwPrintError(status); \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025629"> return(status); \</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025630"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025631"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025632">int main(int argc, char** argv) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025633"> char* outfile;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025634"> int status; // return code, if none 0 means error</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025635"> int lineNum = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025636"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025637"> // assign the default</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025638"> strcpy(defaultOut, "lef.in");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025639"> outfile = defaultOut;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025640"> fout = stdout;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025641"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025642"> double *xpath;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025643"> double *ypath;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025644"> double *xl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025645"> double *yl;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025646"> double *wthn, *spng;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025647"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025648"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025649"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025650"> while (argc--) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025651"> if (strcmp(*argv, "-o") == 0) { // output filename</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025652"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025653"> argc--;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025654"> outfile = *argv;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025655"> if ((fout = fopen(outfile, "w")) == 0) {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025656"> fprintf(stderr, "ERROR: could not open output file\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025657"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025658"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025659"> } 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="1025660"> fprintf(stderr, "Usage: lefwrite [-o <filename>] [-help]\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025661"> return 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025662"> } else {</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025663"> fprintf(stderr, "ERROR: Illegal command line option: '%s'\n", *argv);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025664"> return 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025665"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025666"> argv++;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025667"> }</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025668"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025669"> // initalize</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025670"> status = lefwInit(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025671"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025672"> status = lefwVersion(5, 7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025673"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025674"> status = lefwBusBitChars("<>");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025675"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025676"> status = lefwDividerChar(":");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025677"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025678"> status = lefwManufacturingGrid(3.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025679"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025680"> status = lefwUseMinSpacing("OBS", "OFF");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025681"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025682"> status = lefwClearanceMeasure("EUCLIDEAN");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025683"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025684"> status = lefwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025685"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025686"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025687"> // 5.4 ANTENNA</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025688"> status = lefwAntennaInputGateArea(45);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025689"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025690"> status = lefwAntennaInOutDiffArea(65);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025691"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025692"> status = lefwAntennaOutputDiffArea(55);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025693"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025694"> status = lefwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025695"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025696"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025697"> // UNITS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025698"> status = lefwStartUnits();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025699"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025700"> status = lefwUnits(100, 10, 10000, 10000, 10000, 1000, 20000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025701"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025702"> status = lefwUnitsFrequency(10);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025703"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025704"> status = lefwEndUnits();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025705"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025706"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025707"> // PROPERTYDEFINITIONS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025708"> status = lefwStartPropDef();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025709"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025710"> status = lefwStringPropDef("LIBRARY", "NAME", 0, 0, "Cadence96");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025711"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025712"> status = lefwIntPropDef("LIBRARY", "intNum", 0, 0, 20);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025713"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025714"> status = lefwRealPropDef("LIBRARY", "realNum", 0, 0, 21.22);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025715"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025716"> status = lefwStringPropDef("PIN", "TYPE", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025717"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025718"> status = lefwIntPropDef("PIN", "intProp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025719"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025720"> status = lefwRealPropDef("PIN", "realProp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025721"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025722"> status = lefwStringPropDef("MACRO", "stringProp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025723"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025724"> status = lefwIntPropDef("MACRO", "integerProp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025725"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025726"> status = lefwRealPropDef("MACRO", "WEIGHT", 1.0, 100.0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025727"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025728"> status = lefwStringPropDef("VIA", "stringProperty", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025729"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025730"> status = lefwRealPropDef("VIA", "realProp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025731"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025732"> status = lefwIntPropDef("VIA", "COUNT", 1, 100, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025733"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025734"> status = lefwStringPropDef("LAYER", "lsp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025735"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025736"> status = lefwIntPropDef("LAYER", "lip", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025737"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025738"> status = lefwRealPropDef("LAYER", "lrp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025739"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025740"> status = lefwStringPropDef("VIARULE", "vrsp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025741"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025742"> status = lefwRealPropDef("VIARULE", "vrip", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025743"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025744"> status = lefwIntPropDef("VIARULE", "vrrp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025745"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025746"> status = lefwStringPropDef("NONDEFAULTRULE", "ndrsp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025747"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025748"> status = lefwIntPropDef("NONDEFAULTRULE", "ndrip", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025749"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025750"> status = lefwRealPropDef("NONDEFAULTRULE", "ndrrp", 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025751"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025752"> status = lefwEndPropDef();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025753"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025754"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025755"> // LAYERS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025756"> double *current;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025757"> double *diffs;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025758"> double *ratios;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025759"> double *area;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025760"> double *width;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025761"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025762"> current = (double*)malloc(sizeof(double)*15);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025763"> diffs = (double*)malloc(sizeof(double)*15);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025764"> ratios = (double*)malloc(sizeof(double)*15);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025765"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025766"> status = lefwStartLayer("POLYS", "MASTERSLICE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025767"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025768"> status = lefwStringProperty("lsp", "top");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025769"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025770"> status = lefwIntProperty("lip", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025771"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025772"> status = lefwRealProperty("lrp", 2.3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025773"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025774"> status = lefwEndLayer("POLYS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025775"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025776"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025777"> status = lefwStartLayer("CUT01", "CUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025778"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025779"> status = lefwLayerDCCurrentDensity("AVERAGE", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025780"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025781"> current[0] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025782"> current[1] = 5.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025783"> current[2] = 10.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025784"> status = lefwLayerDCCutarea(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025785"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025786"> current[0] = 0.6E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025787"> current[1] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025788"> current[2] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025789"> status = lefwLayerDCTableEntries(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025790"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025791"> status = lefwEndLayer("CUT01");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025792"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025793"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025794"> status = lefwStartLayerRouting("RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025795"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025796"> status = lefwLayerRouting("HORIZONTAL", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025797"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025798"> status = lefwLayerRoutingPitch(1.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025799"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025800"> status = lefwLayerRoutingDiagPitch(1.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025801"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025802"> status = lefwLayerRoutingDiagWidth(1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025803"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025804"> status = lefwLayerRoutingDiagSpacing(0.05);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025805"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025806"> status = lefwLayerRoutingDiagMinEdgeLength(0.07);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025807"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025808"> status = lefwLayerRoutingArea(34.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025809"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025810"> xl = (double*)malloc(sizeof(double)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025811"> yl = (double*)malloc(sizeof(double)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025812"> xl[0] = 0.14;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025813"> yl[0] = 0.30;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025814"> xl[1] = 0.08;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025815"> yl[1] = 0.33;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025816"> status = lefwLayerRoutingMinsize(2, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025817"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025818"> free((char*)xl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025819"> free((char*)yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025820"> status = lefwLayerRoutingWireExtension(0.75);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025821"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025822"> status = lefwLayerRoutingOffset(0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025823"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025824"> status = lefwLayerRoutingSpacing(0.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025825"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025826"> status = lefwLayerRoutingSpacingRange(0.1, 9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025827"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025828"> status = lefwLayerRoutingResistance("0.103");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025829"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025830"> status = lefwLayerRoutingCapacitance("0.000156");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025831"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025832"> status = lefwLayerRoutingHeight(9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025833"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025834"> status = lefwLayerRoutingThickness(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025835"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025836"> status = lefwLayerRoutingShrinkage(0.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025837"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025838"> status = lefwLayerRoutingEdgeCap(0.00005);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025839"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025840"> status = lefwLayerRoutingCapMultiplier(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025841"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025842"> status = lefwLayerRoutingMinwidth(0.15); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025843"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025844"> status = lefwLayerRoutingAntennaArea(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025845"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025846"> status = lefwLayerAntennaCumAreaRatio(6.7); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025847"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025848"> status = lefwLayerAntennaCumRoutingPlusCut(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025849"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025850"> status = lefwLayerAntennaAreaMinusDiff(100.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025851"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025852"> status = lefwLayerAntennaGatePlusDiff(2.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025853"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025854"> status = lefwLayerAntennaCumDiffAreaRatio(1000); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025855"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025856"> xl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025857"> yl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025858"> xl[0] = 0.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025859"> yl[0] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025860"> xl[1] = 0.09999;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025861"> yl[1] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025862"> xl[2] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025863"> yl[2] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025864"> xl[3] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025865"> yl[3] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025866"> xl[4] = 100;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025867"> yl[4] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025868"> status = lefwLayerAntennaAreaDiffReducePwl(5, xl, yl); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025869"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025870"> free((char*)xl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025871"> free((char*)yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025872"> status = lefwLayerAntennaCumDiffAreaRatio(1000); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025873"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025874"> status = lefwLayerRoutingAntennaLength(1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025875"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025876"> status = lefwLayerACCurrentDensity("PEAK", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025877"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025878"> current[0] = 1E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025879"> current[1] = 100E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025880"> current[2] = 400E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025881"> status = lefwLayerACFrequency(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025882"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025883"> current[0] = 0.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025884"> current[1] = 0.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025885"> current[2] = 10.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025886"> current[3] = 50.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025887"> status = lefwLayerACCutarea(4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025888"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025889"> current[0] = 0.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025890"> current[1] = 0.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025891"> current[2] = 10.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025892"> current[3] = 50.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025893"> current[4] = 100.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025894"> status = lefwLayerACWidth(5, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025895"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025896"> current[0] = 2.0E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025897"> current[1] = 1.9E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025898"> current[2] = 1.8E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025899"> current[3] = 1.7E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025900"> current[4] = 1.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025901"> current[5] = 1.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025902"> current[6] = 1.3E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025903"> current[7] = 1.2E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025904"> current[8] = 1.1E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025905"> current[9] = 1.0E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025906"> current[10] = 0.9E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025907"> current[11] = 0.8E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025908"> current[12] = 0.7E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025909"> current[13] = 0.6E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025910"> current[14] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025911"> status = lefwLayerACTableEntries(15, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025912"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025913"> status = lefwLayerACCurrentDensity("AVERAGE", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025914"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025915"> current[0] = 1E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025916"> current[1] = 100E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025917"> current[2] = 400E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025918"> status = lefwLayerACFrequency(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025919"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025920"> current[0] = 0.6E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025921"> current[1] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025922"> current[2] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025923"> status = lefwLayerACTableEntries(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025924"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025925"> status = lefwLayerACCurrentDensity("RMS", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025926"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025927"> current[0] = 1E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025928"> current[1] = 400E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025929"> current[2] = 800E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025930"> status = lefwLayerACFrequency(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025931"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025932"> current[0] = 0.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025933"> current[1] = 0.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025934"> current[2] = 10.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025935"> current[3] = 50.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025936"> current[4] = 100.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025937"> status = lefwLayerACWidth(5, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025938"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025939"> current[0] = 2.0E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025940"> current[1] = 1.9E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025941"> current[2] = 1.8E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025942"> current[3] = 1.7E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025943"> current[4] = 1.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025944"> current[5] = 1.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025945"> current[6] = 1.3E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025946"> current[7] = 1.2E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025947"> current[8] = 1.1E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025948"> current[9] = 1.0E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025949"> current[10] = 0.9E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025950"> current[11] = 0.8E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025951"> current[12] = 0.7E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025952"> current[13] = 0.6E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025953"> current[14] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025954"> status = lefwLayerACTableEntries(15, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025955"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025956"> status = lefwEndLayerRouting("RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025957"> CHECK_STATUS(status);</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"> status = lefwStartLayer("CUT12", "CUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025960"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025961"> status = lefwLayerCutSpacing(0.7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025962"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025963"> status = lefwLayerCutSpacingLayer("RX", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025964"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025965"> status = lefwLayerCutSpacingEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025966"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025967"> status = lefwLayerResistancePerCut(8.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025968"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025969"> status = lefwLayerCutSpacing(0.22); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025970"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025971"> status = lefwLayerCutSpacingAdjacent(3, 0.25, 0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025972"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025973"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025974"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025975"> status = lefwLayerCutSpacing(1.5); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025976"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025977"> status = lefwLayerCutSpacingParallel(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025978"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025979"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025980"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025981"> status = lefwLayerCutSpacing(1.2); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025982"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025983"> status = lefwLayerCutSpacingAdjacent(2, 1.5, 0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025984"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025985"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025986"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025987"> status = lefwLayerAntennaModel("OXIDE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025988"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025989"> status = lefwLayerAntennaAreaRatio(5.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025990"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025991"> status = lefwLayerAntennaDiffAreaRatio(6.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025992"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025993"> status = lefwLayerAntennaAreaFactor(5.4, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025994"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025995"> status = lefwLayerAntennaCumDiffAreaRatio(4.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025996"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025997"> diffs[0] = 5.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025998"> ratios[0] = 5.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1025999"> diffs[1] = 6.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026000"> ratios[1] = 6.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026001"> diffs[2] = 7.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026002"> ratios[2] = 7.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026003"> status = lefwLayerAntennaCumDiffAreaRatioPwl(3, diffs, ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026004"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026005"> status = lefwLayerAntennaCumAreaRatio(6.7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026006"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026007"> status = lefwLayerAntennaModel("OXIDE2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026008"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026009"> status = lefwLayerAntennaCumAreaRatio(300);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026010"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026011"> status = lefwLayerAntennaCumRoutingPlusCut(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026012"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026013"> status = lefwLayerAntennaAreaMinusDiff(100.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026014"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026015"> status = lefwLayerAntennaGatePlusDiff(2.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026016"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026017"> status = lefwLayerAntennaDiffAreaRatio(1000); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026018"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026019"> status = lefwLayerAntennaCumDiffAreaRatio(5000); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026020"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026021"> xl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026022"> yl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026023"> xl[0] = 0.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026024"> yl[0] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026025"> xl[1] = 0.09999;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026026"> yl[1] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026027"> xl[2] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026028"> yl[2] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026029"> xl[3] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026030"> yl[3] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026031"> xl[4] = 100;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026032"> yl[4] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026033"> status = lefwLayerAntennaAreaDiffReducePwl(5, xl, yl); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026034"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026035"> free((char*)xl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026036"> free((char*)yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026037"> diffs[0] = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026038"> ratios[0] = 4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026039"> diffs[1] = 2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026040"> ratios[1] = 5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026041"> status = lefwLayerAntennaCumDiffAreaRatioPwl(2, diffs, ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026042"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026043"> status = lefwLayerACCurrentDensity("PEAK", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026044"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026045"> current[0] = 1E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026046"> current[1] = 100E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026047"> status = lefwLayerACFrequency(2, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026048"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026049"> current[0] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026050"> current[1] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026051"> status = lefwLayerACTableEntries(2, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026052"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026053"> status = lefwLayerACCurrentDensity("AVERAGE", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026054"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026055"> current[0] = 1E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026056"> current[1] = 100E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026057"> status = lefwLayerACFrequency(2, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026058"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026059"> current[0] = 0.6E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026060"> current[1] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026061"> status = lefwLayerACTableEntries(2, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026062"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026063"> status = lefwLayerACCurrentDensity("RMS", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026064"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026065"> current[0] = 100E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026066"> current[1] = 800E6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026067"> status = lefwLayerACFrequency(2, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026068"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026069"> current[0] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026070"> current[1] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026071"> status = lefwLayerACTableEntries(2, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026072"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026073"> status = lefwEndLayer("CUT12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026074"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026075"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026076"> status = lefwStartLayerRouting("PC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026077"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026078"> status = lefwLayerRouting("DIAG45", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026079"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026080"> status = lefwLayerRoutingPitch(1.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026081"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026082"> status = lefwLayerRoutingWireExtension(0.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026083"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026084"> status = lefwLayerRoutingSpacing(0.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026085"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026086"> status = lefwLayerRoutingSpacing(1.2); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026087"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026088"> status = lefwLayerRoutingSpacingEndOfLine(1.3, 0.6); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026089"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026090"> status = lefwLayerRoutingSpacing(1.3); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026091"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026092"> status = lefwLayerRoutingSpacingEndOfLine(1.4, 0.7); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026093"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026094"> status = lefwLayerRoutingSpacingEOLParallel(1.1, 0.5, 1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026095"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026096"> status = lefwLayerRoutingSpacing(1.4); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026097"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026098"> status = lefwLayerRoutingSpacingEndOfLine(1.5, 0.8); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026099"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026100"> status = lefwLayerRoutingSpacingEOLParallel(1.2, 0.6, 0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026101"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026102"> status = lefwLayerRoutingOffsetXYDistance(0.9, 0.7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026103"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026104"> status = lefwLayerRoutingResistance("PWL ( ( 1 0.103 ) )");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026105"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026106"> status = lefwLayerRoutingCapacitance("PWL ( ( 1 0.000156 ) ( 10 0.001 ) )");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026107"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026108"> status = lefwLayerAntennaAreaRatio(5.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026109"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026110"> status = lefwLayerAntennaDiffAreaRatio(6.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026111"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026112"> diffs[0] = 4.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026113"> ratios[0] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026114"> diffs[1] = 4.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026115"> ratios[1] = 4.3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026116"> status = lefwLayerAntennaDiffAreaRatioPwl(2, diffs, ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026117"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026118"> status = lefwLayerAntennaCumAreaRatio(7.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026119"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026120"> diffs[0] = 5.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026121"> ratios[0] = 5.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026122"> diffs[1] = 6.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026123"> ratios[1] = 6.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026124"> status = lefwLayerAntennaCumDiffAreaRatioPwl(2, diffs, ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026125"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026126"> status = lefwLayerAntennaAreaFactor(4.5, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026127"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026128"> status = lefwLayerAntennaSideAreaRatio(6.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026129"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026130"> status = lefwLayerAntennaCumDiffSideAreaRatio(4.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026131"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026132"> diffs[0] = 8.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026133"> ratios[0] = 8.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026134"> diffs[1] = 8.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026135"> ratios[1] = 8.3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026136"> diffs[2] = 8.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026137"> ratios[2] = 8.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026138"> diffs[3] = 8.6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026139"> ratios[3] = 8.7;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026140"> status = lefwLayerAntennaCumDiffSideAreaRatioPwl(4, diffs, ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026141"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026142"> status = lefwLayerAntennaCumSideAreaRatio(7.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026143"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026144"> diffs[0] = 7.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026145"> ratios[0] = 7.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026146"> diffs[1] = 7.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026147"> ratios[1] = 7.3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026148"> status = lefwLayerAntennaDiffSideAreaRatioPwl(2, diffs, ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026149"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026150"> status = lefwLayerAntennaSideAreaFactor(9.0, "DIFFUSEONLY");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026151"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026152"> status = lefwLayerDCCurrentDensity("AVERAGE", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026153"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026154"> current[0] = 20.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026155"> current[1] = 50.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026156"> current[2] = 100.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026157"> status = lefwLayerDCWidth(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026158"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026159"> current[0] = 1.0E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026160"> current[1] = 0.7E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026161"> current[2] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026162"> status = lefwLayerDCTableEntries(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026163"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026164"> status = lefwEndLayerRouting("PC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026165"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026166"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026167"> status = lefwStartLayer("CA", "CUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026168"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026169"> status = lefwLayerCutSpacing(0.15); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026170"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026171"> status = lefwLayerCutSpacingCenterToCenter(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026172"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026173"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026174"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026175"> status = lefwLayerEnclosure("BELOW", 0.3, 0.01, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026176"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026177"> status = lefwLayerEnclosure("ABOVE", 0.5, 0.01, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026178"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026179"> status = lefwLayerPreferEnclosure("BELOW", 0.06, 0.01, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026180"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026181"> status = lefwLayerPreferEnclosure("ABOVE", 0.08, 0.02, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026182"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026183"> status = lefwLayerEnclosure("", 0.02, 0.02, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026184"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026185"> status = lefwLayerEnclosure(NULL, 0.05, 0.05, 2.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026186"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026187"> status = lefwLayerEnclosure("BELOW", 0.07, 0.07, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026188"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026189"> status = lefwLayerEnclosure("ABOVE", 0.09, 0.09, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026190"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026191"> status = lefwLayerResistancePerCut(10.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026192"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026193"> status = lefwLayerDCCurrentDensity("AVERAGE", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026194"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026195"> current[0] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026196"> current[1] = 5.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026197"> current[2] = 10.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026198"> status = lefwLayerDCWidth(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026199"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026200"> current[0] = 0.6E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026201"> current[1] = 0.5E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026202"> current[2] = 0.4E-6;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026203"> status = lefwLayerDCTableEntries(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026204"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026205"> status = lefwEndLayer("CA");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026206"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026207"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026208"> status = lefwStartLayerRouting("M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026209"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026210"> status = lefwLayerRouting("DIAG135", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026211"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026212"> status = lefwLayerRoutingPitch(1.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026213"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026214"> status = lefwLayerRoutingSpacing(0.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026215"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026216"> status = lefwLayerRoutingSpacingRange(1.1, 100.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026217"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026218"> status = lefwLayerRoutingSpacingRangeUseLengthThreshold();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026219"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026220"> status = lefwLayerRoutingSpacing(0.61);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026221"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026222"> status = lefwLayerRoutingSpacingRange(1.1, 100.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026223"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026224"> status = lefwLayerRoutingSpacingRangeInfluence(2.01, 2.0, 1000.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026225"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026226"> status = lefwLayerRoutingSpacing(0.62);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026227"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026228"> status = lefwLayerRoutingSpacingRange(1.1, 100.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026229"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026230"> status = lefwLayerRoutingSpacingRangeRange(4.1, 6.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026231"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026232"> status = lefwLayerRoutingSpacing(0.63);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026233"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026234"> status = lefwLayerRoutingSpacingLengthThreshold(1.34, 4.5, 6.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026235"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026236"> status = lefwLayerRoutingWireExtension(7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026237"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026238"> status = lefwLayerRoutingResistance("0.103");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026239"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026240"> status = lefwLayerRoutingCapacitance("0.000156");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026241"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026242"> current[0] = 0.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026243"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026244"> current[2] = 3.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026245"> current[3] = 5.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026246"> status = lefwLayerRoutingStartSpacingtableParallel(4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026247"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026248"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026249"> current[1] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026250"> current[2] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026251"> current[3] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026252"> status = lefwLayerRoutingSpacingtableParallelWidth(0.00, 4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026253"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026254"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026255"> current[1] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026256"> current[2] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026257"> current[3] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026258"> status = lefwLayerRoutingSpacingtableParallelWidth(0.25, 4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026259"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026260"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026261"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026262"> current[2] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026263"> current[3] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026264"> status = lefwLayerRoutingSpacingtableParallelWidth(1.50, 4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026265"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026266"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026267"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026268"> current[2] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026269"> current[3] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026270"> status = lefwLayerRoutingSpacingtableParallelWidth(3.00, 4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026271"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026272"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026273"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026274"> current[2] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026275"> current[3] = 2.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026276"> status = lefwLayerRoutingSpacingtableParallelWidth(5.00, 4, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026277"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026278"> status = lefwLayerRoutineEndSpacingtable();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026279"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026280"> status = lefwLayerRoutingStartSpacingtableInfluence();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026281"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026282"> status = lefwLayerRoutingSpacingInfluenceWidth(1.5, 0.5, 0.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026283"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026284"> status = lefwLayerRoutingSpacingInfluenceWidth(3.0, 1.0, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026285"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026286"> status = lefwLayerRoutingSpacingInfluenceWidth(5.0, 2.0, 2.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026287"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026288"> status = lefwLayerRoutineEndSpacingtable();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026289"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026290"> status = lefwLayerRoutingStartSpacingtableInfluence();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026291"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026292"> status = lefwLayerRoutingSpacingInfluenceWidth(1.5, 0.5, 0.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026293"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026294"> status = lefwLayerRoutingSpacingInfluenceWidth(5.0, 2.0, 2.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026295"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026296"> status = lefwLayerRoutineEndSpacingtable();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026297"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026298"> current[0] = 0.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026299"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026300"> current[2] = 5.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026301"> status = lefwLayerRoutingStartSpacingtableParallel(3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026302"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026303"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026304"> current[1] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026305"> current[2] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026306"> status = lefwLayerRoutingSpacingtableParallelWidth(0.00, 3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026307"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026308"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026309"> current[1] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026310"> current[2] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026311"> status = lefwLayerRoutingSpacingtableParallelWidth(0.25, 3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026312"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026313"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026314"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026315"> current[2] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026316"> status = lefwLayerRoutingSpacingtableParallelWidth(3.00, 3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026317"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026318"> current[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026319"> current[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026320"> current[2] = 2.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026321"> status = lefwLayerRoutingSpacingtableParallelWidth(5.00, 3, current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026322"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026323"> status = lefwLayerRoutineEndSpacingtable();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026324"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026325"> free((char*)current);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026326"> free((char*)diffs);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026327"> free((char*)ratios);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026328"> status = lefwLayerAntennaGatePlusDiff(2.0); // 5.7 </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026329"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026330"> status = lefwLayerAntennaDiffAreaRatio(1000); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026331"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026332"> status = lefwLayerAntennaCumDiffAreaRatio(5000); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026333"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026334"> status = lefwEndLayerRouting("M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026335"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026336"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026337"> status = lefwStartLayer("V1", "CUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026338"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026339"> status = lefwLayerCutSpacing(0.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026340"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026341"> status = lefwLayerCutSpacingLayer("CA", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026342"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026343"> status = lefwLayerCutSpacingEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026344"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026345"> status = lefwEndLayer("V1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026346"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026347"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026348"> status = lefwStartLayerRouting("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026349"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026350"> status = lefwLayerRouting("VERTICAL", 0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026351"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026352"> status = lefwLayerRoutingPitch(1.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026353"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026354"> status = lefwLayerRoutingWireExtension(8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026355"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026356"> status = lefwLayerRoutingSpacing(0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026357"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026358"> status = lefwLayerRoutingSpacingLengthThreshold(100.9, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026359"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026360"> status = lefwLayerRoutingSpacing(0.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026361"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026362"> status = lefwLayerRoutingSpacingLengthThreshold(0.9, 0, 0.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026363"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026364"> status = lefwLayerRoutingSpacing(0.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026365"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026366"> status = lefwLayerRoutingSpacingLengthThreshold(1.9, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026367"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026368"> status = lefwLayerRoutingSpacing(1.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026369"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026370"> status = lefwLayerRoutingSpacingSameNet(1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026371"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026372"> status = lefwLayerRoutingSpacing(1.1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026373"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026374"> status = lefwLayerRoutingSpacingSameNet(0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026375"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026376"> status = lefwLayerRoutingResistance("0.0608");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026377"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026378"> status = lefwLayerRoutingCapacitance("0.000184");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026379"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026380"> status = lefwEndLayerRouting("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026381"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026382"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026383"> status = lefwStartLayer("V2", "CUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026384"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026385"> status = lefwEndLayer("V2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026386"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026387"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026388"> status = lefwStartLayerRouting("M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026389"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026390"> status = lefwLayerRouting("HORIZONTAL", 0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026391"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026392"> status = lefwLayerRoutingPitchXYDistance(1.8, 1.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026393"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026394"> status = lefwLayerRoutingDiagPitchXYDistance(1.5, 1.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026395"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026396"> status = lefwLayerRoutingWireExtension(8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026397"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026398"> status = lefwLayerRoutingSpacing(0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026399"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026400"> status = lefwLayerRoutingResistance("0.0608");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026401"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026402"> status = lefwLayerRoutingCapacitance("0.000184");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026403"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026404"> status = lefwEndLayerRouting("M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026405"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026406"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026407"> area = (double*)malloc(sizeof(double)*3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026408"> width = (double*)malloc(sizeof(double)*3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026409"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026410"> status = lefwStartLayerRouting("M4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026411"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026412"> status = lefwLayerRouting("HORIZONTAL", 0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026413"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026414"> status = lefwLayerRoutingMinimumcut(2, 0.50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026415"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026416"> status = lefwLayerRoutingMinimumcut(2, 0.70);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026417"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026418"> status = lefwLayerRoutingMinimumcutConnections("FROMBELOW");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026419"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026420"> status = lefwLayerRoutingMinimumcut(4, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026421"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026422"> status = lefwLayerRoutingMinimumcutConnections("FROMABOVE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026423"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026424"> status = lefwLayerRoutingMinimumcut(2, 1.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026425"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026426"> status = lefwLayerRoutingMinimumcutLengthWithin(20.0, 5.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026427"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026428"> area[0] = 0.40;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026429"> width[0] = 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026430"> area[1] = 0.40;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026431"> width[1] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026432"> area[2] = 0.80;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026433"> width[2] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026434"> status = lefwLayerRoutingMinenclosedarea(3, area, width);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026435"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026436"> status = lefwLayerRoutingMaxwidth(10.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026437"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026438"> status = lefwLayerRoutingProtrusion(0.30, 0.60, 1.20);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026439"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026440"> status = lefwLayerRoutingMinstep(0.20);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026441"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026442"> status = lefwLayerRoutingMinstep(0.05);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026443"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026444"> status = lefwLayerRoutingMinstepWithOptions(0.05, NULL, 0.08);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026445"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026446"> status = lefwLayerRoutingMinstepWithOptions(0.05, NULL, 0.16);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026447"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026448"> status = lefwLayerRoutingMinstepWithOptions(0.05, "INSDECORNER", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026449"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026450"> status = lefwLayerRoutingMinstepWithOptions(0.05, "INSIDECORNER", 0.15);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026451"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026452"> status = lefwLayerRoutingMinstepWithOptions(0.05, "STEP", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026453"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026454"> status = lefwLayerRoutingMinstepWithOptions(0.05, "STEP", 0.08);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026455"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026456"> status = lefwLayerRoutingMinstepWithOptions(0.04, "STEP", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026457"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026458"> status = lefwLayerRoutingMinstepMaxEdges(1.0, 2); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026459"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026460"> status = lefwEndLayerRouting("M4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026461"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026462"> free((char*)area);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026463"> free((char*)width);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026464"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026465"> status = lefwStartLayer("implant1", "IMPLANT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026466"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026467"> status = lefwLayerWidth(0.50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026468"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026469"> status = lefwLayerCutSpacing(0.50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026470"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026471"> status = lefwLayerCutSpacingEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026472"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026473"> status = lefwEndLayer("implant1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026474"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026475"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026476"> status = lefwStartLayer("implant2", "IMPLANT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026477"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026478"> status = lefwLayerWidth(0.50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026479"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026480"> status = lefwLayerCutSpacing(0.50);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026481"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026482"> status = lefwLayerCutSpacingEnd();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026483"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026484"> status = lefwEndLayer("implant2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026485"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026486"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026487"> status = lefwStartLayer("V3", "CUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026488"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026489"> status = lefwLayerWidth(0.60);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026490"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026491"> status = lefwEndLayer("V3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026492"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026493"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026494"> status = lefwStartLayerRouting("MT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026495"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026496"> status = lefwLayerRouting("VERTICAL", 0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026497"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026498"> status = lefwLayerRoutingPitch(1.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026499"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026500"> status = lefwLayerRoutingSpacing(0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026501"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026502"> status = lefwLayerRoutingResistance("0.0608");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026503"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026504"> status = lefwLayerRoutingCapacitance("0.000184");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026505"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026506"> status = lefwEndLayerRouting("MT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026507"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026508"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026509"> status = lefwStartLayer("OVERLAP", "OVERLAP");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026510"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026511"> status = lefwEndLayer("OVERLAP");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026512"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026513"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026514"> status = lefwStartLayerRouting("MET2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026515"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026516"> status = lefwLayerRouting("VERTICAL", 0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026517"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026518"> status = lefwMinimumDensity(20.2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026519"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026520"> status = lefwMaximumDensity(80.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026521"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026522"> status = lefwDensityCheckWindow(200.0, 200.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026523"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026524"> status = lefwDensityCheckStep(100.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026525"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026526"> status = lefwFillActiveSpacing(3.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026527"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026528"> status = lefwEndLayerRouting("MET2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026529"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026530"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026531"> status = lefwStartLayer("via34", "CUT"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026532"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026533"> status = lefwLayerWidth(0.25); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026534"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026535"> status = lefwLayerCutSpacing(0.1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026536"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026537"> status = lefwLayerCutSpacingCenterToCenter(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026538"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026539"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026540"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026541"> status = lefwLayerEnclosure(0, .05, .01, 0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026542"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026543"> status = lefwLayerEnclosureLength(0, .05, 0, 0.7); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026544"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026545"> status = lefwLayerEnclosure("BELOW", .07, .07, 1.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026546"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026547"> status = lefwLayerEnclosure("ABOVE", .09, .09, 1.0); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026548"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026549"> status = lefwLayerEnclosureWidth(0, .03, .03, 1.0, 0.2); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026550"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026551"> status = lefwEndLayer("via34"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026552"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026553"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026554"> status = lefwStartLayer("cut23", "CUT"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026555"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026556"> status = lefwLayerCutSpacing(0.20); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026557"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026558"> status = lefwLayerCutSpacingSameNet(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026559"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026560"> status = lefwLayerCutSpacingLayer("cut12", 1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026561"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026562"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026563"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026564"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026565"> status = lefwLayerCutSpacing(0.30); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026566"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026567"> status = lefwLayerCutSpacingCenterToCenter(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026568"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026569"> status = lefwLayerCutSpacingSameNet(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026570"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026571"> status = lefwLayerCutSpacingArea(0.02); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026572"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026573"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026574"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026575"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026576"> status = lefwLayerCutSpacing(0.40); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026577"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026578"> status = lefwLayerCutSpacingArea(0.5); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026579"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026580"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026581"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026582"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026583"> status = lefwLayerCutSpacing(0.10); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026584"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026585"> status = lefwLayerCutSpacingEnd(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026586"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026587"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026588"> wthn = (double*)malloc(sizeof(double)*3); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026589"> spng = (double*)malloc(sizeof(double)*3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026590"> wthn[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026591"> spng[0] = 0.11;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026592"> wthn[1] = 0.13;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026593"> spng[1] = 0.13;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026594"> wthn[2] = 0.11;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026595"> spng[2] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026596"> status = lefwLayerCutSpacingTableOrtho(3, wthn, spng);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026597"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026598"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026599"> wthn[0] = 3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026600"> spng[0] = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026601"> status = lefwLayerArraySpacing(0, 2.0, 0.2, 1, wthn, spng);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026602"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026603"> wthn[0] = 3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026604"> spng[0] = 1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026605"> wthn[1] = 4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026606"> spng[1] = 1.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026607"> wthn[2] = 5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026608"> spng[2] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026609"> status = lefwLayerArraySpacing(1, 2.0, 0.2, 3, wthn, spng);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026610"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026611"> free((char*)wthn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026612"> free((char*)spng);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026613"> status = lefwEndLayer("cut23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026614"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026615"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026616"> status = lefwStartLayerRouting("cut24"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026617"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026618"> status = lefwLayerRouting("HORIZONTAL", 1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026619"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026620"> status = lefwLayerRoutingPitch(1.2); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026621"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026622"> status = lefwLayerRoutingSpacing(0.10); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026623"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026624"> status = lefwLayerRoutingSpacing(0.12); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026625"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026626"> status = lefwLayerRoutingSpacingNotchLength(0.15); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026627"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026628"> status = lefwLayerRoutingSpacing(0.14); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026629"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026630"> status = lefwLayerRoutingSpacingEndOfNotchWidth(0.15, 0.16, 0.08); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026631"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026632"> status = lefwEndLayerRouting("cut24"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026633"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026634"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026635"> status = lefwStartLayerRouting("cut25"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026636"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026637"> status = lefwLayerRoutingPitch(1.2); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026638"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026639"> status = lefwLayerRouting("HORIZONTAL", 1); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026640"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026641"> status = lefwLayerRoutingWireExtension(7); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026642"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026643"> status = lefwLayerRoutingStartSpacingtableTwoWidths(); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026644"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026645"> wthn = (double*)malloc(sizeof(double)*4); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026646"> wthn[0] = 0.15;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026647"> wthn[1] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026648"> wthn[2] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026649"> wthn[3] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026650"> status = lefwLayerRoutingSpacingtableTwoWidthsWidth(0.0, 0, 4, wthn); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026651"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026652"> wthn[0] = 0.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026653"> wthn[1] = 0.25;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026654"> wthn[2] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026655"> wthn[3] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026656"> status = lefwLayerRoutingSpacingtableTwoWidthsWidth(0.25, 0.1, 4, wthn);// 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026657"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026658"> wthn[0] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026659"> wthn[1] = 0.50;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026660"> wthn[2] = 0.60;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026661"> wthn[3] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026662"> status = lefwLayerRoutingSpacingtableTwoWidthsWidth(1.5, 1.5, 4, wthn);// 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026663"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026664"> wthn[0] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026665"> wthn[1] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026666"> wthn[2] = 1.00;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026667"> wthn[3] = 1.20;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026668"> status = lefwLayerRoutingSpacingtableTwoWidthsWidth(3.0, 3.0, 4, wthn);// 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026669"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026670"> free(wthn);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026671"> status = lefwLayerRoutineEndSpacingtable();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026672"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026673"> status = lefwEndLayerRouting("cut25"); // 5.7</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026674"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026675"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026676"> // MAXVIASTACK</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026677"> status = lefwMaxviastack(4, "m1", "m7");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026678"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026679"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026680"> // VIA</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026681"> status = lefwStartVia("RX_PC", "DEFAULT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026682"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026683"> status = lefwViaResistance(2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026684"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026685"> status = lefwViaLayer("RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026686"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026687"> status = lefwViaLayerRect(-0.7, -0.7, 0.7, 0.7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026688"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026689"> status = lefwViaLayer("CUT12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026690"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026691"> status = lefwViaLayerRect(-0.25, -0.25, 0.25, 0.25);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026692"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026693"> status = lefwViaLayer("PC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026694"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026695"> status = lefwViaLayerRect(-0.6, -0.6, 0.6, 0.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026696"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026697"> status = lefwStringProperty("stringProperty", "DEFAULT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026698"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026699"> status = lefwRealProperty("realProperty", 32.33);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026700"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026701"> status = lefwIntProperty("COUNT", 34);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026702"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026703"> status = lefwEndVia("PC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026704"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026705"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026706"> status = lefwStartVia("M2_M3_PWR", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026707"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026708"> status = lefwViaResistance(0.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026709"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026710"> status = lefwViaLayer("M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026711"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026712"> status = lefwViaLayerRect(-1.35, -1.35, 1.35, 1.35);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026713"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026714"> status = lefwViaLayer("V2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026715"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026716"> status = lefwViaLayerRect(-1.35, -1.35, -0.45, 1.35);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026717"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026718"> status = lefwViaLayerRect(0.45, -1.35, 1.35, -0.45);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026719"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026720"> status = lefwViaLayerRect(0.45, 0.45, 1.35, 1.35);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026721"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026722"> status = lefwViaLayer("M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026723"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026724"> status = lefwViaLayerRect(-1.35, -1.35, 1.35, 1.35);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026725"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026726"> status = lefwEndVia("M2_M3_PWR");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026727"> CHECK_STATUS(status);</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"> xl = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026730"> yl = (double*)malloc(sizeof(double)*6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026731"> status = lefwStartVia("IN1X", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026732"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026733"> status = lefwViaLayer("metal2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026734"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026735"> xl[0] = -2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026736"> yl[0] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026737"> xl[1] = -0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026738"> yl[1] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026739"> xl[2] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026740"> yl[2] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026741"> xl[3] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026742"> yl[3] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026743"> xl[4] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026744"> yl[4] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026745"> xl[5] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026746"> yl[5] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026747"> status = lefwViaLayerPolygon(6, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026748"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026749"> xl[0] = -1.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026750"> yl[0] = -2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026751"> xl[1] = -0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026752"> yl[1] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026753"> xl[2] = 1.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026754"> yl[2] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026755"> xl[3] = 0.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026756"> yl[3] = -2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026757"> status = lefwViaLayerPolygon(4, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026758"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026759"> xl[0] = -3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026760"> yl[0] = -2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026761"> xl[1] = -0.3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026762"> yl[1] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026763"> xl[2] = 3.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026764"> yl[2] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026765"> xl[3] = 0.3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026766"> yl[3] = -2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026767"> status = lefwViaLayerPolygon(4, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026768"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026769"> xl[0] = -4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026770"> yl[0] = -2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026771"> xl[1] = -0.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026772"> yl[1] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026773"> xl[2] = 4.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026774"> yl[2] = 2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026775"> xl[3] = 0.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026776"> yl[3] = -2.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026777"> status = lefwViaLayerPolygon(4, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026778"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026779"> status = lefwViaLayer("cut23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026780"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026781"> status = lefwViaLayerRect(-0.4, -0.4, 0.4, 0.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026782"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026783"> xl[0] = -2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026784"> yl[0] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026785"> xl[1] = -0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026786"> yl[1] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026787"> xl[2] = 2.1;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026788"> yl[2] = 1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026789"> xl[3] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026790"> yl[3] = -1.0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026791"> status = lefwViaLayerPolygon(4, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026792"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026793"> status = lefwEndVia("IN1X");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026794"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026795"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026796"> status = lefwStartVia("myBlockVia", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026797"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026798"> status = lefwViaViarule("DEFAULT", 0.1, 0.1, "metal1", "via12", "metal2",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026799"> 0.1, 0.1, 0.05, 0.01, 0.01, 0.05);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026800"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026801"> status = lefwViaViaruleRowCol(1, 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026802"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026803"> status = lefwViaViaruleOrigin(1.5, 2.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026804"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026805"> status = lefwViaViaruleOffset(1.5, 2.5, 3.5, 4.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026806"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026807"> status = lefwViaViarulePattern("2_1RF1RF1R71R0_3_R1FFFF");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026808"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026809"> status = lefwEndVia("myBlockVia");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026810"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026811"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026812"> status = lefwStartVia("myVia23", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026813"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026814"> status = lefwViaLayer("metal2"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026815"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026816"> status = lefwViaLayerPolygon(6, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026817"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026818"> status = lefwViaLayer("cut23"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026819"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026820"> status = lefwViaLayerRect(-0.4, -0.4, 0.4, 0.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026821"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026822"> status = lefwViaLayer("metal3"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026823"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026824"> status = lefwViaLayerPolygon(5, xl, yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026825"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026826"> status = lefwEndVia("myVia23");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026827"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026828"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026829"> free((char*)xl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026830"> free((char*)yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026831"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026832"> // VIARULE</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026833"> status = lefwStartViaRule("VIALIST12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026834"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026835"> lefwAddComment("Break up the old lefwViaRule into 2 routines");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026836"> lefwAddComment("lefwViaRuleLayer and lefwViaRuleVia");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026837"> status = lefwViaRuleLayer("M1", NULL, 9.0, 9.6, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026838"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026839"> status = lefwViaRuleLayer("M2", NULL, 3.0, 3.0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026840"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026841"> status = lefwViaRuleVia("VIACENTER12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026842"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026843"> status = lefwStringProperty("vrsp", "new");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026844"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026845"> status = lefwIntProperty("vrip", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026846"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026847"> status = lefwRealProperty("vrrp", 4.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026848"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026849"> status = lefwEndViaRule("VIALIST12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026850"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026851"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026852"> // VIARULE with GENERATE</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026853"> lefwAddComment("Break up the old lefwViaRuleGenearte into 4 routines");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026854"> lefwAddComment("lefwStartViaRuleGen, lefwViaRuleGenLayer,");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026855"> lefwAddComment("lefwViaRuleGenLayer3, and lefwEndViaRuleGen");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026856"> status = lefwStartViaRuleGen("VIAGEN12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026857"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026858"> status = lefwViaRuleGenLayer("M1", NULL, 0.1, 19, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026859"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026860"> status = lefwViaRuleGenLayer("M2", NULL, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026861"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026862"> status = lefwViaRuleGenLayer3("V1", -0.8, -0.8, 0.8, 0.8, 5.6, 6.0, 0.2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026863"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026864"> status = lefwEndViaRuleGen("VIAGEN12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026865"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026866"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026867"> // VIARULE with GENERATE & ENCLOSURE & DEFAULT </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026868"> status = lefwStartViaRuleGen("via12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026869"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026870"> status = lefwViaRuleGenDefault();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026871"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026872"> status = lefwViaRuleGenLayerEnclosure("m1", 0.05, 0.005, 1.0, 100.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026873"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026874"> status = lefwViaRuleGenLayerEnclosure("m2", 0.05, 0.005, 1.0, 100.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026875"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026876"> status = lefwViaRuleGenLayer3("cut12", -0.07, -0.07, 0.07, 0.07, 0.16, 0.16, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026877"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026878"> status = lefwEndViaRuleGen("via12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026879"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026880"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026881"> // NONDEFAULTRULE</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026882"> status = lefwStartNonDefaultRule("RULE1"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026883"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026884"> status = lefwNonDefaultRuleHardspacing(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026885"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026886"> status = lefwNonDefaultRuleLayer("RX", 10.0, 2.2, 6, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026887"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026888"> status = lefwNonDefaultRuleLayer("PC", 10.0, 2.2, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026889"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026890"> status = lefwNonDefaultRuleLayer("M1", 10.0, 2.2, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026891"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026892"> status = lefwStartVia("nd1VARX0", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026893"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026894"> status = lefwViaResistance(0.2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026895"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026896"> status = lefwViaLayer("RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026897"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026898"> status = lefwViaLayerRect(-3, -3, 3, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026899"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026900"> status = lefwViaLayer("CUT12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026901"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026902"> status = lefwViaLayerRect(-1.0, -1.0, 1.0, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026903"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026904"> status = lefwViaLayer("PC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026905"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026906"> status = lefwViaLayerRect(-3, -3, 3, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026907"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026908"> status = lefwEndVia("nd1VARX0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026909"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026910"> status = lefwStartSpacing();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026911"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026912"> status = lefwSpacing("CUT01", "RX", 0.1, "STACK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026913"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026914"> status = lefwEndSpacing();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026915"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026916"> status = lefwEndNonDefaultRule("RULE1"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026917"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026918"> status = lefwStartNonDefaultRule("wide1_5x"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026919"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026920"> status = lefwNonDefaultRuleLayer("fw", 4.8, 4.8, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026921"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026922"> status = lefwNonDefaultRuleStartVia("nd1VIARX0", "DEFAULT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026923"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026924"> status = lefwViaResistance(0.2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026925"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026926"> status = lefwViaLayer("RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026927"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026928"> status = lefwViaLayerRect(-3, -3, 3, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026929"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026930"> status = lefwViaLayer("CUT12");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026931"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026932"> status = lefwViaLayerRect(-1.0, -1.0, 1.0, 1.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026933"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026934"> status = lefwViaLayer("PC");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026935"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026936"> status = lefwViaLayerRect(-3, -3, 3, 3);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026937"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026938"> status = lefwNonDefaultRuleEndVia("nd1VIARX0");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026939"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026940"> status = lefwNonDefaultRuleUseVia("via12_fixed_analog_via");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026941"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026942"> status = lefwNonDefaultRuleMinCuts("cut12", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026943"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026944"> status = lefwNonDefaultRuleUseVia("via23_fixed_analog_via");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026945"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026946"> status = lefwNonDefaultRuleMinCuts("cut23", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026947"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026948"> status = lefwNonDefaultRuleUseViaRule("viaRule23_fixed_analog_via");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026949"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026950"> status = lefwEndNonDefaultRule("wide1_5x"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026951"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026952"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026953"> // SPACING</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026954"> status = lefwStartSpacing();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026955"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026956"> status = lefwSpacing("CUT01", "CA", 1.5, NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026957"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026958"> status = lefwSpacing("CA", "V1", 1.5, "STACK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026959"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026960"> status = lefwSpacing("M1", "M1", 3.5, "STACK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026961"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026962"> status = lefwSpacing("V1", "V2", 1.5, "STACK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026963"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026964"> status = lefwSpacing("M2", "M2", 3.5, "STACK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026965"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026966"> status = lefwSpacing("V2", "V3", 1.5, "STACK");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026967"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026968"> status = lefwEndSpacing();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026969"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026970"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026971"> // MINFEATURE & DIELECTRIC</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026972"> status = lefwMinFeature(0.1, 0.1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026973"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026974"> status = lefwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026975"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026976"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026977"> // SITE</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026978"> status = lefwSite("CORE1", "CORE", "X", 67.2, 6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026979"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026980"> status = lefwSiteRowPattern("Fsite", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026981"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026982"> status = lefwSiteRowPatternStr("Lsite", "N");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026983"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026984"> status = lefwSiteRowPatternStr("Lsite", "FS");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026985"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026986"> lefwEndSite("CORE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026987"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026988"> status = lefwSite("CORE", "CORE", "Y", 3.6, 28.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026989"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026990"> lefwEndSite("CORE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026991"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026992"> status = lefwSite("MRCORE", "CORE", "Y", 3.6, 28.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026993"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026994"> lefwEndSite("MRCORE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026995"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026996"> status = lefwSite("IOWIRED", "PAD", NULL, 57.6, 432);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026997"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026998"> lefwEndSite("IOWIRED");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1026999"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027000"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027001"> // ARRAY</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027002"> status = lefwStartArray("M7E4XXX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027003"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027004"> status = lefwArraySite("CORE", -5021.450, -4998.000, 0, 14346, 595, 0.700,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027005"> 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027006"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027007"> status = lefwArraySiteStr("CORE", -5021.450, -4998.600, "FS", 14346, 595,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027008"> 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027009"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027010"> status = lefwArraySite("IO", 6148.800, 5800.000, 3, 1, 1, 0.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027011"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027012"> status = lefwArraySiteStr("IO", 6148.800, 5240.000, "E", 1, 1, 0.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027013"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027014"> status = lefwArraySite("COVER", -7315.0, -7315.000, 1, 1, 1, 0.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027015"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027016"> status = lefwArraySiteStr("COVER", 7315.0, 7315.000, "FN", 1, 1, 0.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027017"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027018"> status = lefwArrayCanplace("COVER", -7315.000, -7315.000, 0, 1, 1, 0.000,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027019"> 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027020"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027021"> status = lefwArrayCanplaceStr("COVER", -7250.000, -7250.000, "N", 5, 1,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027022"> 40.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027023"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027024"> status = lefwArrayCannotoccupy("CORE", -5021.450, -4989.600, 6, 100, 595,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027025"> 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027026"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027027"> status = lefwArrayCannotoccupyStr("CORE", -5021.450, -4989.600, "N", 100, 595,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027028"> 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027029"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027030"> status = lefwArrayTracks("X", -6148.800, 17569, 0.700, "RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027031"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027032"> status = lefwArrayTracks("Y", -6148.800, 20497, 0.600, "RX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027033"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027034"> status = lefwStartArrayFloorplan("100%");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027035"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027036"> status = lefwArrayFloorplan("CANPLACE", "COVER", -7315.000, -7315.000, 1, 1,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027037"> 1, 0.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027038"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027039"> status = lefwArrayFloorplanStr("CANPLACE", "COVER", -7250.000, -7250.000,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027040"> "N", 5, 1, 40.000, 0.000);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027041"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027042"> status = lefwArrayFloorplan("CANPLACE", "CORE", -5021.000, -4998.000, 1,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027043"> 14346, 595, 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027044"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027045"> status = lefwArrayFloorplanStr("CANPLACE", "CORE", -5021.000, -4998.000, "FS",</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027046"> 100, 595, 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027047"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027048"> status = lefwArrayFloorplan("CANNOTOCCUPY", "CORE", -5021.000, -4998.000, 7,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027049"> 14346, 595, 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027050"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027051"> status = lefwArrayFloorplanStr("CANNOTOCCUPY", "CORE", -5021.000, -4998.000,</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027052"> "E", 100, 595, 0.700, 16.800);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027053"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027054"> status = lefwEndArrayFloorplan("100%");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027055"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027056"> status = lefwArrayGcellgrid("X", -6157.200, 1467, 8.400);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027057"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027058"> status = lefwArrayGcellgrid("Y", -6157.200, 1467, 8.400);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027059"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027060"> status = lefwEndArray("M7E4XXX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027061"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027062"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027063"> // MACRO</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027064"> status = lefwStartMacro("CHK3A");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027065"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027066"> status = lefwMacroClass("RING", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027067"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027068"> status = lefwMacroOrigin(0.9, 0.9);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027069"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027070"> status = lefwMacroSize(10.8, 28.8);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027071"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027072"> status = lefwMacroSymmetry("X Y R90");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027073"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027074"> status = lefwMacroSite("CORE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027075"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027076"> status = lefwStartMacroPin("GND");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027077"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027078"> status = lefwMacroPinDirection("INOUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027079"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027080"> status = lefwMacroPinMustjoin("PA3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027081"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027082"> status = lefwMacroPinTaperRule("RULE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027083"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027084"> status = lefwMacroPinUse("GROUND");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027085"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027086"> status = lefwMacroPinShape("ABUTMENT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027087"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027088"> status = lefwMacroPinSupplySensitivity("vddpin1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027089"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027090"> status = lefwMacroPinNetExpr("power1 VDD1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027091"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027092"> status = lefwMacroPinAntennaMetalArea(3, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027093"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027094"> // MACRO - PIN</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027095"> status = lefwStartMacroPinPort(NULL);</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 = lefwMacroPinPortLayer("M1", 0.05);</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 = lefwMacroPinPortLayerRect(-0.9, 3, 9.9, 6, 0, 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 = lefwEndMacroPinPort();</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 = lefwStringProperty("TYPE", "special");</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 = lefwIntProperty("intProp", 23);</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 = lefwRealProperty("realProp", 24.25);</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 = lefwMacroPinAntennaModel("OXIDE1");</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 = lefwEndMacroPin("GND");</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 = lefwStartMacroPin("VDD");</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 = lefwMacroPinDirection("INOUT");</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 = lefwMacroPinUse("POWER");</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 = lefwMacroPinShape("ABUTMENT"); </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 = lefwMacroPinNetExpr("power2 VDD2");</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"> // MACRO - PIN - PORT</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027124"> status = lefwStartMacroPinPort(NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027125"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027126"> status = lefwMacroPinPortLayer("M1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027127"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027128"> status = lefwMacroPinPortLayerRect(-0.9, 21, 9.9, 24, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027129"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027130"> status = lefwMacroPinPortVia(100, 300, "nd1VIA12", 1, 2, 1, 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027131"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027132"> status = lefwEndMacroPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027133"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027134"> status = lefwStartMacroPinPort("BUMP");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027135"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027136"> status = lefwMacroPinPortLayer("M2", 0.06);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027137"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027138"> status = lefwEndMacroPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027139"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027140"> xl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027141"> yl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027142"> xl[0] = 30.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027143"> yl[0] = 30.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027144"> xl[1] = 42;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027145"> yl[1] = 53.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027146"> xl[2] = 60.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027147"> yl[2] = 25.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027148"> xl[3] = 47;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027149"> yl[3] = 15.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027150"> xl[4] = 20.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027151"> yl[4] = 0.5;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027152"> status = lefwStartMacroPinPort("CORE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027153"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027154"> status = lefwMacroPinPortLayer("P1", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027155"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027156"> status = lefwMacroPinPortLayerPolygon(5, xl, yl, 5, 6, 454.6, 345.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027157"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027158"> status = lefwMacroPinPortLayerPolygon(5, xl, yl, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027159"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027160"> status = lefwEndMacroPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027161"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027162"> free((char*)xl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027163"> free((char*)yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027164"> status = lefwEndMacroPin("VDD");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027165"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027166"> status = lefwStartMacroPin("PA3"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027167"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027168"> status = lefwMacroPinDirection("INPUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027169"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027170"> status = lefwMacroPinNetExpr("gnd1 GND");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027171"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027172"> // 5.4</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027173"> status = lefwMacroPinAntennaPartialMetalArea(4, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027174"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027175"> status = lefwMacroPinAntennaPartialMetalArea(5, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027176"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027177"> status = lefwMacroPinAntennaPartialMetalSideArea(5, "M2");</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"> status = lefwMacroPinAntennaGateArea(1, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027180"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027181"> status = lefwMacroPinAntennaGateArea(2, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027182"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027183"> status = lefwMacroPinAntennaGateArea(3, "M3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027184"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027185"> status = lefwMacroPinAntennaDiffArea(1, "M1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027186"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027187"> status = lefwMacroPinAntennaMaxAreaCar(1, "L1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027188"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027189"> status = lefwMacroPinAntennaMaxSideAreaCar(1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027190"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027191"> status = lefwMacroPinAntennaPartialCutArea(1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027192"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027193"> status = lefwMacroPinAntennaPartialCutArea(2, "M2");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027194"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027195"> status = lefwMacroPinAntennaPartialCutArea(3, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027196"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027197"> status = lefwMacroPinAntennaPartialCutArea(4, "M4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027198"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027199"> status = lefwMacroPinAntennaMaxCutCar(1, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027200"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027201"> status = lefwStartMacroPinPort("CORE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027202"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027203"> status = lefwMacroPinPortLayer("M1", 0.02);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027204"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027205"> status = lefwMacroPinPortLayerRect(1.35, -0.45, 2.25, 0.45, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027206"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027207"> status = lefwMacroPinPortLayerRect(-0.45, -0.45, 0.45, 0.45, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027208"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027209"> status = lefwEndMacroPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027210"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027211"> status = lefwStartMacroPinPort(NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027212"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027213"> status = lefwMacroPinPortLayer("PC", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027214"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027215"> status = lefwMacroPinPortLayerRect(-0.45, 12.15, 0.45, 13.05, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027216"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027217"> status = lefwEndMacroPinPort(); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027218"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027219"> status = lefwStartMacroPinPort(NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027220"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027221"> status = lefwMacroPinPortDesignRuleWidth("PC", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027222"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027223"> status = lefwMacroPinPortLayerRect(8.55, 8.55, 9.45, 9.45, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027224"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027225"> status = lefwMacroPinPortLayerRect(6.75, 6.75, 7.65, 7.65, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027226"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027227"> status = lefwMacroPinPortLayerRect(6.75, 8.75, 7.65, 9.65, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027228"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027229"> status = lefwMacroPinPortLayerRect(6.75, 10.35, 7.65, 11.25, 0, 0, 0, 0);</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"> status = lefwEndMacroPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027232"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027233"> status = lefwEndMacroPin("PA3"); </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"> // MACRO - OBS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027236"> status = lefwStartMacroObs();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027237"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027238"> status = lefwMacroObsLayer("M1", 5.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027239"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027240"> status = lefwMacroObsLayerWidth(5.4);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027241"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027242"> status = lefwMacroObsLayerRect(6.6, -0.6, 9.6, 0.6, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027243"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027244"> status = lefwMacroObsLayerRect(4.8, 12.9, 9.6, 13.2, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027245"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027246"> status = lefwMacroObsLayerRect(3, 13.8, 7.8, 16.8, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027247"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027248"> status = lefwMacroObsLayerRect(3, -0.6, 6, 0.6, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027249"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027250"> status = lefwEndMacroObs();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027251"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027252"> status = lefwStringProperty("stringProp", "first");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027253"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027254"> status = lefwIntProperty("integerProp", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027255"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027256"> status = lefwRealProperty("WEIGHT", 30.31);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027257"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027258"> status = lefwEndMacro("CHK3A");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027259"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027260"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027261"> // 2nd MACRO</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027262"> status = lefwStartMacro("INV");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027263"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027264"> status = lefwMacroEEQ("CHK1");</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 = lefwMacroClass("CORE", "SPACER");</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 = lefwMacroForeign("INVS", 0, 0, -1);</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 = lefwMacroSize(67.2, 24);</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 = lefwMacroSymmetry("X Y R90");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027273"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027274"> status = lefwMacroSite("CORE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027275"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027276"> status = lefwStartMacroDensity("metal1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027277"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027278"> status = lefwMacroDensityLayerRect(0, 0, 100, 100, 45.5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027279"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027280"> status = lefwMacroDensityLayerRect(100, 0, 200, 100, 42.2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027281"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027282"> status = lefwEndMacroDensity();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027283"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027284"> status = lefwStartMacroDensity("metal2");</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 = lefwMacroDensityLayerRect(200, 1, 300, 200, 43.3);</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 = lefwEndMacroDensity();</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 = lefwStartMacroPin("Z");</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"> status = lefwMacroPinDirection("OUTPUT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027293"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027294"> status = lefwMacroPinUse("SIGNAL");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027295"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027296"> status = lefwMacroPinShape("ABUTMENT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027297"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027298"> status = lefwMacroPinAntennaModel("OXIDE1");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027299"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027300"> status = lefwStartMacroPinPort(NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027301"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027302"> status = lefwMacroPinPortLayer("M2", 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027303"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027304"> status = lefwMacroPinPortLayerWidth(5.6);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027305"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027306"> xpath = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027307"> ypath = (double*)malloc(sizeof(double)*7);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027308"> xpath[0] = 30.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027309"> ypath[0] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027310"> xpath[1] = 42;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027311"> ypath[1] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027312"> xpath[2] = 30.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027313"> ypath[2] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027314"> xpath[3] = 42;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027315"> ypath[3] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027316"> xpath[4] = 30.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027317"> ypath[4] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027318"> xpath[5] = 42;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027319"> ypath[5] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027320"> xpath[6] = 30.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027321"> ypath[6] = 9;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027322"> status = lefwMacroPinPortLayerPath(7, xpath, ypath, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027323"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027324"> status = lefwEndMacroPinPort();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027325"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027326"> status = lefwEndMacroPin("Z"); </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027327"> free((char*)xpath);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027328"> free((char*)ypath);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027329"> // MACRO - OBS</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027330"> status = lefwStartMacroObs();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027331"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027332"> status = lefwMacroObsDesignRuleWidth("M1", 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027333"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027334"> status = lefwMacroObsLayerRect(24.1, 1.5, 43.5, 208.5, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027335"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027336"> xpath = (double*)malloc(sizeof(double)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027337"> ypath = (double*)malloc(sizeof(double)*2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027338"> xpath[0] = 8.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027339"> ypath[0] = 3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027340"> xpath[1] = 8.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027341"> ypath[1] = 124;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027342"> status = lefwMacroObsLayerPath(2, xpath, ypath, 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027343"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027344"> xpath[0] = 58.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027345"> ypath[0] = 3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027346"> xpath[1] = 58.8;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027347"> ypath[1] = 123;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027348"> status = lefwMacroObsLayerPath(2, xpath, ypath, 0, 0, 0, 0);</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"> xpath[0] = 64.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027351"> ypath[0] = 3;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027352"> xpath[1] = 64.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027353"> ypath[1] = 123;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027354"> status = lefwMacroObsLayerPath(2, xpath, ypath, 0, 0, 0, 0);</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"> free((char*)xpath);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027357"> free((char*)ypath);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027358"> xl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027359"> yl = (double*)malloc(sizeof(double)*5);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027360"> xl[0] = 6.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027361"> xl[1] = 3.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027362"> xl[2] = 5.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027363"> xl[3] = 8.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027364"> xl[4] = 9.4;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027365"> yl[0] = 9.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027366"> yl[1] = 0.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027367"> yl[2] = 7.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027368"> yl[3] = 8.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027369"> yl[4] = 1.2;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027370"> status = lefwMacroObsLayerPolygon(5, xl, yl, 0, 0, 0, 0);</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"> free((char*)xl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027373"> free((char*)yl);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027374"> status = lefwEndMacroObs();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027375"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027376"> status = lefwEndMacro("INV");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027377"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027378"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027379"> // 3rd MACRO</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027380"> status = lefwStartMacro("DFF3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027381"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027382"> status = lefwMacroClass("CORE", "ANTENNACELL");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027383"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027384"> status = lefwMacroForeignStr("DFF3S", 0, 0, "N");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027385"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027386"> status = lefwMacroSize(67.2, 210);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027387"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027388"> status = lefwMacroSymmetry("X Y R90");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027389"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027390"> status = lefwMacroSitePattern("CORE", 34, 54, 7, 30, 3, 1, 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027391"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027392"> status = lefwMacroSitePatternStr("CORE1", 21, 68, "S", 30, 3, 2, 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027393"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027394"> status = lefwEndMacro("DFF3");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027395"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027396"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027397"> status = lefwStartMacro("DFF4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027398"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027399"> status = lefwMacroClass("COVER", "BUMP");</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 = lefwMacroForeignStr("DFF3S", 0, 0, "");</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 = lefwEndMacro("DFF4");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027404"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027405"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027406"> status = lefwStartMacro("DFF5");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027407"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027408"> status = lefwMacroClass("COVER", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027409"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027410"> status = lefwMacroForeignStr("DFF3S", 0, 0, "");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027411"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027412"> status = lefwEndMacro("DFF5");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027413"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027414"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027415"> status = lefwStartMacro("DFF6");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027416"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027417"> status = lefwMacroClass("BLOCK", "BLACKBOX");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027418"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027419"> status = lefwMacroForeignStr("DFF3S", 0, 0, "");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027420"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027421"> status = lefwEndMacro("DFF6");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027422"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027423"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027424"> status = lefwStartMacro("DFF7");</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"> status = lefwMacroClass("PAD", "AREAIO");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027427"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027428"> status = lefwMacroForeignStr("DFF3S", 0, 0, "");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027429"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027430"> status = lefwEndMacro("DFF7");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027431"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027432"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027433"> status = lefwStartMacro("DFF8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027434"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027435"> status = lefwMacroClass("BLOCK", "SOFT");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027436"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027437"> status = lefwEndMacro("DFF8");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027438"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027439"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027440"> status = lefwStartMacro("DFF9");</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 = lefwMacroClass("CORE", "WELLTAP");</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 = lefwEndMacro("DFF9");</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027447"> status = lefwStartMacro("myTest");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027448"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027449"> status = lefwMacroClass("CORE", NULL);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027450"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027451"> status = lefwMacroSize(10.0, 14.0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027452"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027453"> status = lefwMacroSymmetry("X");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027454"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027455"> status = lefwMacroSitePatternStr("Fsite", 0, 0, "N", 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027456"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027457"> status = lefwMacroSitePatternStr("Fsite", 0, 7.0, "FS", 30, 3, 2, 2);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027458"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027459"> status = lefwMacroSitePatternStr("Fsite", 4.0, 0, "N", 0, 0, 0, 0);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027460"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027461"> status = lefwEndMacro("myTest");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027462"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027463"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027464"> // ANTENNA, this will generate error for 5.4 since I already have ANTENNA</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027465"> // somewhere</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027466"> status = lefwAntenna("INPUTPINANTENNASIZE", 1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027467"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027468"> status = lefwAntenna("OUTPUTPINANTENNASIZE", -1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027469"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027470"> status = lefwAntenna("INOUTPINANTENNASIZE", -1);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027471"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027472"> status = lefwNewLine();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027473"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027474"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027475"> // BEGINEXT</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027476"> status = lefwStartBeginext("SIGNATURE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027477"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027478"> lefwAddIndent();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027479"> status = lefwBeginextCreator("CADENCE");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027480"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027481"> status = lefwEndBeginext();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027482"> CHECK_STATUS(status);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027483"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027484"> status = lefwEnd();</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"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027487"> lineNum = lefwCurrentLineNumber();</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027488"> if (lineNum == 0)</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027489"> fprintf(stderr, "ERROR: Nothing has been written!!!\n");</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027490"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027491"> fclose(fout);</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027492"> </a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027493"> return 0;</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027494">}</a></font>
|
|
</p>
|
|
<p>
|
|
<font size="2" face=""Courier New"" color="#000000"><a name="1027495"> </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="lefapiTOC.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="lefapi.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>
|