mirror of https://github.com/llvm/circt.git
ae75dfa7a9
Rewrite the Grand Central Views/Interface pass to fully support the Grand Central Chisel API. Specifically, enable support for interfaces that instantiate other interfaces, support n-dimensional vectors of interfaces, and add generation of XMRs to drive the interfaces. Change Grand Central annotation scattering to represent interfaces with a recursive structure. Interfaces which instantiate other interfaces will show up as BundleTypes in the elements where they are instantiated. This keeps the interface representation intact until the Grand Central pass can choose to handle this however it wants. Also, change scattering to using numeric IDs instead of relying on string matching to keep track of interface membership. Add an MLIR Attribute hierarchy to represent this recursive structure. Use this to factor out verification logic from business logic that generates interfaces. After this rewrite, the pass now works in the following way: 1. Extraction information is pulled out from the circuit along with annotations that describe the interfaces. 2. The full circuit is walked to build up information about companions, parents, and leaves that will be connected to the interface. 3. Interface annotations on the circuit are then recursively walked to generate interfaces, instantiate interfaces, and generate XMRs in a "mappings" file that drives the interfaces. A CircuitNamespace utility is added to generate unique symbols for interfaces and binds that need to be created. Interfaces (and other collateral) are only extracted if an ExtractGrandCentralAnnotation is present. This is a deviation from the Scala FIRRTL Compiler Grand Central pass where absence of that annotation will cause an assert to fire. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com> |
||
---|---|---|
.. | ||
CAPI | ||
Conversion | ||
Dialect | ||
ExportVerilog | ||
Scheduling | ||
circt-opt | ||
circt-reduce | ||
circt-translate | ||
firtool | ||
handshake-runner | ||
lib | ||
verilator | ||
CMakeLists.txt | ||
lit.cfg.py | ||
lit.site.cfg.py.in |