Hi everyone,
I came across something quite interesting while verifying two adders using EQY. I observed that when N=7168, which is larger than N=7040, the verification time dropped significantly instead of increasing. Intuitively, as N increases, the circuit becomes more complex, so we would expect the checking time to increase as well. But in this case, even though N increased, the verification time actually decreased. Does anyone know what happened?
Here, N refers to the bit-width of the adder — that is, the number of bits of the two inputs being added.
In addition, I also showed the number of gates in each implementation.
There’s no clear reason why EQY would show this behavior but generally it’s not surprising for the runtime to change somewhat chaotically when the input circuits or config changes. I’m not sure whether that alone could explain the drop in verification time, though, how long does it take to verify each of the two adders? It would help if you could share your design and/or the log oututs, since without knowing more about the circuits and config you’re running EQY with and without seeing EQY’s log output, it’s not really possible to tell whether there’s anything more going on here.
Sure! Sorry I just saw this message. Here are the adder and EQY script I’m using. In addition, I drew a graph of the runtime. What’s more interesting, I tried many times and the graph is very similar. I mean the spike of runtime appears in certain data width. X-axis is data width, y is runtime in second.
That’s to be expected. Formal verification runtimes can be very chaotic, SMT solver runtimes on bounded inputs can explode as they’re based on kind of opportunistic heuristics. The general problem they’re based on is famously computationally difficult, meaning the time to solve an instance just a tiny bit larger can suddenly take far more effort for any solver
EDIT: Yes, a larger instance can even take a shorter amount of time, since the unpredictable exploration of possible solutions can happen to notice some pattern. I expect that all of the solution times account for many orders of magnitudes less work than the worst cases of SAT problem instances of the same size with the given solver. Some just happen to work out better or worse