Management of non-intelligent RTM

Hello Sylvain,

I don’t know why the e-mail was truncated, the full post is visible on discourse here:

https://cern-ipmc-forum.web.cern.ch/t/management-of-non-intelligent-rtm/319/99

Below is an example with a simple power sequence that toggles one RTM LED:

<NonIntelligentRTM>
  <AMCPort>8</AMCPort> <!-- IPMC AMC port number (0..8) used for RTM signals -->
  <Invert>
    <Pin>MPEN</Pin>
    <Pin>MPGOOD</Pin>
    <Pin>PWREN</Pin>
    <Pin>PWRGOOD</Pin>
  </Invert>
  <Power>10.0</Power> <!-- RTM power consumption in Watt-->
  <PowerONSeq>
    <step>PSQ_DISABLE_SIGNAL(USER_IO_28_ACTL)</step>
    <step>PSQ_ENABLE_SIGNAL(CFG_RTM_PWR_ENABLE_SIGNAL)</step>
    <step>PSQ_ENABLE_SIGNAL(USER_IO_28_ACTL)</step>
    <step>PSQ_END</step>
  </PowerONSeq>
  <PowerOFFSeq>
    <step>PSQ_DISABLE_SIGNAL(CFG_RTM_PWR_ENABLE_SIGNAL)</step>
    <step>PSQ_DISABLE_SIGNAL(USER_IO_28_ACTL)</step>
    <step>PSQ_END</step>
  </PowerOFFSeq>
  <HandleSwitch>IPM_IO_2_ACTL</HandleSwitch> <!-- Handle switch pin -->
  <BlueLed>USER_IO_27_ACTL</BlueLed> <!-- Blue LED pin -->
</NonIntelligentRTM>

The syntax is the same as for the front-board power sequence. Let me know if you have any other questions.

cheers,

Stefan

Super nice, thank you !

Dear Stefan,

I implemented this as RTM power sequence, without anything happening on the RTM LEDs:

<NonIntelligentRTM>
    <AMCPort>8</AMCPort> <!-- IPMC AMC port number (0..8) used for RTM signals -->
    <Power>10.0</Power> <!-- RTM power consumption in Watt -->
    <HandleSwitch>RTM_HANDLE_SWITCH</HandleSwitch> <!-- Handle switch pin -->
    <BlueLed>RTM_BLUE_LED</BlueLed> <!-- Blue LED pin -->
    <Invert>
      <Pin>MPEN</Pin>
      <Pin>MPGOOD</Pin>
      <Pin>PWREN</Pin>
      <Pin>PWRGOOD</Pin>
    </Invert>
    <PowerManagement>
      <PowerONSeq> <!-- Passive RTM Power ON sequence -->
        <step>PSQ_DISABLE_SIGNAL(RTM_RED_LED)</step> <!-- turning OFF the red LED -->

    <step>PSQ_SET_TIMER(2, 10000)</step> <!-- whole sequence timeout (10 seconds) -->
    <step>PSQ_ENABLE_SIGNAL(CFG_RTM_PWR_ENABLE_SIGNAL)</step>

    <step>PSQ_SET_TIMER(1, 200)</step> <!-- sleep 200 milliseconds between each new readout -->
    <step>PSQ_JUMP_IFNOT_TIMEOUT(1, 0)</step> <!-- wait here until timer 1 delay expires -->

    <step>PSQ_TEST_SIGNAL_JUMP_IFNOT_SET(CFG_RTM_PWR_GOOD_SIGNAL, 4)</step> <!-- If HotSwap control correctly asserted payload power, we jump after global timeout handling and SUCCEED -->
    <step>PSQ_JUMP_IFNOT_TIMEOUT(2, -3)</step> <!-- Otherwise retry power good output pin check until main timeout expires -->

    <step>PSQ_ENABLE_SIGNAL(RTM_RED_LED)</step> <!-- we only get here if the powerup sequence FAILED, turning ON the red LED -->
    <step>PSQ_FAIL</step> <!-- if we ever reach this step, global timeout expired so raises an error -->

    <step>PSQ_ENABLE_SIGNAL(RTM_GREEN_LED)</step> <!-- we only get here if the powerup sequence SUCCEEDED, turning ON the green LED -->
    <step>PSQ_END</step>
  </PowerONSeq>

  <PowerOFFSeq> <!-- Passive RTM Power OFF sequence -->
    <step>PSQ_DISABLE_SIGNAL(RTM_RED_LED)</step> <!-- turning OFF the red LED -->

    <step>PSQ_SET_TIMER(2, 10000)</step> <!-- whole sequence timeout (10 seconds) -->
    <step>PSQ_DISABLE_SIGNAL(CFG_RTM_PWR_ENABLE_SIGNAL)</step>

    <step>PSQ_SET_TIMER(1, 200)</step> <!-- sleep 200 milliseconds between each new readout -->
    <step>PSQ_JUMP_IFNOT_TIMEOUT(1, 0)</step> <!-- wait until timer 1 delay expires -->

    <step>PSQ_TEST_SIGNAL_JUMP_IFNOT_SET(CFG_RTM_PWR_GOOD_SIGNAL, 5)</step> <!-- If HotSwap control correctly deasserted payload power, we jump after global timeout handling and SUCCEED -->
    <step>PSQ_JUMP_IFNOT_TIMEOUT(2, -3)</step> <!-- Otherwise retry power good output pin check until main timeout expires -->

    <step>PSQ_DISABLE_SIGNAL(RTM_GREEN_LED)</step> <!-- we only get here if all the powerdown sequence FAILED, turning OFF the green LED -->
    <step>PSQ_ENABLE_SIGNAL(RTM_RED_LED)</step> <!-- we only get here if the powerup sequence FAILED, turning ON the red LED -->
    <step>PSQ_FAIL</step> <!-- if we ever reach this step, global timeout expired so raises an error -->

    <step>PSQ_DISABLE_SIGNAL(RTM_GREEN_LED)</step> <!-- we only get here if the powerup sequence SUCCEEDED, turning OFF the green LED -->
    <step>PSQ_END</step>
  </PowerOFFSeq>
</PowerManagement>

</NonIntelligentRTM>

Would you have further advice on this please ?

The LEDs work correctly when actioned directly through ipmitool.

Best regards,

Sylvain

Hello Sylvain,

I’m afraid I made a mistake with the custom RTM power sequences. Can you please try again now?

You should now also get a message confirming that the custom power sequence was included during the online compilation:

DONE: Custom power on sequence configured
DONE: Custom power off sequence configured

cheers,

Stefan

Hello Stefan,

I can now confirm you that it is working as expected on my side too !

Thank you again for your patient and productive support.

Best regards,

Sylvain

Re-hello Stefan,

To fulfill our passive RTM support with CERN-IPMC, we need to store its FRU description in an EEPROM that is directly soldered on the RTM board (and connected on the IPMB-L bus), not in the Flash of the IPMC itself (so as to keep the metadata, even in case of IPMC swap during operation).

Is there already some documentation about this use-case available somewhere please ?

Best regards,

Sylvain