cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
2,231 Views
Registered: ‎06-07-2017

Vivado 2015.4 Synthesis related iisue

Hello

 

I have two RTL processors written in VHDL which are exactly the same.

 

The first one is a three pipe stage and it is divided as follows: IF => ID => EX-WB (Denoting instr fetch decode execute and writeback)

 

The second one is a four pipeline stage which is divided as follows: IF => ID => EX => WB.

 

Synthesizing the 4 pipe stage on vivado takes about 3 mins and generates a layout that requires 4,585 LUTs (Lookup tables)

 

Synthesizing the 3 pipe stage on vivado takes about 30mins and generates a layout that requires 38,886 LUTs.

 

Can anyone explain  why is there such a big difference, and how was vivado able to optimize one in such a way , and the other in a completley different way

 

Thank you

0 Kudos
2 Replies
Highlighted
Advisor
Advisor
2,223 Views
Registered: ‎04-26-2015

Hard to tell without seeing the code and the report. My guess would be that in the three-stage example, you're violating one of the rules for using either block RAM or LUT RAM (eg. block RAM requires addresses to be registered). The result is that Vivado is turning your program memory or RAM into a giant register table, whereas in the four-stage one it's being mapped vastly more efficiently into block RAM or LUT RAM.

0 Kudos
Highlighted
Visitor
Visitor
2,197 Views
Registered: ‎06-07-2017

@u4223374 Thank you for your quick reply

 

I apologize, but as of now, I am not authorized to share the code.

 

Below I attached the synth_reports regarding the cores. I have put both for three and four pipe stages

 

 

0 Kudos