diff options
author | whitequark <whitequark@whitequark.org> | 2020-09-02 15:18:44 +0000 |
---|---|---|
committer | whitequark <whitequark@whitequark.org> | 2020-09-02 17:19:11 +0000 |
commit | b025ee0aa646268747c121c97cf0673eb06e632b (patch) | |
tree | 2bcfbcc21c8cfc2c572418c79e43b99b5cfda83e /backends/cxxrtl/cxxrtl_capi.h | |
parent | 8d6e5c63916bcff84164240cccce0e717e489a8d (diff) | |
download | yosys-b025ee0aa646268747c121c97cf0673eb06e632b.tar.gz yosys-b025ee0aa646268747c121c97cf0673eb06e632b.tar.bz2 yosys-b025ee0aa646268747c121c97cf0673eb06e632b.zip |
cxxrtl: expose port direction in debug information.
This can be useful to distinguish e.g. a combinatorially driven wire
with type `CXXRTL_VALUE` from a module input with the same type, as
well as general introspection.
Diffstat (limited to 'backends/cxxrtl/cxxrtl_capi.h')
-rw-r--r-- | backends/cxxrtl/cxxrtl_capi.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/backends/cxxrtl/cxxrtl_capi.h b/backends/cxxrtl/cxxrtl_capi.h index 447c9e1f3..d2e9787dd 100644 --- a/backends/cxxrtl/cxxrtl_capi.h +++ b/backends/cxxrtl/cxxrtl_capi.h @@ -112,6 +112,28 @@ enum cxxrtl_type { // More object types may be added in the future, but the existing ones will never change. }; +// Flags of a simulated object. +enum cxxrtl_flag { + // Node is a module input port. + // + // This flag can be set on objects of type `CXXRTL_VALUE` and `CXXRTL_WIRE`. It may be combined + // with `CXXRTL_OUTPUT`, as well as other flags. + CXXRTL_INPUT = 1 << 0, + + // Node is a module output port. + // + // This flag can be set on objects of type `CXXRTL_WIRE`. It may be combined with `CXXRTL_INPUT`, + // as well as other flags. + CXXRTL_OUTPUT = 1 << 1, + + // Node is a module inout port. + // + // This flag can be set on objects of type `CXXRTL_WIRE`. It may be combined with other flags. + CXXRTL_INOUT = (CXXRTL_INPUT|CXXRTL_OUTPUT), + + // More object flags may be added in the future, but the existing ones will never change. +}; + // Description of a simulated object. // // The `data` array can be accessed directly to inspect and, if applicable, modify the bits @@ -123,6 +145,9 @@ struct cxxrtl_object { // determines all other properties of the object. uint32_t type; // actually `enum cxxrtl_type` + // Flags of the object. + uint32_t flags; // actually bit mask of `enum cxxrtl_flags` + // Width of the object in bits. size_t width; |