IOArray Type
This type represents an array of time steps of simulation data. In any simulation, for a given IOArray, only one of the three step stores will be used. For (very strong) efficiency reasons this cannot be implemented as a disjoint union: the code that reads and writes IOArray elements will access the appropriate store. Truthtable simulations use FDataStep everywhere. Normal simulations use the UInt32 or BigInt store according to the size of the relevant bus. The uint32 and bigint stores are REGIONS OF SHARED SLABS, not arrays of their own: step s of this IO lives at `slab[StepBase + s]`, and `StepLength` steps belong to it. FastCreate's arena packs every step region of a build into a few large slabs (under both runtimes), so a design has dozens of step allocations rather than one per output port, and a port's data is named by an integer offset. Always go through the members below - indexing a slab without adding StepBase reads another port's data, which no bounds check will ever catch.
Record fields
| Record Field | Description |
Full Usage:
BigIntSlab
Field type: bigint array
|
|
|
|
Full Usage:
Index
Field type: int
|
|
Full Usage:
StepBase
Field type: int
|
|
Full Usage:
StepLength
Field type: int
|
|
Full Usage:
UInt32Slab
Field type: uint32 array
|
|
Full Usage:
Width
Field type: int
|
|
Instance members
| Instance member | Description |
Full Usage:
this.Big
Parameters:
int
Returns: bigint
Modifiers: inline |
|
Full Usage:
this.BigContents
Returns: bigint array
|
|
Full Usage:
this.SetBig
Parameters:
int
dat : bigint
Modifiers: inline |
|
Full Usage:
this.SetU32
Parameters:
int
dat : uint32
Modifiers: inline |
|
Full Usage:
this.TryBig
Parameters:
int
Returns: bigint option
Modifiers: inline |
|
Full Usage:
this.TryU32
Parameters:
int
Returns: uint32 option
Modifiers: inline |
|
Full Usage:
this.U32
Parameters:
int
Returns: uint32
Modifiers: inline |
|
Full Usage:
this.U32Contents
Returns: uint32 array
|