coriolis/documentation/output/pages/install-cases.html

302 lines
17 KiB
HTML
Raw Normal View History

Clarify semantic of flatten Collections (walkthrough). In the Cell/Instance hierarchy, the "terminal" and "leaf cell" concepts where not clearly defined and partially overlapping. Now, "Terminal" is the refer to the physical hierarchy (layout) and "TerminalNetlist" to the logical hierarchy (netlist). The logical hierarchy can be less deep than the physical one thanks to a Cell dedicated cell flags. Collections related to the physical hierarchy keep their old names, the one related to the logical hierarchy are renamed from "Leaf" to "TerminalNetlist". The name "Leaf" was too ambiguous (leaf for *what* hierarchy). * Change: In Hurricane::Device, set the "TerminalNetlist" flag once and for all. No need set it in all the derived classes again. * New: In Hurricane::MultiCapacitor, added new parameter "dummy" to create dummies around the capacity matrix. * Change: In Hurricane::Cell, remove "Leaf" related methods, replace them by "TerminalNetlist" one, especially Collections. Now we have two clear sets of Collections to walkthough the layout or the netlist. Change the "Terminal" flag into "TerminalNetlist". * Change: In Hurricane::CellCollections, rename "Leaf" into "TerminalNetlist" collections and apply the new semantic to the locators. * Change: In Hurricane::DataBase, Leaf to TerminalInstance renaming. * Change: In Hurricane::DeepNet, Leaf to TerminalInstance renaming. * Change: In Hurricane::HyperNet, Leaf to TerminalInstance renaming. * Change: In Hurricane::Instance, Leaf to TerminalInstance renaming. * Change: In Hurricane::Viewer::HierarchyInformations, Leaf to TerminalInstance renaming. * Change: In CRL::AllianceFramework, Leaf to TerminalInstance renaming. * Change: In CRL::Catalog, Leaf to TerminalInstance renaming. * Change: In CRL::ApParser, Leaf to TerminalInstance renaming. * Change: In EtesianEngine::AddFeeds, Leaf to TerminalInstance renaming. * Bug: In EtesianEngine::resetPlacement, move there the loop over non terminal netlist instances to flag fully placed sub-blocks as terminal for the netlist. Only then remove the feed cells from unplaced instances. Previously, the feed cells where stripped even from already placed instances. * Change: In Katana, Leaf to TerminalInstance renaming. * Bug: In Bora::PyDSlicingNode, allow the range parameter to be the Python None object when we do not want to pass one but need to have it as positional parameter. * Change: In Cumulus/clocktree/ClockTree.py, Leaf to TerminalInstance renaming.
2020-03-10 06:10:53 -05:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Contents Installation in a chrooted Environment Setting up the chrooted root directory Configure schroot Installing Packages in Debian 9 Creating a Duplicate User Installation of Alliance / Coriolis ...">
<meta name="keywords" content="">
<link rel="icon" href="../favicon.ico">
<title>Install Cases - Coriolis VLSI CAD Tools [offline]</title>
<!-- Stylesheets -->
<link href="../theme/css/bootstrap.css" rel="stylesheet">
<link href="../theme/css/fonts.css" rel="stylesheet">
<link href="../theme/css/nest.css" rel="stylesheet">
<link href="../theme/css/pygment.css" rel="stylesheet">
<link href="../theme/css/coriolis.css" rel="stylesheet">
<!-- /Stylesheets -->
<script src="../theme/js/jquery.min.js"></script>
<script src="../theme/js/bootstrap.min.js"></script>
<!-- RSS Feeds -->
<!-- /RSS Feeds -->
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Header -->
<div class="header-container" style="background: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), url('../images/common/layout-motif-faded-4.png'); background-position: center; ">
<!--
<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="../"><img class="mr20" src="../images/common/Coriolis-logo-white-4-small.png" alt="logo">Coriolis VLSI CAD Tools [offline]</a>
</div>
<ul class="nav navbar-nav">
<li><a href="../pages/gitlab.html">Git</a></li>
<li><a href="../pages/documentation.html">Documentation</a></li>
<li class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span class="caret"></span>Topics
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item " href="../pages/homepage.html">Coriolis <span class="sc">vlsi</span> Backend Tools</a></li>
<li><a class="dropdown-item active" href="../pages/install-cases.html">Install Cases</a></li>
<li><a class="dropdown-item " href="../pages/symbolic-layout.html">Symbolic Layout</a></li>
</ul>
</li>
</ul>
</div>
</nav>
</div> <!-- navbar container -->
-->
<!-- Static navbar -->
<div class="container">
<div class="header-nav">
<div class="header-logo">
<a class="pull-left" href="../"><img class="mr20" src="../images/common/Coriolis-logo-white-4-small.png" alt="logo">Coriolis VLSI CAD Tools [offline]</a>
</div>
<div class="nav pull-right">
<a href="../pages/gitlab.html">Git</a>
<a href="../pages/documentation.html">Documentation</a>
</div>
<div class="nav pull-right">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span class="caret"></span>Topics
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item " href="../pages/homepage.html">Coriolis <span class="sc">vlsi</span> Backend Tools</a></li>
<li><a class="dropdown-item active" href="../pages/install-cases.html">Install Cases</a></li>
<li><a class="dropdown-item " href="../pages/symbolic-layout.html">Symbolic Layout</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- /Static navbar -->
<!-- Header -->
<div class="container header-wrapper">
<div class="row">
<div class="col-lg-12">
<div class="header-content">
<a href="https://www.lip6.fr/"><img class="mr20" height="60px" src="../images/common/LogoLIP6Blanc.png" alt="LIP6"></a>
<a href="https://www.sorbonne-universite.fr/"><img class="mr20" height="60px" src="../images/common/logo-SU-blanc-700px.png" alt="Sorbonne Universite"></a>
<a href="https://www.cnrs.fr/"><img class="mr20" height="60px" src="../images/common/LOGO-cnrs-white-large.png" alt="CNRS"></a>
<h1 class="header-title text-uppercase">Install Cases</h1>
<div class="header-underline"></div>
</div>
</div>
</div>
</div>
<!-- /Header -->
</div>
<!-- /Header -->
<!-- Content -->
<div class="container content">
<!-- -*- Mode: rst -*- -->
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#installation-in-a-chrooted-environment" id="id2">Installation in a <em>chrooted</em> Environment</a><ul>
<li><a class="reference internal" href="#setting-up-the-chrooted-root-directory" id="id3">Setting up the <em>chrooted</em> root directory</a></li>
<li><a class="reference internal" href="#configure-schroot" id="id4">Configure <tt class="docutils literal">schroot</tt></a></li>
<li><a class="reference internal" href="#installing-packages-in-debian-9" id="id5">Installing Packages in Debian 9</a></li>
<li><a class="reference internal" href="#creating-a-duplicate-user" id="id6">Creating a Duplicate User</a></li>
<li><a class="reference internal" href="#installation-of-alliance-coriolis" id="id7">Installation of <span class="sc">Alliance</span> / <span class="sc">Coriolis</span></a></li>
</ul>
</li>
</ul>
</div>
<!-- -*- Mode: rst; explicit-buffer-name: "definition.rst<documentation/etc>" -*- -->
<!-- HTML/LaTeX backends mixed macros. -->
<!-- Acronyms & names. -->
<!-- URLs -->
<!-- Standard CAO/VLSI Concepts. -->
<!-- Alliance & MBK Concepts -->
<!-- Hurricane Concepts. -->
<div class="section" id="installation-in-a-chrooted-environment">
<h2><a class="toc-backref" href="#id2">Installation in a <em>chrooted</em> Environment</a></h2>
<p>In this case, we will setup a Debian 9 installation of Alliance/Coriolis under
a <span class="sc">Scientific Linux</span> 7 <span class="sc">os</span>. This should also work for <span class="sc">rhel</span> or <span class="sc">CentOS</span>.</p>
<p>Debian 9 will be referred as the <em>guest OS</em> or the <em>chrooted</em>.
<span class="sc">Scientific Linux</span> will be referred as the <em>host OS</em>.</p>
<div class="section" id="setting-up-the-chrooted-root-directory">
<h3><a class="toc-backref" href="#id3">Setting up the <em>chrooted</em> root directory</a></h3>
<p>We need the <tt class="docutils literal">debootstrap</tt> and <tt class="docutils literal">schroot</tt> packages (from the <span class="sc">epel</span> repository).</p>
<div class="highlight"><pre><span></span>root@pc:~# yum install debootstrap schroot
</pre></div>
<p>On the <strong>host</strong> <span class="sc">os</span>, as the <span class="cb">root</span> user, create the directory into which the
whole <em>chrooted</em> <span class="sc">os</span> will reside:</p>
<div class="highlight"><pre><span></span>root@pc:~# mkdir -p /home/chroot/debian9.coriolis
root@pc:~# debootstrap stretch /home/chroot/debian9.coriolis http://ftp.us.debian.org/debian
root@pc:~# <span class="nb">echo</span> <span class="s2">&quot;debian9.coriolis&quot;</span> &gt; /home/chroot/debian9.coriolis/etc/debian_chroot
</pre></div>
<p>Then, we need to give access the <em>chrooted</em> distribution to some kernel filesystem
of the host, namely <tt class="docutils literal">dev</tt>, <tt class="docutils literal">proc</tt>, <tt class="docutils literal">sys</tt> &amp; <tt class="docutils literal">tmp</tt>. On the <em>host</em> filesytem,
add to <tt class="docutils literal">/etc/fstab</tt>:</p>
<div class="highlight"><pre><span></span># Your host normal mounts.
# ...
# For Jail chroot of Debian9.
/dev /home/chroot/debian9.coriolis/dev none bind 0 0
/dev/pts /home/chroot/debian9.coriolis/dev/pts none bind 0 0
/proc /home/chroot/debian9.coriolis/proc none bind 0 0
/sys /home/chroot/debian9.coriolis/sys none bind 0 0
/tmp /home/chroot/debian9.coriolis/tmp none bind 0 0
</pre></div>
<p>Mount them:</p>
<div class="highlight"><pre><span></span>root@pc:~# mount -a
</pre></div>
</div>
<div class="section" id="configure-schroot">
<h3><a class="toc-backref" href="#id4">Configure <tt class="docutils literal">schroot</tt></a></h3>
<p>Edit <tt class="docutils literal">/etc/schroot.d/schroot.conf</tt> as follow:</p>
<div class="highlight"><pre><span></span>[debian9.coriolis]
description=Debian 9 stretch
directory=/home/chroot/debian9.coriolis
users=ego
</pre></div>
<div class="note">
<p class="first admonition-title">Note</p>
<p><strong>Users in the schrooted environment.</strong> They must exists on both the host
system <strong>and</strong> in the chrooted one. It is best if they also have the same
<span class="sc">uid</span> / <span class="sc">gid</span> and home directories (relative to their respectives root).
For example, for a <tt class="docutils literal">ego</tt> user:</p>
<table class="last table">
<colgroup>
<col width="57%" />
<col width="43%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">On the Host</th>
<th class="head">In the <em>chrooted</em> <span class="sc">os</span></th>
</tr>
</thead>
<tbody valign="top">
<tr><td><tt class="docutils literal">/home/ego</tt></td>
<td>N/A</td>
</tr>
<tr><td><tt class="docutils literal">/home/chroot/debian9.coriolis/home/ego</tt></td>
<td><tt class="docutils literal">/home/ego</tt></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section" id="installing-packages-in-debian-9">
<h3><a class="toc-backref" href="#id5">Installing Packages in Debian 9</a></h3>
<p>Now that <tt class="docutils literal">schroot</tt> is set, we can log in the guest <span class="sc">os</span> as <tt class="docutils literal">root</tt> and add the
minimal needed package set to build <span class="sc">Alliance</span> / <span class="sc">Coriolis</span>.</p>
<div class="highlight"><pre><span></span>root@pc:~# schroot -c debian9.coriolis -u root
<span class="o">(</span>debian9.coriolis<span class="o">)</span>root@pc:~# <span class="nb">export</span> <span class="nv">DEBIAN_FRONTEND</span><span class="o">=</span>noninteractive
<span class="o">(</span>debian9.coriolis<span class="o">)</span>root@pc:~# apt-get update
<span class="o">(</span>debian9.coriolis<span class="o">)</span>root@pc:~# apt-get -y install build-essential binutils-dev <span class="se">\</span>
git cmake bison flex gcc python-dev <span class="se">\</span>
libboost-all-dev libboost-python-dev <span class="se">\</span>
zlib1g-dev libxml2-dev rapidjson-dev <span class="se">\</span>
libbz2-dev <span class="se">\</span>
qt4-dev-tools libqwt-dev python-qt4 <span class="se">\</span>
autotools-dev automake <span class="se">\</span>
libxt-dev libxpm-dev libmotif-dev <span class="se">\</span>
yosys <span class="se">\</span>
vim
<span class="o">(</span>debian9.coriolis<span class="o">)</span>root@pc:~# apt-get clean
</pre></div>
</div>
<div class="section" id="creating-a-duplicate-user">
<h3><a class="toc-backref" href="#id6">Creating a Duplicate User</a></h3>
<p>As stated before, we must create in the guest <span class="sc">os</span> a user that also exist on the
host <span class="sc">os</span>, and with the same <span class="sc">uid</span> and home directory. Here we assume that <tt class="docutils literal">ego</tt>
has an <span class="sc">uid</span> of 20000.</p>
<div class="highlight"><pre><span></span><span class="o">(</span>debian9.coriolis<span class="o">)</span>root@pc:~# adduser --uid <span class="m">20000</span> ego
Adding user <span class="sb">`</span>ego<span class="s1">&#39; ...</span>
<span class="s1"> Adding new group `ego&#39;</span> <span class="o">(</span>20000<span class="o">)</span> ...
Adding new user <span class="sb">`</span>ego<span class="s1">&#39; (20000) with group `ego&#39;</span> ...
Creating home directory <span class="sb">`</span>/home/ego<span class="s1">&#39; ...</span>
<span class="s1"> Copying files from `/etc/skel&#39;</span> ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information <span class="k">for</span> ego
Enter the new value, or press ENTER <span class="k">for</span> the default
Full Name <span class="o">[]</span>: Me Myself and I
Room Number <span class="o">[]</span>: 404
Work Phone <span class="o">[]</span>: <span class="m">666</span> <span class="m">666</span> 666
Home Phone <span class="o">[]</span>: 3615
Other <span class="o">[]</span>:
Is the information correct? <span class="o">[</span>Y/n<span class="o">]</span> Y
<span class="o">(</span>debian9.coriolis<span class="o">)</span>root@pc:~#
</pre></div>
</div>
<div class="section" id="installation-of-alliance-coriolis">
<h3><a class="toc-backref" href="#id7">Installation of <span class="sc">Alliance</span> / <span class="sc">Coriolis</span></a></h3>
<p>Download the installer script: <a class="reference external" href="../scripts/socInstaller.py">socInstaller.py</a>. And put it in the home
directory of the user <tt class="docutils literal">ego</tt> in the guest <span class="sc">os</span>.</p>
<div class="note">
<p class="first admonition-title">Note</p>
<p class="last">As it is more easier to download it from the host <span class="sc">os</span>, you may do
so and just copy it under <tt class="docutils literal">/home/chroot/debian9.coriolis/home/ego</tt>.
As they share the same <span class="sc">uid</span>, the copy is allowed.</p>
</div>
<p>Now we can connect as the <tt class="docutils literal">ego</tt> user on the guest <span class="sc">os</span>:</p>
<div class="highlight"><pre><span></span>ego@pc:~&gt; schroot -c debian9.coriolis -u ego
<span class="o">(</span>debian9.coriolis<span class="o">)</span>jpc@pc:~&gt; ./socInstaller.py --chroot --profile<span class="o">=</span>Debian9 <span class="se">\</span>
--do-alliance --do-coriolis
</pre></div>
</div>
</div>
</div>
<!-- /Content -->
<!-- Footer -->
<div class="footer gradient-2">
<div class="container footer-container ">
<div class="row">
<div class="col-xs-4 col-sm-3 col-md-3 col-lg-3">
<div class="footer-title">Social</div>
<ul class="list-unstyled">
</ul>
</div>
<div class="col-xs-4 col-sm-3 col-md-3 col-lg-2">
</div>
<div class="col-xs-4 col-sm-3 col-md-3 col-lg-3">
<div class="footer-title">Links</div>
<ul class="list-unstyled">
<li><a href="https://coriolis.lip6.fr/" target="_blank">Alliance/Coriolis</a></li>
<li><a href="https://www-soc.lip6.fr/" target="_blank">CIAN Team Website</a></li>
<li><a href="https://f-si.org" target="_blank">Free Silicon Foundation</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-4">
<p class="pull-right text-right">
<small><em>Proudly powered by <a href="http://docs.getpelican.com/" target="_blank">pelican</a></em></small><br/>
<small><em><span class="sc">NEST</span> theme by <a href="https://github.com/molivier" target="_blank">molivier</a></em></small><br/>
<small>Copyright © 2020-2020 Sorbonne Universite</small>
</p>
</div>
</div>
</div>
</div>
<!-- /Footer -->
</body>
</html>