API Design question, AXI has transaction IDs which allow results to be returned out of order, their width is implementation defined. Currently I have an ID feature: ```python # TODO: Should we strict to spec compliant feature sets, ie !last => !lock, etc # TODO: USER Signalling??? class Feature(enum.Enum): """Optional Wishbone interface signals.""" LAST = "last" BURST = "burst" REGION = "region" LOCK = "lock" CACHE = "cache" QOS = "qos" ID = "id" ``` and then in my signature I have: ```python class Signature(wiring.Signature): """AXI4 interface signals. Parameters ---------- addr_width : int Width of the address signal. data_width : ``8``, ``16``, ``32`` or ``64`` Width of the data signals ("port size" in Wishbone terminology). id_width : Optional[int] Width of the id signals """ def __init__(self, *, addr_width, data_width, id_width = None, features=frozenset()): ... ``` And in the diagnostics I enforce `id_width is not None` implies `"id"` feature and implies `id_width > 0`