05-01-2019 08:17 AM
Do the P&R algorithms inside Vivado containt any inbuilt randomness in them ?
Would it be possible to get 2 different results when compiling the same desgin twice (given the same Vivado version) ?
05-02-2019 11:19 PM
05-01-2019 08:47 AM
There is much debate upon this.
As a background, the old ISE used to have a definate part using "artificial aneeling", and the bit file had other meta data in it, which changed on each run, machine to machine etc.
Now in theory, the Vivado does not have artificail aneeling, nore the other features,
so the conclusion was, it woudl always produce the sam eoutput form no matter what machine, from the same source files.
a lot of us users have seen this to be at best less than true.
As long as the design is meeting constraints, we are happy
you see Vivaodo is a ASIC type flow, where the tools just run till the constrainst are meet, and then stop.
The suspicion is that the aim is for the tools to always produce the sam ebit file fomr the same source,
But then things like
Out of context
different veriosn of the tools,
different number of cores allocated to a job,
pre placed, locked blocks
all seem to affect the resultant bit file,
as said, and I can not say this any louder,
provided the design meets constraints, then who worries about actual routing insode the chip !
05-01-2019 09:37 AM
"provided the design meets constraints, then who worries about actual routing insode the chip !"
You might care...
As far as I understand - Vivado attempts P&R a finite number of times before it decides that meeting timing is impossible and terminates the process with negative slack on one or more paths.
Now, suppose a design is VERY marginal and Vivado DOES have some inherent pseudorandomness in its algorithms - In this case on some runs the tool WILL be able to meet timing and fail on others...
Can someone from Xilinx give a definitive answer ?
05-01-2019 10:52 PM
05-02-2019 11:00 PM
There is no inherent pseudorandomness in Vivado's algorithms, in the sense that you will get identical results every time given identical inputs. (This has been true for all of the test cases I've tried.)
Note that this does not preclude the internal use of Monte Carlo techniques; however, if employed, they apparently use the same seed each run.
05-02-2019 11:19 PM
05-02-2019 11:44 PM
05-03-2019 12:04 AM
Hi @shaikon ,
If repeatability is absolutely critical to your design environment, the following can help maximize repeatability:
Running in single-threaded mode.
Apply this command set_param general.maxThreads 1 and then run.
05-03-2019 04:56 AM - edited 05-03-2019 04:58 AM
"I would request if you can share the test case with us for further investigation?
Let us know, we will form channel (secured one) to get the files without being uploaded at public domain."
I'll test the feasability of this approach with the customer.