fvm.drom2psl.definitions module
The json file must contain a dict
- The dict described in the json file can have the following fields:
signal (mandatory)
edge (optional)
head (optional)
foot (optional)
assign (not supported, it is for drawing schematics)
config (not supported, it is just for cosmetic purposes)
- fvm.drom2psl.definitions.CONFIG = 'config'
signal is a list of signalelements
- signalelements may be either dict or list
if dict, signalelement is a wavelane
if list, signalelement is a group of wavelanes
- a group is a list that has:
a name as first element (mandatory)
and either: - one or more groups, or - one or more wavelanes
- fvm.drom2psl.definitions.STRETCH = '>'
an edge is a list of strings
- each string has these tokens:
<source><arrow><destination>[<whitespace><label>]
source must have been defined in a node inside a wavelane
destination must have been defined in a node inside a wavelane
arrow must be one of the allowable values
whitespace (optional) is just whitespace
label (optional) can be any string
if a label is used, whitespace is mandatory
- fvm.drom2psl.definitions.STRING = 'string'
a wavelane may: - be an empty wavelane, or - have at least a name field - wave, data, node are optional - period and phase are also optional (and we won’t support them)
period should be an integer. fractionary periods are ceil()’d up internally (i.e. 2.9 becomes 3)
phase doesn’t seem to have restrictions
type is a custom field we define where the user can specify the datatype of the signal. This field is not rendered by wavedrom
- fvm.drom2psl.definitions.TYPE = 'type'
a wave is a string that contains one character per clock cycle for the signal - each character does a different thing - any other characters are interpreted the same as ‘x’ - we won’t be supporting neither REDUCE nor STRETCH