<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://avlsi.csl.yale.edu/act/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://avlsi.csl.yale.edu/act/feed.php">
        <title>The ACT VLSI design tools - scratch</title>
        <description></description>
        <link>https://avlsi.csl.yale.edu/act/</link>
        <image rdf:resource="https://avlsi.csl.yale.edu/act/lib/exe/fetch.php?media=wiki:logo.png" />
       <dc:date>2026-05-09T03:44:51+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:configtut&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:loops&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:namespace&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:netlist&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:sizing&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:start&amp;rev=1754056460&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:templates&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:tutorial_1_-_a_simple_inverter&amp;rev=1606888822&amp;do=diff"/>
                <rdf:li rdf:resource="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:tutorial_2_-_more_combinational_gates&amp;rev=1606888822&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://avlsi.csl.yale.edu/act/lib/exe/fetch.php?media=wiki:logo.png">
        <title>The ACT VLSI design tools</title>
        <link>https://avlsi.csl.yale.edu/act/</link>
        <url>https://avlsi.csl.yale.edu/act/lib/exe/fetch.php?media=wiki:logo.png</url>
    </image>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:configtut&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>configtut</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:configtut&amp;rev=1606888822&amp;do=diff</link>
        <description>Configuration file

So far we have learned how to describe a circuit in ACT, simulate using prsim and irsim. Now, we will move on to the next stage i.e. designing CMOS circuits from ACT description. The process of designing circuit often starts with creating a spice netlist to simulate transistor-level circuit behavior. In order to generate a spice netlist, ACT requires some technology-dependent information and information to understand designer’s intent. We use configuration files to provide su…</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:loops&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>loops</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:loops&amp;rev=1606888822&amp;do=diff</link>
        <description>Array, loops and selection

Complex datapath designs are often designed with array of simpler cells. The following example show how to create array of simple cells and connect them using loop constructs in ACT.


import &quot;adder.act&quot;;

defproc  adder8b ( bool? a[8],b[8],ci; bool! s[8],co)
{
  bool c[9];
  fulladder fa[8];
  
  c[0] = ci;
  co = c[8];
  ( i : 8 : fa[i](a[i], b[i], c[i], s[i], c[i+1]);)  
}</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:namespace&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>namespace</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:namespace&amp;rev=1606888822&amp;do=diff</link>
        <description>Creating a library of building blocks

A library can be created using pre-designed building blocks and use them in hierarchical designs. This can be achieved using keyword import. In this case, ACT file begins with a sequence of “import” statements. The</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:netlist&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>netlist</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:netlist&amp;rev=1606888822&amp;do=diff</link>
        <description>Generating spice netlist and simulation with Xyce

Files required:

	*  inv.act
	*  inv.sp
	*  test_inv.sp
	*  on_c5n.sp

(1) Input file with gate sizing


defproc inv (bool? i; bool! o)
{
  prs {
    i =&gt; o-
  }
}

template&lt;pint drive&gt;
defproc szinv &lt;: inv()
{
  sizing {
     o {-drive}
  }
}

defproc INVX1 &lt;: szinv&lt;1&gt; () { }
defproc INVX2 &lt;: szinv&lt;2&gt; () { }

INVX1 A1;
INVX2 A2;</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:sizing&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sizing</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:sizing&amp;rev=1606888822&amp;do=diff</link>
        <description>Specifying gate sizes

The gate sizing can be specified using prs sub-language but using the newly introduced sizing sub-language is recommended. This tutorial will show how to specify gate sizes using the new sizing sub-language.

Before writing a prs for inverter, let’s assume that we have the following specification included in the configuration file. Here,</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:start&amp;rev=1754056460&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-01T13:54:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:start&amp;rev=1754056460&amp;do=diff</link>
        <description>Scratch space

Put pages in this namespace while drafting items.

Basic circuits

	*  tutorial 1 - A simple inverter covering (production rules, prs block, defproc incl. in/out, instantiation, aflat and prsim)
		*  tutorial 2 - More combinational gates
		*  Creating libraries and namespaces
			*  Best practices for organizing a complex project

		*  Array,</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:templates&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>templates</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:templates&amp;rev=1606888822&amp;do=diff</link>
        <description>Parameterized design using templates

Template provides a good way to create a parameterized design framework which can be used to get customized design from a generic design based on user input. ACT supports templates to create parameterized types, channel, and processes.</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:tutorial_1_-_a_simple_inverter&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_1_-_a_simple_inverter</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:tutorial_1_-_a_simple_inverter&amp;rev=1606888822&amp;do=diff</link>
        <description>A simple inverter

In this first example we will build and simulate an inverter and touch the basic language elements and tools needed for this (production rules, prs block, defproc incl. in/out, instantiation, aflat and prsim)

make sure you installed act and added it to your path please follow</description>
    </item>
    <item rdf:about="https://avlsi.csl.yale.edu/act/doku.php?id=scratch:tutorial_2_-_more_combinational_gates&amp;rev=1606888822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T06:00:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_2_-_more_combinational_gates</title>
        <link>https://avlsi.csl.yale.edu/act/doku.php?id=scratch:tutorial_2_-_more_combinational_gates&amp;rev=1606888822&amp;do=diff</link>
        <description>Simple combinational gates

In this tutorial we will go a step further and look at multiple inputs, local variables and how to connect cells, as well as a more complex simulator.

The following specifies a number of combinational gates, where the process names correspond to the commonly used names for the gates.</description>
    </item>
</rdf:RDF>
