We are using the UCD9090A to sequence power supplies on a PCIe card that goes into servers.
The UCD is connected to PCIE_3V3_AUX, all supplies on the board sequenced by PCIE_3V3_AUX are sourced off the 12V PCIe. Therefore all sequencing waits for this 12V to be correct nominal values (12V has voltage and current monitored). The card has been tried and tested in production to work in a number of standard ATX mobos, servers etc.
During a soft-off where 12V drops off the card and 3V3 AUX is still available, we use the UCD to sequence off all supplies and continue to monitor. We've never had problems with this until we tried this in a specific server. For some reason in this server we can power cycle a number of times, each time during the standby all of the rails move from REGULATION to the sequence supplies becoming SEQ_ON and the 12V to RAMP_UP, then back to REGULATION. However every now and then all of the supplies go from REGULATION to IDLE during the exact same event and then when 12V becomes available again the supplies remain in IDLE.
1 First Picture:
|
|
2 Second Picture
|
|
3 Third Picture
|
|
|
Pictures 4 and 5 show the same pattern for the 3rd Stand-by and Restart event.
Picture 4 shows that GPIs during this stage report Margin_en, Margin_hi, PB_RST and CFGTR as deasserted. |
6 Sixth Picture
|
|
7 Seventh Picture
|
Bit 6 “output off” gets set in register 79, but there is no definition of what this is. Our Vin is 12 volts to the system, all other supplies are dependant on it Normal operation this supply has RAMPUP status and moves to regulation. When system fails it has IDLE and will not move to ramp up state why, since it has no dependanicie.
I've attached some tables one shows the PMBus log for a power down that successfully goes into SEQ_ON and RAMP_UP state. For conciseness I've included only STATUS_WORD, MFR_STATUS and STATUS_VOUT.
Good' Power Down | |||||||||
Timestamp | Adapter | Part_ID | Address | CommandID | Code | Page | Phase | Value_Encoded | Value_Decoded |
24:08.6 | 1 | UCD9090A | 104 | STATUS_WORD | 0x79 | 0x9001 | NONE_OF_ABOVE,MFR,VOUT | ||
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 0 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 0 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 1 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 1 | 0x00 | <EMPTY> | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 2 | 0x00000001 | SLAVED_FAULT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 2 | 0x00 | <EMPTY> | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 3 | 0x00000001 | SLAVED_FAULT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 3 | 0x00 | <EMPTY> | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 4 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 4 | 0x00 | <EMPTY> | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 5 | 0x00000001 | SLAVED_FAULT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 5 | 0x20 | VOUT_UV_WARN | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 6 | 0x00000001 | SLAVED_FAULT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 6 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 7 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 7 | 0x00 | <EMPTY> | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 8 | 0x00000000 | <EMPTY> | |
24:08.6 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 8 | 0x10 | VOUT_UV_FAULT | |
24:08.6 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 9 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_WORD | 0x79 | 0x9001 | NONE_OF_ABOVE,MFR,VOUT | ||
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 0 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 0 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 1 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 1 | 0x00 | <EMPTY> | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 2 | 0x00000001 | SLAVED_FAULT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 2 | 0x00 | <EMPTY> | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 3 | 0x00000001 | SLAVED_FAULT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 3 | 0x00 | <EMPTY> | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 4 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 4 | 0x00 | <EMPTY> | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 5 | 0x00000001 | SLAVED_FAULT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 5 | 0x20 | VOUT_UV_WARN | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 6 | 0x00000001 | SLAVED_FAULT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 6 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 7 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 7 | 0x00 | <EMPTY> | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 8 | 0x00000000 | <EMPTY> | |
24:09.3 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 8 | 0x10 | VOUT_UV_FAULT | |
24:09.3 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 9 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT |
And a table for a bad power down event. I compared both tables and the only difference is that after stand-by event on the bad power down. STATUS_WORD shows NONE_OF_ABOVE,OFF,POWER_GOOD,MFR,VOUT which shows Off and Power Good different from the 'good' table above. And STATUS_VOUT on one page VOUT_UV_FAULT,VOUT_UV_WARN.
Bad' Power Down | |||||||||
Timestamp | Adapter | Part_ID | Address | CommandID | Code | Page | Phase | Value_Encoded | Value_Decoded |
28:59.2 | 1 | UCD9090A | 104 | STATUS_WORD | 0x79 | 0x9001 | NONE_OF_ABOVE,MFR,VOUT | ||
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 0 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 0 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 1 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 1 | 0x00 | <EMPTY> | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 2 | 0x00000001 | SLAVED_FAULT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 2 | 0x00 | <EMPTY> | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 3 | 0x00000001 | SLAVED_FAULT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 3 | 0x00 | <EMPTY> | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 4 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 4 | 0x00 | <EMPTY> | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 5 | 0x00000001 | SLAVED_FAULT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 5 | 0x20 | VOUT_UV_WARN | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 6 | 0x00000001 | SLAVED_FAULT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 6 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 7 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 7 | 0x00 | <EMPTY> | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 8 | 0x00000000 | <EMPTY> | |
28:59.2 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 8 | 0x10 | VOUT_UV_FAULT | |
28:59.2 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 9 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_WORD | 0x79 | 0x9841 | NONE_OF_ABOVE,OFF,POWER_GOOD,MFR,VOUT | ||
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 0 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 0 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 1 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 1 | 0x00 | <EMPTY> | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 2 | 0x00000001 | SLAVED_FAULT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 2 | 0x00 | <EMPTY> | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 3 | 0x00000001 | SLAVED_FAULT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 3 | 0x00 | <EMPTY> | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 4 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 4 | 0x00 | <EMPTY> | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 5 | 0x00000001 | SLAVED_FAULT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 5 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 6 | 0x00000001 | SLAVED_FAULT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 6 | 0x30 | VOUT_UV_FAULT,VOUT_UV_WARN | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 7 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 7 | 0x00 | <EMPTY> | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 8 | 0x00000000 | <EMPTY> | |
29:00.1 | 1 | UCD9090A | 104 | STATUS_VOUT | 0x7A | 8 | 0x10 | VOUT_UV_FAULT | |
29:00.1 | 1 | UCD9090A | 104 | MFR_STATUS | 0xF3 | 9 | 0x00000005 | SLAVED_FAULT,SEQ_OFF_TIMEOUT |
We also checked the potential that the fault was created by supply page 6 with VOUT_UV_FAULT. I tried making the VOUT_UV_WARN on page 6 to 0V but still saw the same log on a bad turn off event.
Hopefully this covers everything.
Best regards,
Sean Suttie.