circt icon indicating copy to clipboard operation
circt copied to clipboard

[FIRRTL][RefType] Verifier rejects resolve from output port in same module.

Open dtzSiFive opened this issue 2 years ago • 0 comments

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.

dtzSiFive avatar Aug 12 '22 20:08 dtzSiFive