LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple SCTLs vs single SCTL

I have some large code on in  single 40MHz SCTL.

Total slices I am using around  92%.

Block RAM-77%

Slice LUTs-54%

DSP slices-80%.

 

I am getting timing errors while compiling the whole code.

Splitting the between 2 SCTLs will solve the issue?

 

what happens If use 2 SCTLs in terms of resources & timing?

 

thanks in advance.

 

0 Kudos
Message 1 of 9
(2,186 Views)

Hi ramyasree,

 


@ramyasree wrote:

I have some large code on in  single 40MHz SCTL.

 

I am getting timing errors while compiling the whole code.

Splitting the between 2 SCTLs will solve the issue?

 

what happens If use 2 SCTLs in terms of resources & timing?


IMHO it should help to split your large SCTL into 2 (or more) smaller ones as it gets easier to comply to timing restrictions…

Why don't you attach your code (and maybe the whole project)?

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 2 of 9
(2,165 Views)

@ramyasree wrote:

I am getting timing errors while compiling the whole code.

Splitting the between 2 SCTLs will solve the issue?


Not likely.  Two things I have seen to fix timing errors:

1. Reduce FIFO and/or memory sizes.  In my specific case, it was a DMA FIFO I reduced in size and that fixed all of my compile issues.

2. Use  pipeline.  This could be something as simple as adding a Feedback Node inline with data flow paths or use Shift Registers.  The idea here is to use multiple iterations to get a single job done, but you will still get a result each iteration.  This does add delay based on the depth of your pipeline.  For more information: Optimizing your LabVIEW FPGA VIs: Parallel Execution and Pipelining



There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
Message 3 of 9
(2,159 Views)

If you move code from one SCTL to two SCTLs of the same clock domain, LabVIEW FPGA will not optimize and it is as if the code is in the same loops.

 

If you split into two SCTLs you may be forced to create FIFOs and stuff which is very similar to pipelining as mentioned above.  So better to pipeline in the same SCTL so you do not have to add things that may not optimize.

 

There are various LabVIEW FPGA help articles on optimizing such as https://www.ni.com/en/support/documentation/supplemental/18/labview-fpga-code-optimization.html.  Internet searches for “LabVIEW FPGA optimization” should find other similar articles.


Certified LabVIEW Architect, Certified Professional Instructor
ALE Consultants

Introduction to LabVIEW FPGA for RF, Radar, and Electronic Warfare Applications
0 Kudos
Message 4 of 9
(2,138 Views)

DMA usage I reduced.

Memory sizes also I reduced. In my code, more memories are needed.

Pipelining also added at every module.

Alone that code  is supporting up to 150M. 

In the streaming compilation , I placed that code in 40M.

 

I am attaching my timing error report.

 

Download All
0 Kudos
Message 5 of 9
(2,100 Views)

I am attaching my module here.

After adding this to previous code in PXI-5840, I am getting timing errors.

 

0 Kudos
Message 6 of 9
(2,090 Views)

Depends on your code.

 

I re-wrote our code into multiple SCTLs starting a few years back and routing was massively improved. You only need one wire linking lots of nodes to run into trouble with the routing.

 

OTOH, if your code portions are completely independent, moving to two loops will probably do nothing for your compilation.

 

Again, depends greatly on the current code base.

0 Kudos
Message 7 of 9
(2,089 Views)

Thanks for your reply.

 

But In my case, Code is dependent.

need to use some target scoped FIFO to transfer data between them.

Is that fine?

Will It cause any issue in timing again?

Anyway , I will try with 2 SCTLs. 

 

" You only need one wire linking lots of nodes to run into trouble with the routing."

That means , If we connect one output wire to many nodes, it will affect the timing.

Am I correct?

 

 

0 Kudos
Message 8 of 9
(2,080 Views)

@ramyasree wrote:

Thanks for your reply.

 

But In my case, Code is dependent.

need to use some target scoped FIFO to transfer data between them.

Is that fine?

Will It cause any issue in timing again?

Anyway , I will try with 2 SCTLs. 

 

" You only need one wire linking lots of nodes to run into trouble with the routing."

That means , If we connect one output wire to many nodes, it will affect the timing.

Am I correct?

 

 


Nit will, but it can. If you have any one signal with a huge fanout on the FPGA chip, it can cause headaches.

0 Kudos
Message 9 of 9
(2,070 Views)