circt
circt copied to clipboard
[FIRRTL][RefType] Verifier rejects resolve from output port in same module.
Example:
firrtl.module private @dead_ref_local(in %source: !firrtl.uint<1>, out %dest: !firrtl.ref<uint<1>>) {
%ref_source = firrtl.ref.send %source: !firrtl.uint<1>
firrtl.connect %dest, %ref_source : !firrtl.ref<uint<1>>, !firrtl.ref<uint<1>>
%unused = firrtl.ref.resolve %dest : !firrtl.ref<uint<1>>
}
Error:
output reference port cannot be reused by multiple operations, it can only capture a unique dataflow
This is unexpected because we otherwise allow the dataflow from send
to reach multiple resolve
's.