fix: lack of throttle count in routers fixed

This commit is contained in:
juanmanuel 2024-11-14 03:18:30 -05:00
parent a632f28c36
commit 11666fb586
14 changed files with 1498 additions and 277 deletions

View file

@ -264,8 +264,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="5" max="5"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="0"/> <type value="0"/>
<task value="1"/> <task value="1"/>
@ -284,8 +284,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="593" max="593"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="1"/> <type value="1"/>
<task value="2"/> <task value="2"/>
@ -310,8 +310,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="198" max="198"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="2"/> <type value="2"/>
<task value="3"/> <task value="3"/>
@ -336,8 +336,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="352" max="352"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="3"/> <type value="3"/>
<task value="4"/> <task value="4"/>
@ -362,8 +362,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1055" max="1055"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="4"/> <type value="4"/>
<task value="5"/> <task value="5"/>
@ -388,8 +388,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="149" max="149"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="5"/> <type value="5"/>
<task value="6"/> <task value="6"/>
@ -414,15 +414,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="396" max="396"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="6"/> <type value="6"/>
<task value="7"/> <task value="7"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="396" max="396"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="6"/> <type value="6"/>
<task value="10"/> <task value="10"/>
@ -447,8 +447,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="593" max="593"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="7"/> <type value="7"/>
<task value="8"/> <task value="8"/>
@ -473,8 +473,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="223" max="223"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="8"/> <type value="8"/>
<task value="9"/> <task value="9"/>
@ -499,8 +499,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="593" max="593"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="9"/> <type value="9"/>
<task value="10"/> <task value="10"/>
@ -525,15 +525,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="3" max="3"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="10"/> <type value="10"/>
<task value="11"/> <task value="11"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="3" max="3"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="10"/> <type value="10"/>
<task value="14"/> <task value="14"/>
@ -563,8 +563,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="593" max="593"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="11"/> <type value="11"/>
<task value="12"/> <task value="12"/>
@ -589,8 +589,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="223" max="223"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="12"/> <type value="12"/>
<task value="13"/> <task value="13"/>
@ -615,8 +615,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="593" max="593"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="13"/> <type value="13"/>
<task value="14"/> <task value="14"/>
@ -641,8 +641,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="3" max="3"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="14"/> <type value="14"/>
<task value="15"/> <task value="15"/>
@ -672,8 +672,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="593" max="593"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="15"/> <type value="15"/>
<task value="16"/> <task value="16"/>
@ -698,8 +698,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="160" max="160"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="16"/> <type value="16"/>
<task value="17"/> <task value="17"/>
@ -724,15 +724,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="306" max="306"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="17"/> <type value="17"/>
<task value="18"/> <task value="18"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="306" max="306"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="17"/> <type value="17"/>
<task value="21"/> <task value="21"/>
@ -757,8 +757,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="612" max="612"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="18"/> <type value="18"/>
<task value="19"/> <task value="19"/>
@ -783,8 +783,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="319" max="319"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="19"/> <type value="19"/>
<task value="20"/> <task value="20"/>
@ -809,8 +809,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="612" max="612"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="20"/> <type value="20"/>
<task value="21"/> <task value="21"/>
@ -835,15 +835,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="2" max="2"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="21"/> <type value="21"/>
<task value="22"/> <task value="22"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="2" max="2"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="21"/> <type value="21"/>
<task value="25"/> <task value="25"/>
@ -873,8 +873,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="612" max="612"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="22"/> <type value="22"/>
<task value="23"/> <task value="23"/>
@ -899,8 +899,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="319" max="319"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="23"/> <type value="23"/>
<task value="24"/> <task value="24"/>
@ -925,8 +925,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="612" max="612"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="24"/> <type value="24"/>
<task value="25"/> <task value="25"/>
@ -951,8 +951,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="2" max="2"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="25"/> <type value="25"/>
<task value="26"/> <task value="26"/>
@ -982,8 +982,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="612" max="612"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="26"/> <type value="26"/>
<task value="27"/> <task value="27"/>
@ -1008,8 +1008,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="31" max="31"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="27"/> <type value="27"/>
<task value="28"/> <task value="28"/>
@ -1034,15 +1034,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="298" max="298"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="28"/> <type value="28"/>
<task value="29"/> <task value="29"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="298" max="298"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="28"/> <type value="28"/>
<task value="32"/> <task value="32"/>
@ -1067,8 +1067,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="29"/> <type value="29"/>
<task value="30"/> <task value="30"/>
@ -1093,8 +1093,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="56" max="56"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="30"/> <type value="30"/>
<task value="31"/> <task value="31"/>
@ -1119,8 +1119,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="31"/> <type value="31"/>
<task value="32"/> <task value="32"/>
@ -1145,15 +1145,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="32"/> <type value="32"/>
<task value="33"/> <task value="33"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="32"/> <type value="32"/>
<task value="36"/> <task value="36"/>
@ -1183,8 +1183,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="33"/> <type value="33"/>
<task value="34"/> <task value="34"/>
@ -1209,8 +1209,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="56" max="56"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="34"/> <type value="34"/>
<task value="35"/> <task value="35"/>
@ -1235,8 +1235,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="35"/> <type value="35"/>
<task value="36"/> <task value="36"/>
@ -1261,15 +1261,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="36"/> <type value="36"/>
<task value="37"/> <task value="37"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="36"/> <type value="36"/>
<task value="40"/> <task value="40"/>
@ -1299,8 +1299,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="37"/> <type value="37"/>
<task value="38"/> <task value="38"/>
@ -1325,8 +1325,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="56" max="56"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="38"/> <type value="38"/>
<task value="39"/> <task value="39"/>
@ -1351,8 +1351,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="39"/> <type value="39"/>
<task value="40"/> <task value="40"/>
@ -1377,8 +1377,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="40"/> <type value="40"/>
<task value="41"/> <task value="41"/>
@ -1408,8 +1408,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="546" max="546"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="41"/> <type value="41"/>
<task value="42"/> <task value="42"/>
@ -1434,8 +1434,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="155" max="155"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="42"/> <type value="42"/>
<task value="43"/> <task value="43"/>
@ -1460,15 +1460,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="744" max="744"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="43"/> <type value="43"/>
<task value="44"/> <task value="44"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="744" max="744"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="43"/> <type value="43"/>
<task value="47"/> <task value="47"/>
@ -1493,8 +1493,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="44"/> <type value="44"/>
<task value="45"/> <task value="45"/>
@ -1519,8 +1519,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="212" max="212"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="45"/> <type value="45"/>
<task value="46"/> <task value="46"/>
@ -1545,8 +1545,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="46"/> <type value="46"/>
<task value="47"/> <task value="47"/>
@ -1571,15 +1571,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="47"/> <type value="47"/>
<task value="48"/> <task value="48"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="47"/> <type value="47"/>
<task value="51"/> <task value="51"/>
@ -1609,8 +1609,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="48"/> <type value="48"/>
<task value="49"/> <task value="49"/>
@ -1635,8 +1635,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="212" max="212"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="49"/> <type value="49"/>
<task value="50"/> <task value="50"/>
@ -1661,8 +1661,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="50"/> <type value="50"/>
<task value="51"/> <task value="51"/>
@ -1687,15 +1687,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="51"/> <type value="51"/>
<task value="52"/> <task value="52"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="51"/> <type value="51"/>
<task value="55"/> <task value="55"/>
@ -1725,8 +1725,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="52"/> <type value="52"/>
<task value="53"/> <task value="53"/>
@ -1751,8 +1751,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="212" max="212"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="53"/> <type value="53"/>
<task value="54"/> <task value="54"/>
@ -1777,8 +1777,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="54"/> <type value="54"/>
<task value="55"/> <task value="55"/>
@ -1803,8 +1803,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="55"/> <type value="55"/>
<task value="56"/> <task value="56"/>
@ -1834,8 +1834,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1014" max="1014"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="56"/> <type value="56"/>
<task value="57"/> <task value="57"/>
@ -1860,8 +1860,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="60" max="60"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="57"/> <type value="57"/>
<task value="58"/> <task value="58"/>
@ -1886,15 +1886,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="493" max="493"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="58"/> <type value="58"/>
<task value="59"/> <task value="59"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="493" max="493"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="58"/> <type value="58"/>
<task value="62"/> <task value="62"/>
@ -1919,8 +1919,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="59"/> <type value="59"/>
<task value="60"/> <task value="60"/>
@ -1945,8 +1945,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="103" max="103"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="60"/> <type value="60"/>
<task value="61"/> <task value="61"/>
@ -1971,8 +1971,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="61"/> <type value="61"/>
<task value="62"/> <task value="62"/>
@ -1997,15 +1997,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="62"/> <type value="62"/>
<task value="63"/> <task value="63"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="62"/> <type value="62"/>
<task value="66"/> <task value="66"/>
@ -2035,8 +2035,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="63"/> <type value="63"/>
<task value="64"/> <task value="64"/>
@ -2061,8 +2061,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="103" max="103"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="64"/> <type value="64"/>
<task value="65"/> <task value="65"/>
@ -2087,8 +2087,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="65"/> <type value="65"/>
<task value="66"/> <task value="66"/>
@ -2113,15 +2113,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="66"/> <type value="66"/>
<task value="67"/> <task value="67"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="66"/> <type value="66"/>
<task value="70"/> <task value="70"/>
@ -2151,8 +2151,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="67"/> <type value="67"/>
<task value="68"/> <task value="68"/>
@ -2177,8 +2177,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="103" max="103"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="68"/> <type value="68"/>
<task value="69"/> <task value="69"/>
@ -2203,8 +2203,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="69"/> <type value="69"/>
<task value="70"/> <task value="70"/>
@ -2229,15 +2229,15 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="70"/> <type value="70"/>
<task value="71"/> <task value="71"/>
</destination> </destination>
<destination id="1"> <destination id="1">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="70"/> <type value="70"/>
<task value="74"/> <task value="74"/>
@ -2267,8 +2267,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="71"/> <type value="71"/>
<task value="72"/> <task value="72"/>
@ -2293,8 +2293,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="103" max="103"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="72"/> <type value="72"/>
<task value="73"/> <task value="73"/>
@ -2319,8 +2319,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="73"/> <type value="73"/>
<task value="74"/> <task value="74"/>
@ -2345,8 +2345,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="74"/> <type value="74"/>
<task value="75"/> <task value="75"/>
@ -2376,8 +2376,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="854" max="854"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="75"/> <type value="75"/>
<task value="76"/> <task value="76"/>
@ -2402,8 +2402,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="37" max="37"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="76"/> <type value="76"/>
<task value="77"/> <task value="77"/>
@ -2428,8 +2428,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1445" max="1445"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="77"/> <type value="77"/>
<task value="78"/> <task value="78"/>
@ -2454,8 +2454,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1483" max="1483"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="78"/> <type value="78"/>
<task value="79"/> <task value="79"/>
@ -2480,8 +2480,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="173" max="173"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="79"/> <type value="79"/>
<task value="80"/> <task value="80"/>
@ -2507,7 +2507,7 @@
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="10" max="10"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="80"/> <type value="80"/>
<task value="81"/> <task value="81"/>
@ -2532,8 +2532,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="52" max="52"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="81"/> <type value="81"/>
<task value="82"/> <task value="82"/>
@ -2558,8 +2558,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="1" max="1"/> <delay min="10" max="10"/>
<interval min="20" max="20"/> <interval min="10" max="10"/>
<count min="10" max="10"/> <count min="10" max="10"/>
<type value="82"/> <type value="82"/>
<task value="83"/> <task value="83"/>

