Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
language:langs:prs [2022/05/13 08:52]
rajit
language:langs:prs [2022/07/10 15:01] (current)
rajit [Direct transistor specifications]
Line 120: Line 120:
   ~a | ~b -> e+   ~a | ~b -> e+
 </code> </code>
 +This is because ''prs2net'' uses CMOS to implement the rules. In CMOS, pull-down networks are implemented with n-type transistors that turn on when the input is high (true). while pull-up networks are implemented with p-type transistors that turn on when the input is low (false).
  
 === Transistor sizing and flavors === === Transistor sizing and flavors ===
Line 137: Line 138:
   a <10,lvt> & b<10,lvt> -> c-   a <10,lvt> & b<10,lvt> -> c-
 </code> </code>
-Transistors come in different //flavors// in a modern technology. The flavors supported by ACT are specified in the top-level ACT [[config:start|configuration]]. Here, the ''lvt'' flavor is being specified. The standard names that we use are ''svt'' (for standard Vt), ''lvt'', and ''hvt'' but these are configuration options.+Transistors come in different //flavors// in a modern technology. The flavors supported by ACT are specified in the top-level ACT [[config:start|configuration]]. Here, the ''lvt'' flavor is being specified. The standard names that we use are ''svt'' (for standard Vt), ''lvt'' (for low Vt), and ''hvt'' (for high Vt).
  
 Finally, it is often the case that multiple transistors in an expression use the same sizing information.  Finally, it is often the case that multiple transistors in an expression use the same sizing information. 
Line 181: Line 182:
 </code> </code>
 The ''*'' before the opening brace says that the leakage adjustment parameter should be used. Note that leakage adjustment applies to the entire process/cell, even if the parameter is specified only in one of the ''prs'' blocks or ''sizing'' blocks. The ''*'' before the opening brace says that the leakage adjustment parameter should be used. Note that leakage adjustment applies to the entire process/cell, even if the parameter is specified only in one of the ''prs'' blocks or ''sizing'' blocks.
 +
 +==== Direct transistor specifications ====
 +
 +In case this syntax is not sufficient, the ''prs'' language also includes support for specifying individual transistors. Since these are typically used as pass gates or transmission gates in digital circuits, we use the following syntax:
 +<code act>
 +prs {
 +   passp <10,4> (gate, source, drain)   /* p-type device, with specified sizing */
 +   passn <20,8> (gate, source, drain)   /* n-type device with specified sizing */
 +}
 +</code>
 +
 +Note that automatic staticizer (keeper) generation is only triggered when a production rule is specified. If part of your circuit for an output signal is described using production rules and part of it is described using transistors, then staticizer generation will likely be triggered; you can turn this off using the ''[keeper=0]'' [[tools:netgen#Attributes|attribute]].
 +
 +==== Explicit capacitors ====
 +
 +The ''prs'' sublanguage can also be used for designing mixed-signal circuits. Explicit capacitors can be specified in the following manner:
 +<code act>
 +prs {
 +  cap (node1, node2); /* explicit capacitor of one unit size between the two nodes */
 +  cap<10> (node1, node2); /* capacitor of size 10 units */
 +  cap<10,5> (node1, node2) /* capacitor of size 10*5 units */
 +}
 +</code>
 +The unit  capacitor is specified in the netlist configuration file; if it is unspecified, the value of 1fF is used.