<?xml version="1.0" encoding="UTF-8"?>
<net name="BurstBuffer_Transmitter_4Phase" type="iopt-flow">
  <signal id="Ack" x="900" y="200" mode="input" type="boolean" min="0" max="1"/>
  <event id="Delay" x="895" y="290" mode="input"/>
  <signal id="Req" x="660" y="200" mode="output" type="range" min="0" max="255" dynamic="type" frac="0"/>
  <signal id="Available" x="275" y="410" mode="output" type="boolean" min="0" max="1" dynamic="type" frac="0"/>
  <place id="p017" x="725" y="200" init_marking="0">
    <name off_x="-10" off_y="-10" text="Req+"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <place id="p018" x="820" y="275" 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="725" y="290" priority="0">
    <name off_x="-10" off_y="-10" text="t019"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <transition id="t020" x="820" y="200" priority="0">
    <name off_x="-10" off_y="-10" text="t020"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <transition id="t021" x="820" y="375" priority="0">
    <name off_x="-10" off_y="-10" text="t021"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a024" type="normal" source="t019" target="p017"/>
  <arc id="a025" type="normal" source="p017" target="t020"/>
  <arc id="a026" type="normal" source="t020" target="p018"/>
  <arc id="a027" type="normal" source="p018" target="t021"/>
  <arc id="a030" type="read" source="p017" target="Req"/>
  <arc id="a031" type="read" source="Delay" target="t020"/>
  <arc id="a032" type="read" source="Delay" target="t021"/>
  <operation id="o033" x="885" y="375" rot="180" shape="arrow" size="16">
    <name off_x="-11" off_y="-16" text="o033"/>
    <input off_x="16" off_y="0" name="Ack" id="o033.Ack" type="boolean" min="0" max="1" dynamic="all"/>
    <output off_x="-16" off_y="0" name="out" id="o033.out" type="range" min="-32768" max="32767" dynamic="type" frac="0">
      <expression>
        <operand type="signal" idRef="Ack" neg="true"/>
        <text>NOT(Ack)</text>
      </expression>
    </output>
  </operation>
  <arc id="a034" type="read" source="Ack" target="t020"/>
  <arc id="a035" type="read" source="Ack" target="o033.Ack" c1_x="35" c1_y="10" c2_x="34" c2_y="-5"/>
  <arc id="a036" type="read" source="o033.out" target="t021"/>
  <place id="p001" x="725" y="375" init_marking="1">
    <name off_x="-10" off_y="-10" text="AllowCom"/>
    <comment off_x="0" off_y="20" text="-"/>
  </place>
  <arc id="a002" type="normal" source="p001" target="t019"/>
  <arc id="a010" type="normal" source="t021" target="p001"/>
  <signal id="BufferSize" x="125" y="490" mode="input" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <event id="Load" x="360" y="415" mode="input"/>
  <signal id="Buffer" x="570" y="550" mode="output" type="range" min="0" max="255" dynamic="type" frac="0"/>
  <signal id="IS1" x="570" y="480" mode="internal" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <signal id="IS2" x="875" y="480" mode="internal" type="range" min="0" max="255" frac="0" value="0" dynamic="none"/>
  <signal id="OutData" x="945" y="480" mode="output" type="range" min="0" max="255" dynamic="type" frac="0" value="0"/>
  <arc id="a029" type="read" source="IS2" target="OutData"/>
  <operation id="o038" x="465" y="480" rot="0" shape="arrow" size="32">
    <name off_x="-27" off_y="-32" text="o038"/>
    <input off_x="-32" off_y="-16" name="t019" id="o038.t019" type="event" dynamic="all"/>
    <input off_x="-32" off_y="0" name="t098" id="o038.t098" 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="t098" delay="1"/>
          <operator type="and"/>
          <operand type="sub-expression" neg="true">
            <operand type="signal" idRef="t019" delay="1"/>
          </operand>
        </operand>
        <text>IS1[-1] + 1 WHEN (t098[-1] AND NOT(t019[-1]))</text>
      </expression>
      <expression>
        <operand type="literal" value="1"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t098" delay="1"/>
          <operator type="and"/>
          <operand type="signal" idRef="t019" delay="1"/>
        </operand>
        <text>1 WHEN (t098[-1] AND t019[-1])</text>
      </expression>
      <expression>
        <operand type="literal" value="0"/>
        <operator type="when"/>
        <operand type="sub-expression">
          <operand type="signal" idRef="t019" delay="1"/>
        </operand>
        <text>0 WHEN (t019[-1])</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS1" delay="1"/>
        <text>IS1[-1] OTHERWISE</text>
      </expression>
    </output>
  </operation>
  <operation id="o039" x="775" y="480" rot="0" shape="arrow" size="32">
    <name off_x="-27" off_y="-32" text="o039"/>
    <input off_x="-32" off_y="-16" name="p001" id="o039.p001" 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="sub-expression">
          <operand type="signal" idRef="p001"/>
        </operand>
        <text>IS1 WHEN (p001)</text>
      </expression>
      <expression>
        <operand type="signal" idRef="IS2" delay="1"/>
        <text>IS2[-1] OTHERWISE</text>
      </expression>
    </output>
  </operation>
  <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="a050" type="read" source="IS1" target="Buffer"/>
  <arc id="a058" type="read" source="t019" target="o038.t019" c2_x="-8" c2_y="-39" c1_x="-130" c1_y="-15"/>
  <transition id="t098" x="360" y="480" priority="0">
    <name off_x="-10" off_y="-10" text="t098"/>
    <comment off_x="-10" off_y="20" text="-"/>
  </transition>
  <arc id="a102" type="read" source="Load" target="t098"/>
  <arc id="a104" type="read" source="t098" target="o038.t098"/>
  <operation id="o106" x="215" y="480" rot="0" shape="arrow" size="24">
    <name off_x="-19" off_y="-24" text="o106"/>
    <input off_x="-24" off_y="-8" name="Buffer" id="o106.Buffer" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <input off_x="-24" off_y="8" name="BufferSize" id="o106.BufferSize" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="24" off_y="0" name="out" id="o106.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="a107" type="read" source="BufferSize" target="o106.BufferSize"/>
  <arc id="a108" type="read" source="o106.out" target="Available"/>
  <arc id="a109" type="read" source="Buffer" target="o106.Buffer" view="symbolic"/>
  <arc id="a023" type="read" source="o106.out" target="t098"/>
  <arc id="a008" type="read" source="p001" target="o039.p001" c1_x="-25" c1_y="40" c2_x="0" c2_y="0"/>
  <operation id="o019" x="595" y="350" rot="0" shape="arrow" size="16">
    <name off_x="-11" off_y="-16" text="o019"/>
    <input off_x="-16" off_y="0" name="IS1" id="o019.IS1" type="range" min="0" max="255" dynamic="all" frac="0"/>
    <output off_x="16" off_y="0" name="out" id="o019.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="a020" type="read" source="o019.out" target="t019" c1_x="39" c1_y="5" c2_x="-50" c2_y="0"/>
  <arc id="a021" type="read" source="IS1" target="o019.IS1" c2_x="-34" c2_y="0" c1_x="-25" c1_y="-10"/>
</net>