View file

@ -5,7 +5,7 @@
<name value="Packet"/> <name value="Packet"/>
</dataType> </dataType>
<dataType id="1"> <dataType id="1">
<name value="Streaming"/> <name value="Stream"/>
</dataType> </dataType>
</dataTypes> </dataTypes>
<tasks> <tasks>
@ -18,8 +18,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="0" max="100"/> <delay min="0" max="10"/>
<interval min="100" max="100"/> <interval min="5" max="5"/>
<count min="1" max="1"/> <count min="1" max="1"/>
<type value="0"/> <type value="0"/>
<task value="2"/> <task value="2"/>
@ -38,8 +38,8 @@
<probability value="1"/> <probability value="1"/>
<destinations> <destinations>
<destination id="0"> <destination id="0">
<delay min="0" max="100"/> <delay min="0" max="10"/>
<interval min="100" max="100"/> <interval min="5" max="5"/>
<count min="1" max="1"/> <count min="1" max="1"/>
<type value="0"/> <type value="0"/>
<task value="2"/> <task value="2"/>
@ -57,12 +57,7 @@
<requirement id="0"> <requirement id="0">
<type value="0"/> <type value="0"/>
<source value="0"/> <source value="0"/>
<count max="1" min="1"/> <count max="2" min="2"/>
</requirement>
<requirement id="1">
<type value="0"/>
<source value="24"/>
<count max="1" min="1"/>
</requirement> </requirement>
</requires> </requires>
</task> </task>

