Types¶
void |
Nothing. E.g. if an instruction yields no result. |
metadata |
Additional information attached to various things in the assembly. |
label |
Basic block. |
time |
Simulation time. |
iN |
Integer of N bits. |
nN |
Enumerated type of N values. |
lN |
Logic type with 9 possible values UX01ZWLH- (see IEEE 1164) |
sN |
Strong logic type with 4 possible values 01ZX (see IEEE 1800) |
T* |
Pointer to value of type T. |
T$ |
Signal carrying a value of type T. |
[N x T] |
Array containing N elements of type T. |
{T0,T1,…} |
Struct containing fields of types T0, T1, etc. |
T (T0,T1,…) |
Function returning value T, taking arguments of type T0, T1, etc. |
Names¶
| Global Visibility | |
@<name> |
Global name. Visible in the symbol table of the module. |
!<name> |
Metadata name. Visible in the symbol table of the module. |
| Local Visibility | |
%<name> |
Local name. Not visible beyond the scope of the module or section it is declared in. |
!<int> |
Temporary local metadata name. |
%<int> |
Temporary local name. |
Constants¶
| false | Alias for i1 0 |
| true | Alias for i1 1 |
Instructions¶
| Mnemonic | Description | |
|---|---|---|
| type | M | Global type alias |
| const | M | Global constant |
| func | M | Function definition |
| proc | M | Process definition |
| entity | M | Entity definition |
| decl | M | Function, process, or entity declaration |
| Memory | ||
| load | FP | Load a value from memory. |
| store | FP | Store a value to memory. |
| var | FP | Allocate memory on the stack. |
| alloc | FP | Allocate memory on the heap. |
| free | FP | Free memory on the heap. |
| Signals | ||
| probe | PE | Sample the value of a signal. |
| drive | PE | Change the value of a signal |
| sig | E | Allocate a new signal. |
| Control Flow | ||
| wait | P | |
| halt | FP | |
| br | FP | |
| ret | F | |
| call | FPE | |
| inst | E | |
| Comparison | ||
| icmp | FPE | Integer comparison |
| lcmp | FPE | Logic comparison |
| Logic | ||
| and | FPE | |
| or | FPE | |
| xor | FPE | |
| not | FPE | |
| Arithmetic | ||
| add | FPE | |
| sub | FPE | |
| mul | FPE | |
| udiv | FPE | |
| sdiv | FPE | |
| Restructuring | ||
| trunc | FPE | Reduce width of integer. |
| ext | FPE | Increase width of integer. |
| insert | FPE | Change the value of an array/structure element by index. |
| extract | FPE | Obtain the value of an array/structure element by index. |
| cat | FPE | Concatenate values. |
| slice | FPE | Obtain a part of an integer. |
| Data Flow | ||
| mux | FPE | Select among a list of values, based on a “selection” value. |
| reg | E | Storage element that keeps state. |
Missing¶
- conversion lN to sN and back
- conversion iN to lN/sN and back
- working with time values
- choosing strong/weak drive on lN, choosing high impedance or weak
- a way to declare funcs, procs, and entities
Details¶
icmp [eq|ne|sgt|sge|slt|sle|ugt|uge|ult|ule]lcmp [eq|ne]ext [zero|sign]