<?xml version="1.0" encoding="utf-8" standalone="no"?>
<IP DBVersion="V4.0"
    IPType="peripheral"
    Name="COMP"
    Version="advmu_pvm_v1_0_Cube"
    ns0:schemaLocation="http://mcd.rou.st.com/modules.php?name=mcu ../../../../../../../doc/V4/Development/Specifications/db/IP_Modes.xsd"
    xmlns="http://mcd.rou.st.com/modules.php?name=mcu"
    xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance">
  <About>COMP: Ultra Low Power Comparator</About>
  <!-- Pinout Parameters for COMP. Already selected on Pinout TreeView -->
  <RefParameter Comment="Inverting Input"
                DefaultValue="COMP_INPUT_MINUS_IO1"
                Group="Pinout Parameters"
                Name="InvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PA0_COMP1_INM  &amp; ($IpNumber=1))" />
    <PossibleValue Comment="I/O1 (PA0)"
                   Value="COMP_INPUT_MINUS_IO1" />
  </RefParameter>
  <RefParameter Comment="Inverting Input"
                DefaultValue="COMP_INPUT_MINUS_IO1"
                Group="Pinout Parameters"
                Name="InvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PA2_COMP2_INM  &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O1 (PA2)"
                   Value="COMP_INPUT_MINUS_IO1" />
  </RefParameter>
  <RefParameter Comment="Inverting Input"
                DefaultValue="COMP_INPUT_MINUS_IO2"
                Group="Pinout Parameters"
                Name="InvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PB3_COMP2_INM  &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O2 (PB3)"
                   Value="COMP_INPUT_MINUS_IO2" />
  </RefParameter>
  <RefParameter Comment="Inverting Input"
                DefaultValue="COMP_INPUT_MINUS_DAC1_CH2"
                Group="Pinout Parameters"
                Name="InvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="((PA5_COMP1_INM  &amp; ($IpNumber=1)) | (PA5_COMP2_INM &amp; ($IpNumber=2)))" />
    <PossibleValue Comment="DAC_OUT2 (PA5)"
                   Value="COMP_INPUT_MINUS_DAC1_CH2" />
  </RefParameter>
  <RefParameter Comment="Inverting Input"
                DefaultValue="COMP_INPUT_MINUS_DAC1_CH1"
                Group="Pinout Parameters"
                Name="InvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="((PA4_COMP1_INM  &amp; ($IpNumber=1)) | (PA4_COMP2_INM &amp; ($IpNumber=2)))" />
    <PossibleValue Comment="DAC_OUT1 (PA4)"
                   Value="COMP_INPUT_MINUS_DAC1_CH1" />
  </RefParameter>
  <RefParameter Comment="Inverting Input"
                DefaultValue="COMP_INPUT_MINUS_VREFINT"
                Group="Pinout Parameters"
                Name="InvertingInput"
                Type="list"
                Visible="false">
    <PossibleValue Comment="VREFINT"
                   Value="COMP_INPUT_MINUS_VREFINT" />
    <PossibleValue Comment="DAC1_OUT (PA4)"
                   Value="COMP_INPUT_MINUS_DAC1_CH1" />
    <PossibleValue Comment="1/4 VREFINT"
                   Value="COMP_INPUT_MINUS_1_4VREFINT" />
    <PossibleValue Comment="1/2 VREFINT"
                   Value="COMP_INPUT_MINUS_1_2VREFINT" />
    <PossibleValue Comment="3/4 VREFINT"
                   Value="COMP_INPUT_MINUS_3_4VREFINT" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO1"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PA3_COMP2_INP &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O1 (PA3)"
                   Value="COMP_INPUT_PLUS_IO1" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO2"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PB4_COMP2_INP &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O2 (PB4)"
                   Value="COMP_INPUT_PLUS_IO2" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO3"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PB5_COMP2_INP  &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O3 (PB5)"
                   Value="COMP_INPUT_PLUS_IO3" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO4"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PB6_COMP2_INP  &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O4 (PB6)"
                   Value="COMP_INPUT_PLUS_IO4" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO5"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PB7_COMP2_INP &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O5 (PB7)"
                   Value="COMP_INPUT_PLUS_IO5" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO6"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <Condition Diagnostic=""
               Expression="(PA7_COMP2_INP &amp; ($IpNumber=2))" />
    <PossibleValue Comment="I/O6 (PA7)"
                   Value="COMP_INPUT_PLUS_IO6" />
  </RefParameter>
  <RefParameter Comment="Non Inverting Input"
                DefaultValue="COMP_INPUT_PLUS_IO1"
                Group="Pinout Parameters"
                Name="NonInvertingInput"
                Type="list"
                Visible="false">
    <PossibleValue Comment="I/O1 (PA1)"
                   Value="COMP_INPUT_PLUS_IO1" />
  </RefParameter>
  <RefParameter Comment="Window Mode"
                DefaultValue="COMP_WINDOWMODE_DISABLE"
                Group="Pinout Parameters"
                Name="WindowMode"
                Type="list"
                Visible="false">
    <PossibleValue Comment="Disabled"
                   Value="COMP_WINDOWMODE_DISABLE" />
    <PossibleValue Comment="Enabled"
                   Value="COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON" />
  </RefParameter>
  <!-- Generic Parameters -->
  <RefParameter Comment="Speed Mode"
                DefaultValue="COMP_POWERMODE_MEDIUMSPEED"
                Group="Basic Parameters"
                Name="Mode"
                Type="list">
    <Condition Diagnostic=""
               Expression="($IpNumber=2)" />
    <PossibleValue Comment="High Speed"
                   Value="COMP_POWERMODE_MEDIUMSPEED" />
    <PossibleValue Comment="Low Speed"
                   Value="COMP_POWERMODE_ULTRALOWPOWER" />
  </RefParameter>
  <RefParameter Comment="Speed Mode"
                DefaultValue="COMP_POWERMODE_ULTRALOWPOWER"
                Group="Basic Parameters"
                Name="Mode"
                Type="list"
                Visible="false">
    <PossibleValue Comment="Low Speed"
                   Value="COMP_POWERMODE_ULTRALOWPOWER" />
  </RefParameter>
  <RefParameter Comment="Trigger Mode"
                DefaultValue="COMP_TRIGGERMODE_NONE"
                Group="Basic Parameters"
                Name="TriggerMode"
                Type="list">
    <PossibleValue Comment="None"
                   Value="COMP_TRIGGERMODE_NONE" />
    <PossibleValue Comment="Event mode with Rising Edge detection"
                   Semaphore="$IpInstance_EXTI_EVT_ENABLED"
                   Value="COMP_TRIGGERMODE_EVENT_RISING" />
    <PossibleValue Comment="Event mode with Falling Edge detection"
                   Semaphore="$IpInstance_EXTI_EVT_ENABLED"
                   Value="COMP_TRIGGERMODE_EVENT_FALLING" />
    <PossibleValue Comment="Event mode with Rising/Falling Edges detection"
                   Semaphore="$IpInstance_EXTI_EVT_ENABLED"
                   Value="COMP_TRIGGERMODE_EVENT_RISING_FALLING" />
    <PossibleValue Comment="Interrupt mode with Rising Edge detection"
                   Semaphore="$IpInstance_EXTI_IT_ENABLED"
                   Value="COMP_TRIGGERMODE_IT_RISING" />
    <PossibleValue Comment="Interrupt mode with Falling Edge detection"
                   Semaphore="$IpInstance_EXTI_IT_ENABLED"
                   Value="COMP_TRIGGERMODE_IT_FALLING" />
    <PossibleValue Comment="Interrupt mode with Rising/Falling Edges detection"
                   Semaphore="$IpInstance_EXTI_IT_ENABLED"
                   Value="COMP_TRIGGERMODE_IT_RISING_FALLING" />
  </RefParameter>
  <RefParameter Comment="Output Polarity"
                DefaultValue="COMP_OUTPUTPOL_NONINVERTED"
                Group="Basic Parameters"
                Name="OutputPol"
                Type="list">
    <PossibleValue Comment="Not Inverted"
                   Value="COMP_OUTPUTPOL_NONINVERTED" />
    <PossibleValue Comment="Inverted"
                   Value="COMP_OUTPUTPOL_INVERTED" />
  </RefParameter>
  <RefParameter Comment="Low Power Timer (LPTIM) Connection"
                DefaultValue="COMP_LPTIMCONNECTION_DISABLED"
                Group="Basic Parameters"
                Name="LPTIMConnection"
                Type="list">
    <PossibleValue Comment="Disabled"
                   Value="COMP_LPTIMCONNECTION_DISABLED" />
    <PossibleValue Action="Disable"
                   Comment="Enable COMP to LPTIM IN1 connection"
                   Condition="(($IpNumber=1)&amp; Semaphore_COMP2_LPTIM_enabled)|(($IpNumber=2)&amp; Semaphore_COMP1_LPTIM_enabled)"
                   Diagnostic="This cannot be set while the other comparator uses the link toward LPTIM"
                   Semaphore="Semaphore_$IpInstance_LPTIM_enabled"
                   Value="COMP_LPTIMCONNECTION_IN1_ENABLED" />
    <PossibleValue Action="Remove"
                   Comment="Enable COMP to LPTIM IN2 connection"
                   Condition="!$IpNumber=2"
                   Semaphore="Semaphore_$IpInstance_IN2_LPTIM_enabled"
                   Value="COMP_LPTIMCONNECTION_IN2_ENABLED" />
  </RefParameter>
  <!-- InputPlus is the default Mode -->
  <RefMode Abstract="true"
           Name="InputPlus_BaseMode">
    <Condition Diagnostic=""
               Expression="!Semaphore_VrefNeededByComparators" />
    <ConfigForMode>Comp_Init</ConfigForMode>
    <Parameter Name="Mode" />
    <Parameter Name="TriggerMode" />
    <Parameter Name="OutputPol" />
    <Parameter Name="LPTIMConnection" />
  </RefMode>
  <RefMode Abstract="true"
           Name="InputPlus_BaseMode">
    <Condition Diagnostic=""
               Expression="Semaphore_VrefNeededByComparators" />
    <ConfigForMode>Comp_Init</ConfigForMode>
    <Parameter Name="Mode" />
    <Parameter Name="TriggerMode" />
    <Parameter Name="OutputPol" />
    <Parameter Name="LPTIMConnection" />
  </RefMode>
  <!-- 'Non-Inverting Input' RefModes list -->
  <RefMode BaseMode="InputPlus_BaseMode"
           Name="INP">
    <Parameter Name="NonInvertingInput" />
  </RefMode>
  <!-- 'Window Mode' RefMode-->
  <RefMode BaseMode="InputPlus_BaseMode"
           Name="WindowMode">
    <Parameter Name="WindowMode">
      <PossibleValue>COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON</PossibleValue>
    </Parameter>
  </RefMode>
  <!-- 'Inverting Input' RefModes list -->
  <RefMode Name="INM">
    <Parameter Name="InvertingInput" />
  </RefMode>
  <RefMode Name="VREFINT">
    <Parameter Name="InvertingInput">
      <PossibleValue>COMP_INPUT_MINUS_VREFINT</PossibleValue>
    </Parameter>
  </RefMode>
  <RefMode Name="VREFINT_34">
    <Parameter Name="InvertingInput">
      <PossibleValue>COMP_INPUT_MINUS_3_4VREFINT</PossibleValue>
    </Parameter>
  </RefMode>
  <RefMode Name="VREFINT_12">
    <Parameter Name="InvertingInput">
      <PossibleValue>COMP_INPUT_MINUS_1_2VREFINT</PossibleValue>
    </Parameter>
  </RefMode>
  <RefMode Name="VREFINT_14">
    <Parameter Name="InvertingInput">
      <PossibleValue>COMP_INPUT_MINUS_1_4VREFINT</PossibleValue>
    </Parameter>
  </RefMode>
  <RefMode Name="INM_DACOUT1">
    <Parameter Name="InvertingInput">
      <PossibleValue>COMP_INPUT_MINUS_DAC1_CH1</PossibleValue>
    </Parameter>
  </RefMode>
  <RefMode Name="INM_DACOUT2">
    <Parameter Name="InvertingInput">
      <PossibleValue>COMP_INPUT_MINUS_DAC1_CH2</PossibleValue>
    </Parameter>
  </RefMode>
  <!-- Modes for COMP. Defined for L05x/F06x-->
  <ModeLogicOperator Name="OR">
    <Mode Name="InputPlus"
          UserName="Input [+]">
      <ModeLogicOperator Name="XOR">
        <Mode Name="INP"
              ShrinkName="Input [+] : INP"
              UserName="INP">
          <SignalLogicalOp Name="AND">
            <Signal Name="INP" />
          </SignalLogicalOp>
          <Semaphore>$IpInstance_ExternalInputPlus</Semaphore>
        </Mode>
        <Mode Name="WindowMode"
              RemoveCondition="($IpNumber=2)"
              UserName="Window Mode">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_WindowMode" />
          </SignalLogicalOp>
          <Condition Diagnostic="Need to have an INP (External Input [+]) on next Comparator"
                     Expression="(($IpNumber=1) &amp; COMP2_ExternalInputPlus)" />
        </Mode>
      </ModeLogicOperator>
      <Semaphore>$IpInstance_InputPlus</Semaphore>
    </Mode>
    <Mode Name="InputNeg"
          UserName="Input [-]">
      <ModeLogicOperator Name="XOR">
        <Mode Name="INM"
              UserName="INM">
          <SignalLogicalOp Name="AND">
            <Signal Name="INM" />
          </SignalLogicalOp>
        </Mode>
        <Mode Name="INM_DACOUT1"
              RemoveCondition="!(DAC:$modeexist_DAC_OUT1)"
              UserName="DAC OUT1">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_DACOUT1" />
          </SignalLogicalOp>
          <Condition Diagnostic="Need to have an &#39;DAC Out 1&#39; activated"
                     Expression="(DAC_OUT1_Conf)" />
        </Mode>
        <Mode Name="INM_DACOUT2"
              RemoveCondition="!(DAC:$modeexist_DAC_OUT2)"
              UserName="DAC OUT2">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_DACOUT2" />
          </SignalLogicalOp>
          <Condition Diagnostic="Need to have an &#39;DAC Out 2&#39; activated"
                     Expression="(DAC_OUT2_Conf)" />
        </Mode>
        <Mode Name="VREFINT"
              UserName="Internal VRef">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_VREFINT" />
          </SignalLogicalOp>
          <Semaphore>Semaphore_VrefNeededByComparators</Semaphore>
        </Mode>
        <Mode Name="VREFINT_34"
              RemoveCondition="($IpNumber=1)"
              UserName="3/4 Internal VRef">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_VREFINT34" />
          </SignalLogicalOp>
          <Semaphore>Semaphore_VrefNeededByComparators</Semaphore>
        </Mode>
        <Mode Name="VREFINT_12"
              RemoveCondition="($IpNumber=1)"
              UserName="1/2 Internal VRef">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_VREFINT12" />
          </SignalLogicalOp>
          <Semaphore>Semaphore_VrefNeededByComparators</Semaphore>
        </Mode>
        <Mode Name="VREFINT_14"
              RemoveCondition="($IpNumber=1)"
              UserName="1/4 Internal VRef">
          <SignalLogicalOp Name="AND">
            <Signal Name="VS_VREFINT14" />
          </SignalLogicalOp>
          <Semaphore>Semaphore_VrefNeededByComparators</Semaphore>
        </Mode>
      </ModeLogicOperator>
      <Condition Diagnostic="Need to have an INP (External Input [+]) activated"
                 Expression="$IpInstance_InputPlus" />
    </Mode>
    <Mode Name="ExternalOutput"
          UserName="External Output">
      <ModeLogicOperator Name="OR">
        <Mode Name="ExternalOutput">
          <SignalLogicalOp Name="AND">
            <Signal Name="OUT" />
          </SignalLogicalOp>
        </Mode>
      </ModeLogicOperator>
      <Condition Diagnostic="Need to have an INP (External Input [+]) activated"
                 Expression="$IpInstance_InputPlus" />
    </Mode>
  </ModeLogicOperator>
  <!-- Signals for COMP. -->
  <!-- 
        <RefSignal IOMode="Analog" Name="INM4" ShareableGroupName="COMP_DAC1_group"/>
        <RefSignal IOMode="Analog" Name="INM5" ShareableGroupName="COMP_DAC2_group"/>
        <RefSignal IOMode="Analog" Name="INM6"/>
        <RefSignal IOMode="Analog" Name="INM7"/>
        <RefSignal IOMode="Analog" Name="INP"/>
        <RefSignal IOMode="Analog" Name="INP2"/>
        <RefSignal IOMode="Analog" Name="INP3"/>
        <RefSignal IOMode="Analog" Name="INP4"/>
        <RefSignal IOMode="Analog" Name="INP5"/>
        -->
  <RefSignal IOMode="Analog"
             Name="INP" />
  <RefSignal IOMode="Analog"
             Name="INM" />
  <RefSignal IOMode="AlternateFunctionPushPull"
             Name="OUT" />
  <RefSignal Name="VS_WindowMode"
             Virtual="true" />
  <RefSignal Name="VS_VREFINT"
             Virtual="true" />
  <RefSignal Name="VS_VREFINT34"
             Virtual="true" />
  <RefSignal Name="VS_VREFINT12"
             Virtual="true" />
  <RefSignal Name="VS_VREFINT14"
             Virtual="true" />
  <RefSignal Name="VS_DACOUT1"
             Virtual="true" />
  <RefSignal Name="VS_DACOUT2"
             Virtual="true" />
</IP>
