04-24-2014 04:15 AM
Hi
I run into a timing violation problem during compiling my FPGA code. Even if I change the compile options to "balanced" or anything else the problem is still there.
My question is now, how can I find the function block in my code where the problem occurs? I use several SCTL's in my code.
thanks in advance
Solved! Go to Solution.
04-24-2014 05:57 AM
Well your image shows that to meet timing requirements your code section needs a propagation delay of no more than ZERO seconds- obviously no amount of fiddling with compiler settings or code optimisation is going to meet this impossible target.
So question is, why is that the requirement? Have you set some kind of infinite loop rate?
04-25-2014 03:54 AM
Hello
I think I found the problem according your reply. I forgot to use a while outside the SCT. Thanks for your answer.
best regards
04-28-2014 09:45 AM
Somehow I still have the issue with a timing violation. Therefore I have following questions:
- Is the meaning of "Non-diagram component" the default value of my shift-registers (see vi)?
- If yes, why it can not be compiled in such way?
- How it can be solved?
04-28-2014 09:50 AM
That non-diagram component is likely related to the cRIO variables you are using. Can you try changing your top-level clock to match your SCL clock and see if the error changes?
04-29-2014 12:21 AM
the top level clock is per default 40MHz and can not be changed. Is it possible to use additional wait-loops or are there other ideas to solve this issue?
04-29-2014 04:23 AM
...had a look to your FPGA vi but couldn't see a SCTL
The problem is probably caused by the use of the UserDefinedVariables. I suggest to replace them by controls or global variables. Unlike on other targets the use of global variables is suggested on FPGA's in terms of resource usage. I haven't used this type of variables on a chassis (FPGA) and as far as I understand the help, they work in scan mode which probably can't be combined within a FPGA vi. But LabVIEW throws no syntax error so I'm not sure...
Hope it helps
Christian
04-29-2014 04:52 AM
I changed all SCTL with while-loops.
You mean I can use global variables to exchange data between the FPGA and a external Host-PC over the network? What is the best way
to exchange several data between FPGA and Host-PC in general?
thanks
04-29-2014 05:02 AM
Use controls for the FPGA-Host communication as long as you have enough FPGA resources. It's recommended to use DMA FIFO communication between Host and FPGA.
Only the controls on the FPGA top level vi are accessible on the Host side.
Global variables are used to communicate with a FPGA scope only.
You use a sbRIO device so I think the FPGA shall communicate with the RT target (Host) ...
03-24-2016 04:42 AM
I have a similar problem. My system is Flexrio with FPGA 7962R and IO module 6587. I am using external clock of 50MHz and basic connector clip. When I compile my code I to get error for Timing Violation. My program simply reads data from lvds read port, acquires 2 channels through indexing and saves data in DMA FIO (Target to Host) to be saved in TDMS format.
If I run my code though internal clock, it works fine.
IF I run my code by replacing DMA fifo with an indicator and using external clock of 50MHZ, it works fine.
But IF I run my code using DMA fifo and external clock of 50 MHz i get timing violation error. on investigation, it calls DMA FIFO a non diagram components and the total delay exceeds with some ns.
I want to know how should I remove this problem. I need to work with external clock and DMA fifo.
Why is it calling it a non diagram component?
Secondly, How can we monitor/probe Timing delays of each function in FPGA VI? IS there some way of highlighting the function delay and then evaluating the total delay.