11-12-2013 06:21 AM
I'm using ISE 13.4 and Virtex 6 LX760!
In my desing i have 5 instances (5000-6000 LUT's for each instance) of a module constrained with 200 MHz. I constrain every instance with a separate
FROM TO constraint in order to evaluate the timing after PAR for every instance. However, the clock of the instances are also constrained with a periode
constrain. The *.ucf file looks like this:
NET "clk_in" TNM_NET = "clk_in";
TIMESPEC "TS_clk_in" = PERIOD "clk_in" 5.00 ns HIGH 50.00%;
TIMESPEC TS_INST_1_RESULT = FROM FFS("*inst_1*") TO FFS("*inst_1*") 5.00 ns;
TIMESPEC TS_INST_2_RESULT = FROM FFS("*inst_2*") TO FFS("*inst_2*") 5.00 ns;
TIMESPEC TS_INST_3_RESULT = FROM FFS("*inst_3*") TO FFS("*inst_3*") 5.00 ns;
TIMESPEC TS_INST_4_RESULT = FROM FFS("*inst_4*") TO FFS("*inst_4*") 5.00 ns;
TIMESPEC TS_INST_5_RESULT = FROM FFS("*inst_5*") TO FFS("*inst_5*") 5.00 ns;
I do several PAR runs with different seeds (starting-placer-cost-tables).
After PAR some of the instances (most two or three) have a positive slack. However, it is very unlikely that all five instances have a positive slack (sometimes only 1 out of 50 runs).
I saw already that every instance had a positive slack, but not during the same run.
There is an interconnection between the instances, however, it is well registered!
I already tried to fix every module with a positive slack (use fix-instances at plan-ahead) -> placment information is stored at *.ucf file
After that I do the next run with different starting placer cost table.
But this strategy also fails, because, if more than two or three instance are fixed i get a very bad timing (max. 150-160 MHz) after Route!
Note 1: The input and outputs of the related modules are all registered!
Note 2: The 5 instances are only a small part of a very hughe desing! (60% occupied slices of LX760)
Now, my questions are:
1) Are there any techiques to overcome such multi-instance timing problems?
2) It is possible to place and route one instance and store the results (place and routue information) and include this instance with good timing as a hard macro! (something like relative place and route constrains)!
Thanks in advance for your help!
11-12-2013 06:27 PM
You can take a look at the timing report and see what causes the timing failure.
If the main cause is long net delay, then the instances are good candidates for floorplanning.
The good placement result can be visualized in PlanAhead and guide your floorplanning.