View file

@ -5,7 +5,7 @@
<outputToFile value="true">report</outputToFile> <outputToFile value="true">report</outputToFile>
</general> </general>
<noc> <noc>
<nocFile>config/simple_test/net.xml</nocFile> <nocFile>config/simple_2_point_test/net.xml</nocFile>
<flitsPerPacket value="1"/> <flitsPerPacket value="1"/>
<bitWidth value="32"/> <bitWidth value="32"/>
<Vdd value="5"/> <Vdd value="5"/>

55
config/throttle_test/config.xml Executable file
View file

@ -0,0 +1,55 @@
<?xml version="1.0" ?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<general>
<simulationTime value="1500"/>
<outputToFile value="true">report</outputToFile>
</general>
<noc>
<nocFile>config/throttle_test/net.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/throttle_test/data.xml</dataFile>
<mapFile>config/throttle_test/map.xml</mapFile>
</application>
<verbose>
<processingElements>
<function_calls value="false"/>
<send_flit value="false"/>
<send_head_flit value="true"/>
<receive_flit value="false"/>
<receive_tail_flit value="true"/>
<throttle value="false"/>
<reset value="false"/>
</processingElements>
<router>
<function_calls value="false"/>
<send_flit value="false"/>
<send_head_flit value="false"/>
<receive_flit value="false"/>
<receive_tail_flit value="false"/>
<throttle value="false"/>
<reset value="false"/>
<assign_channel value="false"/>
<buffer_overflow value="true"/>
</router>
<netrace>
<inject value="true"/>
<eject value="true"/>
<router_receive value="true"/>
</netrace>
<tasks>
<function_calls value="true"/>
<xml_parse value="false"/>
<data_receive value="true"/>
<data_send value="true"/>
<source_execute value="false"/>
</tasks>
</verbose>
<report>
<bufferReportRouters>5 6 9 10</bufferReportRouters>
</report>
</configuration>

