Area Constraints in Xilinx

Hi,

I've been working on an FPGA project for a month or so now and I have finally finished the code. Before I began I calculated the amount of BRAM and Distributed Ram that I had available and designed the code accordingly. However after compilation I get the following results: Number of Slices: 43734 out of 1200 3644% (*) Number of Slice Flip Flops: 19047 out of 2400 793% (*) Number of 4 input LUTs: 27654 out of 2400 1152% (*) Number of IOs: 58 Number of bonded IOBs: 53 out of 96 55% Number of BRAMs: 528 out of 10 5280% (*) Number of GCLKs: 2 out of 4 50%

I don't really see how any of this is possible. I instantiated 5 BRAM's. Where does it come up with 528? Additionally where do the flipflops, slices, and LUT's come from? My code is only ~500 lines, I don't even know how I coded for this much logic?!!!

PLEASE HELP!!

Reply to
ian.peikon
Loading thread data ...

snipped-for-privacy@gmail.com schrieb:

gosh, you are heavy coder! well for the future there is one good advice:

LOOP: wrote 2 lines of code, hit "View Technology Schematic" and verify that the synthesis does something useful. Goto LOOP

this will make sure you arent facing this kind of surprises.

now you have to start from the bottom and look at lower modules what they produce and work up to the toplevel unit to see where the logic and rams really are consumed.

Antti

Reply to
Antti

Fire up the Floorplanner after translate and it will give you a breakdown of where resources are used if you have maintained hierarchy. Synthesis report can also give some clues too.

John Adair Enterpo> snipped-for-privacy@gmail.com schrieb:

Reply to
John Adair

To do much useful in 500 lines of code and have that resource utilization as the output, my guess is that you are using a few IP cores which take up those resources.

---Matthew Hicks

Reply to
Matthew Hicks

Reply to
ian.peikon

I'm curious which Xilinx device and package you're targeting. I didn't do an exhasutive search, but I didn't see any Virtex-II, or Spartan (2, 3, 3E) parts with the resources listed above.

Rob

Reply to
RobJ

Reply to
ian.peikon

Sorry, I assumed that you used the primitives to instantiate the BRAM or wrote it so the synthesis engine would infer it (how I like to do it). I was guessing that you had other heavy weight cores that weren't just instantiating built-in primitives. An example would be a FIFO.

---Matthew Hicks

Reply to
Matthew Hicks

I think that you must have a basic misunderstanding with your code. I can only give you the obvious advice :

- Think hardware. Every signal or process (or whatever) you write must correspond to a basic 'physical' structure you have in mind (or on paper).

- Try to synthetize and check the smallest possible part and try to isolate the ofending code.

- If everything else fails, put your code on a webpage, and some of the experts here may spot the problem for you.

Best regards

Josep Duran

Reply to
Josep Duran

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.