Issie logo Issie

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

BigIntSlab

Full Usage: BigIntSlab

Field type: bigint array
Field type: bigint array

FDataStep

Full Usage: FDataStep

Field type: FData array
Field type: FData array

Index

Full Usage: Index

Field type: int
Field type: int

StepBase

Full Usage: StepBase

Field type: int
Field type: int

StepLength

Full Usage: StepLength

Field type: int
Field type: int

UInt32Slab

Full Usage: UInt32Slab

Field type: uint32 array
Field type: uint32 array

Width

Full Usage: Width

Field type: int
Field type: int

Instance members

Instance member Description

this.Big

Full Usage: this.Big

Parameters:
    step : int

Returns: bigint
Modifiers: inline

bigint value at a step

step : int
Returns: bigint

this.BigContents

Full Usage: this.BigContents

Returns: bigint array

the whole bigint region as a fresh array - a copy, for cold extraction paths only; empty when this IO is not on the bigint path

Returns: bigint array

this.SetBig

Full Usage: this.SetBig

Parameters:
    step : int
    dat : bigint

Modifiers: inline

write a bigint value at a step

step : int
dat : bigint

this.SetU32

Full Usage: this.SetU32

Parameters:
    step : int
    dat : uint32

Modifiers: inline

write a uint32 value at a step

step : int
dat : uint32

this.TryBig

Full Usage: this.TryBig

Parameters:
    step : int

Returns: bigint option
Modifiers: inline

Array.tryItem over the bigint region

step : int
Returns: bigint option

this.TryU32

Full Usage: this.TryU32

Parameters:
    step : int

Returns: uint32 option
Modifiers: inline

Array.tryItem over the uint32 region: None when this IO is not on the uint32 path or the step is outside the region

step : int
Returns: uint32 option

this.U32

Full Usage: this.U32

Parameters:
    step : int

Returns: uint32
Modifiers: inline

uint32 value at a step

step : int
Returns: uint32

this.U32Contents

Full Usage: this.U32Contents

Returns: uint32 array

the whole uint32 region as a fresh array - a copy, for cold extraction paths only; empty when this IO is not on the uint32 path, as the store itself once was

Returns: uint32 array

Type something to start searching.