Description
Expected Behaviour
If a successful routing is achieved, i.e. there are no overused nodes and all nets have been routed the router should report a successful routing.
Current Behaviour
Right now when the RCV router is enabled, there is an exit condition that checks to see if hTNS is resolved before allowing the router to complete. There is a function to tell RCV to stop early and report a successful routing in some circumstances, however if this isn't tripped before the max iteration count is reached the router will report a failed routing.
This has caused fails on LU8PEEng and LU32PEEng which reach the maximum iteration count and report fails. These report feasible routing, but don't completely resolve hold.
Possible Solution
The easiest patch right now would be to have the router report successful routing if the routing is feasible and the maximum iteration count is reached, regardless of hTNS. This would ensure routing doesn't finish before RCV has resolved hold, while also serving as a fallback if RCV can't resolve hold but the circuit is otherwise fine.
A more robust fix would be making the RCV early exit function mentioned above smarter.
Steps to Reproduce
- Run vtr_qor_reg_chain test
- Observe LU8PEEng and LU32PEEng circuits log files
Context
I've been developing RCV this summer, and didn't get around to patching this. The point of this is to make the RCV router less failure prone.
Your Environment
- VTR revision used: VTR 8.0
- Operating System and version: Linux-5.8.5-arch1-1 x86_64
- Compiler version: GNU 10.2.0