Forum Discussion

testp's avatar
testp
Icon for New Contributor rankNew Contributor
5 years ago

IP optimized protection

I want to use CYCLONE5 to create 3 PLLs and connect each PLL output to an external pin.
I created three PLLs with PLL Intel FPGA IP from the IP Catalog.

When implemented, only one PLL is assigned due to the effect of optimization.
I searched on the net and found a way to protect the registers from optimization,
No way was found to protect the IP from optimization.
How can I protect my IP from optimization?
Is there any option setting?

9 Replies

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

    Is there a reason why you need 3 PLLs for this? If the 3 output clocks used 3 different input reference clocks, the tool would not optimize like this.

    • testp's avatar
      testp
      Icon for New Contributor rankNew Contributor

      Thank you for your reply.

      Sorry for the lack of explanation.

      The circuit configuration is as follows.

      It seems that three PLLs are recognized in the synthesis,
      The Fitter optimizes the PLL to one.
      Therefore, I think that there is no problem with the instance method and description.
      My guess is that some option settings are missing.

      <FPGA external pin>
      input CLKIN;

      out put PLLA_CLKOUT [3: 0];
      out put PLLB_CLKOUT [3: 0];
      out put PLLC_CLKOUT [3: 0];

      <PLL instance>
      pllA pllA (
      .rst (rst),
      .refclk (CLKIN),
      .outclk_0 (PLLA_CLKOUT [0]),
      .outclk_1 (PLLA_CLKOUT [1]),
      .outclk_2 (PLLA_CLKOUT [2]),
      .outclk_3 (PLLA_CLKOUT [3]),
      .locked ()
      );


      pllB pllB (
      .rst (rst),
      .refclk (CLKIN),
      .outclk_0 (PLLB_CLKOUT [0]),
      .outclk_1 (PLLB_CLKOUT [1]),
      .outclk_2 (PLLB_CLKOUT [2]),
      .outclk_3 (PLLB_CLKOUT [3]),
      .locked ()
      );


      pllC pllC (
      .rst (rst),
      .refclk (CLKIN),
      .outclk_0 (PLLC_CLKOUT [0]),
      .outclk_1 (PLLC_CLKOUT [1]),
      .outclk_2 (PLLC_CLKOUT [2]),
      .outclk_3 (PLLC_CLKOUT [3]),
      .locked ()
      );


      <PLL setting>
      No phase adjustment
      pll input: 100MHz
      pll Each output: 100MHz
      All pllA to C have the same conditions
      * I would like to use 3 PLLs for 3 groups and supply 4 CLKs.
      * Since it is a trial, the pll setting is tentative and all have the same parameters.
      * IP settings other than the above are left at their defaults.


      I would appreciate any advice.
      Thanking you in advance.

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

        So you have 12 output clocks, 4 from each PLL. Are all these clocks connected to logic in your design? If not, the tool will optimize them away.

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

    Hi,


    have you try the keep and preserve attribute? This will keep the register from optimized, you have to modify this in HDL


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

    We do not receive any response from you to the previous reply that I have provided, thus I will put this case to close pending. Please post a response in the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you with your follow-up questions.


    • testp's avatar
      testp
      Icon for New Contributor rankNew Contributor

      thank you for your answer.

      I don't know how to set the keep and preserve attributes specifically.

      Please tell me the setting procedure.