You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SpyDrNet-TMR produces different EDIF netlists from run to run (Python 3.10.4). Repeatability is desirable for traceable builds and automated CAD flows.
If I run this command repeatedly, the generated EDIF is equivalent but permuted. Speculating, but the underlying cause is probably the appearance of memory addresses in the __hash__ exported by SpyDrNet IR classes like OuterPin. As a result, dictionary order is different from run to run, even though iterating through dictionary keys is determinstic in Python from 3.6 onwards and is considered a language feature from 3.7 onwards.
The __hash__ should identify instances using source location from the input netlist, if possible. (The ability to trace an IR instance back to source netlist is presumably useful on its own.)
Easy to complain, harder to implement - I am leaving this here in the hopes it's helpful, and with no expectation that anyone is going to rush out and implement it for me. Thanks for all your hard work on SpyDrNet and SpyDrNet-TMR.
best,
Graeme
The text was updated successfully, but these errors were encountered:
Thanks for submitting this issue. I used your script and was able to replicate the issue you're talking about. Determinism is definitely one of our goals so we will look into this.
SpyDrNet-TMR produces different EDIF netlists from run to run (Python 3.10.4). Repeatability is desirable for traceable builds and automated CAD flows.
For example:
If I run this command repeatedly, the generated EDIF is equivalent but permuted. Speculating, but the underlying cause is probably the appearance of memory addresses in the
__hash__
exported by SpyDrNet IR classes like OuterPin. As a result, dictionary order is different from run to run, even though iterating through dictionary keys is determinstic in Python from 3.6 onwards and is considered a language feature from 3.7 onwards.The
__hash__
should identify instances using source location from the input netlist, if possible. (The ability to trace an IR instance back to source netlist is presumably useful on its own.)Easy to complain, harder to implement - I am leaving this here in the hopes it's helpful, and with no expectation that anyone is going to rush out and implement it for me. Thanks for all your hard work on SpyDrNet and SpyDrNet-TMR.
best,
Graeme
The text was updated successfully, but these errors were encountered: