E
Emanuele83
Guest
Good day to everybody,
I have a problem with my new FPGA design. After a long time using
Spartan 2 my company migrated to SPARTAN 3A 3400 DSP on a BGA csg484
package. We had a lot of problems soldering this CSG484 packages and
the whole board has been baked 2 times. The first time the balls were
not melted totally and didnt solder completely the FPGAs to the the
PCB, due to a bad temperature profile. The same PCBs and the same
FPGAs has been baked another time with the correct temperature profile
and the balls were melted properly, the daisy chain was recognized and
the FPGA were possible to be programmed.
Since the beginning we had problems in the communication between FPGAs
and other onboard chips.
I program in VHDL and my code is correctly written from the
algorithmic point of view. It matches the requirements that I have set
to communicate with the other chips onboard and perform the correct
computations on the data that must be processed. I performed a post
synthesis simulation of each and every block that forms the design.
The aim of the design is to run @ 80Mhz speed.
The problem is that even setting the constraints over period, duty
cycle, OFFSET IN and OUT, with all the constraints met in the timing
report, the FPGA behaves in a totally different way if I change the
compiling settings (for example changing from AREA to SPEED goals, or
changing the state machine implementation from one hot to auto) or
modifying the VHDL code slightly.
Thus I decided to decrease the clock frequency. I have a 40MHz
oscillator onboard and the 80Mhz is obtained by a DCM. I set the DCM
to let the system work at 40MHz (with some small modification in the
logic to let the external communication possible (RAM, external chips
which run at 40MHz), I changed the constraints on PERIOD AND OFFSETs
and the system was working. Ok, it is a matter of speed, I thought. No
it does not. Because, when I modified the VHDL code, or II added a
Chipscope core to debug my modifications, the design was no more able
to perform correct operations nor to communicate with some external
chips creating corrupted data. Even if ALL the constraints at 40MHz
are met.
I tried to overconstrain the design (real clock speed at 40MHz,
constraints to 50MHz or 60Mhz) and it works if I do not modify the
VHDL code slightly
For example leaving the VHDL code written by myself as it is and
adding a CHIPSCOPE analyzer CORE the behaviour of my FPGA is totally
different (all the constraints met, as usual).
Thus my doubts are:
Why, if the constraints are met, if SETUP and HOLD time are well
controlled by the Synthesis tool, my FPGA corrupts data?
Do I have to expect something like this? I mean, if the optimization
process is done by the ISE toolsuite, the translation the mapping,
routing and so on, should I trust the timing report results or should
I expect strange behaviour when I program my FPGA?
I am in the FPGA world since no more than 3 years and I never seen
something like this. Can somebody who has more experience tell me if
this is usual, if something like this is normal in a complex FPGA
design?
My boss usually programmed old QUICKLOGIC FPGAs using schematics and
he switched, under my advice, to XILINX Spartan 3A (not DSP) He
modified the schematics only a bit, using no constraints at all, doing
weird things with the clock,
Some info:
1_I have no possibility to check if the FPGA HW is broken or not. X-
ray or what else. I just wait for a new board which should be backed
carefully
2_I have no chances to perform post route simulations for the whole
project (I am in a hurry) and with my old design I did not do it
(SPARTAN 2) and everything was perfectly working (also without setting
any constraint over PERIOD or OFFSET)
3_I have 3 boards, when I program them with the same bitstream they
behave sometimes differently.
4_I also tried to run the synthesis SW on a different computer and
upgrade the ISE toolsuite to the latest version (ISE 12.4 Logic
Edition) but after compiling nothing changes
I have a problem with my new FPGA design. After a long time using
Spartan 2 my company migrated to SPARTAN 3A 3400 DSP on a BGA csg484
package. We had a lot of problems soldering this CSG484 packages and
the whole board has been baked 2 times. The first time the balls were
not melted totally and didnt solder completely the FPGAs to the the
PCB, due to a bad temperature profile. The same PCBs and the same
FPGAs has been baked another time with the correct temperature profile
and the balls were melted properly, the daisy chain was recognized and
the FPGA were possible to be programmed.
Since the beginning we had problems in the communication between FPGAs
and other onboard chips.
I program in VHDL and my code is correctly written from the
algorithmic point of view. It matches the requirements that I have set
to communicate with the other chips onboard and perform the correct
computations on the data that must be processed. I performed a post
synthesis simulation of each and every block that forms the design.
The aim of the design is to run @ 80Mhz speed.
The problem is that even setting the constraints over period, duty
cycle, OFFSET IN and OUT, with all the constraints met in the timing
report, the FPGA behaves in a totally different way if I change the
compiling settings (for example changing from AREA to SPEED goals, or
changing the state machine implementation from one hot to auto) or
modifying the VHDL code slightly.
Thus I decided to decrease the clock frequency. I have a 40MHz
oscillator onboard and the 80Mhz is obtained by a DCM. I set the DCM
to let the system work at 40MHz (with some small modification in the
logic to let the external communication possible (RAM, external chips
which run at 40MHz), I changed the constraints on PERIOD AND OFFSETs
and the system was working. Ok, it is a matter of speed, I thought. No
it does not. Because, when I modified the VHDL code, or II added a
Chipscope core to debug my modifications, the design was no more able
to perform correct operations nor to communicate with some external
chips creating corrupted data. Even if ALL the constraints at 40MHz
are met.
I tried to overconstrain the design (real clock speed at 40MHz,
constraints to 50MHz or 60Mhz) and it works if I do not modify the
VHDL code slightly
For example leaving the VHDL code written by myself as it is and
adding a CHIPSCOPE analyzer CORE the behaviour of my FPGA is totally
different (all the constraints met, as usual).
Thus my doubts are:
Why, if the constraints are met, if SETUP and HOLD time are well
controlled by the Synthesis tool, my FPGA corrupts data?
Do I have to expect something like this? I mean, if the optimization
process is done by the ISE toolsuite, the translation the mapping,
routing and so on, should I trust the timing report results or should
I expect strange behaviour when I program my FPGA?
I am in the FPGA world since no more than 3 years and I never seen
something like this. Can somebody who has more experience tell me if
this is usual, if something like this is normal in a complex FPGA
design?
My boss usually programmed old QUICKLOGIC FPGAs using schematics and
he switched, under my advice, to XILINX Spartan 3A (not DSP) He
modified the schematics only a bit, using no constraints at all, doing
weird things with the clock,
Some info:
1_I have no possibility to check if the FPGA HW is broken or not. X-
ray or what else. I just wait for a new board which should be backed
carefully
2_I have no chances to perform post route simulations for the whole
project (I am in a hurry) and with my old design I did not do it
(SPARTAN 2) and everything was perfectly working (also without setting
any constraint over PERIOD or OFFSET)
3_I have 3 boards, when I program them with the same bitstream they
behave sometimes differently.
4_I also tried to run the synthesis SW on a different computer and
upgrade the ISE toolsuite to the latest version (ISE 12.4 Logic
Edition) but after compiling nothing changes