====== Namespace std::data ======
This namespace contains standard names for commonly used data encodings in asynchronous circuits.
template
deftype d1of <: enum (bool?! d[N]);
This data-type specifies a one-of-''N'' encoding (a.k.a. a one-hot encoded value). The all zero/false state is used to indicate an neutral value (i.e. the absence of data). The ''d[]'' array corresponds to the data wires/rails.
deftype d1of2 <: d1of<2> (bool?! t, f);
This type contains a special name for a one-of-two encoding, with additional signals ''t'' and ''f'' used as the true and false wires/rails.
deftype dualrail <: d1of2();
Since the ''d1of2'' type is also commonly known as //dual-rail encoding//, this provides another name for the same type.
template
deftype Mx1of2 <: int (dualrail d[M])
This defines an ''M''-bit dual-rail encoding. It contains an array of data bits ''d[]'', each of which are of type ''dualrail''.