Forum Discussion

JohnGermany's avatar
JohnGermany
Icon for New Contributor rankNew Contributor
1 year ago
Solved

Error ID 18694: Still not resolved ???

I have a LVDS SERDES TX IP in bank 2J of a Cyclone 10 GX device.

I have a shared clock input pin in bank 3B.

The current Cyclone 10 GX Core Fabric and IO manual, section 5.6.6.3, states that this clock pin on bank 3B could be used as reference clock for the bank 2J SERDES TX IOPLL, when promoted. I did promote that clock to GLOBAL.

I get error message ID 18694, which states that this connection is forbidden to be used.

This problem has been discussed here over several years. Could it be true that there still is no other solution to that problem than to revert to QPP 18.0 ??? If so, I find that rather ridiculous, since I am very satisfied with rather low clock rates, just a very few hundred MHz, so there is no concern about jitter. After all, that reference clock for a TX SERDES has to come from somewhere, and I could have a large number of TX SERDES within my design. So some shared clock clearly is reasonably required.

Any workaround is highly appreciated.

Thanks and best regards

John

P.S. I read that there does exist some secret, magic escape to that. In view of the clear unsuitability of blocking that route, please let me have that code.

  • FvM's avatar
    FvM
    1 year ago
    Hi,
    hard to believe that you need to refer to weird workarounds like this...

    Check your private message folder.

    Regards,
    Frank

15 Replies

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

    Hi Frank,

    thanks for your note. So it appears that we are on one line.

    We did forward the question to our FAE engineer here, still waiting for the reply.

    Meanwhile, I found a workaround:

    - I need to transform the global clock from bank 3B into a local clock for bank 2J

    - I define a bidirectional LVCMOS IO buffer on one of the bank 2J dedicated clock pins, otherwise unused

    - I route the global clock to the input of that bidir buffer

    - I retrieve the local bank 2J clock from the output of that bidir buffer

    - of course I need OE=1, but Quartus forbids that as a static assignment (!!!!)

    - so I create some Mickey-Mouse logic which toggles OE at some irrelevant point in time

    - works beautifully, even at 1360 Mbit/sec, 136 MHz clock at factor 10 SERDES. I do not need that high rates, but testing it out just for fun.

    Best regards

    John

    • FvM's avatar
      FvM
      Icon for Super Contributor rankSuper Contributor
      Hi,
      hard to believe that you need to refer to weird workarounds like this...

      Check your private message folder.

      Regards,
      Frank
      • CBOLL2's avatar
        CBOLL2
        Icon for New Contributor rankNew Contributor

        Hi Frank,

        I'm looking for a work around for the same error, but haven't found it published anywhere.

        Is this something you could send me over details of?

        Many thanks,

        Calum

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

      For me is still not working :(
      I use Quartus Prime Pro 22.4 (with Arria10 not Cyclone)

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

    Hi John,
    I wasn't aware of paragraph 5.6.6.3. The relation of 5.6.6.2.2 "The reference clock to the I/O PLL for the DPA or non-DPA LVDS receiver must come from the dedicated reference clock pin within the I/O bank" and 5.6.6.3 (you can manually promote reference clock from other I/O bank) is however not clearly stated. The manual can be read so that 5.6.6.3 doesn't apply for receiver SERDES.

    I checked that manual promotion doesn't work for receiver PLL in Quartus Pro 22.4 and 24.3. You need to use an undocumented quartus.ini entry to enable reference clock promotion from other I/O bank.

    I understand that Intel/Altera disabled reference clock promotion after Quartus 18 to "save" Cyclone 10 GX clock performance specification. However, as you stated, there are many medium speed SERDES designs that can well work with promoted reference clock.

    Thus we are still waiting for an Altera application note undisclosing the respective Quartus.ini options. In the meantime, you may get on your FAE's nerves asking for the information.

    Regards

    Frank

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

    Hi John,


    May I know if you got any reply from the FAE engineer on this issue?

    What is their feedback? If possible, I wanted to align with him.


    Regards,

    Aqid


  • As we do not receive any response from you on the previous question/reply/answer that we have provided. Please login to ‘https://supporttickets.intel.com/s/?language=en_US’, view details of the desire request, and post a feed/response within 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 on your follow-up questions.


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

    Hi, 

    I didn't yet implement SERDES with Arria 10 but I assume that the behaviour is identical to Cyclone 10 GX as suggested by common IP doc. As for Arria 10 SERDES RX reference clock, I understand that fitter is enforcing this rule

    5.6.6.2.2. Guideline: I/O PLL Reference Clock Source for DPA or Non-DPA Receiver

    The reference clock to the I/O PLL for the DPA or non-DPA LVDS receiver must come from the dedicated reference clock pin within the I/O bank.

    Note: This requirement is not applicable to LVDS transmitters.

    Above reports seem to indicate that manual propagation according to 5.6.6.3 doesn't work in this case. Previous discussion in this thread addressed two possible solutions

    • disabling fitter rule with an undocumented quartus.ini statement
    • abusing a dedicated clock input as buffer by making it bidirectional and propagating clock to it.

     

    I presume that reference clock restrictions have been introduced in later Quartus versions to guarantee SERDES performance at highest rates. Therefore I won't use discussed workarounds in this case but there should be no problem if you don't go to the limits.

    If you do a hardware design or redesign aware of 5.6.6.2.2, you'll surely provide a dedicated reference clock per I/O bank.

    Regards Frank

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

      Hi Frank, 

      Thank you for your kind response.


      100% If I do a new PCB design I will use the designated Bank I/O, but I already have a board unfortunately.

      I am not sure exactly in which quartus.ini I should add? (I see there are multiple places and there is a quartus2.ini - I am not sure is that one).
      It happens maybe that you maybe give me more details, and I could save much more time?


      Best,
      Val

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

        Hi Val,

        I don't feel legitimated to disclose undocumented quartus.ini statements in the forum.  Check your private messages.

        Regards Frank

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

    Hi,

    for your info, error 18694 is still occurring with recent Quartus Prime Pro 26.1 

    Regards Frank

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

      Hi Frank,

      Could you post the full error id?

      Possible provide the design for debug purpose?

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

        Hi Sheng,

        thanks for your interest. What we see is expected behaviour according to above quoted 5.6.6.2.2. Guideline which requires refclock for SERDES RX being originated from a dedicated clock pin of same IO bank. Problem is that non-dedicated refclock source was possible in earlier Quartus versions and that it's strictly enforced by Quartus even for SERDES designs with rather uncritical clock speed. Previous statements suggested that this could be an unwanted effect, thus I verified that the behaviour is still present in latest Quartus Prime Pro 26.1. Error ID is 18694, as described in thread title. I append a test design with two SERDES instances located in bank 2F and 2G, both driven by bank 2F reference clock.

        Regards Frank