245
config/throttle_test/data.xml Executable file
View file

@ -0,0 +1,245 @@
<?xml version="1.0" ?>
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dataTypes>
<dataType id="0">
<name value="Packet"/>
</dataType>
<dataType id="1">
<name value="Stream"/>
</dataType>
</dataTypes>
<tasks>
<task id="0">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="1">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="2">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="3">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="4">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="5">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="6">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="7">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="8">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="9">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="10">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="10"/>
<interval min="5" max="5"/>
<count min="10" max="10"/>
<type value="0"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="11">
<start max="0" min="0"/>
<duration max="-1" min="-1"/>
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="0"/>
<source value="0"/>
<count max="100" min="100"/>
</requirement>
</requires>
</task>
</tasks>
</data>

51
config/throttle_test/map.xml Executable file
View file

@ -0,0 +1,51 @@
<?xml version="1.0" ?>
<map xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<bind>
<task value="0"/>
<node value="0"/>
</bind>
<bind>
<task value="1"/>
<node value="8"/>
</bind>
<bind>
<task value="2"/>
<node value="4"/>
</bind>
<bind>
<task value="3"/>
<node value="10"/>
</bind>
<bind>
<task value="4"/>
<node value="12"/>
</bind>
<bind>
<task value="5"/>
<node value="13"/>
</bind>
<bind>
<task value="6"/>
<node value="14"/>
</bind>
<bind>
<task value="7"/>
<node value="11"/>
</bind>
<bind>
<task value="8"/>
<node value="8"/>
</bind>
<bind>
<task value="9"/>
<node value="9"/>
</bind>
<bind>
<task value="10"/>
<node value="7"/>
</bind>
<bind>
<task value="11"/>
<node value="15"/>
</bind>
</map>

879
config/throttle_test/net.xml Executable file
View file

