Issie logo Issie

FastComponent Type

FastComponent represents a physical component in a simulation. Because sheets can be instantiated in multiple places a given sheet component can have multiple FastComponents in the simulation. Arrays on FastComponent are filled up with simulation data per clock step as a clocked simulation progresses. Equality is by reference: a FastComponent is a mutable object with an identity, holding step arrays that can run to megabytes, so comparing two of them field by field would be both meaningless and ruinous. It also carries its own reducers, which are functions and so have no structural equality at all.

Record fields

Record Field Description

AccessPath

Full Usage: AccessPath

Field type: ComponentId list

The custom component instances between this component and the root of the simulation, INNERMOST FIRST - empty if it is on the top sheet. The same list as InstancePath, whose comment says why it runs this way round.

Field type: ComponentId list

Active

Full Usage: Active

Field type: bool
Modifiers: mutable
Field type: bool

BigIntState

Full Usage: BigIntState

Field type: BigIntState option
Modifiers: mutable

components that may have variable inputs and output widths use this instead of UseBigInt to determine the correct array.

Field type: BigIntState option

CustomInLinks

Full Usage: CustomInLinks

Field type: FastCompIndex array
Modifiers: mutable

For a Custom component: the store index of the inner Input component each of its input ports maps to. Empty for every other type. Build scaffolding, dropped with OutLinks.

Field type: FastCompIndex array

CustomOutIndex

Full Usage: CustomOutIndex

Field type: FastCompIndex
Modifiers: mutable

For an Output component INSIDE a custom component: the store index of that custom component, and which of its output ports this one is. -1 when there is no such link - a top-level Output, or any other type. Build scaffolding, dropped with OutLinks.

Field type: FastCompIndex

CustomOutPort

Full Usage: CustomOutPort

Field type: int
Modifiers: mutable
Field type: int

DrivenComponents

Full Usage: DrivenComponents

Field type: FastComponent list
Modifiers: mutable
Field type: FastComponent list

FLabel

Full Usage: FLabel

Field type: string

label of component

Field type: string

FType

Full Usage: FType

Field type: ComponentType

convenience access to the Type of the underlying component

Field type: ComponentType

FullName

Full Usage: FullName

Field type: string

for human use: long name of component

Field type: string

Index

Full Usage: Index

Field type: FastCompIndex
Modifiers: mutable

Where this component sits in the build's one index space: the index it was stamped with as the flatten created it, and the index the link fields below are expressed in. Written once, by LookupArray.addItem, and never again.

Field type: FastCompIndex

InputDrivers

Full Usage: InputDrivers

Field type: (FastCompIndex * OutputPortNumber) option array

info on where the drivers are for each input

Field type: (FastCompIndex * OutputPortNumber) option array

InputLinks

Full Usage: InputLinks

Field type: IOArray array

Input data - this an array of fxed links to the relevant driver output data arrays

Field type: IOArray array

NumMissingInputValues

Full Usage: NumMissingInputValues

Field type: int
Modifiers: mutable
Field type: int

OutLinks

Full Usage: OutLinks

Field type: (FastCompIndex * InputPortNumber) array array
Modifiers: mutable

This instance's outgoing links, by output port number, already resolved to store indices - so linking neither looks a design id up nor walks a map. Build scaffolding: linkFastComponents drops it, along with the two fields below, once it has used them, so that a built simulation does not carry a link table per component for the rest of its life.

Field type: (FastCompIndex * InputPortNumber) array array

Outputs

Full Usage: Outputs

Field type: IOArray array

