<?xml version="1.0" encoding="UTF-8"?>
<net name="BurstBuffer_Transmitter_2Phase" type="iopt-flow">
  <signal id="Ack" x="1075" y="185" mode="input" type="boolean" min="0" max="1"/>
  <event id="Delay" x="840" y="115" mode="input"/>
  <signal id="Req" x="755" y="380" mode="output" type="range" min="0" max="255" dynamic="type" frac="0"/>
  <signal id="Available" x="545" y="115" mode="output" type="boolean" min="0" max="1" dynamic="type" frac="0"/>
  <place id="p017" x="670" y="380" init_marking="0">
    <name off_x="-10" off_y="-10" text="Req+"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <transition id="t019" x="670" y="300" priority="0">
    <name off_x="-10" off_y="-10" text="t019"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <transition id="t021" x="645" y="190" priority="0">
    <name off_x="-10" off_y="-10" text="t021"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a030" type="read" source="p017" target="Req"/>
  <operation id="o049" x="1000" y="185" rot="-180" shape="arrow" size="16">
    <name off_x="-11" off_y="-16" text="o049"/>
    <input off_x="16" off_y="0" name="Ack" id="o049.Ack" type="boolean" min="0" max="1" dynamic="all"/>
    <output off_x="-16" off_y="0" name="out" id="o049.out" type="range" min="-32768" max="32767" dynamic="type" frac="0">
      <expression>
        <operand type="literal" value="1"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="sub-expression">
            <operand type="signal" idRef="Ack"/>
            <operator type="equal"/>
            <operand type="literal" value="1"/>
            <operator type="and"/>
            <operand type="signal" idRef="Ack" delay="1"/>
            <operator type="equal"/>
            <operand type="literal" value="0"/>
          </operand>
          <operator type="or"/>
          <operand type="sub-expression">
            <operand type="signal" idRef="Ack"/>
            <operator type="equal"/>
            <operand type="literal" value="0"/>
            <operator type="and"/>
            <operand type="signal" idRef="Ack" delay="1"/>
            <operator type="equal"/>
            <operand type="literal" value="1"/>
          </operand>
        </operand>
        <text>1 WHEN ((Ack = 1 AND Ack[-1] = 0) OR (Ack = 0 AND Ack[-1] = 1))</text>
      </expression>
      <expression>
        <operand type="literal" value="0"/>
        <text>0 OTHERWISE</text>
      </expression>
    </output>
  </operation>
  <place id="p050" x="760" y="185" init_marking="0">
    <name off_x="-10" off_y="-10" text="AckReceived"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <transition id="t051" x="840" y="185" priority="0">
    <name off_x="-10" off_y="-10" text="t051"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a052" type="normal" source="t051" target="p050"/>
  <arc id="a055" type="read" source="Ack" target="o049.Ack"/>
  <arc id="a056" type="read" source="o049.out" target="t051"/>
  <transition id="t045" x="615" y="300" priority="0">
    <name off_x="-10" off_y="-10" text="t045"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a046" type="read" source="t021" target="t045"/>
  <arc id="a047" type="read" source="t021" target="t019"/>
  <arc id="a049" type="normal" source="t045" target="p017"/>
  <arc id="a050" type="normal" source="p017" target="t019"/>
  <event id="Load" x="410" y="205" mode="input"/>
  <signal id="BufferSize" x="315" y="125" mode="input" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <operation id="o004" x="410" y="115" rot="0" shape="arrow" size="24">
    <name off_x="-19" off_y="-24" text="o004"/>
    <input off_x="-24" off_y="-8" name="Buffer" id="o004.Buffer" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <input off_x="-24" off_y="8" name="BufferSize" id="o004.BufferSize" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="24" off_y="0" name="out" id="o004.out" type="boolean" min="0" max="1" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="Buffer"/>
        <operator type="less"/>
        <operand type="signal" idRef="BufferSize"/>
        <text>Buffer &lt; BufferSize</text>
      </expression>
    </output>
  </operation>
  <arc id="a005" type="read" source="BufferSize" target="o004.BufferSize"/>
  <arc id="a008" type="read" source="o004.out" target="Available"/>
  <place id="p009" x="615" y="380" init_marking="1">
    <name off_x="-10" off_y="-10" text="Req-"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <arc id="a010" type="normal" source="p009" target="t045"/>
  <arc id="a011" type="normal" source="t019" target="p009"/>
  <transition id="t012" x="760" y="115" priority="0">
    <name off_x="-10" off_y="-10" text="t012"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <place id="p013" x="645" y="115" init_marking="1">
    <name off_x="-10" off_y="-10" text="AllowCom"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <arc id="a014" type="normal" source="p050" target="t012"/>
  <arc id="a015" type="normal" source="t012" target="p013"/>
  <arc id="a016" type="normal" source="p013" target="t021"/>
  <arc id="a017" type="read" source="Delay" target="t012"/>
  <signal id="Buffer" x="435" y="505" mode="output" type="range" min="0" max="255" dynamic="type" frac="0"/>
  <signal id="IS1" x="435" y="445" mode="internal" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <signal id="IS2" x="1005" y="445" mode="internal" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <signal id="OutData" x="1075" y="445" mode="output" type="range" min="0" max="255" dynamic="type" frac="0" value="0"/>
  <operation id="o038" x="330" y="445" rot="0" shape="arrow" size="32">
    <name off_x="-27" off_y="-32" text="o038"/>
    <input off_x="-32" off_y="-16" name="t021" id="o038.t021" type="event" dynamic="all"/>
    <input off_x="-32" off_y="0" name="t067" id="o038.t067" type="event" dynamic="all"/>
    <input off_x="-32" off_y="16" name="IS1" id="o038.IS1" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="32" off_y="0" name="out" id="o038.out" type="range" min="0" max="255" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <operator type="add"/>
        <operand type="literal" value="1"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t067" delay="1"/>
          <operator type="and"/>
          <operand type="sub-expression" neg="true">
            <operand type="signal" idRef="t021" delay="1"/>
          </operand>
        </operand>
        <text>IS1[-1] + 1 WHEN (t067[-1] AND NOT(t021[-1]))</text>
      </expression>
      <expression>
        <operand type="literal" value="1"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t067" delay="1"/>
          <operator type="and"/>
          <operand type="signal" idRef="t021" delay="1"/>
        </operand>
        <text>1 WHEN (t067[-1] AND t021[-1])</text>
      </expression>
      <expression>
        <operand type="literal" value="0"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t021" delay="1"/>
        </operand>
        <text>0 WHEN (t021[-1])</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <text>IS1[-1]</text>
      </expression>
    </output>
  </operation>
  <operation id="o039" x="905" y="445" rot="0" shape="arrow" size="32">
    <name off_x="-27" off_y="-32" text="o039"/>
    <input off_x="-32" off_y="-16" name="p013" id="o039.p013" type="range" dynamic="all" min="0" max="255" frac="0"/>
    <input off_x="-32" off_y="0" name="IS1" id="o039.IS1" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <input off_x="-32" off_y="16" name="IS2" id="o039.IS2" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="32" off_y="0" name="out" id="o039.out" type="range" min="0" max="255" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="IS1"/>
        <operator type="when"/>
        <operand type="signal" idRef="p013"/>
        <text>IS1 WHEN (p013)</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS2" delay="1"/>
        <text>IS2[-1]</text>
      </expression>
    </output>
  </operation>
  <arc id="a029" type="read" source="IS2" target="OutData"/>
  <arc id="a040" type="read" source="o038.out" target="IS1"/>
  <arc id="a041" type="read" source="IS1" target="o039.IS1"/>
  <arc id="a042" type="read" source="o039.out" target="IS2"/>
  <arc id="a043" type="read" source="IS2" target="o039.IS2" view="symbolic"/>
  <arc id="a044" type="read" source="IS1" target="o038.IS1" view="symbolic"/>
  <arc id="a061" type="read" source="IS1" target="Buffer"/>
  <arc id="a066" type="read" source="t021" target="o038.t021" c2_x="-28" c2_y="-54" c1_x="-150" c1_y="75"/>
  <transition id="t067" x="475" y="205" priority="0">
    <name off_x="-10" off_y="-10" text="t067"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a068" type="read" source="Load" target="t067"/>
  <arc id="a069" type="read" source="o004.out" target="t067" c1_x="31" c1_y="40" c2_x="0" c2_y="-15"/>
  <arc id="a071" type="read" source="t067" target="o038.t067" c2_x="-48" c2_y="-55" c1_x="-95" c1_y="70"/>
  <arc id="a072" type="read" source="Buffer" target="o004.Buffer" view="symbolic"/>
  <arc id="a022" type="read" source="p013" target="o039.p013"/>
  <operation id="o023" x="490" y="335" rot="0" shape="arrow" size="16">
    <name off_x="-11" off_y="-16" text="o023"/>
    <input off_x="-16" off_y="0" name="IS1" id="o023.IS1" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="16" off_y="0" name="out" id="o023.out" type="boolean" min="0" max="1" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="IS1"/>
        <operator type="more"/>
        <operand type="literal" value="0"/>
        <text>IS1 &gt; 0</text>
      </expression>
    </output>
  </operation>
  <arc id="a024" type="read" source="IS1" target="o023.IS1" c1_x="5" c1_y="-50" c2_x="-19" c2_y="0"/>
  <arc id="a025" type="read" source="o023.out" target="t021" c1_x="34" c1_y="-5" c2_x="-70" c2_y="85"/>
</net>
