Yogesh
Occasional Contributor
5 years agoWays to improve timing on Top module?
Say I have 3 modules:
1) Top module
2) sub-module A-(achieved freq 150Mhz when compiled separately)
3) sub-module B-(achieved freq 200 Mhz when compiled separately)
After I instantiate sub-modules A and B in top module , I am getting 80Mhz and 110 Mhz from both respectively.
So , I thought if I retain the same fitter placement of module B (applying logic lock and design partitioning), I can get same frequency i.e, around 200 Mhz on the Top module .
But without any luck frequency is dropping.
Please note : Code is optimised as much as possible. I tried to look at the timing analyzer critical paths. These paths had high critical paths , timing closure recomendations was asking me to reduce the combinational path.
But number of combinational path was just 1 like a signal assignment a<= b;
It is not possible to break this path .
My question is why is the same path which was achieving high frequency while compiling a sub module independently, became a critical path at the top level compilation?
Is it because top level logic is huge(>75% of available resource) so that fitter became inefficient?
So, please suggest me how to solve this issue.
I want to achieve close to same max frequency 200 Mhz at the top level.