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