Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Honored Contributor I
705 Views

compiling a design that instantiate 4096 times the same module

Hi, 

I'm writing a vhdl top code that instantiates 4096 the same module (using vhdl generate statement).  

The module consists in a RAM, plus an adder and some other logic ... and 4096 of them saturates the biggest stratix V that Altera have ... 

It takes about 6 hours compile time ...  

I wonder if exist a standard compile and place route procedure to perform this kind of designs, like compiling the single module only one time and  

then placing the block 4096 times ... I'm new to this kind of modular and repetitive designs so can someone explain me which is the usual way of proceeding ? 

Using logiblocks or partitions or something else could help ?  

Thanks a lot 

franco
0 Kudos
7 Replies
Highlighted
Honored Contributor I
3 Views

 

--- Quote Start ---  

Hi, 

I'm writing a vhdl top code that instantiates 4096 the same module (using vhdl generate statement).  

The module consists in a RAM, plus an adder and some other logic ... and 4096 of them saturates the biggest stratix V that Altera have ... 

It takes about 6 hours compile time ...  

I wonder if exist a standard compile and place route procedure to perform this kind of designs, like compiling the single module only one time and  

then placing the block 4096 times ... I'm new to this kind of modular and repetitive designs so can someone explain me which is the usual way of proceeding ? 

Using logiblocks or partitions or something else could help ?  

Thanks a lot 

franco 

--- Quote End ---  

 

 

Your question is wrong. Does it fit or not the available resource. If not then why ask how to fit it.
0 Kudos
Highlighted
Honored Contributor I
3 Views

Wow. 4096. Why so many? like you said, you can only fit it in the largest stratix V. So have you got $10k lying around?

0 Kudos
Highlighted
Honored Contributor I
3 Views

Btw, using a generate loop is the only way to place it. Logic locks just lock down existing code. and partitions are just pre-compiled code. But you still need the code.

0 Kudos
Highlighted
Honored Contributor I
3 Views

 

--- Quote Start ---  

Btw, using a generate loop is the only way to place it. Logic locks just lock down existing code. and partitions are just pre-compiled code. But you still need the code. 

--- Quote End ---  

 

 

Yes it fits but to compile takes many hours, so I wonder if the force brute technique is the right one ... If it were a standard cell I would define and compile a cell then I would place it all the needed times getting a regular structure. In this case I have to compile the same module 4096 times ... Maybe I should use another compiler - synthetizer in top of quartus ? 

thanks 

franco
0 Kudos
Highlighted
Honored Contributor I
3 Views

I don't know of any. 

It looks like a hard problem anyway. Unlike an ASIC, where you can create a block and then simply replicate it exactly, in an FPGA each "identical" block has to be fitted to the FPGA logic and interconnect resources, making each one slightly different. 

 

6 hour compile time sounds about right for a full big FPGA.
0 Kudos
Highlighted
Honored Contributor I
3 Views

yup, 6 hours about right. 

I currently have a 80% full Stratix 4 that takes 4 hours on an i7, or 17 hours if I run DSE with 12 parrallel compiles (and It never meets timing) on the 6 core Xeon server. 

 

Welcome to full FPGA compilations.
0 Kudos
Highlighted
Honored Contributor I
3 Views

In principle, LogicLock can be applied to multiple instances of a precompiled design entity, using floating location. 

 

But I doubt that it's helpful in the present case.
0 Kudos