Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
language:langs:sizing [2021/03/07 12:33] – [low leak addition on channel length] rajit | language:langs:sizing [2022/05/13 12:53] (current) – rajit | ||
---|---|---|---|
Line 2: | Line 2: | ||
The sizing sub-language is used to simplify gate sizing specifications. The [[prs|prs]] sub-language already provides a mechanism to specify sizing, but this can become very verbose. For example, consider an inverter | The sizing sub-language is used to simplify gate sizing specifications. The [[prs|prs]] sub-language already provides a mechanism to specify sizing, but this can become very verbose. For example, consider an inverter | ||
- | < | + | < |
prs { | prs { | ||
in => out- | in => out- | ||
Line 9: | Line 9: | ||
Now, if we want the pull-up network to have width 20 units and the pull-down to have width 10 units, this gets turned into: | Now, if we want the pull-up network to have width 20 units and the pull-down to have width 10 units, this gets turned into: | ||
- | < | + | < |
prs { | prs { | ||
in< | in< | ||
Line 20: | Line 20: | ||
Often all one is interested in is sizing the gates so that they have some unit drive strength, where the unit selected is technology/ | Often all one is interested in is sizing the gates so that they have some unit drive strength, where the unit selected is technology/ | ||
- | < | + | < |
prs { | prs { | ||
in => out- | in => out- | ||
Line 32: | Line 32: | ||
This has the same effect as: | This has the same effect as: | ||
- | < | + | < |
prs { | prs { | ||
in <10> -> out- | in <10> -> out- | ||
Line 40: | Line 40: | ||
The p-to-n ratio is automatically used to size the pull-up network differently from the pull-down network. | The p-to-n ratio is automatically used to size the pull-up network differently from the pull-down network. | ||
- | < | + | < |
prs { | prs { | ||
a & b => c- | a & b => c- | ||
Line 51: | Line 51: | ||
The example above results in the following sizing: | The example above results in the following sizing: | ||
- | < | + | < |
prs { | prs { | ||
a<20> & b<20> -> c- | a<20> & b<20> -> c- | ||
Line 66: | Line 66: | ||
An example of the general form of the sizing directive is: | An example of the general form of the sizing directive is: | ||
- | < | + | < |
| | ||
out {-5,lvt,2 ; +4,lvt,2 } | out {-5,lvt,2 ; +4,lvt,2 } | ||
Line 72: | Line 72: | ||
</ | </ | ||
This says that the pull-down network should be sized with 5 times the drive strength, and all gates should use two fingers and '' | This says that the pull-down network should be sized with 5 times the drive strength, and all gates should use two fingers and '' | ||
- | < | + | < |
sizing { | sizing { | ||
out {+4,lvt,2 ; -5,lvt,2 } | out {+4,lvt,2 ; -5,lvt,2 } | ||
Line 80: | Line 80: | ||
If a circuit wants to use a different unit width, that can also be specified as follows: | If a circuit wants to use a different unit width, that can also be specified as follows: | ||
- | < | + | < |
sizing { | sizing { | ||
unit_n <- 20; | unit_n <- 20; | ||
Line 92: | Line 92: | ||
The benefits of a sizing body are best illustrated when combined with the implementation relation. Consider the following example: | The benefits of a sizing body are best illustrated when combined with the implementation relation. Consider the following example: | ||
- | < | + | < |
defproc inv (bool? i; bool! o) | defproc inv (bool? i; bool! o) | ||
{ | { | ||
Line 118: | Line 118: | ||
The default sizing equalizes drive strengths for the pull-up and pull-down network. For gates used in cyclic control logic in asynchronous design, the optimal drive strengths are different. To use the optimal ratio, you can add: | The default sizing equalizes drive strengths for the pull-up and pull-down network. For gates used in cyclic control logic in asynchronous design, the optimal drive strengths are different. To use the optimal ratio, you can add: | ||
- | < | + | < |
prs { | prs { | ||
Line 138: | Line 138: | ||
For adding a specified additional length to the minimum length of your transistors, | For adding a specified additional length to the minimum length of your transistors, | ||
- | < | + | < |
prs { | prs { | ||
in => out- | in => out- | ||
Line 148: | Line 148: | ||
</ | </ | ||
- | To configure how much is added add this line to the configuration | + | To configure how much is added add this line to the configuration |
< | < | ||
Line 155: | Line 155: | ||
</ | </ | ||
- | (The length unit here is SI units.) | + | The length unit here is absolute (i.e. not scaled), so the amount specified above is 15nm. |