This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

XIO2001: XIO2001 CLKRUN_EN and EXT_ARB_EN left unconnected

Part Number: XIO2001

Hello,

in one of our designs, we left CLKRUN_EN and EXT_ARB_EN unconnected since the documentation showed internal pulldowns.

Unfortunately, the XIO2001 erratas (scpz008b.pdf) from 2012 tell us that these internal pullodwns do not work. The recommended workaround is to connect external pulldowns to these pins.
But adding these external resistors is no option for all boards already produced, since the we use the XIO2001 in a BGA package.

In contradiction to the errata, even the actual data sheet from 2016 talks about internal pulldowns on these pins (note 1 on page 20):

And until now, we had no issies with the XIO2001 that could be related to CLKRUN_EN or EXT_ARB_EN effects.

Is there perhaps a new chip revision already available that fixes this errata?

When is the status of CLKRUN_EN and EXT_ARB_EN sampled by the XIO2001?

  • According to the errata, CLKRUN_EN and EXT_ARB_EN are only sampled at the rising edge of GRST#.
    As GRST# is also left unconnected on our boards, does this eliminate the errata as there will never be something like a GRST# "rising edge"?

  • According to the data sheet, 
    • CLKRUN_EN is sampled when PERST# is high, or at the rising edge of PERST#? The text in the data sheet is a bit unclear:
      When PERST is de-asserted and if a pullup resistor to VDD_33 is detected on pin C11 (CLKRUN_EN), the clock run feature is enabled.
    • EXT_ARB_EN is sampled at the rising edge of PERST#:
      When PERST is deasserted, the logic state of the EXT_ARB_EN pin is checked.
    • all static control inputs are latched at the rising edge of GRST# and at the rising edge of PERST#:
      When the rising edge of GRST occurs, the bridge samples the state of all static control inputs and latches the information internally.
      When the rising edge of PERST occurs, the XIO2001 samples the state of all static control inputs and latches the information internally.

Are CLKRUN_EN and EXT_ARB_EN static control inputs, and when are they interpreted by the XIO2001?

What about the external serial EEPROM?
Is it possible to overwrite the CLKRUN_EN and EXT_ARB_EN settings with an appropriate EEPROM content?
I'm sure a company like Texas Instruments, well known for good chip designs, implemented such an option.

I case there's nothing that can be done about it (worst case) and the CLKRUN_EN and EXT_ARB_EN inputs are really floating, meaning that it's just luck if it works or not, what will happen when

  • EXT_ARB_EN is detected high by the XIO2001
    In my understanding, this will lead to the scenario that right after PERST# deassertion, the XIO2001 will try to request the bus from the (not exisiting) external arbiter to perform the PCI configuration cycles.
    This "bus request" is asserted on the IO pin that connects to the GNT# pin of the connected PCI-Device. This device would have to drive its REQ# pin low to grant the bus to the XIO2001. But this will not happen as the PCI-Device is not setup at all.
    Is this correct?

  • CLKRUN_EN is detected high by the XIO2001
    GPIO[0] is also unconnected in our designs.
    Is there the possibility that any connected PCI-Device will be damaged?
    Is it possible that everything runs find for a while and then fails after a random time?

I am looking forward to your answers.