the output data for this component (this gets linked to all the conmponents driven

Field type: IOArray array

ReduceClocked

Full Usage: ReduceClocked

Field type: StepIndex -> unit
Modifiers: mutable
Field type: StepIndex -> unit

ReduceComb

Full Usage: ReduceComb

Field type: StepIndex -> unit
Modifiers: mutable

This component's reducer, bound to this component, as a combinational and as a clocked reduction. Installed once by installReducers when the simulation is built, so that the loop calls the component's own code instead of dispatching on FType for every component of every step. Only the hybrid components (asynchronous RAM) differ between the two.

Field type: StepIndex -> unit

SimComponent

Full Usage: SimComponent

Field type: SimulationComponent

the legacy SimulationConmponent from which this FastComponent is generated.

Field type: SimulationComponent

State

Full Usage: State

Field type: StepArray<SimulationComponentState> option

Used only by clocked components, contains an array of the component state in every clock cycle. Filled as simulation progresses.

Field type: StepArray<SimulationComponentState> option

Touched

Full Usage: Touched

Field type: bool
Modifiers: mutable
Field type: bool

UseBigInt

Full Usage: UseBigInt

Field type: bool
Modifiers: mutable

Most components have all bus inputs and outputs the same width. This gives the default store to use - the BigInt or UInt32 slab region - in IOArray.

Field type: bool

VerilogComponentName

Full Usage: VerilogComponentName

Field type: string
Modifiers: mutable
Field type: string

VerilogOutputName

Full Usage: VerilogOutputName

Field type: string array
Modifiers: mutable
Field type: string array

cId

Full Usage: cId

Field type: ComponentId

allows access to the underlying component

Field type: ComponentId

fId

Full Usage: fId

Field type: FComponentId

contains component path to root of simulation - unique

Field type: FComponentId

Instance members

Instance member Description

this.GetInputBigInt

Full Usage: this.GetInputBigInt

Parameters:
Returns: bigint
Modifiers: inline

Get the BigInt data array for a given input

epoch : int
arg1 : InputPortNumber
Returns: bigint

this.GetInputFData

Full Usage: this.GetInputFData

Parameters:
Returns: FData
Modifiers: inline

Get the FData array for a given input

epoch : int
arg1 : InputPortNumber
Returns: FData

this.GetInputUInt32

Full Usage: this.GetInputUInt32

Parameters:
Returns: uint32
Modifiers: inline

Get the uint32 data array for a given input

epoch : int
arg1 : InputPortNumber
Returns: uint32

this.Id

Full Usage: this.Id

Returns: ComponentId
Modifiers: inline
Returns: ComponentId

this.InputWidth

Full Usage: this.InputWidth

Parameters:
    n : int

Returns: int
Modifiers: inline

Number of component inputs

n : int
Returns: int

this.Instance

Full Usage: this.Instance

Returns: InstancePath
Modifiers: inline

WHICH INSTANCE of a sheet this component sits in. The access path is the identity, and always was: a dotted upper-cased path of custom component LABELS used to be stored beside it, computed from exactly this and from nothing else. That string had to be unique, which cost a collision hack for the case of a custom component labelled with the top sheet's own name, and it read as a sheet name without being one. The path is unique by construction, needs no casing, and cannot be mistaken for a name. Labels are for showing the user, and are worked out where they are shown.

Returns: InstancePath

this.OutputWidth

Full Usage: this.OutputWidth

Parameters:
    n : int

Returns: int
Modifiers: inline

Number of component outputs

n : int
Returns: int

this.PutOutputBigInt

Full Usage: this.PutOutputBigInt

Parameters:
Modifiers: inline

write data to the BigInt output store for the given time step (epoch) and output (n)

epoch : int
arg1 : OutputPortNumber
dat : bigint

this.PutOutputFData

Full Usage: this.PutOutputFData

Parameters:
Modifiers: inline

write data to the FData output array for the given time step (epoch) and output (n)

epoch : int
arg1 : OutputPortNumber
dat : FData

this.PutOutputUInt32

Full Usage: this.PutOutputUInt32

Parameters:
Modifiers: inline

write data to the Unint32Step output array for the given time step (epoch) and output (n)

epoch : int
arg1 : OutputPortNumber
dat : uint32

this.ShortId

Full Usage: this.ShortId

Returns: string

for debugging - get a short usually unique truncation of the fId

Returns: string

Type something to start searching.