@ -0,0 +1,879 @@
<?xml version="1.0" encoding="UTF-8"?>
<network-on-chip xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="layer.xsd">
<bufferDepthType value="single" /> <!-- single, perVC-->
<nodeTypes>
<nodeType id="0">
<model value="Router"/>
<routing value="XYZ"/>
<clockDelay value="1"/>
</nodeType>
<nodeType id="1">
<model value="ProcessingElement"/>
<clockDelay value="1"/>
</nodeType>
</nodeTypes>
<nodes>
<node id="0">
<xPos value="0.000"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="0"/>
<layerType value="0"/>
</node>
<node id="1">
<xPos value="0.000"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="1"/>
<layerType value="0"/>
</node>
<node id="2">
<xPos value="0.000"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="2"/>
<layerType value="0"/>
</node>
<node id="3">
<xPos value="0.000"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="3"/>
<layerType value="0"/>
</node>
<node id="4">
<xPos value="0.333"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="4"/>
<layerType value="0"/>
</node>
<node id="5">
<xPos value="0.333"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="5"/>
<layerType value="0"/>
</node>
<node id="6">
<xPos value="0.333"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="6"/>
<layerType value="0"/>
</node>
<node id="7">
<xPos value="0.333"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="7"/>
<layerType value="0"/>
</node>
<node id="8">
<xPos value="0.667"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="8"/>
<layerType value="0"/>
</node>
<node id="9">
<xPos value="0.667"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="9"/>
<layerType value="0"/>
</node>
<node id="10">
<xPos value="0.667"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="10"/>
<layerType value="0"/>
</node>
<node id="11">
<xPos value="0.667"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="11"/>
<layerType value="0"/>
</node>
<node id="12">
<xPos value="1.000"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="12"/>
<layerType value="0"/>
</node>
<node id="13">
<xPos value="1.000"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="13"/>
<layerType value="0"/>
</node>
<node id="14">
<xPos value="1.000"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="14"/>
<layerType value="0"/>
</node>
<node id="15">
<xPos value="1.000"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="0"/>
<idType value="15"/>
<layerType value="0"/>
</node>
<node id="16">
<xPos value="0.000"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="0"/>
<layerType value="0"/>
</node>
<node id="17">
<xPos value="0.000"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="1"/>
<layerType value="0"/>
</node>
<node id="18">
<xPos value="0.000"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="2"/>
<layerType value="0"/>
</node>
<node id="19">
<xPos value="0.000"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="3"/>
<layerType value="0"/>
</node>
<node id="20">
<xPos value="0.333"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="4"/>
<layerType value="0"/>
</node>
<node id="21">
<xPos value="0.333"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="5"/>
<layerType value="0"/>
</node>
<node id="22">
<xPos value="0.333"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="6"/>
<layerType value="0"/>
</node>
<node id="23">
<xPos value="0.333"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="7"/>
<layerType value="0"/>
</node>
<node id="24">
<xPos value="0.667"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="8"/>
<layerType value="0"/>
</node>
<node id="25">
<xPos value="0.667"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="9"/>
<layerType value="0"/>
</node>
<node id="26">
<xPos value="0.667"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="10"/>
<layerType value="0"/>
</node>
<node id="27">
<xPos value="0.667"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="11"/>
<layerType value="0"/>
</node>
<node id="28">
<xPos value="1.000"/>
<yPos value="0.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="12"/>
<layerType value="0"/>
</node>
<node id="29">
<xPos value="1.000"/>
<yPos value="0.333"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="13"/>
<layerType value="0"/>
</node>
<node id="30">
<xPos value="1.000"/>
<yPos value="0.667"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="14"/>
<layerType value="0"/>
</node>
<node id="31">
<xPos value="1.000"/>
<yPos value="1.000"/>
<zPos value="0.000"/>
<nodeType value="1"/>
<idType value="15"/>
<layerType value="0"/>
</node>
</nodes>
<connections>
<con id="0">
<interface value="0"/>
<ports>
<port id ="0">
<node value="0"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="16"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="1">
<interface value="0"/>
<ports>
<port id ="0">
<node value="0"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="1"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="2">
<interface value="0"/>
<ports>
<port id ="0">
<node value="0"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="4"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="3">
<interface value="0"/>
<ports>
<port id ="0">
<node value="1"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="17"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="4">
<interface value="0"/>
<ports>
<port id ="0">
<node value="1"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="2"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="5">
<interface value="0"/>
<ports>
<port id ="0">
<node value="1"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="5"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="6">
<interface value="0"/>
<ports>
<port id ="0">
<node value="2"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="18"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="7">
<interface value="0"/>
<ports>
<port id ="0">
<node value="2"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="3"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="8">
<interface value="0"/>
<ports>
<port id ="0">
<node value="2"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="6"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="9">
<interface value="0"/>
<ports>
<port id ="0">
<node value="3"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="19"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="10">
<interface value="0"/>
<ports>
<port id ="0">
<node value="3"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="7"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="11">
<interface value="0"/>
<ports>
<port id ="0">
<node value="4"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="20"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="12">
<interface value="0"/>
<ports>
<port id ="0">
<node value="4"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="5"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="13">
<interface value="0"/>
<ports>
<port id ="0">
<node value="4"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="8"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="14">
<interface value="0"/>
<ports>
<port id ="0">
<node value="5"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="21"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="15">
<interface value="0"/>
<ports>
<port id ="0">
<node value="5"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="6"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="16">
<interface value="0"/>
<ports>
<port id ="0">
<node value="5"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="9"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="17">
<interface value="0"/>
<ports>
<port id ="0">
<node value="6"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="22"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="18">
<interface value="0"/>
<ports>
<port id ="0">
<node value="6"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="7"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="19">
<interface value="0"/>
<ports>
<port id ="0">
<node value="6"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="10"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="20">
<interface value="0"/>
<ports>
<port id ="0">
<node value="7"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="23"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="21">
<interface value="0"/>
<ports>
<port id ="0">
<node value="7"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="11"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="22">
<interface value="0"/>
<ports>
<port id ="0">
<node value="8"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="24"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="23">
<interface value="0"/>
<ports>
<port id ="0">
<node value="8"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="9"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="24">
<interface value="0"/>
<ports>
<port id ="0">
<node value="8"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="12"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="25">
<interface value="0"/>
<ports>
<port id ="0">
<node value="9"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="25"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="26">
<interface value="0"/>
<ports>
<port id ="0">
<node value="9"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="10"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="27">
<interface value="0"/>
<ports>
<port id ="0">
<node value="9"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="13"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="28">
<interface value="0"/>
<ports>
<port id ="0">
<node value="10"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="26"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="29">
<interface value="0"/>
<ports>
<port id ="0">
<node value="10"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="11"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="30">
<interface value="0"/>
<ports>
<port id ="0">
<node value="10"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="14"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="31">
<interface value="0"/>
<ports>
<port id ="0">
<node value="11"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="27"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="32">
<interface value="0"/>
<ports>
<port id ="0">
<node value="11"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="15"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="33">
<interface value="0"/>
<ports>
<port id ="0">
<node value="12"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="28"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="34">
<interface value="0"/>
<ports>
<port id ="0">
<node value="12"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="13"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="35">
<interface value="0"/>
<ports>
<port id ="0">
<node value="13"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="29"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="36">
<interface value="0"/>
<ports>
<port id ="0">
<node value="13"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="14"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="37">
<interface value="0"/>
<ports>
<port id ="0">
<node value="14"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="30"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="38">
<interface value="0"/>
<ports>
<port id ="0">
<node value="14"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="15"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
<con id="39">
<interface value="0"/>
<ports>
<port id ="0">
<node value="15"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
<port id ="1">
<node value="31"/>
<bufferDepth value="8"/>
<vcCount value="8"/>
</port>
</ports>
</con>
</connections>
</network-on-chip>

View file