Regards, Niels

 

 

  • Hello,

    Unfortunately, CLKRUN_EN and EXT_ARB_EN inputs are actually floating. They are sampled only on rising edge of GRST#, and therefore if GRST# is left open and get pulled high at power up, they will be sampled only at power up (since there is a rising edge of GRST# at power up), and won't be samples again.

    CLKRUN_EN and EXT_ARB_EN may usually pull low especially at room temp which may explain why you haven't seen a problem yet. However, at high temp they may not pull low and will likely cause issues.

    If it makes it any easier you can tie them directly to ground without resistors.

    Regards,
    Yaser
  • Hello Yaser,

    thank you for your answer.

    You wrote that,

    1. CLKRUN_EN and EXT_ARB_EN are floating
    2. CLKRUN_EN and EXT_ARB_EN are sampled only on rising edge of GRST#, which are good news.
      Just to be sure, does this mean that CLKRUN_EN and EXT_ARB_EN are static control inputs as mentioned in the GRST# "RESET RESPONSE" in Table 1 on page 27?

    This means that even the XIO2001 data sheet from 2016 is incorrect, as

    • The external Pullup/pulldown resistors for CLKRUN_EN and EXT_ARB_EN are marked as "Optional" in the pin description table (page 13)

    • In chapter 6.10 on page 20, footnote (1) indicates that CLKRUN_EN and EXT_ARB_EN have intenal pulldowns


    • On page 118, it is described that CLKRUN_EN and EXT_ARB_EN are sampled with PERST# deassertion.

     

    Is there perhaps a new chip revision already available that fixes this errata?

    What about the external serial EEPROM?
    Is it possible to "override" the latched CLKRUN_EN level with the BPCC_E setting?
    Is it possible to overwrite the CLKRUN_EN and EXT_ARB_EN pins with an appropriate EEPROM content?
    I'm sure a company like Texas Instruments, well known for good chip designs, implemented such an option.

    What about the SEC_CLK_STATUS bit in the Clock Run Status Register. Can the activated CLKRUN be detected reliably by reading SEC_CLK_STATUS?

    When EXT_ARB_EN is detected high by the XIO2001, in my understanding this will lead to the scenario that right after PERST# deassertion, the XIO2001 will try to request the bus from the (not exisiting) external arbiter to perform the PCI configuration cycles.
    This "bus request" is asserted on the pin that connects to the GNT# pin of the connected PCI-Device. This device would have to drive its REQ# pin low to grant the bus to the XIO2001. But this will never happen as the PCI-Device is not setup at all.
    Is this correct?

    What will happen when CLKRUN_EN is detected high by the XIO2001?
    (GPIO[0] is also left unconnected in our designs.)
    Is there the possibility that any connected PCI-Device will be damaged due to activated CLKRUN feature?
    I wonder if there may be the possibility that the system starts with CLKRUN enabled and everything works fine for the moment. But after some time, due to the floating GPIO[0], the XIO2001 stops the PCI-Clock which may lead to a "sleeping" PCI-Device when the whole functionality behind the PCI-Device works with the PCI-Clock. This would be dangerous because the PCI-Device may be the supervisor for the temperature of an atomic reactor (this is worst case, I know).
    But without the PCI-Clock, the PCI-Device could no longer measure the temperature or assert a PCI-Interrupt to inform the CPU about an overtemperature-condition.
    If PCI accesses with CLKRUN enabled would fail right from the start, this would be sad, but much better than a fail that occurs somewere in the future.
    Is it possible that everything runs find for a while and then fails after a random time, or will it fail right from the start?

    One last question about the GPIO0 // CLKRUN# pin.
    According to Data Sheet page 13, this terminal has an internal active pullup resistor. The pullup is only active when reset is asserted or when the GPIO is configured as an input.
    Is this pullup active when GPIO0 is used as CLKRUN# input?

    I am loking forward to your answers.

    Regards, Niels

  • Hello Yaser,

    and also a hello to all other XIO2001 experts, if there are any at TI.

    While unavailingly waiting for answers from TI, I used the time and did some tests with the XIO2001.

    In preparation for these tests, I managed to connect an external resistor to the CLKRUN_EN pin (respectivly ball, as we use the XIO2001 in BGA package).
    This way, I was able to test the behaviour of the XIO2001 with external Pullup and pulldown on CLKRUN_EN.

    With external pullup, the XIO2001 stops the secondary clock, and with external pulldown, the external clock keeps running. I saw it on the scope and by reading SEC_CLK_STATUS.
    But ATTENTION:
    The XIO2001 secondary clock behaviour follows the CLKRUN_EN level any time while PERST# and GRST# are high (deasserted). This means that CLKRUN_EN is NOT a static control input. It is NOT latched at the rising edge of GRST# or PERST#.

    Your statement: "CLKRUN_EN and EXT_ARB_EN are sampled only on rising edge of GRST#" is erroneous.
    I do not know how EXT_ARB_EN behaves, but I now know that CLKRUN_EN is not latched at all.

    My remaining question are:

    • Is there perhaps a new chip revision already available that fixes this errata?
    • Is EXT_ARB_EN a static control inputs as mentioned in the GRST# "RESET RESPONSE" in Table 1 on page 27?
    • Is it possible to overwrite the CLKRUN_EN and EXT_ARB_EN pin-strapping configuration with an appropriate EEPROM content?
    • Is the internal pullup of GPIO0 active when GPIO0 is used as CLKRUN# input?

    I am looking forward to your answers.

    Regards, Niels

    P.S.: hope dies last.

  • Hi,

    I hope you all enjoyed your easter holidays.

    Hopefully, you can how help me with my questions regarding the XIO2001:

    * Is there perhaps a new chip revision already available that fixes this errata?

    * Is EXT_ARB_EN a static control inputs as mentioned in the GRST# "RESET RESPONSE" in Table 1 on page 27?

    * Is it possible to overwrite the CLKRUN_EN and EXT_ARB_EN pin-strapping configuration with an appropriate EEPROM content?

    * Is the internal pullup of GPIO0 active when GPIO0 is used as CLKRUN# input?

    I am looking forward to your answers.

    Regards, Niels

  • Hello,

    Sorry for the late reply.
    *Is there perhaps a new chip revision already available that fixes this errata?
    -> There is no new chip revision. The errata is still valid and still complements the datasheet.

    * Is EXT_ARB_EN a static control inputs as mentioned in the GRST# "RESET RESPONSE" in Table 1 on page 27?
    -> It is supposed to be sampled only GRST# (and as you said, PERST# too since that also generates an internal power-on reset). I will try to investigate why you are seeing this unexpected behavior.

    * Is it possible to overwrite the CLKRUN_EN and EXT_ARB_EN pin-strapping configuration with an appropriate EEPROM content?
    -> unfortunately , it is not possible to override CLKRUN_EN and EXT_ARB_EN from the EEPROM

    * Is the internal pullup of GPIO0 active when GPIO0 is used as CLKRUN# input?
    -> The pullup on GPIO0/CLKRUN# is not active when used as CLKRUN#
  • Hello Yaser,

    Ok, no new chip revision and no way to override the EXT_ARB_EN / CLKRUN_EN pin-strapping via EEPROM.

    I am looking forward to the outcome of your investigations regarding the CLKRUN_EN behaviour I observed.

    Regards, Niels

  • Hello,

    After checking with designer, it appears that EXT_ARB_EN and CLKRUN_EN are not latched upon reset as I was told initially. They are monitored continuously as you have observed. Sorry for the confusion.

    Regards,
    Yaser
  • Hello Yaser,

    can you please also check the GPIO0/CLKRUN# pullup with the designer?

    Just to be sure ...

    Regards, Niels

  • Hi Niels,

    The pullup is actually enabled whenever the pin is used as an input. However, when used as CLKRUN# you do need external pull up (as mentioned in the datasheet), because the internal pullup value is too large to meet the PCI requirement for the value of the CLKRUN pullup.

    Regards,
    Yaser
  • Hi Yaser,

    thanks for your help.

    As the answers to my questions are spread over several postings, I will summarize them here:

    • CLKRUN_EN and EXT_ARB_EN have no internal pullups or pulldowns.
    • CLKRUN_EN and EXT_ARB_EN are inputs that are never sampled or latched by the XIO2001.
      They are NO static control pins.
      Whenever the input voltage at these pins changes, the XIO2001 will change it's behavior.
    • Anything in the data sheet or errata note that indicates something else is simply WRONG.
    • There is no new chip revision available that would fix this misbehavior.
    • Is it NOT possible to overwrite the CLKRUN_EN and EXT_ARB_EN pins with an appropriate EEPROM content.
    • The activated CLKRUN feature can't be detected reliably by reading SEC_CLK_STATUS because SEC_CLK_STATUS only shows if the secondary clock is running or not.
      But this does'nt matter as such a detection is quite useless in any case, since a floating CLKRUN_EN pin can turn the CLKRUN feature ON and OFF at any time.
    • The pin GPIO0 has a pullup then the CLKRUN feature is enabled. This typically leads to a stopped secondary clock as soon as the CLKRUN feature is enabled.

    One personal remark:
    On our boards, we observed that CLKRUN_EN always floats to ground. This behavior was temperature independent. But TI says: It can float to VCC or ground.
    Due to the ball location of EXT_ARB_EN, it was not possible for me to do the measurement on this signal too.

    Regards, Niels

  • Hi Niels,

    Thanks for the summary. The bottom line is a pull-up or pull-down is required for each of these 2 pins.

    Regards,
    Yaser