ast/simplify: improve enum handling.
authorwhitequark <whitequark@whitequark.org>
Tue, 14 Apr 2020 03:25:22 +0000 (03:25 +0000)
committerwhitequark <whitequark@whitequark.org>
Wed, 15 Apr 2020 14:14:50 +0000 (14:14 +0000)
commit2106f78bb14eab6c234a0a367ec32ff6680fc6d9
treedfe37680bcce6a05d8974e3645fc7afc1ca9f0cb
parentf44b287f8e36684607447beb05556f1a5a34d625
ast/simplify: improve enum handling.

Before this commit, enum values were serialized as attributes of form
  \enum_<width>_<value>
where <value> was a decimal signed integer.

This has multiple drawbacks:
  * Enums with large values would be hard to process for downstream
    tooling that cannot parse arbitrary precision decimals. (In fact
    Yosys also did not correctly process enums with large values,
    and would overflow `int`.)
  * Enum value attributes were not confined to their own namespace,
    making it harder for downstream tooling to enumerate all such
    attributes, as opposed to looking up any specific value.
  * Enum values could not include x or z, which are explicitly
    permitted in the SystemVerilog standard.

After this commit, enum values are serialized as attributes of form
  \enum_value_<value>
where <value> is a bit sequence of the appropriate width.
README.md
frontends/ast/simplify.cc