@ -313,7 +313,7 @@ void NetworkInterfaceTlm::init_peq_cb(tlm_gp& trans, const tlm::tlm_phase& phase
log_info("Init PEQ callback start for packet "+to_string(p_id)); log_info("Init PEQ callback start for packet "+to_string(p_id));
log_info("Phase "+string(phase.get_name())+" received"); log_info("Phase "+string(phase.get_name())+" received");
if (phase == tlm::END_REQ) { if (phase == tlm::END_REQ) {
update_credits(trans, 1); //update_credits(trans, 1);
curr_req = 0; curr_req = 0;
if(p_id == -1){ if(p_id == -1){
// Config msg transaction ended, so packet can be scheduled for deletion // Config msg transaction ended, so packet can be scheduled for deletion
@ -507,7 +507,7 @@ void NetworkInterfaceTlm::send_response(tlm_gp& trans){
tlm::tlm_sync_enum status = (*target[0])->nb_transport_bw( tlm::tlm_sync_enum status = (*target[0])->nb_transport_bw(
trans, bw_phase, delay); trans, bw_phase, delay);
update_credits(trans, -1); //update_credits(trans, -1);
if (status == tlm::TLM_UPDATED){ if (status == tlm::TLM_UPDATED){
target_peq.notify(trans, bw_phase, delay); target_peq.notify(trans, bw_phase, delay);

View file

@ -55,7 +55,6 @@ void NetworkManager::createTrafficPool() {
get_max_pos(max_pos); get_max_pos(max_pos);
// divided by num of layers (assuming equal number of nodes in each layer) // divided by num of layers (assuming equal number of nodes in each layer)
unsigned long numOfPEs = globalResources.nodes.size() / (max_pos[2]+1); unsigned long numOfPEs = globalResources.nodes.size() / (max_pos[2]+1);
#ifndef ENABLE_NETRACE
if (globalResources.benchmark == "task") { if (globalResources.benchmark == "task") {
tp = std::make_unique<TaskPoolCS>(); tp = std::make_unique<TaskPoolCS>();
} else if (globalResources.benchmark == "synthetic") { } else if (globalResources.benchmark == "synthetic") {
@ -63,7 +62,6 @@ void NetworkManager::createTrafficPool() {
} else { } else {
FATAL("Please specify correct benchmark type"); FATAL("Please specify correct benchmark type");
} }
#endif
tp->processingElements.resize(numOfPEs); tp->processingElements.resize(numOfPEs);
} }

View file

@ -54,10 +54,10 @@ void TlmRouter::initialize(){
valid_links[link] = false; valid_links[link] = false;
resp_in_progress[link] = false; resp_in_progress[link] = false;
nxt_resp_pend[link] = 0; //nxt_resp_pend[link] = 0;
nxt_send_data_pend[link] = 0; //nxt_send_data_pend[link] = 0;
curr_req[link] = 0; curr_req[link] = 0;
send_data_in_prog_dest[link] = Direction::invalid; //send_data_in_prog_dest[link] = Direction::invalid;
credit_counter[link] = NUM_CREDITS; credit_counter[link] = NUM_CREDITS;
} }
} }
@ -98,8 +98,8 @@ void TlmRouter::send_begin_req(int link, tlm_gp& trans, int dest_link){
*new_trans, phase, delay); *new_trans, phase, delay);
curr_req[dest_link] = new_trans; curr_req[dest_link] = new_trans;
credit_counter[dest_link]--; credit_counter[dest_link]--;
log_info(link, trans, log_info(link, trans, "credits value updated on link " + DIR::toString(dest_link) +
"credits value updated: " + to_string(credit_counter[dest_link])); ": " + to_string(credit_counter[dest_link]));
// react to result // react to result
if(status == TLM_UPDATED) { if(status == TLM_UPDATED) {
init_peq.notify(*new_trans, phase, delay); init_peq.notify(*new_trans, phase, delay);
@ -109,8 +109,8 @@ void TlmRouter::send_begin_req(int link, tlm_gp& trans, int dest_link){
curr_req[dest_link] = 0; curr_req[dest_link] = 0;
check_transaction(link, *new_trans); check_transaction(link, *new_trans);
credit_counter[dest_link]++; credit_counter[dest_link]++;
log_info(link, trans, log_info(link, trans, "credits value updated on link " + DIR::toString(dest_link) +
"credits value updated: " + to_string(credit_counter[dest_link])); ": " + to_string(credit_counter[dest_link]));
new_trans->release(); new_trans->release();
} }
} }
@ -121,6 +121,12 @@ bool TlmRouter::send_data(int link, int dest_link, tlm_gp& trans){
// check credits or that previous message is complete // check credits or that previous message is complete
if (credit_counter[dest_link] > 0){ if (credit_counter[dest_link] > 0){
send_begin_req(link, trans, dest_link); send_begin_req(link, trans, dest_link);
// send response or add it to queue
if(resp_in_progress[link]) {
nxt_resp_pend[link].push(&trans);
}
else{ send_begin_response(link, trans); }
return true; return true;
} }
else { else {
@ -146,7 +152,6 @@ void TlmRouter::check_transaction(int link, tlm_gp& trans) {
stream << hex << adr << " check, cmd=" << (cmd ? 'W' : 'R') stream << hex << adr << " check, cmd=" << (cmd ? 'W' : 'R')
<< ", data=" << hex << *ptr; << ", data=" << hex << *ptr;
log_info(link,trans, stream.str()); log_info(link,trans, stream.str());
// Allow the memory manager to free the transaction object
trans.release(); trans.release();
} }
@ -177,12 +182,12 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){
int link = get_link_from_extension(trans); int link = get_link_from_extension(trans);
log_info(link,trans, "Initiator PEQ callback start"); log_info(link,trans, "Initiator PEQ callback start");
log_info(link,trans, "Phase "+string(phase.get_name())+" received"); log_info(link,trans, "Phase "+string(phase.get_name())+" received");
if (phase == END_REQ || (&trans == curr_req[link] && if (phase == END_REQ || (&trans == curr_req[link] && phase == BEGIN_RESP)){
phase == BEGIN_RESP)){
curr_req[link] = 0; curr_req[link] = 0;
credit_counter[link]++; /*credit_counter[link]++;
log_info(link, trans, log_info(link, trans, "credits value updated on link " + DIR::toString(link) +
"credits value updated: " + to_string(credit_counter[link])); ": " + to_string(credit_counter[link]));*/
log_info(link, trans, "Issuing next request");
start_pend_req(link, trans); start_pend_req(link, trans);
} }
else if (phase == BEGIN_REQ || phase == END_RESP){ else if (phase == BEGIN_REQ || phase == END_RESP){
@ -190,7 +195,9 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){
} }
if (phase == BEGIN_RESP) { if (phase == BEGIN_RESP) {
check_transaction(link, trans); credit_counter[link]++;
log_info(link, trans, "credits value updated on link " + DIR::toString(link) +
": " + to_string(credit_counter[link]));
send_end_response(link, trans); send_end_response(link, trans);
} }
} }
@ -198,22 +205,22 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){
void TlmRouter::start_pend_req(int rel_link, tlm_gp& trans){ void TlmRouter::start_pend_req(int rel_link, tlm_gp& trans){
// find pending link // find pending link
Direction pending_link = Direction::invalid;
for(uint8_t dir=0; dir<Direction::num_dirs; dir++){ for(uint8_t dir=0; dir<Direction::num_dirs; dir++){
if( !nxt_send_data_pend[dir].empty() ){
// check pending link valid and send data // check pending link valid and send data
if(send_data_in_prog_dest[dir] == rel_link){ Direction rel_dest = send_data_in_prog_dest[dir].front();
pending_link = Direction(dir); if(rel_dest == rel_link){
bool data_sent = send_data(pending_link, rel_link, tlm_gp* nxt_trans = nxt_send_data_pend[dir].front();
*nxt_send_data_pend[pending_link]); bool data_sent = send_data(dir, rel_link, *nxt_trans);
if (!data_sent){ if (!data_sent){
log_error(pending_link, trans, log_error(dir, trans, "Credit counter was freed, but data can't be sent");
"Credit counter was freed, but data can't be sent");
} }
nxt_send_data_pend[pending_link] = 0; send_data_in_prog_dest[dir].pop();
send_data_in_prog_dest[dir] = Direction::invalid; nxt_send_data_pend[dir].pop();
break; break;
} }
} }
}
} }
void TlmRouter::send_end_response(int link, tlm_gp& trans){ void TlmRouter::send_end_response(int link, tlm_gp& trans){
@ -257,12 +264,13 @@ void TlmRouter::target_peq_cb(tlm_gp& trans, const tlm_phase& phase){
log_warn(link,trans, log_warn(link,trans,
"Illegal transaction phase END_RESP received by target"); "Illegal transaction phase END_RESP received by target");
} }
trans.release(); check_transaction(link, trans);
// Target itself is now clear to issue the next BEGIN_RESP // Target itself is now clear to issue the next BEGIN_RESP
resp_in_progress[link] = false; resp_in_progress[link] = false;
if (nxt_resp_pend[link]){ if ( !nxt_resp_pend[link].empty() ){
send_begin_response(link, *nxt_resp_pend[link]); log_info(link, trans, "Issuing next response");
nxt_resp_pend[link] = 0; send_begin_response(link, *nxt_resp_pend[link].front());
nxt_resp_pend[link].pop();
} }
break; break;
case END_REQ: case END_REQ:
@ -332,23 +340,9 @@ void TlmRouter::switching(int link, tlm_gp& trans){
} }
// validate pending data sent // validate pending data sent
if (!data_sent) { if (!data_sent) {
if(nxt_send_data_pend[link]) { nxt_send_data_pend[link].push(&trans);
log_error(link,trans, send_data_in_prog_dest[link].push(destination);
"Attempt to have two pending data send in same destination");
} }
nxt_send_data_pend[link] = &trans;
send_data_in_prog_dest[link] = destination;
}
// validate pending response
if(resp_in_progress[link]) {
//TODO: Make sure that there is always only one transaction per link
if(nxt_resp_pend[link]){
log_error(link,trans,
"Attempt to have two pending responses in target");
}
nxt_resp_pend[link] = &trans;
}
else{ send_begin_response(link, trans); }
} }

View file

@ -27,6 +27,7 @@
#include <systemc> #include <systemc>
#include <string> #include <string>
#include <queue>
#include "tlm.h" #include "tlm.h"
#include "tlm_utils/simple_initiator_socket.h" #include "tlm_utils/simple_initiator_socket.h"
@ -60,12 +61,12 @@ class TlmRouter : public sc_module{
peq_with_cb_and_phase<TlmRouter> init_peq; peq_with_cb_and_phase<TlmRouter> init_peq;
peq_with_cb_and_phase<TlmRouter> target_peq; peq_with_cb_and_phase<TlmRouter> target_peq;
tlm_gp* curr_req[NUM_LINKS]; tlm_gp* curr_req[NUM_LINKS];
tlm_gp* nxt_resp_pend[NUM_LINKS];
tlm_gp* nxt_send_data_pend[NUM_LINKS];
MemoryManager m_mm; MemoryManager m_mm;
bool resp_in_progress[NUM_LINKS];
int credit_counter[NUM_LINKS]; int credit_counter[NUM_LINKS];
Dir send_data_in_prog_dest[NUM_LINKS]; bool resp_in_progress[NUM_LINKS];
queue<tlm_gp*> nxt_resp_pend[NUM_LINKS];
queue<tlm_gp*> nxt_send_data_pend[NUM_LINKS];
queue<Dir> send_data_in_prog_dest[NUM_LINKS];
// attributes // attributes
string router_name; string router_name;

View file

@ -35,7 +35,7 @@ void TlmRouterCS::initialize(){
TlmRouter::initialize(); TlmRouter::initialize();
cout<<"Inherited function called"; cout<<"Inherited function called";
for(int link=0; link<NUM_LINKS; link++){ for(int link=0; link<NUM_LINKS; link++){
credit_counter[link] = NUM_CREDITS_CS; //credit_counter[link] = NUM_CREDITS_CS;
auto_rout_map[link] = Direction::invalid; auto_rout_map[link] = Direction::invalid;
} }
} }
@ -63,17 +63,17 @@ void TlmRouterCS::send_begin_req(int link, tlm_gp& trans, int dest_link){
status = (*init_socket[dest_link])->nb_transport_fw( status = (*init_socket[dest_link])->nb_transport_fw(
*new_trans, phase, delay); *new_trans, phase, delay);
curr_req[dest_link] = new_trans; curr_req[dest_link] = new_trans;
credit_counter[dest_link]--; //credit_counter[dest_link]--;
log_info(link, trans, /*log_info(link, trans,
"credits value updated: " + to_string(credit_counter[link])); "credits value updated: " + to_string(credit_counter[link]));*/
// react to result // react to result
if(status == TLM_COMPLETED) { if(status == TLM_COMPLETED) {
log_error(link, trans, "Request completed prematurely"); log_error(link, trans, "Request completed prematurely");
curr_req[dest_link] = 0; curr_req[dest_link] = 0;
check_transaction(link, *new_trans); check_transaction(link, *new_trans);
credit_counter[dest_link]++; //credit_counter[dest_link]++;
log_info(link, trans, /*log_info(link, trans,
"credits value updated: " + to_string(credit_counter[dest_link])); "credits value updated: " + to_string(credit_counter[dest_link]));*/
new_trans->release(); new_trans->release();
} }
} }

View file

@ -34,10 +34,10 @@ using namespace sc_dt;
// router paremters // router paremters
#define NUM_CREDITS 7 #define NUM_CREDITS 7
// router delays // router delays
#define REQ_INIT_DELAY 20 #define REQ_INIT_DELAY 10
#define REQ_END_DELAY 20 #define REQ_END_DELAY 10
#define INTERN_PROC_DELAY 20 #define INTERN_PROC_DELAY 100
#define RESP_END_DELAY 20 #define RESP_END_DELAY 10
#define UNITS_DELAY SC_NS #define UNITS_DELAY SC_NS
// types // types

View file

@ -51,12 +51,15 @@ void get_max_pos(uint8_t max_pos[3]){
vector<float> gr_pos[3]; vector<float> gr_pos[3];
get_pos_distances(dists, gr_pos); get_pos_distances(dists, gr_pos);
max_pos[0] = 1+round(max_element(gr_pos[0].begin(), max_pos[0] = dists[0] != 0 ?
gr_pos[0].end())[0]/dists[0]); 1+round(max_element(gr_pos[0].begin(), gr_pos[0].end())[0]/dists[0])
max_pos[1] = 1+round(max_element(gr_pos[1].begin(), : 1;
gr_pos[1].end())[0]/dists[1]); max_pos[1] = dists[1] != 0 ?
max_pos[2] = 1+round(max_element(gr_pos[2].begin(), 1+round(max_element(gr_pos[1].begin(),gr_pos[1].end())[0]/dists[1])
gr_pos[2].end())[0]/dists[2]); : 1;
max_pos[2] = dists[2] != 0 ?
1+round(max_element(gr_pos[2].begin(), gr_pos[2].end())[0]/dists[2])
: 1;
} }
string get_type_name(dataTypeID_t id){ string get_type_name(dataTypeID_t id){