Issie logo Issie

SimulationComponent Type

Like Component but with additional dynamic info used by simulator Clocked components have state data. All components have optional data on inputs that propagates During evaluation of combinational logic Components require all inputs to have data before they can generate output data Note that reducer is a function that generates the outputs TODO: make this equatable data?

Record fields

Record Field Description

CustomSimulationGraph

Full Usage: CustomSimulationGraph

Field type: SimulationGraph option
Field type: SimulationGraph option

DrivenInputWidths

Full Usage: DrivenInputWidths

Field type: ((ComponentId * InputPortNumber) * int) list
Field type: ((ComponentId * InputPortNumber) * int) list

Id

Full Usage: Id

Field type: ComponentId
Field type: ComponentId

InputWidths

Full Usage: InputWidths

Field type: Map<InputPortNumber, int>
Field type: Map<InputPortNumber, int>

Label

Full Usage: Label

Field type: ComponentLabel
Field type: ComponentLabel

OutputWidths

Full Usage: OutputWidths

Field type: int array
Field type: int array

Outputs

Full Usage: Outputs

Field type: (ComponentId * InputPortNumber) list array

What each output port drives: entry k is the ports and components connected to output port k, and a port driving nothing - an unconnected IOLabel - is an empty list rather than a missing key. An ARRAY and not a Map, on the rule that an array is right exactly when it is written once: this is built complete when the component is made and never updated, and the key is a port number, dense from 0. It used to be one small F# Map allocated per component per INSTANCE of its sheet - the expansion's worth of them on a design that multiplies out - each iterated twice by the flatten. OutputWidths beside it is already an array indexed the same way.

Field type: (ComponentId * InputPortNumber) list array

Type

Full Usage: Type

Field type: ComponentType
Field type: ComponentType

Type something to start searching.