You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The original implementation of fud conflates notions of "state" and "stages". States are file system states that can be transformed by stages. The conflation occurred because most of the time, the name of the final state and the name of the stage are the same.
With #737, fud has a distinction between stages and states. It would be reasonable to assume that the name of each stage should be unique in a fud configuration. This is not the case because the stage abstraction is also used to define configuration information and stages sometimes want to share information between each other.
For example, there can be many stages that invoke the futil CLI tool and therefore, may want to reasonably share the stages.futil.exec field. However, if each stage has a unique name, the they'd have to duplicate this information for each stage.
So, the upshot is that stages both want uniquely indexed information and shared information which means the configuration schema needs some precise mechanism to do this. A simple solution is a new table called shared which allows access to shared data between stages while stages.<stage-name> tables are uniquely indexed by the stage name. This would also fix the weird interface we have for setting execution data where we override the verilog.data field for execution with the interpreter, verilator, and icarus. Once we have shared tables, we can do something like shared.data.
The text was updated successfully, but these errors were encountered:
The original implementation of
fud
conflates notions of "state" and "stages". States are file system states that can be transformed by stages. The conflation occurred because most of the time, the name of the final state and the name of the stage are the same.With #737,
fud
has a distinction between stages and states. It would be reasonable to assume that the name of each stage should be unique in afud
configuration. This is not the case because the stage abstraction is also used to define configuration information and stages sometimes want to share information between each other.For example, there can be many stages that invoke the
futil
CLI tool and therefore, may want to reasonably share thestages.futil.exec
field. However, if each stage has a unique name, the they'd have to duplicate this information for each stage.So, the upshot is that stages both want uniquely indexed information and shared information which means the configuration schema needs some precise mechanism to do this. A simple solution is a new table called
shared
which allows access to shared data between stages whilestages.<stage-name>
tables are uniquely indexed by the stage name. This would also fix the weird interface we have for setting execution data where we override theverilog.data
field for execution with the interpreter, verilator, and icarus. Once we have shared tables, we can do something likeshared.data
.The text was updated successfully, but these errors were encountered: