<?xml version="1.0" encoding="UTF-8"?>
<net name="BurstBuffer_Receiver_4Phase" type="iopt-flow">
  <place id="p001" x="695" y="315" init_marking="1">
    <name off_x="-10" off_y="-10" text="AllowCom"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <place id="p003" x="700" y="425" init_marking="0">
    <name off_x="-10" off_y="-10" text="Ack"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <transition id="t004" x="620" y="315" priority="0">
    <name off_x="-10" off_y="-10" text="t004"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <transition id="t006" x="775" y="315" priority="0">
    <name off_x="-10" off_y="-10" text="t006"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a007" type="normal" source="p001" target="t004"/>
  <arc id="a010" type="normal" source="t004" target="p003"/>
  <arc id="a011" type="normal" source="p003" target="t006"/>
  <arc id="a012" type="normal" source="t006" target="p001"/>
  <event id="Delay" x="695" y="360" mode="input"/>
  <arc id="a014" type="read" source="Delay" target="t004"/>
  <arc id="a015" type="read" source="Delay" target="t006"/>
  <signal id="Ack" x="765" y="425" mode="output" type="boolean" min="0" max="1" dynamic="none" frac="0" value="0"/>
  <arc id="a017" type="read" source="p003" target="Ack"/>
  <signal id="Req" x="620" y="245" mode="input" type="boolean" min="0" max="1"/>
  <operation id="o019" x="700" y="245" rot="0" shape="arrow" size="16">
    <name off_x="-11" off_y="-16" text="o019"/>
    <input off_x="-16" off_y="0" name="Req" id="o019.Req" type="boolean" min="0" max="1" dynamic="all"/>
    <output off_x="16" off_y="0" name="out" id="o019.out" type="range" min="-32768" max="32767" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="Req" neg="true"/>
        <text>NOT(Req)</text>
      </expression>
    </output>
  </operation>
  <arc id="a020" type="read" source="Req" target="t004"/>
  <arc id="a021" type="read" source="Req" target="o019.Req"/>
  <arc id="a022" type="read" source="o019.out" target="t006" c1_x="19" c1_y="0" c2_x="0" c2_y="-10"/>
  <signal id="NewData" x="440" y="475" mode="output" type="boolean" min="0" max="1" dynamic="none" frac="0" value="0"/>
  <place id="p038" x="360" y="475" init_marking="0">
    <name off_x="-10" off_y="-10" text="DataReady"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <transition id="t040" x="235" y="475" priority="0">
    <name off_x="-10" off_y="-10" text="t040"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a042" type="read" source="p038" target="NewData"/>
  <arc id="a046" type="normal" source="p038" target="t040"/>
  <place id="p017" x="295" y="405" init_marking="1">
    <name off_x="-10" off_y="-10" text="DataReady_cmpl"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <arc id="a018" type="normal" source="t040" target="p017"/>
  <transition id="t012" x="360" y="340" priority="0">
    <name off_x="-10" off_y="-10" text="t012"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a023" type="normal" source="p017" target="t012"/>
  <arc id="a024" type="normal" source="t012" target="p038"/>
  <event id="Release" x="235" y="340" mode="input"/>
  <arc id="a080" type="read" source="Release" target="t040"/>
  <signal id="BufferSize" x="610" y="160" mode="input" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <signal id="Buffer" x="445" y="140" mode="output" type="range" min="0" max="255" dynamic="type" frac="0"/>
  <signal id="IS1" x="395" y="140" mode="internal" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <operation id="o007" x="305" y="140" rot="0" shape="arrow" size="40">
    <name off_x="-35" off_y="-40" text="o007"/>
    <input off_x="-40" off_y="-24" name="t012" id="o007.t012" type="event" dynamic="all"/>
    <input off_x="-40" off_y="-8" name="t006" id="o007.t006" type="event" dynamic="all"/>
    <input off_x="-40" off_y="8" name="InData" id="o007.InData" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <input off_x="-40" off_y="24" name="IS1" id="o007.IS1" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="40" off_y="0" name="out" id="o007.out" type="range" min="0" max="255" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <operator type="add"/>
        <operand type="signal" idRef="InData"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t006" delay="1"/>
          <operator type="and"/>
          <operand type="sub-expression" neg="true">
            <operand type="signal" idRef="t012" delay="1"/>
          </operand>
        </operand>
        <text>IS1[-1] + InData WHEN (t006[-1] AND NOT(t012[-1]))</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <operator type="add"/>
        <operand type="signal" idRef="InData"/>
        <operator type="sub"/>
        <operand type="literal" value="1"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t006" delay="1"/>
          <operator type="and"/>
          <operand type="signal" idRef="t012" delay="1"/>
        </operand>
        <text>IS1[-1] + InData - 1 WHEN (t006[-1] AND t012[-1])</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <operator type="sub"/>
        <operand type="literal" value="1"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t012" delay="1"/>
        </operand>
        <text>IS1[-1] - 1 WHEN (t012[-1])</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <text>IS1[-1]</text>
      </expression>
    </output>
  </operation>
  <arc id="a008" type="read" source="o007.out" target="IS1"/>
  <arc id="a009" type="read" source="IS1" target="o007.IS1" view="symbolic"/>
  <signal id="InData" x="190" y="150" mode="input" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <arc id="a013" type="read" source="InData" target="o007.InData"/>
  <arc id="a016" type="read" source="IS1" target="Buffer"/>
  <arc id="a028" type="read" source="t012" target="o007.t012" view="symbolic"/>
  <operation id="o029" x="750" y="160" rot="0" shape="arrow" size="32">
    <name off_x="-27" off_y="-32" text="o029"/>
    <input off_x="-32" off_y="-16" name="Buffer" id="o029.Buffer" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <input off_x="-32" off_y="0" name="BufferSize" id="o029.BufferSize" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <input off_x="-32" off_y="16" name="InData" id="o029.InData" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="32" off_y="0" name="out" id="o029.out" type="boolean" min="0" max="1" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="Buffer"/>
        <operator type="add"/>
        <operand type="signal" idRef="InData"/>
        <operator type="less-or-equal"/>
        <operand type="signal" idRef="BufferSize"/>
        <text>Buffer + InData &lt;= BufferSize</text>
      </expression>
    </output>
  </operation>
  <arc id="a030" type="read" source="BufferSize" target="o029.BufferSize"/>
  <arc id="a031" type="read" source="InData" target="o029.InData" view="symbolic"/>
  <arc id="a032" type="read" source="Buffer" target="o029.Buffer" view="symbolic"/>
  <operation id="o036" x="285" y="275" rot="0" shape="arrow" size="16">
    <name off_x="-11" off_y="-16" text="o036"/>
    <input off_x="-16" off_y="0" name="Buffer" id="o036.Buffer" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="16" off_y="0" name="out" id="o036.out" type="boolean" min="0" max="1" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="Buffer"/>
        <operator type="more"/>
        <operand type="literal" value="0"/>
        <text>Buffer &gt; 0</text>
      </expression>
    </output>
  </operation>
  <arc id="a037" type="read" source="Buffer" target="o036.Buffer" view="symbolic"/>
  <arc id="a038" type="read" source="o036.out" target="t012" c1_x="34" c1_y="0" c2_x="0" c2_y="0"/>
  <arc id="a043" type="read" source="t006" target="o007.t006" view="symbolic"/>
  <arc id="a044" type="read" source="o029.out" target="t006" c1_x="38" c1_y="0" c2_x="30" c2_y="5"/>
</net>
