circt/test
Schuyler Eldridge 5cffc8537b
[firrtl] Move LowerLayers after LowerXMR (#8405)
Move the `LowerLayers` pass after the `LowerXMR` pass.  To do this, all
passes at the end of the CHIRRTL to Low FIRRTL pipeline are moved after
`LowerXMR`.  This is necessary because the `LowerLayers` pass cannot, at
present, be moved after the passes at the end of the pipeline.

This is done to enable forcing out of layers.  By lowering probes to XMRs,
the layers can be lowered trivially to modules/instances and their XMRs
will now (seemingly) magically just work.  By doing the loweirng in this
way, it avoids ever having to represent an input probe in the FIRRTL
dialect.

A consequence of this is that there are now simplifying
assumptions (preconditions) that can be made about the `LowerLayers` pass:

1. It will never see a number of probe ops because the `LowerXMR` pass has
   a postcondition that all of these are removed.

2. Input and output ports can never be created on modules created from
   layer blocks.

While I am generally always in favor of passes being relocatable anywhere
in the pipeline, this is one pass that really does _not_ make sense to be
relocatable.  In effect, this pass is part of the lowering from FIRRTL to
HW.  There is no point in being able to use it earlier in the pipeline.
That said, it still is tested to work with things which we may one-day
preserve, like `WhenOp`s.

Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
2025-04-24 11:02:55 -04:00
..
Analysis [FIRRTL] Support MarkDUTAnnotation on extmodules. (#8001) 2024-12-17 13:11:34 -07:00
CAPI [firrtl] Move LowerLayers after LowerXMR (#8405) 2025-04-24 11:02:55 -04:00
Conversion [Moore] Add `moore.uarray_cmp` op (#8416) 2025-04-22 12:58:32 -07:00
Dialect [firrtl] Move LowerLayers after LowerXMR (#8405) 2025-04-24 11:02:55 -04:00
Scheduling FileCheck directive fixup, now filecheck_lint-clean. (#7057) 2024-05-16 16:25:52 -05:00
Target [LLVM] bump to 9deb08a and integrate upstream SMT C APIs (#8424) 2025-04-17 15:26:22 -04:00
Tools [circt-bmc] Add rising clocks only mode (#8330) 2025-03-20 15:46:36 +00:00
Transforms [StripDebugInfoWithPred] Use worklist instead of recursion (#8435) 2025-04-22 14:01:03 -07:00
Unit [Moore] Add SystemVerilog types (#2699) 2022-03-04 08:48:45 +01:00
arcilator [Arc] Improve LowerState to never produce read-after-write conflicts (#7703) 2024-10-28 14:57:03 -07:00
circt-as-dis [NFC, FIRRTL] Rename StrictConnect to MatchingConnect. (#7116) 2024-06-04 09:19:00 -05:00
circt-opt [Ibis] Rename to 'Kanagawa' (#7832) 2024-11-25 11:23:31 -08:00
circt-reduce [HW] Change printer for modules (#6205) 2023-09-28 16:30:15 -05:00
circt-synth [Transforms][circt-synth] Add HierarchicalRunner pass (#8254) 2025-02-28 14:43:54 -08:00
circt-test [circt-test] Add support for contracts (#8166) 2025-02-07 16:39:13 -08:00
circt-translate [FIRRTL] Bump minimum to 2.0.0, remove partial conect (#5075) 2024-06-11 11:07:18 -05:00
circt-verilog [circt-verilog] Only run test when slang is available 2024-11-12 12:19:41 -08:00
firtool [firrtl] Move LowerLayers after LowerXMR (#8405) 2025-04-24 11:02:55 -04:00
hlstool Don't read lowering options from hidden global options (#4038) 2022-10-04 15:41:03 -05:00
kanagawatool [Kanagawa] Remove `%this` (#8097) 2025-01-21 09:38:54 +01:00
lib [NFC] Added newlines to the end of files 2022-03-28 18:58:23 +03:00
om-linker [OM] Preserve non-OM operations in OM LinkModules (#8109) 2025-01-22 12:56:06 -08:00
CMakeLists.txt [LLVM] bump to 9deb08a and integrate upstream SMT C APIs (#8424) 2025-04-17 15:26:22 -04:00
lit.cfg.py [circt-verilog-lsp-server] Add Verilog Language Server (#8234) 2025-02-27 16:36:53 -08:00
lit.site.cfg.py.in [LLHD] Remove llhd-sim (#7351) 2024-07-19 17:54:14 +01:00