346 lines
16 KiB
HTML
346 lines
16 KiB
HTML
|
<?xml version="1.0" encoding="utf-8" ?>
|
||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
<meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
|
||
|
<title></title>
|
||
|
<meta name="date" content="16, september 2014" />
|
||
|
<meta name="authors" content="Jean-Paul Chaput" />
|
||
|
<link rel="stylesheet" href="./SoC.css" type="text/css" />
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="document">
|
||
|
|
||
|
<table class="docinfo" frame="void" rules="none">
|
||
|
<col class="docinfo-name" />
|
||
|
<col class="docinfo-content" />
|
||
|
<tbody valign="top">
|
||
|
<tr><th class="docinfo-name">Date:</th>
|
||
|
<td>16, september 2014</td></tr>
|
||
|
<tr><th class="docinfo-name">Authors:</th>
|
||
|
<td>Jean-Paul Chaput</td></tr>
|
||
|
<tr><th class="docinfo-name">Contact:</th>
|
||
|
<td><<a class="reference external" href="mailto:alliance-users@soc.lip6.fr">alliance-users@soc.lip6.fr</a>></td></tr>
|
||
|
<tr><th class="docinfo-name">Version:</th>
|
||
|
<td>0.1</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<!-- -*- Mode: rst -*- -->
|
||
|
<!-- -*- Mode: rst -*- -->
|
||
|
<!-- URLs that changes between the various backends. -->
|
||
|
<!-- For HTML backend -->
|
||
|
<!-- Stand-alone images. -->
|
||
|
<!-- Direct LaTeX commands encapsulation. -->
|
||
|
<!-- -*- Mode: rst -*- -->
|
||
|
<!-- Acronyms & names. -->
|
||
|
<!-- Tools -->
|
||
|
<!-- RDS file syntax. -->
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
<p><strong>Disclaimer:</strong> This document is still far from complete.</p>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
<div class="section" id="rds-file-format">
|
||
|
<h1><a class="toc-backref" href="#id1">RDS File Format</a></h1>
|
||
|
<div class="contents topic" id="contents">
|
||
|
<p class="topic-title first">Contents</p>
|
||
|
<ul class="simple">
|
||
|
<li><a class="reference internal" href="#rds-file-format" id="id1">RDS File Format</a><ul>
|
||
|
<li><a class="reference internal" href="#introduction" id="id2">Introduction</a></li>
|
||
|
<li><a class="reference internal" href="#physical-grid-lambda-value" id="id3">Physical Grid & Lambda Value</a></li>
|
||
|
<li><a class="reference internal" href="#the-mbk-to-rds-segment-table" id="id4">The <tt class="docutils literal">MBK_TO_RDS_SEGMENT</tt> table</a></li>
|
||
|
<li><a class="reference internal" href="#the-mbk-to-rds-via-table" id="id5">The <tt class="docutils literal">MBK_TO_RDS_VIA</tt> table</a></li>
|
||
|
<li><a class="reference internal" href="#the-mbk-to-rds-bigvia-hole-table" id="id6">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt> table</a></li>
|
||
|
<li><a class="reference internal" href="#the-mbk-to-rds-bigvia-metal-table" id="id7">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_METAL</tt> table</a></li>
|
||
|
<li><a class="reference internal" href="#the-mbk-wiresetting-table" id="id8">The <tt class="docutils literal">MBK_WIRESETTING</tt> table</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
<div class="section" id="introduction">
|
||
|
<h2><a class="toc-backref" href="#id2">Introduction</a></h2>
|
||
|
<p>The RDS file control how a symbolic layout is transformed into it's real
|
||
|
conterpart.</p>
|
||
|
<div class="note">
|
||
|
<p class="first admonition-title">Note</p>
|
||
|
<p class="last"><strong>Unit used inside the RDS file:</strong> all units are expressed in micrometers.</p>
|
||
|
</div>
|
||
|
<p>Alliance tools relying on the RDS file, and what layers are active for them:</p>
|
||
|
<table border="1" class="docutils">
|
||
|
<colgroup>
|
||
|
<col width="47%" />
|
||
|
<col width="16%" />
|
||
|
<col width="37%" />
|
||
|
</colgroup>
|
||
|
<thead valign="bottom">
|
||
|
<tr><th class="head">Tool</th>
|
||
|
<th class="head">Name</th>
|
||
|
<th class="head">RDS Flags</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody valign="top">
|
||
|
<tr><td>Layout editor</td>
|
||
|
<td><tt class="docutils literal">graal</tt></td>
|
||
|
<td><tt class="docutils literal">ALL</tt></td>
|
||
|
</tr>
|
||
|
<tr><td>Design Rule Checker</td>
|
||
|
<td><tt class="docutils literal">druc</tt></td>
|
||
|
<td><tt class="docutils literal">ALL</tt>, <tt class="docutils literal">DRC</tt></td>
|
||
|
</tr>
|
||
|
<tr><td>Electrical extractor</td>
|
||
|
<td><tt class="docutils literal">cougar</tt></td>
|
||
|
<td><tt class="docutils literal">ALL</tt>, <tt class="docutils literal">EXT</tt></td>
|
||
|
</tr>
|
||
|
<tr><td>The symbolic to real layout translator</td>
|
||
|
<td><tt class="docutils literal">s2r</tt></td>
|
||
|
<td><tt class="docutils literal">ALL</tt></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="section" id="physical-grid-lambda-value">
|
||
|
<h2><a class="toc-backref" href="#id3">Physical Grid & Lambda Value</a></h2>
|
||
|
<p>RDS file:</p>
|
||
|
<pre class="literal-block">
|
||
|
DEFINE PHYSICAL_GRID 0.005
|
||
|
DEFINE LAMBDA 0.09
|
||
|
</pre>
|
||
|
<p>Tells that the physical grid (founder grid) step is 0.005µm and the lambda has
|
||
|
a value of 0.09µm. That is, one lambda is 18 grid steps.</p>
|
||
|
<p>We can distinguish two kind of <span class="sc">rds</span> files:</p>
|
||
|
<ul class="simple">
|
||
|
<li>The <em>1µm</em> kind, odd segment widths and coordinates are allowed, but the <tt class="docutils literal">LAMBDA</tt>
|
||
|
value <strong>must</strong> represent an <em>even</em> number of foundry grid step.</li>
|
||
|
<li>The <em>2µm</em> kind, segments widths and coordinates must all be even. And in that case
|
||
|
the <tt class="docutils literal">LAMBDA</tt> value can be any multiple of the foundry grid.</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="section" id="the-mbk-to-rds-segment-table">
|
||
|
<h2><a class="toc-backref" href="#id4">The <tt class="docutils literal">MBK_TO_RDS_SEGMENT</tt> table</a></h2>
|
||
|
<p>The <tt class="docutils literal">MBK_TO_RDS_SEGMENT</tt> table control the way segments are translated into
|
||
|
real rectangles. Be aware that we are translating <em>segments</em> and not <em>rectangles</em>.
|
||
|
Segments are defined by their axis (source & target points) and their width.
|
||
|
The geometrical transformations are described according to that model.
|
||
|
Obviously, they are either horizontal or vertical.</p>
|
||
|
<p>The translation method of a symbolic segment is as follow:</p>
|
||
|
<ol class="arabic">
|
||
|
<li><p class="first">The segment is translated into one or more physical rectangles.
|
||
|
The generated rectangles depends on the tool which is actually
|
||
|
using <span class="sc">rds</span> and the flag for the considered real layer.
|
||
|
For instance, real layers flagged with <tt class="docutils literal">DRC</tt> will be generated
|
||
|
for <tt class="docutils literal">s2r</tt> (for the <tt class="docutils literal">cif</tt> or <tt class="docutils literal">gds</tt>) and <tt class="docutils literal">druc</tt>, but will not
|
||
|
be shown under <tt class="docutils literal">graal</tt>.</p>
|
||
|
</li>
|
||
|
<li><p class="first">Translation into one real layer. <em>First</em> the source & target coordinates and width
|
||
|
of the symbolic segment are multiplied by the <tt class="docutils literal">LAMBDA</tt> value to obtain a real
|
||
|
segment. <em>Then</em> one of the <tt class="docutils literal">VW</tt>, <tt class="docutils literal">LCW</tt> or <tt class="docutils literal">RCW</tt> transformation is applied to
|
||
|
that segment to get the final real rectangle.</p>
|
||
|
<ul>
|
||
|
<li><p class="first"><tt class="docutils literal">VW</tt> for Variable Width, expand the real layer staying centered from the
|
||
|
original one. In those rules, the third number is not used, it is only here
|
||
|
to make the life easier for the parser...</p>
|
||
|
<p><span class="raw-html"><center><img src="./images/RDS_VW.png" alt="RDS Variable Width Rule"></center></span></p>
|
||
|
</li>
|
||
|
<li><p class="first"><tt class="docutils literal">LCW</tt> or <tt class="docutils literal">RCW</tt> for Left/Right Constant Width, create an off-center rectangle
|
||
|
of fixed width relatively to the real segment. Note that the <tt class="docutils literal">SP</tt> number
|
||
|
is the distance <em>between the edge</em> of the real segment and the edge of the
|
||
|
generated real rectangle (<em>not</em> from the axis). It is often zero.</p>
|
||
|
<p><span class="raw-html"><center><img src="./images/RDS_LCW.png" alt="RDS Left Constant Width Rule"></center></span></p>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ol>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
<p>Examples:</p>
|
||
|
<pre class="literal-block">
|
||
|
TABLE MBK_TO_RDS_SEGMENT
|
||
|
|
||
|
# (Case 1)
|
||
|
ALU1 RDS_ALU1 VW 0.18 0.09 0.0 ALL
|
||
|
|
||
|
# (Case 2)
|
||
|
NDIF RDS_NDIF VW 0.18 0.0 0.0 ALL \
|
||
|
RDS_ACTIV VW 0.18 0.0 0.0 DRC \
|
||
|
RDS_NIMP VW 0.36 0.36 0.0 DRC
|
||
|
|
||
|
# (Case 3)
|
||
|
NTRANS RDS_POLY VW 0.27 0.00 0.0 ALL \
|
||
|
RDS_GATE VW 0.27 0.00 0.0 DRC \
|
||
|
RDS_NDIF LCW 0.0 0.27 0.0 EXT \
|
||
|
RDS_NDIF RCW 0.0 0.27 0.0 EXT \
|
||
|
RDS_NDIF VW 0.0 0.72 0.0 DRC \
|
||
|
RDS_ACTIV VW 0.0 0.72 0.0 ALL \
|
||
|
RDS_NIMP VW 0.18 1.26 0.0 DRC
|
||
|
|
||
|
END
|
||
|
</pre>
|
||
|
<p><span class="fboxtt">Case 1</span> the <tt class="docutils literal">ALU1</tt> is translated in exacltly one real rectangle of
|
||
|
<tt class="docutils literal">RDS_ALU1</tt>, both ends are extended by 0.18µm and it's width is increased
|
||
|
by 0.09µm.</p>
|
||
|
<p><span class="fboxtt">Case 2</span> the <tt class="docutils literal">NDIF</tt> will be translated into only one segment
|
||
|
under <tt class="docutils literal">graal</tt>, for symbolic visualization. And into three real rectangles
|
||
|
for <tt class="docutils literal">s2r</tt> and <tt class="docutils literal">druc</tt>.</p>
|
||
|
<p><span class="fboxtt">Case 3</span> the <tt class="docutils literal">NTRANS</tt>, associated to a transistor is a little bit
|
||
|
more complex, the generated shapes are different for the extractor <tt class="docutils literal">cougar</tt>
|
||
|
in one hand, and for both <tt class="docutils literal">druc</tt> & <tt class="docutils literal">s2r</tt> in the other hand.</p>
|
||
|
<ul>
|
||
|
<li><p class="first">For the extractor (<tt class="docutils literal">EXT</tt> & <tt class="docutils literal">ALL</tt> flags) there will be four rectangles
|
||
|
generateds:</p>
|
||
|
<ol class="arabic simple">
|
||
|
<li>The gate (<tt class="docutils literal">RDS_GATE</tt>)</li>
|
||
|
<li>The left diffusion of the transistor (source or drain) (<tt class="docutils literal">RDS_NDIF</tt>).</li>
|
||
|
<li>The right diffusion of the transistor (drain or source) (<tt class="docutils literal">RDS_NDIF</tt>).</li>
|
||
|
<li>The active area (<tt class="docutils literal">RDS_ACTIV</tt>).</li>
|
||
|
</ol>
|
||
|
<p>As the extractor must kept separate the source and the drain of the transistor,
|
||
|
they are generated as two offset rectangles, using the <tt class="docutils literal">LCW</tt> and <tt class="docutils literal">RCW</tt> directives.</p>
|
||
|
</li>
|
||
|
<li><p class="first">For <tt class="docutils literal">s2r</tt> and <tt class="docutils literal">druc</tt> (<tt class="docutils literal">DRC</tt> and <tt class="docutils literal">ALL</tt>), five rectangles are generateds:</p>
|
||
|
<ol class="arabic simple">
|
||
|
<li>The poly (<tt class="docutils literal">RDS_POLY</tt>).</li>
|
||
|
<li>The gate (<tt class="docutils literal">RDS_GATE</tt>).</li>
|
||
|
<li>The diffusion, as one rectangle that covers both the <tt class="docutils literal">LCW</tt> and the <tt class="docutils literal">RCW</tt> (<tt class="docutils literal">RDS_NDIF</tt>).</li>
|
||
|
<li>The active area (<tt class="docutils literal">RDS_ACTIV</tt>).</li>
|
||
|
<li>The N implantation (<tt class="docutils literal">RDS_NIMP</tt>).</li>
|
||
|
</ol>
|
||
|
<p>In the layout send to the foundry, the source & drain are draw as one rectangle
|
||
|
across the gate area (the transistor being defined by the intersection of both
|
||
|
rectangles).</p>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
</div>
|
||
|
<div class="section" id="the-mbk-to-rds-via-table">
|
||
|
<h2><a class="toc-backref" href="#id5">The <tt class="docutils literal">MBK_TO_RDS_VIA</tt> table</a></h2>
|
||
|
<p>This table is to translate <em>default</em> VIAs into real via. In the symbolic layout
|
||
|
the default VIA is simply a point and a set of layers. All layers are converted
|
||
|
in squares shapes centered on the VIA coordinate. The one dimension given is the
|
||
|
size of the side of that square.</p>
|
||
|
<p>Note that although we are refering to VIAs, which for the purists are between two
|
||
|
metal layers, this table also describe <em>contacts</em>.</p>
|
||
|
<p>Example:</p>
|
||
|
<pre class="literal-block">
|
||
|
TABLE MBK_TO_RDS_VIA
|
||
|
|
||
|
CONT_DIF_P RDS_PDIF 0.54 ALL \
|
||
|
RDS_CONT 0.18 ALL \
|
||
|
RDS_ALU1 0.36 ALL \
|
||
|
RDS_ACTIV 0.54 DRC \
|
||
|
RDS_PIMP 0.90 DRC
|
||
|
|
||
|
CONT_POLY RDS_POLY 0.54 ALL \
|
||
|
RDS_CONT 0.18 ALL \
|
||
|
RDS_ALU1 0.36 ALL
|
||
|
|
||
|
CONT_VIA RDS_ALU1 0.45 ALL \
|
||
|
RDS_VIA1 0.27 ALL \
|
||
|
RDS_ALU2 0.45 ALL
|
||
|
|
||
|
END
|
||
|
</pre>
|
||
|
<div class="note">
|
||
|
<p class="first admonition-title">Note</p>
|
||
|
<p class="last"><strong>In CONT_DIF_P</strong> you may see that only three layers will be shown under
|
||
|
<tt class="docutils literal">graal</tt>, but five will be generated in the <tt class="docutils literal">gds</tt> layout.</p>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="section" id="the-mbk-to-rds-bigvia-hole-table">
|
||
|
<h2><a class="toc-backref" href="#id6">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt> table</a></h2>
|
||
|
<p>In <tt class="docutils literal">s2r</tt>, when generating BIGVIAs, the matrix of holes they contains is
|
||
|
not draw relative to the position of the BIGVIA itself, but on a grid which
|
||
|
is common througout all the design real layout. This is to allow overlap
|
||
|
between two BIGVIA without risking the holes matrix to be not exactly overlapping.
|
||
|
As a consequence, when visualizing the <tt class="docutils literal">gds</tt> file, the holes may not be centerend
|
||
|
inside one individual BIGVIA.</p>
|
||
|
<p>The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt> table define the global hole matrix for the whole
|
||
|
design. The first number is the individual hole side and the second the grid step
|
||
|
(center to center).</p>
|
||
|
<p>Example:</p>
|
||
|
<pre class="literal-block">
|
||
|
TABLE MBK_TO_RDS_BIGVIA_HOLE
|
||
|
|
||
|
CONT_VIA RDS_VIA1 0.27 0.27 ALL
|
||
|
CONT_VIA2 RDS_VIA2 0.27 0.27 ALL
|
||
|
CONT_VIA3 RDS_VIA3 0.27 0.27 ALL
|
||
|
CONT_VIA4 RDS_VIA4 0.27 0.27 ALL
|
||
|
CONT_VIA5 RDS_VIA5 0.36 0.36 ALL
|
||
|
|
||
|
END
|
||
|
</pre>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
</div>
|
||
|
<div class="section" id="the-mbk-to-rds-bigvia-metal-table">
|
||
|
<h2><a class="toc-backref" href="#id7">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_METAL</tt> table</a></h2>
|
||
|
<p>This table describe how the metal part of a BIGVIA is expanded (for the hole
|
||
|
part, see the previous table <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt>). The rule give for each
|
||
|
metal:</p>
|
||
|
<ol class="arabic simple">
|
||
|
<li>The <em>delta-with</em> (have to ask Franck).</li>
|
||
|
<li>The <em>overhang</em>, the length the real rectangle is expanded on each side from
|
||
|
the symbolic rectange.</li>
|
||
|
</ol>
|
||
|
<p>Example:</p>
|
||
|
<pre class="literal-block">
|
||
|
TABLE MBK_TO_RDS_BIGVIA_METAL
|
||
|
|
||
|
CONT_VIA RDS_ALU1 0.0 0.09 ALL \
|
||
|
RDS_ALU2 0.0 0.09 ALL
|
||
|
|
||
|
CONT_VIA2 RDS_ALU2 0.0 0.09 ALL \
|
||
|
RDS_ALU3 0.0 0.09 ALL
|
||
|
|
||
|
CONT_VIA3 RDS_ALU3 0.0 0.09 ALL \
|
||
|
RDS_ALU4 0.0 0.09 ALL
|
||
|
|
||
|
CONT_VIA4 RDS_ALU4 0.0 0.09 ALL \
|
||
|
RDS_ALU5 0.0 0.09 ALL
|
||
|
|
||
|
CONT_VIA5 RDS_ALU5 0.0 0.09 ALL \
|
||
|
RDS_ALU6 0.0 0.18 ALL
|
||
|
|
||
|
END
|
||
|
</pre>
|
||
|
<p><span class="raw-html"><br></span></p>
|
||
|
</div>
|
||
|
<div class="section" id="the-mbk-wiresetting-table">
|
||
|
<h2><a class="toc-backref" href="#id8">The <tt class="docutils literal">MBK_WIRESETTING</tt> table</a></h2>
|
||
|
<p>From a strict standpoint this table shouldn't be here but put in a separate
|
||
|
configuration file, because it contains informations only used by the symbolic
|
||
|
layout tools (<tt class="docutils literal">ocp</tt>, <tt class="docutils literal">nero</tt>, <tt class="docutils literal">ring</tt>).</p>
|
||
|
<p>This table defines the cell gauge the routing pitch and minimal (symbolic)
|
||
|
wire width and minimal spacing for the routers. They are patly redundant.</p>
|
||
|
<p>Example:</p>
|
||
|
<pre class="literal-block">
|
||
|
TABLE MBK_WIRESETTING
|
||
|
|
||
|
X_GRID 10
|
||
|
Y_GRID 10
|
||
|
Y_SLICE 100
|
||
|
WIDTH_VDD 12
|
||
|
WIDTH_VSS 12
|
||
|
TRACK_WIDTH_ALU8 0
|
||
|
TRACK_WIDTH_ALU7 4
|
||
|
TRACK_WIDTH_ALU6 4
|
||
|
TRACK_WIDTH_ALU5 4
|
||
|
TRACK_WIDTH_ALU4 3
|
||
|
TRACK_WIDTH_ALU3 3
|
||
|
TRACK_WIDTH_ALU2 3
|
||
|
TRACK_WIDTH_ALU1 3
|
||
|
TRACK_SPACING_ALU8 0
|
||
|
TRACK_SPACING_ALU7 4
|
||
|
TRACK_SPACING_ALU6 4
|
||
|
TRACK_SPACING_ALU5 4
|
||
|
TRACK_SPACING_ALU4 4
|
||
|
TRACK_SPACING_ALU3 4
|
||
|
TRACK_SPACING_ALU2 4
|
||
|
TRACK_SPACING_ALU1 3
|
||
|
|
||
|
END
|
||
|
</pre>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|