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]