Guest
Hi,
I'm running into a problem with a memory controller design (mid-range FPGA, 76% utilization) and am wondering if anyone out there has seen synthesis / place-n-route options causing a design to fail when programmed onto a board?
Functional simulation passes all tests, and the RTL has been frozen for a while, and I am experimenting with different synthesis and place-&-route options to see if I can get better area and speed results. My steps are: I change a few options, re-compile, program the board and do a few functional tests.
What happens is if I use non-default options for synthesis and/or place-&-route, the functional hardware read/write tests fail in an erratic way. I've narrowed it down to (not 100% sure) possibly synthesis options involving state-machine encoding, but am wondering if there are flaws in my RTL, constraints or design that are causing these.
Here are some questions that I'm trying to get a handle on:
1. Could these problems be due to bugs in my synthesis / place-&-route tool?
(Am omitting the vendors here to avoid debates on whose tools are better but both the synthesis and par tool are versions that are older than the latest versions by a couple of software generations).
2. If you have experienced such problems, were they more due to synthesis options or to place-&-route ones? In the sense that, if the synthesis tool is causing problems, maybe I can just fiddle with par options instead.
3. Will formal verification or some sort of pre-/post-synthesis or par equivalence checking help resolve such problems?
If anyone has seen such issues before, I'd appreciate it if you can share some of your experiences (and solutions!).
Much appreciated,
Harnhua
I'm running into a problem with a memory controller design (mid-range FPGA, 76% utilization) and am wondering if anyone out there has seen synthesis / place-n-route options causing a design to fail when programmed onto a board?
Functional simulation passes all tests, and the RTL has been frozen for a while, and I am experimenting with different synthesis and place-&-route options to see if I can get better area and speed results. My steps are: I change a few options, re-compile, program the board and do a few functional tests.
What happens is if I use non-default options for synthesis and/or place-&-route, the functional hardware read/write tests fail in an erratic way. I've narrowed it down to (not 100% sure) possibly synthesis options involving state-machine encoding, but am wondering if there are flaws in my RTL, constraints or design that are causing these.
Here are some questions that I'm trying to get a handle on:
1. Could these problems be due to bugs in my synthesis / place-&-route tool?
(Am omitting the vendors here to avoid debates on whose tools are better but both the synthesis and par tool are versions that are older than the latest versions by a couple of software generations).
2. If you have experienced such problems, were they more due to synthesis options or to place-&-route ones? In the sense that, if the synthesis tool is causing problems, maybe I can just fiddle with par options instead.
3. Will formal verification or some sort of pre-/post-synthesis or par equivalence checking help resolve such problems?
If anyone has seen such issues before, I'd appreciate it if you can share some of your experiences (and solutions!).
Much appreciated,
Harnhua