Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| intro_example:loops [2022/05/13 13:20] – rajit | intro_example:loops [2025/08/24 16:48] (current) – [Array, loops and selection] rajit | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Array, loops and selection ====== | ====== 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. | 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. | ||
| Line 15: | Line 17: | ||
| ( i : 8 : fa[i](a[i], b[i], c[i], s[i], c[i+1]); | ( i : 8 : fa[i](a[i], b[i], c[i], s[i], c[i+1]); | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | In this example we assume that '' | ||
| + | <code act> | ||
| + | defproc fulladder (bool? a, b, ci; bool! s, co) | ||
| + | { ... } | ||
| </ | </ | ||
| Line 85: | Line 93: | ||
| Depending on the value of index '' | Depending on the value of index '' | ||
| + | |||
| + | ====== General loops ====== | ||
| + | |||
| + | The parenthesis-based syntax is a compact way to describe simple loop-based replication. If a more complex approach is needed, then a generalized while loop syntax is also available. The selection example earlier could also be re-written as follows: | ||
| + | |||
| + | <code act> | ||
| + | import " | ||
| + | |||
| + | defproc select (bool x0[8], x1[8]; bool y[8], z[8]) | ||
| + | { | ||
| + | pint i; | ||
| + | i = 0; | ||
| + | *[ i < 8 -> x0[i] = y[i]; x1[i] = z[i]; | ||
| + | x0[i+1] = z[i+1]; x1[i+1] = y[i+1]; | ||
| + | i = i + 2; | ||
| + | ] | ||
| + | } | ||
| + | </ | ||