Forum Discussion

cosx's avatar
cosx
Icon for Occasional Contributor rankOccasional Contributor
5 years ago

Data arrival Path in timing analyser

Hi everyone,

I just came across a very confusing thing about data arrival path in timing analyser. This path mismatched the actual routing path in the chip planner.

I placed a 20-bit adder between two registers which are clocked respectively at positive and negative edges. (I deliberately do this though it is not a good design practice.)

When I checked the placement and routing in the chip planner, I found all of fanouts and fanins are correct. The blue region in picture below shows that this 20-bit adder has been placed into 10 LABCELL blocks from its first bit adder to its last one.

However, when I checked the timing analyser, a very confusing thing happened as shown in the screenshot below.

One could see clearly in the screenshot that the entry the first bit adder "LPM_ADD_SUB...|78" is NOT connected to "LPM_ADD_SUB....|op_1~74" which is the second bit adder, but connected to "LPM_ADD_SUB....|op_1~38". The delay path length of 20-bit adder is thus shrinking to only 11-bit according to the data arrival path in the timing analyser.

May I kindly ask has anyone come across similar situation before? Why the delay path in chip planner is not the same as shown in timing analyser.

Is it because routing of the 20-bit adder goes wrong? However, if it goes wrong, why fan-in and fan-out of each bit adder are correct?

Could anyone please kindly help me with this?

Thank you very much!

Mingqiang

20 Replies

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    Those are just names assigned by the tool, not physical resources. Check the Location column, not the Element column. There could also be optimizations happening depending on your implementation. And use the post-fit Technology Map Viewer for an easier to use view of how specific resources are connected together.

    #iwork4intel

    • cosx's avatar
      cosx
      Icon for Occasional Contributor rankOccasional Contributor

      Hi sstrell,

      Thank you for your help!

      The first-bit adder is actually assigned myself using set_location_assignment (...)

      These names actually matche the one in post-fit technology map, which I have attached for your references.

      However, timing analyser shows that the data arrival path is not the same as the one in technology map viewer. If as you mentioned, they are just names, then the name in timing analyser indeed matches the one in technology map viewer and the one in .qsf file.

      May I ask what is "location column"? Did you mean the resource property editor, or something else?

      Thanks!

      Mingqiang

      • sstrell's avatar
        sstrell
        Icon for Super Contributor rankSuper Contributor

        I mean the Location column in the Timing Analyzer, like what you show in the Data Required Path section in your first screenshot. Physical locations use a coordinate system: FF_X37_Y3_N58 for example.

        #iwork4intel

  • KhaiChein_Y_Intel's avatar
    KhaiChein_Y_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi Mingqiang,


    Can you share the design.qar for investigation?


    Thanks.

    Best regards,

    KhaiY


    • cosx's avatar
      cosx
      Icon for Occasional Contributor rankOccasional Contributor

      Hi KhaiY,

      Thank you for your help!

      I have already changed the design by adding flip-flops at the output of each adder.

      Now Timing Analyser shows the path is correct.

      However, real tests suggest that both Timing Analyser and chip planner does not tell the truth.

      It looks like combinatorial adder can never be routed appropriately. I will probably abandon this design.

      However, I can still sure the file for your reference. The problem is honestly strange!

      Best Wishes,

      Mingqiang

      • KhaiChein_Y_Intel's avatar
        KhaiChein_Y_Intel
        Icon for Regular Contributor rankRegular Contributor

        Hi Mingqiang,

        I tried to locate all the sout in Chip Planner, all are located in 2 LABs.

        Thanks.

        Best regards,

        KhaiY

  • KhaiChein_Y_Intel's avatar
    KhaiChein_Y_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi Mingqiang,


    Can you try to simulate the design and see if the signals give expected result?


    Thanks.

    Best regards,

    KhaiY


    • cosx's avatar
      cosx
      Icon for Occasional Contributor rankOccasional Contributor

      Hi KhaiY,

      Thank you for your method.

      I guess the simulation you refer to is the gate-level simulation.

      I had done RTL-level one before and the output sof the adder were correct.

      I tried gate level simulation, but it did not give me any timing information about the cascaded length delay. I thus abandoned it.

      I would double check the functionality simulation at this level latter. Nevertheless, since I will get an oscilloscope today, it is worth measuring the outputs to see the exact waveforms.

      Thank you still for your concern! I will update what I found with you!

      Best Wishes,

      Mingqiang

    • cosx's avatar
      cosx
      Icon for Occasional Contributor rankOccasional Contributor

      Hi KhaiY,

      Continuing from the gate-level simulation using Modelsim.

      All ouptuts of the adders are correct as expected.

      However, I still doubt whether gate-level simulation gives us correct functions in the real chip, though it is reliable to some extent.

      I would use oscilloscope to do actual tests to find out what exactly has happened!

      Thank you!

      Mingqiang

  • KhaiChein_Y_Intel's avatar
    KhaiChein_Y_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    We do not receive any response from you to the previous question/reply/answer that I have provided. This thread will be transitioned to community support. If you have a new question, feel free to open a new thread to get the support from Intel experts. Otherwise, the community users will continue to help you on this thread. Thank you


    Best regards,

    KhaiY


    • cosx's avatar
      cosx
      Icon for Occasional Contributor rankOccasional Contributor

      Hi KhaiY,

      I feel sorry to not response to you in time as I was so busy doing the experiment that I missed some of the messages previously.

      Updating my situation: I used an oscilloscope to debug the adder, finding that neither Timing Analyser and chip planner tells the truth.

      There was 30-bit adder connected when I implemented 32-bit adder.

      Now I have found ways of solving the problem by removing all adders' inputs away. Instead, I connected these adders' inputs with a 10-bit switch.

      Encoding the 10-bits to the number of input bits to adders, I have successfully cascaded a 96-bit adder and measured its delay time.

      However, when I cascade more than 128-bit adders, testbench suggested that they may not be cascaded successfully. I am also currently finding out reasons and doing experiments.

      It seems that the Quartus compiler connects adders in a very strange way between the inputs and the outputs.

      What I do is probably very rare in FPGA and hence many bugs must be found via experiments.

      Thank you very much for your concern! You can probably close this topic and label it solved.

      Best Wishes,

      Mingqiang

  • KhaiChein_Y_Intel's avatar
    KhaiChein_Y_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi Mingqiang,


    Thanks for sharing the result of the experiment with oscilloscope. It is glad that you found the workaround. I now transition this thread to community support. If you have a new question, feel free to open a new thread to get the support from Intel experts. Otherwise, the community users will continue to help you on this thread. Thank you


    Best regards,

    KhaiY