Compare commits

..

No commits in common. "f479ba8f2d63b62cc366dbbd01dc1982e4a29c76" and "f834269c208efd1c7f5c12d3c0094ab0085f7b75" have entirely different histories.

46 changed files with 7281 additions and 32521 deletions

4
.gitignore vendored
View file

@ -1,7 +1,3 @@
build
out
sim
results
*/*/__pycache__/*
scripts/*/*.txt
*/*/*.png

View file

@ -50,4 +50,6 @@ This project is licensed under the MIT License - see the LICENSE.md file for det
* [Ratatoskr NoC simulator](https://github.com/jmjos/ratatoskr)
# TODO: Add description of project structure. Improve description section, talk about what the output is
# TODO: Run everything again
# TODO: Differentiate debug logs to reduce size of logs (in PE, router and NI) DONE (needs testing)
# TODO: Add system's clock timestamp to calculate how much time it takes to run DONE (needs testing)
# TODO: Test all one more time

View file

@ -93,7 +93,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="7"/>
<task value="6"/>
</destination>
</destinations>
</possibility>
@ -120,7 +120,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="7"/>
<task value="6"/>
</destination>
</destinations>
</possibility>
@ -147,7 +147,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="7"/>
<task value="6"/>
</destination>
</destinations>
</possibility>
@ -174,7 +174,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="7"/>
<task value="6"/>
</destination>
</destinations>
</possibility>
@ -201,7 +201,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="7"/>
<task value="6"/>
</destination>
</destinations>
</possibility>
@ -214,9 +214,9 @@
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="2"/>
<type value="0"/>
<source value="0"/>
<count max="1" min="1"/>
<count max="5" min="5"/>
</requirement>
</requires>
<generates>
@ -227,7 +227,35 @@
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<type value="1"/>
<task value="7"/>
</destination>
<destination id="1">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="7"/>
</destination>
<destination id="2">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="7"/>
</destination>
<destination id="3">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="7"/>
</destination>
<destination id="4">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="2" max="2"/>
<type value="1"/>
<task value="7"/>
</destination>
</destinations>
@ -241,53 +269,11 @@
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="0"/>
<source value="6"/>
<type value="1"/>
<source value="4"/>
<count max="6" min="6"/>
</requirement>
</requires>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="9"/>
</destination>
<destination id="1">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="9"/>
</destination>
<destination id="2">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="9"/>
</destination>
<destination id="3">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="1"/>
<task value="9"/>
</destination>
<destination id="4">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="2" max="2"/>
<type value="1"/>
<task value="9"/>
</destination>
</destinations>
</possibility>
</generates>
</task>
<task id="8">
@ -320,11 +306,6 @@
<source value="0"/>
<count max="4" min="4"/>
</requirement>
<requirement id="1">
<type value="0"/>
<source value="0"/>
<count max="5" min="5"/>
</requirement>
</requires>
</task>

View file

@ -5,15 +5,15 @@
<outputToFile value="true">report</outputToFile>
</general>
<noc>
<nocFile>config/efficienet/net_conf.xml</nocFile>
<nocFile>config/efficienet/net.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/efficienet/data_Flits_conf.xml</dataFile>
<mapFile>config/efficienet/map_conf.xml</mapFile>
<dataFile>config/efficienet/data_Flits.xml</dataFile>
<mapFile>config/efficienet/map.xml</mapFile>
</application>
<verbose>
<processingElements>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,561 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
<bind>
<task value="20"/>
<node value="10"/>
</bind>
<bind>
<task value="21"/>
<node value="10"/>
</bind>
<bind>
<task value="22"/>
<node value="11"/>
</bind>
<bind>
<task value="23"/>
<node value="11"/>
</bind>
<bind>
<task value="24"/>
<node value="12"/>
</bind>
<bind>
<task value="25"/>
<node value="12"/>
</bind>
<bind>
<task value="26"/>
<node value="13"/>
</bind>
<bind>
<task value="27"/>
<node value="13"/>
</bind>
<bind>
<task value="28"/>
<node value="14"/>
</bind>
<bind>
<task value="29"/>
<node value="14"/>
</bind>
<bind>
<task value="30"/>
<node value="15"/>
</bind>
<bind>
<task value="31"/>
<node value="15"/>
</bind>
<bind>
<task value="32"/>
<node value="0"/>
</bind>
<bind>
<task value="33"/>
<node value="0"/>
</bind>
<bind>
<task value="34"/>
<node value="1"/>
</bind>
<bind>
<task value="35"/>
<node value="1"/>
</bind>
<bind>
<task value="36"/>
<node value="2"/>
</bind>
<bind>
<task value="37"/>
<node value="2"/>
</bind>
<bind>
<task value="38"/>
<node value="3"/>
</bind>
<bind>
<task value="39"/>
<node value="3"/>
</bind>
<bind>
<task value="40"/>
<node value="4"/>
</bind>
<bind>
<task value="41"/>
<node value="4"/>
</bind>
<bind>
<task value="42"/>
<node value="5"/>
</bind>
<bind>
<task value="43"/>
<node value="5"/>
</bind>
<bind>
<task value="44"/>
<node value="6"/>
</bind>
<bind>
<task value="45"/>
<node value="6"/>
</bind>
<bind>
<task value="46"/>
<node value="7"/>
</bind>
<bind>
<task value="47"/>
<node value="7"/>
</bind>
<bind>
<task value="48"/>
<node value="8"/>
</bind>
<bind>
<task value="49"/>
<node value="8"/>
</bind>
<bind>
<task value="50"/>
<node value="9"/>
</bind>
<bind>
<task value="51"/>
<node value="9"/>
</bind>
<bind>
<task value="52"/>
<node value="10"/>
</bind>
<bind>
<task value="53"/>
<node value="10"/>
</bind>
<bind>
<task value="54"/>
<node value="11"/>
</bind>
<bind>
<task value="55"/>
<node value="11"/>
</bind>
<bind>
<task value="56"/>
<node value="12"/>
</bind>
<bind>
<task value="57"/>
<node value="12"/>
</bind>
<bind>
<task value="58"/>
<node value="13"/>
</bind>
<bind>
<task value="59"/>
<node value="13"/>
</bind>
<bind>
<task value="60"/>
<node value="14"/>
</bind>
<bind>
<task value="61"/>
<node value="14"/>
</bind>
<bind>
<task value="62"/>
<node value="15"/>
</bind>
<bind>
<task value="63"/>
<node value="15"/>
</bind>
<bind>
<task value="64"/>
<node value="0"/>
</bind>
<bind>
<task value="65"/>
<node value="0"/>
</bind>
<bind>
<task value="66"/>
<node value="1"/>
</bind>
<bind>
<task value="67"/>
<node value="1"/>
</bind>
<bind>
<task value="68"/>
<node value="2"/>
</bind>
<bind>
<task value="69"/>
<node value="2"/>
</bind>
<bind>
<task value="70"/>
<node value="3"/>
</bind>
<bind>
<task value="71"/>
<node value="3"/>
</bind>
<bind>
<task value="72"/>
<node value="4"/>
</bind>
<bind>
<task value="73"/>
<node value="4"/>
</bind>
<bind>
<task value="74"/>
<node value="5"/>
</bind>
<bind>
<task value="75"/>
<node value="5"/>
</bind>
<bind>
<task value="76"/>
<node value="6"/>
</bind>
<bind>
<task value="77"/>
<node value="6"/>
</bind>
<bind>
<task value="78"/>
<node value="7"/>
</bind>
<bind>
<task value="79"/>
<node value="7"/>
</bind>
<bind>
<task value="80"/>
<node value="8"/>
</bind>
<bind>
<task value="81"/>
<node value="8"/>
</bind>
<bind>
<task value="82"/>
<node value="9"/>
</bind>
<bind>
<task value="83"/>
<node value="9"/>
</bind>
<bind>
<task value="84"/>
<node value="0"/>
</bind>
<bind>
<task value="85"/>
<node value="0"/>
</bind>
<bind>
<task value="86"/>
<node value="1"/>
</bind>
<bind>
<task value="87"/>
<node value="1"/>
</bind>
<bind>
<task value="88"/>
<node value="1"/>
</bind>
<bind>
<task value="89"/>
<node value="2"/>
</bind>
<bind>
<task value="90"/>
<node value="2"/>
</bind>
<bind>
<task value="91"/>
<node value="2"/>
</bind>
<bind>
<task value="92"/>
<node value="3"/>
</bind>
<bind>
<task value="93"/>
<node value="3"/>
</bind>
<bind>
<task value="94"/>
<node value="3"/>
</bind>
<bind>
<task value="95"/>
<node value="7"/>
</bind>
<bind>
<task value="96"/>
<node value="6"/>
</bind>
<bind>
<task value="97"/>
<node value="5"/>
</bind>
<bind>
<task value="98"/>
<node value="4"/>
</bind>
<bind>
<task value="99"/>
<node value="4"/>
</bind>
<bind>
<task value="100"/>
<node value="4"/>
</bind>
<bind>
<task value="101"/>
<node value="5"/>
</bind>
<bind>
<task value="102"/>
<node value="5"/>
</bind>
<bind>
<task value="103"/>
<node value="5"/>
</bind>
<bind>
<task value="104"/>
<node value="6"/>
</bind>
<bind>
<task value="105"/>
<node value="6"/>
</bind>
<bind>
<task value="106"/>
<node value="6"/>
</bind>
<bind>
<task value="107"/>
<node value="7"/>
</bind>
<bind>
<task value="108"/>
<node value="7"/>
</bind>
<bind>
<task value="109"/>
<node value="7"/>
</bind>
<bind>
<task value="110"/>
<node value="11"/>
</bind>
<bind>
<task value="111"/>
<node value="10"/>
</bind>
<bind>
<task value="112"/>
<node value="9"/>
</bind>
<bind>
<task value="113"/>
<node value="8"/>
</bind>
<bind>
<task value="114"/>
<node value="8"/>
</bind>
<bind>
<task value="115"/>
<node value="8"/>
</bind>
<bind>
<task value="116"/>
<node value="9"/>
</bind>
<bind>
<task value="117"/>
<node value="9"/>
</bind>
<bind>
<task value="118"/>
<node value="9"/>
</bind>
<bind>
<task value="119"/>
<node value="10"/>
</bind>
<bind>
<task value="120"/>
<node value="10"/>
</bind>
<bind>
<task value="121"/>
<node value="10"/>
</bind>
<bind>
<task value="122"/>
<node value="11"/>
</bind>
<bind>
<task value="123"/>
<node value="11"/>
</bind>
<bind>
<task value="124"/>
<node value="11"/>
</bind>
<bind>
<task value="125"/>
<node value="15"/>
</bind>
<bind>
<task value="126"/>
<node value="14"/>
</bind>
<bind>
<task value="127"/>
<node value="13"/>
</bind>
<bind>
<task value="128"/>
<node value="12"/>
</bind>
<bind>
<task value="129"/>
<node value="12"/>
</bind>
<bind>
<task value="130"/>
<node value="12"/>
</bind>
<bind>
<task value="131"/>
<node value="13"/>
</bind>
<bind>
<task value="132"/>
<node value="13"/>
</bind>
<bind>
<task value="133"/>
<node value="13"/>
</bind>
<bind>
<task value="134"/>
<node value="14"/>
</bind>
<bind>
<task value="135"/>
<node value="14"/>
</bind>
<bind>
<task value="136"/>
<node value="14"/>
</bind>
<bind>
<task value="137"/>
<node value="15"/>
</bind>
<bind>
<task value="138"/>
<node value="0"/>
</bind>
</map>

View file

@ -1,599 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
<bind>
<task value="20"/>
<node value="10"/>
</bind>
<bind>
<task value="21"/>
<node value="10"/>
</bind>
<bind>
<task value="22"/>
<node value="11"/>
</bind>
<bind>
<task value="23"/>
<node value="11"/>
</bind>
<bind>
<task value="24"/>
<node value="12"/>
</bind>
<bind>
<task value="25"/>
<node value="12"/>
</bind>
<bind>
<task value="26"/>
<node value="13"/>
</bind>
<bind>
<task value="27"/>
<node value="13"/>
</bind>
<bind>
<task value="28"/>
<node value="14"/>
</bind>
<bind>
<task value="29"/>
<node value="14"/>
</bind>
<bind>
<task value="30"/>
<node value="15"/>
</bind>
<bind>
<task value="31"/>
<node value="15"/>
</bind>
<bind>
<task value="32"/>
<node value="0"/>
</bind>
<bind>
<task value="33"/>
<node value="0"/>
</bind>
<bind>
<task value="34"/>
<node value="1"/>
</bind>
<bind>
<task value="35"/>
<node value="1"/>
</bind>
<bind>
<task value="36"/>
<node value="2"/>
</bind>
<bind>
<task value="37"/>
<node value="2"/>
</bind>
<bind>
<task value="38"/>
<node value="3"/>
</bind>
<bind>
<task value="39"/>
<node value="3"/>
</bind>
<bind>
<task value="40"/>
<node value="4"/>
</bind>
<bind>
<task value="41"/>
<node value="4"/>
</bind>
<bind>
<task value="42"/>
<node value="5"/>
</bind>
<bind>
<task value="43"/>
<node value="5"/>
</bind>
<bind>
<task value="44"/>
<node value="6"/>
</bind>
<bind>
<task value="45"/>
<node value="6"/>
</bind>
<bind>
<task value="46"/>
<node value="7"/>
</bind>
<bind>
<task value="47"/>
<node value="7"/>
</bind>
<bind>
<task value="48"/>
<node value="8"/>
</bind>
<bind>
<task value="49"/>
<node value="8"/>
</bind>
<bind>
<task value="50"/>
<node value="9"/>
</bind>
<bind>
<task value="51"/>
<node value="9"/>
</bind>
<bind>
<task value="52"/>
<node value="10"/>
</bind>
<bind>
<task value="53"/>
<node value="10"/>
</bind>
<bind>
<task value="54"/>
<node value="11"/>
</bind>
<bind>
<task value="55"/>
<node value="11"/>
</bind>
<bind>
<task value="56"/>
<node value="12"/>
</bind>
<bind>
<task value="57"/>
<node value="12"/>
</bind>
<bind>
<task value="58"/>
<node value="13"/>
</bind>
<bind>
<task value="59"/>
<node value="13"/>
</bind>
<bind>
<task value="60"/>
<node value="14"/>
</bind>
<bind>
<task value="61"/>
<node value="14"/>
</bind>
<bind>
<task value="62"/>
<node value="15"/>
</bind>
<bind>
<task value="63"/>
<node value="15"/>
</bind>
<bind>
<task value="64"/>
<node value="0"/>
</bind>
<bind>
<task value="65"/>
<node value="0"/>
</bind>
<bind>
<task value="66"/>
<node value="1"/>
</bind>
<bind>
<task value="67"/>
<node value="1"/>
</bind>
<bind>
<task value="68"/>
<node value="2"/>
</bind>
<bind>
<task value="69"/>
<node value="2"/>
</bind>
<bind>
<task value="70"/>
<node value="3"/>
</bind>
<bind>
<task value="71"/>
<node value="3"/>
</bind>
<bind>
<task value="72"/>
<node value="4"/>
</bind>
<bind>
<task value="73"/>
<node value="4"/>
</bind>
<bind>
<task value="74"/>
<node value="5"/>
</bind>
<bind>
<task value="75"/>
<node value="5"/>
</bind>
<bind>
<task value="76"/>
<node value="6"/>
</bind>
<bind>
<task value="77"/>
<node value="6"/>
</bind>
<bind>
<task value="78"/>
<node value="7"/>
</bind>
<bind>
<task value="79"/>
<node value="7"/>
</bind>
<bind>
<task value="80"/>
<node value="8"/>
</bind>
<bind>
<task value="81"/>
<node value="8"/>
</bind>
<bind>
<task value="82"/>
<node value="9"/>
</bind>
<bind>
<task value="83"/>
<node value="9"/>
</bind>
<bind>
<task value="84"/>
<node value="0"/>
</bind>
<bind>
<task value="85"/>
<node value="0"/>
</bind>
<bind>
<task value="86"/>
<node value="4"/>
</bind>
<bind>
<task value="87"/>
<node value="1"/>
</bind>
<bind>
<task value="88"/>
<node value="1"/>
</bind>
<bind>
<task value="89"/>
<node value="5"/>
</bind>
<bind>
<task value="90"/>
<node value="2"/>
</bind>
<bind>
<task value="91"/>
<node value="2"/>
</bind>
<bind>
<task value="92"/>
<node value="6"/>
</bind>
<bind>
<task value="93"/>
<node value="3"/>
</bind>
<bind>
<task value="94"/>
<node value="3"/>
</bind>
<bind>
<task value="95"/>
<node value="7"/>
</bind>
<bind>
<task value="96"/>
<node value="6"/>
</bind>
<bind>
<task value="97"/>
<node value="5"/>
</bind>
<bind>
<task value="98"/>
<node value="4"/>
</bind>
<bind>
<task value="99"/>
<node value="4"/>
</bind>
<bind>
<task value="100"/>
<node value="4"/>
</bind>
<bind>
<task value="101"/>
<node value="8"/>
</bind>
<bind>
<task value="102"/>
<node value="5"/>
</bind>
<bind>
<task value="103"/>
<node value="5"/>
</bind>
<bind>
<task value="104"/>
<node value="9"/>
</bind>
<bind>
<task value="105"/>
<node value="6"/>
</bind>
<bind>
<task value="106"/>
<node value="6"/>
</bind>
<bind>
<task value="107"/>
<node value="10"/>
</bind>
<bind>
<task value="108"/>
<node value="7"/>
</bind>
<bind>
<task value="109"/>
<node value="7"/>
</bind>
<bind>
<task value="110"/>
<node value="11"/>
</bind>
<bind>
<task value="111"/>
<node value="10"/>
</bind>
<bind>
<task value="112"/>
<node value="9"/>
</bind>
<bind>
<task value="113"/>
<node value="8"/>
</bind>
<bind>
<task value="114"/>
<node value="8"/>
</bind>
<bind>
<task value="115"/>
<node value="8"/>
</bind>
<bind>
<task value="116"/>
<node value="12"/>
</bind>
<bind>
<task value="117"/>
<node value="9"/>
</bind>
<bind>
<task value="118"/>
<node value="9"/>
</bind>
<bind>
<task value="119"/>
<node value="13"/>
</bind>
<bind>
<task value="120"/>
<node value="10"/>
</bind>
<bind>
<task value="121"/>
<node value="10"/>
</bind>
<bind>
<task value="122"/>
<node value="14"/>
</bind>
<bind>
<task value="123"/>
<node value="11"/>
</bind>
<bind>
<task value="124"/>
<node value="11"/>
</bind>
<bind>
<task value="125"/>
<node value="15"/>
</bind>
<bind>
<task value="126"/>
<node value="14"/>
</bind>
<bind>
<task value="127"/>
<node value="13"/>
</bind>
<bind>
<task value="128"/>
<node value="12"/>
</bind>
<bind>
<task value="129"/>
<node value="12"/>
</bind>
<bind>
<task value="130"/>
<node value="12"/>
</bind>
<bind>
<task value="131"/>
<node value="8"/>
</bind>
<bind>
<task value="132"/>
<node value="4"/>
</bind>
<bind>
<task value="133"/>
<node value="0"/>
</bind>
<bind>
<task value="134"/>
<node value="1"/>
</bind>
<bind>
<task value="135"/>
<node value="13"/>
</bind>
<bind>
<task value="136"/>
<node value="13"/>
</bind>
<bind>
<task value="137"/>
<node value="9"/>
</bind>
<bind>
<task value="138"/>
<node value="5"/>
</bind>
<bind>
<task value="139"/>
<node value="1"/>
</bind>
<bind>
<task value="140"/>
<node value="2"/>
</bind>
<bind>
<task value="141"/>
<node value="14"/>
</bind>
<bind>
<task value="142"/>
<node value="14"/>
</bind>
<bind>
<task value="143"/>
<node value="10"/>
</bind>
<bind>
<task value="144"/>
<node value="6"/>
</bind>
<bind>
<task value="145"/>
<node value="2"/>
</bind>
<bind>
<task value="146"/>
<node value="3"/>
</bind>
<bind>
<task value="147"/>
<node value="0"/>
</bind>
</map>

File diff suppressed because it is too large Load diff

View file

@ -5,15 +5,15 @@
<outputToFile value="true">report</outputToFile>
</general>
<noc>
<nocFile>config/mobilenet/net_conf.xml</nocFile>
<nocFile>config/mobilenet/net.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/mobilenet/data_R1000_conf_non_opt.xml</dataFile>
<mapFile>config/mobilenet/map_conf_non_opt.xml</mapFile>
<dataFile>config/mobilenet/data_R1000.xml</dataFile>
<mapFile>config/mobilenet/map.xml</mapFile>
</application>
<verbose>
<processingElements>

File diff suppressed because it is too large Load diff

View file

@ -1,306 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
<bind>
<task value="20"/>
<node value="0"/>
</bind>
<bind>
<task value="21"/>
<node value="0"/>
</bind>
<bind>
<task value="22"/>
<node value="1"/>
</bind>
<bind>
<task value="23"/>
<node value="1"/>
</bind>
<bind>
<task value="24"/>
<node value="1"/>
</bind>
<bind>
<task value="25"/>
<node value="2"/>
</bind>
<bind>
<task value="26"/>
<node value="2"/>
</bind>
<bind>
<task value="27"/>
<node value="2"/>
</bind>
<bind>
<task value="28"/>
<node value="3"/>
</bind>
<bind>
<task value="29"/>
<node value="3"/>
</bind>
<bind>
<task value="30"/>
<node value="3"/>
</bind>
<bind>
<task value="31"/>
<node value="7"/>
</bind>
<bind>
<task value="32"/>
<node value="6"/>
</bind>
<bind>
<task value="33"/>
<node value="5"/>
</bind>
<bind>
<task value="34"/>
<node value="4"/>
</bind>
<bind>
<task value="35"/>
<node value="4"/>
</bind>
<bind>
<task value="36"/>
<node value="4"/>
</bind>
<bind>
<task value="37"/>
<node value="5"/>
</bind>
<bind>
<task value="38"/>
<node value="5"/>
</bind>
<bind>
<task value="39"/>
<node value="5"/>
</bind>
<bind>
<task value="40"/>
<node value="6"/>
</bind>
<bind>
<task value="41"/>
<node value="6"/>
</bind>
<bind>
<task value="42"/>
<node value="6"/>
</bind>
<bind>
<task value="43"/>
<node value="7"/>
</bind>
<bind>
<task value="44"/>
<node value="7"/>
</bind>
<bind>
<task value="45"/>
<node value="7"/>
</bind>
<bind>
<task value="46"/>
<node value="11"/>
</bind>
<bind>
<task value="47"/>
<node value="10"/>
</bind>
<bind>
<task value="48"/>
<node value="9"/>
</bind>
<bind>
<task value="49"/>
<node value="8"/>
</bind>
<bind>
<task value="50"/>
<node value="8"/>
</bind>
<bind>
<task value="51"/>
<node value="8"/>
</bind>
<bind>
<task value="52"/>
<node value="9"/>
</bind>
<bind>
<task value="53"/>
<node value="9"/>
</bind>
<bind>
<task value="54"/>
<node value="9"/>
</bind>
<bind>
<task value="55"/>
<node value="10"/>
</bind>
<bind>
<task value="56"/>
<node value="10"/>
</bind>
<bind>
<task value="57"/>
<node value="10"/>
</bind>
<bind>
<task value="58"/>
<node value="11"/>
</bind>
<bind>
<task value="59"/>
<node value="11"/>
</bind>
<bind>
<task value="60"/>
<node value="11"/>
</bind>
<bind>
<task value="61"/>
<node value="15"/>
</bind>
<bind>
<task value="62"/>
<node value="14"/>
</bind>
<bind>
<task value="63"/>
<node value="13"/>
</bind>
<bind>
<task value="64"/>
<node value="12"/>
</bind>
<bind>
<task value="65"/>
<node value="12"/>
</bind>
<bind>
<task value="66"/>
<node value="12"/>
</bind>
<bind>
<task value="67"/>
<node value="13"/>
</bind>
<bind>
<task value="68"/>
<node value="13"/>
</bind>
<bind>
<task value="69"/>
<node value="13"/>
</bind>
<bind>
<task value="70"/>
<node value="14"/>
</bind>
<bind>
<task value="71"/>
<node value="14"/>
</bind>
<bind>
<task value="72"/>
<node value="14"/>
</bind>
<bind>
<task value="73"/>
<node value="15"/>
</bind>
<bind>
<task value="74"/>
<node value="0"/>
</bind>
</map>

View file

@ -1,343 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
<bind>
<task value="20"/>
<node value="0"/>
</bind>
<bind>
<task value="21"/>
<node value="0"/>
</bind>
<bind>
<task value="22"/>
<node value="4"/>
</bind>
<bind>
<task value="23"/>
<node value="1"/>
</bind>
<bind>
<task value="24"/>
<node value="1"/>
</bind>
<bind>
<task value="25"/>
<node value="5"/>
</bind>
<bind>
<task value="26"/>
<node value="2"/>
</bind>
<bind>
<task value="27"/>
<node value="2"/>
</bind>
<bind>
<task value="28"/>
<node value="6"/>
</bind>
<bind>
<task value="29"/>
<node value="3"/>
</bind>
<bind>
<task value="30"/>
<node value="3"/>
</bind>
<bind>
<task value="31"/>
<node value="7"/>
</bind>
<bind>
<task value="32"/>
<node value="6"/>
</bind>
<bind>
<task value="33"/>
<node value="5"/>
</bind>
<bind>
<task value="34"/>
<node value="4"/>
</bind>
<bind>
<task value="35"/>
<node value="4"/>
</bind>
<bind>
<task value="36"/>
<node value="4"/>
</bind>
<bind>
<task value="37"/>
<node value="8"/>
</bind>
<bind>
<task value="38"/>
<node value="5"/>
</bind>
<bind>
<task value="39"/>
<node value="5"/>
</bind>
<bind>
<task value="40"/>
<node value="9"/>
</bind>
<bind>
<task value="41"/>
<node value="6"/>
</bind>
<bind>
<task value="42"/>
<node value="6"/>
</bind>
<bind>
<task value="43"/>
<node value="10"/>
</bind>
<bind>
<task value="44"/>
<node value="7"/>
</bind>
<bind>
<task value="45"/>
<node value="7"/>
</bind>
<bind>
<task value="46"/>
<node value="11"/>
</bind>
<bind>
<task value="47"/>
<node value="10"/>
</bind>
<bind>
<task value="48"/>
<node value="9"/>
</bind>
<bind>
<task value="49"/>
<node value="8"/>
</bind>
<bind>
<task value="50"/>
<node value="8"/>
</bind>
<bind>
<task value="51"/>
<node value="8"/>
</bind>
<bind>
<task value="52"/>
<node value="12"/>
</bind>
<bind>
<task value="53"/>
<node value="9"/>
</bind>
<bind>
<task value="54"/>
<node value="9"/>
</bind>
<bind>
<task value="55"/>
<node value="13"/>
</bind>
<bind>
<task value="56"/>
<node value="10"/>
</bind>
<bind>
<task value="57"/>
<node value="10"/>
</bind>
<bind>
<task value="58"/>
<node value="14"/>
</bind>
<bind>
<task value="59"/>
<node value="11"/>
</bind>
<bind>
<task value="60"/>
<node value="11"/>
</bind>
<bind>
<task value="61"/>
<node value="15"/>
</bind>
<bind>
<task value="62"/>
<node value="14"/>
</bind>
<bind>
<task value="63"/>
<node value="13"/>
</bind>
<bind>
<task value="64"/>
<node value="12"/>
</bind>
<bind>
<task value="65"/>
<node value="12"/>
</bind>
<bind>
<task value="66"/>
<node value="12"/>
</bind>
<bind>
<task value="67"/>
<node value="8"/>
</bind>
<bind>
<task value="68"/>
<node value="4"/>
</bind>
<bind>
<task value="69"/>
<node value="0"/>
</bind>
<bind>
<task value="70"/>
<node value="1"/>
</bind>
<bind>
<task value="71"/>
<node value="13"/>
</bind>
<bind>
<task value="72"/>
<node value="13"/>
</bind>
<bind>
<task value="73"/>
<node value="9"/>
</bind>
<bind>
<task value="74"/>
<node value="5"/>
</bind>
<bind>
<task value="75"/>
<node value="1"/>
</bind>
<bind>
<task value="76"/>
<node value="2"/>
</bind>
<bind>
<task value="77"/>
<node value="14"/>
</bind>
<bind>
<task value="78"/>
<node value="14"/>
</bind>
<bind>
<task value="79"/>
<node value="10"/>
</bind>
<bind>
<task value="80"/>
<node value="6"/>
</bind>
<bind>
<task value="81"/>
<node value="2"/>
</bind>
<bind>
<task value="82"/>
<node value="3"/>
</bind>
<bind>
<task value="83"/>
<node value="0"/>
</bind>
</map>

File diff suppressed because it is too large Load diff

View file

@ -5,15 +5,15 @@
<outputToFile value="true">report</outputToFile>
</general>
<noc>
<nocFile>config/mobilenet_fb/net_conf.xml</nocFile>
<nocFile>config/ai_test2/net.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/mobilenet_fb/data_conf.xml</dataFile>
<mapFile>config/mobilenet_fb/map_conf.xml</mapFile>
<dataFile>config/ai_test2/data.xml</dataFile>
<mapFile>config/ai_test2/map.xml</mapFile>
</application>
<verbose>
<processingElements>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,342 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
<bind>
<task value="20"/>
<node value="0"/>
</bind>
<bind>
<task value="21"/>
<node value="1"/>
</bind>
<bind>
<task value="22"/>
<node value="2"/>
</bind>
<bind>
<task value="23"/>
<node value="3"/>
</bind>
<bind>
<task value="24"/>
<node value="4"/>
</bind>
<bind>
<task value="25"/>
<node value="5"/>
</bind>
<bind>
<task value="26"/>
<node value="6"/>
</bind>
<bind>
<task value="27"/>
<node value="7"/>
</bind>
<bind>
<task value="28"/>
<node value="8"/>
</bind>
<bind>
<task value="29"/>
<node value="9"/>
</bind>
<bind>
<task value="30"/>
<node value="0"/>
</bind>
<bind>
<task value="31"/>
<node value="0"/>
</bind>
<bind>
<task value="32"/>
<node value="1"/>
</bind>
<bind>
<task value="33"/>
<node value="1"/>
</bind>
<bind>
<task value="34"/>
<node value="1"/>
</bind>
<bind>
<task value="35"/>
<node value="2"/>
</bind>
<bind>
<task value="36"/>
<node value="2"/>
</bind>
<bind>
<task value="37"/>
<node value="2"/>
</bind>
<bind>
<task value="38"/>
<node value="3"/>
</bind>
<bind>
<task value="39"/>
<node value="3"/>
</bind>
<bind>
<task value="40"/>
<node value="3"/>
</bind>
<bind>
<task value="41"/>
<node value="7"/>
</bind>
<bind>
<task value="42"/>
<node value="6"/>
</bind>
<bind>
<task value="43"/>
<node value="5"/>
</bind>
<bind>
<task value="44"/>
<node value="4"/>
</bind>
<bind>
<task value="45"/>
<node value="4"/>
</bind>
<bind>
<task value="46"/>
<node value="4"/>
</bind>
<bind>
<task value="47"/>
<node value="5"/>
</bind>
<bind>
<task value="48"/>
<node value="5"/>
</bind>
<bind>
<task value="49"/>
<node value="5"/>
</bind>
<bind>
<task value="50"/>
<node value="6"/>
</bind>
<bind>
<task value="51"/>
<node value="6"/>
</bind>
<bind>
<task value="52"/>
<node value="6"/>
</bind>
<bind>
<task value="53"/>
<node value="7"/>
</bind>
<bind>
<task value="54"/>
<node value="7"/>
</bind>
<bind>
<task value="55"/>
<node value="7"/>
</bind>
<bind>
<task value="56"/>
<node value="11"/>
</bind>
<bind>
<task value="57"/>
<node value="10"/>
</bind>
<bind>
<task value="58"/>
<node value="9"/>
</bind>
<bind>
<task value="59"/>
<node value="8"/>
</bind>
<bind>
<task value="60"/>
<node value="8"/>
</bind>
<bind>
<task value="61"/>
<node value="8"/>
</bind>
<bind>
<task value="62"/>
<node value="9"/>
</bind>
<bind>
<task value="63"/>
<node value="9"/>
</bind>
<bind>
<task value="64"/>
<node value="9"/>
</bind>
<bind>
<task value="65"/>
<node value="10"/>
</bind>
<bind>
<task value="66"/>
<node value="10"/>
</bind>
<bind>
<task value="67"/>
<node value="10"/>
</bind>
<bind>
<task value="68"/>
<node value="11"/>
</bind>
<bind>
<task value="69"/>
<node value="11"/>
</bind>
<bind>
<task value="70"/>
<node value="11"/>
</bind>
<bind>
<task value="71"/>
<node value="15"/>
</bind>
<bind>
<task value="72"/>
<node value="14"/>
</bind>
<bind>
<task value="73"/>
<node value="13"/>
</bind>
<bind>
<task value="74"/>
<node value="12"/>
</bind>
<bind>
<task value="75"/>
<node value="12"/>
</bind>
<bind>
<task value="76"/>
<node value="12"/>
</bind>
<bind>
<task value="77"/>
<node value="13"/>
</bind>
<bind>
<task value="78"/>
<node value="13"/>
</bind>
<bind>
<task value="79"/>
<node value="13"/>
</bind>
<bind>
<task value="80"/>
<node value="14"/>
</bind>
<bind>
<task value="81"/>
<node value="14"/>
</bind>
<bind>
<task value="82"/>
<node value="14"/>
</bind>
<bind>
<task value="83"/>
<node value="15"/>
</bind>
</map>

View file

@ -1,377 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
<bind>
<task value="20"/>
<node value="0"/>
</bind>
<bind>
<task value="21"/>
<node value="1"/>
</bind>
<bind>
<task value="22"/>
<node value="2"/>
</bind>
<bind>
<task value="23"/>
<node value="3"/>
</bind>
<bind>
<task value="24"/>
<node value="4"/>
</bind>
<bind>
<task value="25"/>
<node value="5"/>
</bind>
<bind>
<task value="26"/>
<node value="6"/>
</bind>
<bind>
<task value="27"/>
<node value="7"/>
</bind>
<bind>
<task value="28"/>
<node value="8"/>
</bind>
<bind>
<task value="29"/>
<node value="9"/>
</bind>
<bind>
<task value="30"/>
<node value="0"/>
</bind>
<bind>
<task value="31"/>
<node value="0"/>
</bind>
<bind>
<task value="32"/>
<node value="4"/>
</bind>
<bind>
<task value="33"/>
<node value="1"/>
</bind>
<bind>
<task value="34"/>
<node value="1"/>
</bind>
<bind>
<task value="35"/>
<node value="5"/>
</bind>
<bind>
<task value="36"/>
<node value="2"/>
</bind>
<bind>
<task value="37"/>
<node value="2"/>
</bind>
<bind>
<task value="38"/>
<node value="6"/>
</bind>
<bind>
<task value="39"/>
<node value="3"/>
</bind>
<bind>
<task value="40"/>
<node value="3"/>
</bind>
<bind>
<task value="41"/>
<node value="7"/>
</bind>
<bind>
<task value="42"/>
<node value="6"/>
</bind>
<bind>
<task value="43"/>
<node value="5"/>
</bind>
<bind>
<task value="44"/>
<node value="4"/>
</bind>
<bind>
<task value="45"/>
<node value="4"/>
</bind>
<bind>
<task value="46"/>
<node value="4"/>
</bind>
<bind>
<task value="47"/>
<node value="8"/>
</bind>
<bind>
<task value="48"/>
<node value="5"/>
</bind>
<bind>
<task value="49"/>
<node value="5"/>
</bind>
<bind>
<task value="50"/>
<node value="9"/>
</bind>
<bind>
<task value="51"/>
<node value="6"/>
</bind>
<bind>
<task value="52"/>
<node value="6"/>
</bind>
<bind>
<task value="53"/>
<node value="10"/>
</bind>
<bind>
<task value="54"/>
<node value="7"/>
</bind>
<bind>
<task value="55"/>
<node value="7"/>
</bind>
<bind>
<task value="56"/>
<node value="11"/>
</bind>
<bind>
<task value="57"/>
<node value="10"/>
</bind>
<bind>
<task value="58"/>
<node value="9"/>
</bind>
<bind>
<task value="59"/>
<node value="8"/>
</bind>
<bind>
<task value="60"/>
<node value="8"/>
</bind>
<bind>
<task value="61"/>
<node value="8"/>
</bind>
<bind>
<task value="62"/>
<node value="12"/>
</bind>
<bind>
<task value="63"/>
<node value="9"/>
</bind>
<bind>
<task value="64"/>
<node value="9"/>
</bind>
<bind>
<task value="65"/>
<node value="13"/>
</bind>
<bind>
<task value="66"/>
<node value="10"/>
</bind>
<bind>
<task value="67"/>
<node value="10"/>
</bind>
<bind>
<task value="68"/>
<node value="14"/>
</bind>
<bind>
<task value="69"/>
<node value="11"/>
</bind>
<bind>
<task value="70"/>
<node value="11"/>
</bind>
<bind>
<task value="71"/>
<node value="15"/>
</bind>
<bind>
<task value="72"/>
<node value="14"/>
</bind>
<bind>
<task value="73"/>
<node value="13"/>
</bind>
<bind>
<task value="74"/>
<node value="12"/>
</bind>
<bind>
<task value="75"/>
<node value="12"/>
</bind>
<bind>
<task value="76"/>
<node value="12"/>
</bind>
<bind>
<task value="77"/>
<node value="8"/>
</bind>
<bind>
<task value="78"/>
<node value="4"/>
</bind>
<bind>
<task value="79"/>
<node value="0"/>
</bind>
<bind>
<task value="80"/>
<node value="1"/>
</bind>
<bind>
<task value="81"/>
<node value="13"/>
</bind>
<bind>
<task value="82"/>
<node value="13"/>
</bind>
<bind>
<task value="83"/>
<node value="9"/>
</bind>
<bind>
<task value="84"/>
<node value="5"/>
</bind>
<bind>
<task value="85"/>
<node value="1"/>
</bind>
<bind>
<task value="86"/>
<node value="2"/>
</bind>
<bind>
<task value="87"/>
<node value="14"/>
</bind>
<bind>
<task value="88"/>
<node value="14"/>
</bind>
<bind>
<task value="89"/>
<node value="10"/>
</bind>
<bind>
<task value="90"/>
<node value="6"/>
</bind>
<bind>
<task value="91"/>
<node value="2"/>
</bind>
<bind>
<task value="92"/>
<node value="3"/>
</bind>
</map>

File diff suppressed because it is too large Load diff

View file

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

View file

@ -179,10 +179,20 @@
<requirement id="0">
<type value="1"/>
<source value="4"/>
<count max="3" min="3"/>
<count max="1" min="1"/>
</requirement>
<requirement id="1">
<type value="1"/>
<source value="4"/>
<count max="1" min="1"/>
</requirement>
<requirement id="2">
<type value="1"/>
<source value="4"/>
<count max="1" min="1"/>
</requirement>
</requires>
</task>
<!--multiple requirement of the same type seems to not work-->
</tasks>
</data>

File diff suppressed because it is too large Load diff

View file

@ -1,597 +0,0 @@
<?xml version="1.0" ?>
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dataTypes>
<dataType id="0">
<name value="Type_task_0"/>
</dataType>
<dataType id="1">
<name value="Type_task_1"/>
</dataType>
<dataType id="2">
<name value="Type_task_2"/>
</dataType>
<dataType id="3">
<name value="Type_task_3"/>
</dataType>
<dataType id="4">
<name value="Type_task_4"/>
</dataType>
<dataType id="5">
<name value="Type_task_5"/>
</dataType>
<dataType id="6">
<name value="Type_task_6"/>
</dataType>
<dataType id="7">
<name value="Type_task_7"/>
</dataType>
<dataType id="8">
<name value="Type_task_8"/>
</dataType>
<dataType id="9">
<name value="Type_task_9"/>
</dataType>
<dataType id="10">
<name value="Type_task_10"/>
</dataType>
<dataType id="11">
<name value="Type_task_11"/>
</dataType>
<dataType id="12">
<name value="Type_task_12"/>
</dataType>
<dataType id="13">
<name value="Type_task_13"/>
</dataType>
<dataType id="14">
<name value="Type_task_14"/>
</dataType>
<dataType id="15">
<name value="Type_task_15"/>
</dataType>
<dataType id="16">
<name value="Type_task_16"/>
</dataType>
<dataType id="17">
<name value="Type_task_17"/>
</dataType>
<dataType id="18">
<name value="Type_task_18"/>
</dataType>
<dataType id="19">
<name value="Type_task_19"/>
</dataType>
</dataTypes>
<tasks>
<task id="0">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="110" max="110"/>
<interval min="20" max="20"/>
<count min="402" max="402"/>
<type value="0"/>
<task value="1"/>
</destination>
</destinations>
</possibility>
</generates>
<requires/>
</task>
<task id="1">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="37" max="37"/>
<interval min="20" max="20"/>
<count min="402" max="402"/>
<type value="1"/>
<task value="2"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="0"/>
<source value="0"/>
<count min="402" max="402"/>
</requirement>
</requires>
</task>
<task id="2">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="65" max="65"/>
<interval min="20" max="20"/>
<count min="201" max="201"/>
<type value="2"/>
<task value="3"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="1"/>
<source value="1"/>
<count min="402" max="402"/>
</requirement>
</requires>
</task>
<task id="3">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="195" max="195"/>
<interval min="20" max="20"/>
<count min="1205" max="1205"/>
<type value="3"/>
<task value="4"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="2"/>
<source value="2"/>
<count min="201" max="201"/>
</requirement>
</requires>
</task>
<task id="4">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="28" max="28"/>
<interval min="20" max="20"/>
<count min="302" max="302"/>
<type value="4"/>
<task value="5"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="3"/>
<source value="3"/>
<count min="1205" max="1205"/>
</requirement>
</requires>
</task>
<task id="5">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="73" max="73"/>
<interval min="20" max="20"/>
<count min="76" max="76"/>
<type value="5"/>
<task value="6"/>
</destination>
<destination id="1">
<delay min="73" max="73"/>
<interval min="20" max="20"/>
<count min="76" max="76"/>
<type value="5"/>
<task value="9"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="4"/>
<source value="4"/>
<count min="302" max="302"/>
</requirement>
</requires>
</task>
<task id="6">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="110" max="110"/>
<interval min="20" max="20"/>
<count min="452" max="452"/>
<type value="6"/>
<task value="7"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="5"/>
<source value="5"/>
<count min="76" max="76"/>
</requirement>
</requires>
</task>
<task id="7">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="41" max="41"/>
<interval min="20" max="20"/>
<count min="452" max="452"/>
<type value="7"/>
<task value="8"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="6"/>
<source value="6"/>
<count min="452" max="452"/>
</requirement>
</requires>
</task>
<task id="8">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="110" max="110"/>
<interval min="20" max="20"/>
<count min="76" max="76"/>
<type value="8"/>
<task value="9"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="7"/>
<source value="7"/>
<count min="452" max="452"/>
</requirement>
</requires>
</task>
<task id="9">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="1" max="1"/>
<interval min="20" max="20"/>
<count min="76" max="76"/>
<type value="9"/>
<task value="10"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="5"/>
<source value="5"/>
<count min="76" max="76"/>
</requirement>
<requirement id="1">
<type value="8"/>
<source value="8"/>
<count min="76" max="76"/>
</requirement>
</requires>
</task>
<task id="10">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="110" max="110"/>
<interval min="20" max="20"/>
<count min="452" max="452"/>
<type value="10"/>
<task value="11"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="9"/>
<source value="9"/>
<count min="76" max="76"/>
</requirement>
</requires>
</task>
<task id="11">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="11" max="11"/>
<interval min="20" max="20"/>
<count min="113" max="113"/>
<type value="11"/>
<task value="12"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="10"/>
<source value="10"/>
<count min="452" max="452"/>
</requirement>
</requires>
</task>
<task id="12">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="37" max="37"/>
<interval min="20" max="20"/>
<count min="26" max="26"/>
<type value="12"/>
<task value="13"/>
</destination>
<destination id="1">
<delay min="37" max="37"/>
<interval min="20" max="20"/>
<count min="26" max="26"/>
<type value="12"/>
<task value="16"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="11"/>
<source value="11"/>
<count min="113" max="113"/>
</requirement>
</requires>
</task>
<task id="13">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="49" max="49"/>
<interval min="20" max="20"/>
<count min="151" max="151"/>
<type value="13"/>
<task value="14"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="12"/>
<source value="12"/>
<count min="26" max="26"/>
</requirement>
</requires>
</task>
<task id="14">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="14" max="14"/>
<interval min="20" max="20"/>
<count min="151" max="151"/>
<type value="14"/>
<task value="15"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="13"/>
<source value="13"/>
<count min="151" max="151"/>
</requirement>
</requires>
</task>
<task id="15">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="49" max="49"/>
<interval min="20" max="20"/>
<count min="26" max="26"/>
<type value="15"/>
<task value="16"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="14"/>
<source value="14"/>
<count min="151" max="151"/>
</requirement>
</requires>
</task>
<task id="16">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="1" max="1"/>
<interval min="20" max="20"/>
<count min="26" max="26"/>
<type value="16"/>
<task value="17"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="12"/>
<source value="12"/>
<count min="26" max="26"/>
</requirement>
<requirement id="1">
<type value="15"/>
<source value="15"/>
<count min="26" max="26"/>
</requirement>
</requires>
</task>
<task id="17">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="49" max="49"/>
<interval min="20" max="20"/>
<count min="151" max="151"/>
<type value="17"/>
<task value="18"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="16"/>
<source value="16"/>
<count min="26" max="26"/>
</requirement>
</requires>
</task>
<task id="18">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="14" max="14"/>
<interval min="20" max="20"/>
<count min="151" max="151"/>
<type value="18"/>
<task value="19"/>
</destination>
</destinations>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="17"/>
<source value="17"/>
<count min="151" max="151"/>
</requirement>
</requires>
</task>
<task id="19">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="10" max="10"/>
<generates>
<possibility id="0">
<probability value="1"/>
<destinations/>
</possibility>
</generates>
<requires>
<requirement id="0">
<type value="18"/>
<source value="18"/>
<count min="151" max="151"/>
</requirement>
</requires>
</task>
</tasks>
</data>

View file

@ -1,83 +0,0 @@
<?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="0"/>
</bind>
<bind>
<task value="2"/>
<node value="1"/>
</bind>
<bind>
<task value="3"/>
<node value="1"/>
</bind>
<bind>
<task value="4"/>
<node value="2"/>
</bind>
<bind>
<task value="5"/>
<node value="2"/>
</bind>
<bind>
<task value="6"/>
<node value="3"/>
</bind>
<bind>
<task value="7"/>
<node value="3"/>
</bind>
<bind>
<task value="8"/>
<node value="4"/>
</bind>
<bind>
<task value="9"/>
<node value="4"/>
</bind>
<bind>
<task value="10"/>
<node value="5"/>
</bind>
<bind>
<task value="11"/>
<node value="5"/>
</bind>
<bind>
<task value="12"/>
<node value="6"/>
</bind>
<bind>
<task value="13"/>
<node value="6"/>
</bind>
<bind>
<task value="14"/>
<node value="7"/>
</bind>
<bind>
<task value="15"/>
<node value="7"/>
</bind>
<bind>
<task value="16"/>
<node value="8"/>
</bind>
<bind>
<task value="17"/>
<node value="8"/>
</bind>
<bind>
<task value="18"/>
<node value="9"/>
</bind>
<bind>
<task value="19"/>
<node value="9"/>
</bind>
</map>

View file

@ -1,47 +1,19 @@
from utils import *
# optimal
#sourc_x = [0,0,0,0,1,1,1,1,2,2,2,2,3,3,3]
#sourc_y = [0,1,2,3,0,1,2,3,0,1,2,3,0,1,2]
#dest_x = [0,0,0,1,1,1,1,2,2,2,2,3,3,3,3]
#dest_y = [1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
sourc_x = 0
sourc_y = 1
# non optimal
sourc_x = [0,0,0,0,1,1,1,1,2,2,2,2,3,3,3]
sourc_y = [0,1,2,3,0,1,2,3,0,1,2,3,0,1,2]
dest_x = 3
dest_y = 3
dest_x = [1,1,1,1,2,2,2,2,3,3,3,3,0,0,0]
dest_y = [0,1,2,0,0,1,2,0,0,1,2,0,1,2,3]
rout_type = 0
routing_typ = 0 # xy routing
id = 0
print("**********************FOR data.xml**********************")
id = write_config_tasks(sourc_x, sourc_y, dest_x, dest_y, id, rout_type)
print()
start_task = 29
start_type = 48
#start_conf_type_id = 20
start_pack_type_id = 64
spec_task_id = 20
use_spec_task = True
if use_spec_task:
start_task += 1
start_type += 1
data_file = "./in/data.xml"
map_file = "./in/map.xml"
config_task_writer = ConfigTaskWriter([sourc_x[0],sourc_y[0]],
[dest_x[0],dest_y[0]], routing_typ, start_task, start_type, #start_conf_type_id,
start_pack_type_id, use_spec_task, spec_task_id)
for i in range(0, len(sourc_x)):
config_task_writer.update_sourc_dest([sourc_x[i],sourc_y[i]],
[dest_x[i],dest_y[i]])
config_task_writer.write_config_tasks()
config_task_writer.write_map()
config_task_writer.write_last_task()
config_task_writer.write_types()
#config_task_writer.write_stream_types(data_file, map_file)
config_task_writer.write_non_opt_stream_types(data_file, map_file)
config_task_writer.write_to_file()
print("**********************FOR map.xml**********************")
write_map(sourc_x, sourc_y, dest_x, dest_y, id, rout_type)

View file

@ -2,8 +2,8 @@ from enum import Enum
MAX_ROUT_Y = 4
GEN_TASK_START = """
<task id="{}">
GEN_TASK_START = """ <tasks>
<task id="0">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
@ -21,6 +21,7 @@ REQ_TASK_START = """ <task id="{}">
<duration max="-1" min="-1"/>
<repeat max="1" min="1"/>"""
REQ_TASK_END = " </task>"
LAST_TASK = """ <task id="{}">
<start max="0" min="0"/>
@ -28,8 +29,8 @@ LAST_TASK = """ <task id="{}">
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="{}"/>
<source value="{}"/>
<type value="0"/>
<source value="0"/>
<count max="{}" min="{}"/>
</requirement>
</requires>
@ -37,8 +38,8 @@ LAST_TASK = """ <task id="{}">
REQ_TASK_REQ = """ <requires>
<requirement id="0">
<type value="{}"/>
<source value="{}"/>
<type value="2"/>
<source value="0"/>
<count max="1" min="1"/>
</requirement>
</requires>"""
@ -48,24 +49,23 @@ REQ_TASK_GEN = """ <generates>
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="50" max="50"/>
<interval min="20" max="20"/>
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="{}"/>
<type value="0"/>
<task value="{}"/>
</destination>
</destinations>
</possibility>
</generates>
</task>"""
</generates>"""
DEST_HEADER = " <destination id=\"{}\">"
DEST_H_END = " </destination>"
DELAY_TAG = " <delay min=\"50\" max=\"50\"/>"
INTERVAL_TAG = " <interval min=\"20\" max=\"20\"/>"
DELAY_TAG = " <delay min=\"0\" max=\"100\"/>"
INTERVAL_TAG = " <interval min=\"100\" max=\"100\"/>"
COUNT_TAG = " <count min=\"1\" max=\"1\"/>"
TYPE_TAG = " <type value=\"{}\"/>"
TYPE_TAG = " <type value=\"2\"/>"
TASK_TAG = " <task value=\"{}\"/>"
CONFIG_TAG = " <config link=\"{}\" destination=\"{}\"/>"
@ -76,18 +76,6 @@ BIND = """ <bind>
</bind>"""
CONF_TYPE = """ <dataType id="{}">
<name value="ConfigRouter"/>
</dataType>"""
PACK_TYPE = """ <dataType id="{}">
<name value="Type_task_{}"/>
</dataType>"""
STREAM_TYPE = """ <dataType id="{}">
<name value="Type_task_{}_Stream"/>
</dataType>"""
class DIRS(Enum):
LOCAL = 0
EAST = 1

View file

@ -1,275 +1,107 @@
from templates import *
from bs4 import BeautifulSoup
def get_opposs_dir(dir):
if dir == DIRS.LOCAL:
if DIRS.LOCAL:
return DIRS.LOCAL
elif dir == DIRS.EAST:
elif DIRS.EAST:
return DIRS.WEST
elif dir == DIRS.WEST:
elif DIRS.WEST:
return DIRS.EAST
elif dir == DIRS.NORTH:
elif DIRS.NORTH:
return DIRS.SOUTH
elif dir == DIRS.SOUTH:
elif DIRS.SOUTH:
return DIRS.NORTH
elif dir == DIRS.UP:
elif DIRS.UP:
return DIRS.DOWN
elif dir == DIRS.DOWN:
elif DIRS.DOWN:
return DIRS.UP
else:
return DIRS.INVALID
class ConfigTaskWriter:
def __init__(self, sourc, dest, routing_typ, start_task, start_type, #start_conf_type_id,
start_pack_type_id, use_spec_task=False, spec_task_id=0):
self.sourc = sourc
self.dest = dest
self.routing_typ = routing_typ
self.start_task = start_task
self.start_type = start_type
#self.start_conf_type_id = start_conf_type_id
self.start_pack_type_id = start_pack_type_id
self.use_spec_task = use_spec_task
self.spec_task_id = spec_task_id
self.task_count = 0
self.xml_data = ""
self.xml_map = ""
self.xml_data_types = ""
self.xml_stream_types = ""
self.spec_task_count = 0
self.type_count_start = self.start_type
self.type_count = self.start_type
def write_one_dir_config_tasks(self, x0, xf, dir, prev_dir, last_dir):
for x in range(x0, xf):
self.xml_data += DEST_HEADER.format(self.task_count) + "\n"
self.xml_data += DELAY_TAG + "\n"
self.xml_data += INTERVAL_TAG + "\n"
self.xml_data += COUNT_TAG + "\n"
self.xml_data += TYPE_TAG.format(self.type_count) + "\n"
self.xml_data += TASK_TAG.format(self.start_task+self.task_count+1)+"\n"
if x == x0 and x == xf-1:
link = prev_dir.value
dest = last_dir.value
elif x == x0:
link = prev_dir.value
dest = dir.value
elif x == xf-1:
link = get_opposs_dir(dir).value
dest = last_dir.value
else:
link = get_opposs_dir(dir).value
dest = dir.value
self.xml_data += CONFIG_TAG.format(link, dest) + "\n"
self.xml_data += DEST_H_END + "\n"
self.task_count += 1
def write_req_task(self):
for i in range(0, self.task_count):
self.xml_data += "\n"+REQ_TASK_START.format(self.start_task+i+1)+"\n"
self.xml_data += REQ_TASK_REQ.format(self.type_count,
self.start_task) + "\n"
if(not self.use_spec_task):
last_task = self.start_task+(self.dest[0]-self.sourc[0] + \
self.dest[1]-self.sourc[1]) + 2
def write_one_dir_config_tasks(sourc, dest, id, dir, prev_dir, last_dir):
for x in range(sourc, dest):
print(DEST_HEADER.format(id))
print(DELAY_TAG)
print(INTERVAL_TAG)
print(COUNT_TAG)
print(TYPE_TAG)
print(TASK_TAG.format(id+1))
if x == sourc:
link = prev_dir.value
dest = dir.value
elif x == dest:
link = get_opposs_dir(dir).value
dest = last_dir.value
else:
last_task = self.spec_task_id
self.xml_data += REQ_TASK_GEN.format(self.start_pack_type_id,
last_task) + "\n"
self.task_count += 1
link = get_opposs_dir(dir).value
dest = dir.value
print(CONFIG_TAG.format(link, dest))
print(DEST_H_END)
id+=1
return id
def write_last_task(self):
self.xml_data += "\n" + LAST_TASK.format(self.spec_task_id,
self.start_pack_type_id, self.start_task+self.task_count-1,
self.spec_task_count, self.spec_task_count) + "\n"
def write_req_task(id):
for i in range(1, id):
print()
print(REQ_TASK_START.format(i))
print(REQ_TASK_REQ)
print(REQ_TASK_GEN.format(id))
print(REQ_TASK_END)
return id
def write_config_tasks(self):
self.xml_data+=GEN_TASK_START.format(self.start_task+self.task_count)+"\n"
if self.routing_typ == 0: # XY routing
dir = DIRS.EAST if self.dest[0] > self.sourc[0] else DIRS.WEST
x0 = self.dest[0] if self.sourc[0]>self.dest[0] else self.sourc[0]
xf = self.sourc[0] if self.sourc[0]>self.dest[0] else self.dest[0]
self.write_one_dir_config_tasks(x0, xf, dir, DIRS.LOCAL, dir)
def write_config_tasks(sourc_x, sourc_y, dest_x, dest_y, id, rout_type):
if rout_type == 0: # XY routing
print(GEN_TASK_START)
dir = DIRS.EAST if dest_x > sourc_x else DIRS.WEST
id = write_one_dir_config_tasks(sourc_x, dest_x, id, dir, DIRS.LOCAL, dir)
prev_dir = get_opposs_dir(dir) if self.dest[0] != self.sourc[0] \
else DIRS.LOCAL
dir = DIRS.NORTH if self.dest[1] > self.sourc[1] else DIRS.SOUTH
x0 = self.dest[1] if self.sourc[1]>self.dest[1] else self.sourc[1]
xf = self.sourc[1]+1 if self.sourc[1]>self.dest[1] else self.dest[1]+1
self.write_one_dir_config_tasks(x0, xf, dir, prev_dir, DIRS.LOCAL)
self.xml_data += GEN_TASK_END + "\n"
prev_dir = dir
dir = DIRS.NORTH if dest_y > sourc_y else DIRS.SOUTH
id = write_one_dir_config_tasks(sourc_y, dest_y+1, id, dir, prev_dir, DIRS.LOCAL)
print(GEN_TASK_END)
elif self.routing_typ==1: # YX routing
dir = DIRS.NORTH if self.dest[1] > self.sourc[1] else DIRS.SOUTH
x0 = self.dest[1] if self.sourc[1]>self.dest[1] else self.sourc[1]
xf = self.sourc[1] if self.sourc[1]>self.dest[1] else self.dest[1]
self.write_one_dir_config_tasks(x0, xf, dir, DIRS.LOCAL, dir)
write_req_task(id)
print()
print(LAST_TASK.format(id, id-1, id-1))
prev_dir = get_opposs_dir(dir) if self.dest[0] != self.sourc[0] \
else DIRS.LOCAL
dir = DIRS.EAST if self.dest[0] > self.sourc[0] else DIRS.WEST
x0 = self.dest[0] if self.sourc[0]>self.dest[0] else self.sourc[0]
xf = self.sourc[0]+1 if self.sourc[0]>self.dest[0] else self.dest[0]+1
self.write_one_dir_config_tasks(x0, xf, dir, prev_dir, DIRS.LOCAL)
self.xml_data += GEN_TASK_END + "\n"
elif rout_type==1: # YX routing
print(GEN_TASK_START)
self.write_req_task()
dir = DIRS.NORTH if dest_y > sourc_y else DIRS.SOUTH
id = write_one_dir_config_tasks(sourc_y, dest_y, id, dir, DIRS.LOCAL, dir)
#last task is for the pc that send config msgs
if(not self.use_spec_task):
self.xml_data += "\n" + LAST_TASK.format(
self.start_task+self.task_count, self.start_task+self.task_count,
self.start_task, self.task_count-1, self.task_count-1) + "\n"
else:
self.spec_task_count += self.task_count - 1
self.type_count += 1
prev_dir = dir
dir = DIRS.EAST if dest_x > sourc_x else DIRS.WEST
id = write_one_dir_config_tasks(sourc_x, dest_x+1, id, dir, prev_dir, DIRS.LOCAL)
print(GEN_TASK_END)
id = write_req_task(id)
print()
print(LAST_TASK.format(id, id-1, id-1))
return id
def write_map(self):
x = self.sourc[0]
y = self.sourc[1]
if(not self.use_spec_task):
last_map_task = self.task_count+1
else:
last_map_task = self.task_count
self.xml_map += BIND.format(self.start_task, x*MAX_ROUT_Y+y) + "\n" # first task
for i in range (1, last_map_task):
self.xml_map += BIND.format(self.start_task+i, x*MAX_ROUT_Y+y) + "\n"
if self.routing_typ == 0:
if(x == self.dest[0] and y == self.dest[1]):
x = self.sourc[0]
y = self.sourc[1]
elif(x == self.dest[0]):
y = y+1 if self.dest[1] > self.sourc[1] else y-1
else:
x = x+1 if self.dest[0] > self.sourc[0] else x-1
elif self.routing_typ == 1:
if(x == self.dest[0] and y == self.dest[1]):
x = self.sourc[0]
y = self.sourc[1]
elif(y == self.dest[1]):
x = x+1 if self.dest[0] > self.sourc[0] else x-1
else:
y = y+1 if self.dest[1] > self.sourc[1] else y-1
def write_types(self):
for i in range (self.type_count_start, self.type_count):
self.xml_data_types += CONF_TYPE.format(i) + "\n"
self.xml_data_types += PACK_TYPE.format(
self.start_pack_type_id, self.start_pack_type_id)
def write_stream_types(self, data_file, map_file):
with open(data_file, 'r') as f:
data = f.read()
with open(map_file, 'r') as f:
map_data = f.read()
Bs_data = BeautifulSoup(data, "xml")
Bs_map_data = BeautifulSoup(map_data, "xml")
tasks = Bs_data.find_all('task')
binds = Bs_map_data.find_all('bind')
for task in tasks:
id = task.get('id')
if id is not None:
dests = task.find_all('destination')
if dests:
num_dest = len(dests)
dest_task = dests[0].find('task').get('value')
for bind in binds:
if bind.find('task').get('value') == id:
sourc_node = bind.find('node').get('value')
if bind.find('task').get('value') == dest_task:
dest_node = bind.find('node').get('value')
if(num_dest == 1 and sourc_node != dest_node):
self.xml_stream_types += STREAM_TYPE.format(id, id) + "\n"
else:
self.xml_stream_types += PACK_TYPE.format(id, id) + "\n"
def write_non_opt_stream_types(self, data_file, map_file):
with open(data_file, 'r') as f:
data = f.read()
with open(map_file, 'r') as f:
map_data = f.read()
Bs_data = BeautifulSoup(data, "xml")
Bs_map_data = BeautifulSoup(map_data, "xml")
tasks = Bs_data.find_all('task')
binds = Bs_map_data.find_all('bind')
for task in tasks:
id = task.get('id')
if id is not None:
dests = task.find_all('destination')
if dests:
num_dest = len(dests)
dest_task = dests[0].find('task').get('value')
for bind in binds:
if bind.find('task').get('value') == id:
sourc_node = int(bind.find('node').get('value'))
if bind.find('task').get('value') == dest_task:
dest_node = int(bind.find('node').get('value'))
# use this for mobilenet and efficienet
#if(num_dest == 1 and ((sourc_node == 3 and dest_node == 4) or
# (sourc_node == 7 and dest_node == 8) or
# (sourc_node == 11 and dest_node == 12))):
# use this for mobilenet_fb
if((sourc_node == 3 and dest_node == 4) or
(sourc_node == 7 and dest_node == 8) or
(sourc_node == 11 and dest_node == 12)):
self.xml_stream_types += STREAM_TYPE.format(id, id) + "\n"
else:
self.xml_stream_types += PACK_TYPE.format(id, id) + "\n"
def update_sourc_dest(self, sourc, dest):
self.sourc = sourc
self.dest = dest
if(not self.use_spec_task):
self.start_task += self.task_count + 1
self.start_type += self.task_count + 1
else:
self.start_task += self.task_count
self.start_type += self.task_count
self.task_count = 0
def write_to_file(self):
f = open("./data.txt", "w")
f.write("")
f.close()
f = open("./data.txt", "a")
f.write(self.xml_data)
f.close()
f = open("./map.txt", "w")
f.write("")
f.close()
f = open("./map.txt", "a")
f.write(self.xml_map)
f.close()
f = open("./data_types.txt", "w")
f.write("")
f.close()
f = open("./data_types.txt", "a")
f.write(self.xml_data_types)
f.close()
f = open("./stream_types.txt", "w")
f.write("")
f.close()
f = open("./stream_types.txt", "a")
f.write(self.xml_stream_types)
f.close()
def write_map(sourc_x, sourc_y, dest_x, dest_y, id, rout_type):
x = sourc_x
y = sourc_y
for i in range (0, id+1):
print(BIND.format(i, x*MAX_ROUT_Y+y))
if rout_type == 0:
if(y == dest_y):
x = sourc_x
y = sourc_y
elif(x == dest_x):
y += 1
else:
x +=1
elif rout_type == 1:
if(x == dest_x):
x = sourc_x
y = sourc_y
elif(y == dest_y):
x += 1
else:
y +=1

View file

@ -1,25 +0,0 @@
titles = {
"mobilenet": "Mobilenet",
"mobilenet_fb": "Mobilenet with feedback loop",
"efficienet": "EfficientNet"
}
net_models = {
"packet_switching" : ["mobilenet", "mobilenet_fb", "efficienet"],
"circuit_switching": ["mobilenet_conf", "mobilenet_fb_conf", "efficienet_conf"],
"non_opt_circuit_switching": ["mobilenet_conf_no_opt", "mobilenet_fb_conf_no_opt", "efficienet_conf_no_opt"]
}
final_conf_tasks = {
"circuit_switching": {
"mobilenet_conf": 74,
"mobilenet_fb_conf": 20,
"efficienet_conf": 138
},
"non_opt_circuit_switching": {
"mobilenet_conf_no_opt": 83,
"mobilenet_fb_conf_no_opt": 20,
"efficienet_conf_no_opt": 147
}
}
result_folder = "../../results/"

View file

@ -1,44 +0,0 @@
import pandas as pd
from constants import *
from utils import *
throt_data = pd.DataFrame(columns=["model","noc","throttled percentage"])
sim_time_data = pd.DataFrame(columns=["model","noc","simulation time"])
el_tim_data = pd.DataFrame(columns=["model","noc","elapsed time"])
conf_time_data = pd.DataFrame(columns=["model","noc","configuration time"])
# process data
count = 0
for net, models in net_models.items():
for model in models:
conf_folder = result_folder + model
el_tim_data.loc[count] = [model, net, get_elapsed_time(conf_folder)]
throt_data.loc[count] = [model, net, get_throt_perc(conf_folder)]
sim_time_data.loc[count] = [model, net, get_sim_time(conf_folder)]
conf_time = 0 if net not in final_conf_tasks \
else get_conf_time(conf_folder, final_conf_tasks[net][model])
conf_time_data.loc[count] = [model, net, conf_time]
count += 1
# print graphs
plt.clf()
with open('results.txt', 'w') as f:
print("", file=f)
for i in range(len(list(net_models.values())[0])):
models = [model[i] for model in list(net_models.values())]
conf_models = [model[i] for model in list(net_models.values())
if "conf" in model[i]]
throt_table = throt_data[throt_data["model"].isin(models)]
generate_throttle_graph(throt_table, models[0])
sim_time_table = sim_time_data[sim_time_data["model"].isin(models)]
generate_sim_time_graph(sim_time_table, models[0])
el_tim_table = el_tim_data[el_tim_data["model"].isin(models)]
generate_el_time_graph(el_tim_table, models[0])
conf_table = conf_time_data[conf_time_data["model"].isin(conf_models)]
generate_conf_time_graph(conf_table, models[0])

View file

@ -1,84 +0,0 @@
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from constants import titles
TASK_COMP_CONF_LOG = "Task {} has all requirements fullfilled"
SEC_TO_MIN = 60
NS_TO_US = 1000
#NS_TO_MS = 1000000
def get_elapsed_time(conf_folder):
return round(pd.read_csv(conf_folder+"/elapsed_time.txt",
delimiter=":", header=None).iloc[0,1]/SEC_TO_MIN, 2)
def get_throt_perc(conf_folder):
throt_cnt = pd.read_csv(conf_folder+"/throttled_count.csv"
).sum().loc["throttled_count"]
pckt_cnt = pd.read_csv(conf_folder+"/packet_count.csv"
).sum().loc["packet_count"]
return round(100*throt_cnt/pckt_cnt, 2)
def get_sim_time(conf_folder):
with open(conf_folder+"/pe_tasks.log", "r") as f:
sim_time = int(f.readlines()[-1].strip().split(":")[0][:-3])/NS_TO_US
#sim_time = sim_time/NS_TO_MS if sim_time > NS_TO_MS else sim_time/NS_TO_US
#sim_time = sim_time/NS_TO_US
return round(sim_time, 2)
def get_conf_time(conf_folder, final_conf_task):
conf_line = TASK_COMP_CONF_LOG.format(final_conf_task)
with open(conf_folder+"/pe_tasks.log", "r") as f:
comp_conf_line = [line for line in f.readlines() if conf_line in line]
conf_time = int(comp_conf_line[0].strip().split(":")[0][:-3])/NS_TO_US
return round(conf_time, 2)
def generate_throttle_graph(throt_table, model):
ax = sns.barplot(throt_table, x="noc", y="throttled percentage", hue="noc",
palette="Blues")
ax.set_title(titles[model])
for container in ax.containers:
ax.bar_label(container, fontsize=10)
plt.savefig("throttled_perc_"+model+".png")
with open('results.txt', 'a') as f:
print(throt_table, file=f)
plt.clf()
def generate_sim_time_graph(sim_time_table, model):
ax = sns.barplot(sim_time_table, x="noc", y="simulation time", hue="noc",
palette="Blues")
ax.set_title(titles[model]+" (us)")
for container in ax.containers:
ax.bar_label(container, fontsize=10)
plt.savefig("simulation_time_"+model+".png")
with open('results.txt', 'a') as f:
print(sim_time_table, file=f)
plt.clf()
def generate_el_time_graph(el_tim_table, model):
ax = sns.barplot(el_tim_table, x="noc", y="elapsed time", hue="noc",
palette="Blues")
ax.set_title(titles[model]+" (min)")
for container in ax.containers:
ax.bar_label(container, fontsize=10)
plt.savefig("elapsed_time_"+model+".png")
with open('results.txt', 'a') as f:
print(el_tim_table, file=f)
plt.clf()
def generate_conf_time_graph(conf_table, model):
ax = sns.barplot(conf_table, x="noc", y="configuration time", hue="noc",
palette="Blues")
ax.set_title("Circuit switching configuration time (us)")
for container in ax.containers:
ax.bar_label(container, fontsize=10)
plt.savefig("configuration_time_"+model+".png")
with open('results.txt', 'a') as f:
print(conf_table, file=f)
plt.clf()

View file

@ -66,9 +66,9 @@ int sc_main(int arg_num, char *arg_vec[])
time(&end_time);
double system_elapsed_time = difftime(end_time, start_time);
update_start_time(std::to_string(system_passed_time));
TlmReport& report = TlmReport::getInstance();
report.update_system_elapsed_time(std::to_string(system_elapsed_time));
report.write_report();
return 0;

View file

@ -168,7 +168,7 @@ void NetworkInterfaceTlm::send_flit(PacketCS* p, Flit* f){
tlm::tlm_phase send_phase = tlm::BEGIN_REQ;
string type_name = get_type_name(p->dataType);
int lay = (type_name.find(TYPE_STREAM) != string::npos) ? 1:0;
int lay = type_name == TYPE_STREAM ? 1:0;
log_debug("Sending flit of type "+ type_name + " to layer "+to_string(lay));
(*initiator[lay])->nb_transport_fw(*trans, send_phase, delay);
update_credits(*trans, -1);
@ -312,6 +312,7 @@ void NetworkInterfaceTlm::init_peq_cb(tlm_gp& trans, const tlm::tlm_phase& phase
log_debug("Init PEQ callback start for packet "+to_string(p_id));
log_debug("Phase "+string(phase.get_name())+" received");
if (phase == tlm::END_REQ) {
//update_credits(trans, 1);
curr_req = 0;
if(p_id == -1){
// Config msg transaction ended, so packet can be scheduled for deletion
@ -319,9 +320,6 @@ void NetworkInterfaceTlm::init_peq_cb(tlm_gp& trans, const tlm::tlm_phase& phase
unsigned char* data_ptr = trans.get_data_ptr();
Flit* received_flit = reinterpret_cast<Flit*>(data_ptr);
PacketCS* p = dynamic_cast<PacketCS*>(received_flit->packet);
if(get_type_name(p->dataType).find(TYPE_STREAM) != string::npos){
update_credits(trans, 1);
}
packet_recv_queue.push(p);
}
}
@ -424,7 +422,7 @@ void NetworkInterfaceTlm::receive_and_process_flit(tlm_gp& trans){
//log_info("Credit counter updated: "+to_string(credit_counter));
// send response if not type stream
if(get_type_name(p->dataType).find(TYPE_STREAM) == string::npos){
if(get_type_name(p->dataType) != TYPE_STREAM){
if(resp_in_progress) {
log_info("Previous response transaction still in progress, scheduling it for next time");
nxt_resp_pend.push(&trans);
@ -478,7 +476,7 @@ tlm::tlm_sync_enum NetworkInterfaceTlm::send_end_req(tlm_gp& trans){
// Queue the acceptance and the response with the appropriate latency
tlm::tlm_phase bw_phase = tlm::END_REQ;
sc_time delay = sc_time(REQ_END_DELAY, UNITS_DELAY); // Accept delay
int lay = (type_name.find(TYPE_STREAM) != string::npos) ? 1:0;
int lay = type_name == TYPE_STREAM ? 1:0;
tlm::tlm_sync_enum status = (*target[lay])->nb_transport_bw(trans,
bw_phase, delay);
if (status == tlm::TLM_COMPLETED) {
@ -488,7 +486,7 @@ tlm::tlm_sync_enum NetworkInterfaceTlm::send_end_req(tlm_gp& trans){
}
// Queue internal event to mark beginning of response
delay = (type_name.find(TYPE_STREAM) == string::npos) ?
delay = type_name != TYPE_STREAM ?
delay + sc_time(INTERN_PROC_DELAY, UNITS_DELAY) :
SC_ZERO_TIME; // no processing on stream
target_peq.notify(trans, INTERNAL_PROC_PHASE, delay);
@ -525,7 +523,7 @@ void NetworkInterfaceTlm::update_credits(tlm_gp&trans, int added_creds){
int p_id = get_packet_id_from_extension(trans);
//if(type_name == TYPE_PACKET || (type_name == TYPE_ROUT_CONFIG && p_id != -1)){
if (!((type_name == TYPE_ROUT_CONFIG && p_id == -1) ||
(type_name.find(TYPE_STREAM) != string::npos))){
type_name == TYPE_STREAM)){
credit_counter += added_creds;
log_info("Credit counter updated: "+to_string(credit_counter));
}

View file

@ -266,11 +266,6 @@ public:
*/
void update_credits(tlm_gp&trans, int added_creds);
/** Log debug
* @param msg log message
*/
void log_debug(string msg);
/** Log info
* @param msg log message
*/

View file

@ -73,10 +73,7 @@ void ProcessingElementCS::thread(){
// Explain: countLeft is for sending, neededAmount is for receiving
countLeft.at(dest)--;
log_send_rec("Task " + curr_task_id + " sent a packet of type " +
std::to_string(dest.dataType) + " (msg: " +
std::to_string(dest.msg.config_link) + "-" +
std::to_string(dest.msg.dest_link) + ")" +
" destined for task " +
std::to_string(dest.dataType) + " destined for task " +
std::to_string(dest.destinationTask) +
" (repeat count: " +
std::to_string(taskRepeatLeft.at(destToTask.at(dest))) +
@ -185,13 +182,12 @@ void ProcessingElementCS::execute(TaskCS& task)
else {
// EXPLAIN: go through all requirements and add them to lists
for (DataRequirement& r : task.requirements) {
log_info("Requirement of id " + std::to_string(r.id) +
" of type " + std::to_string(r.dataType) +
log_info("Requirement of type "+std::to_string(r.dataType)+
" created for task " + std::to_string(task.id));
neededFor[r.dataType].insert(task);
int amount_req = globalResources.getRandomIntBetween(r.minCount, r.maxCount);
neededAmount[std::make_pair(task, r.dataType)] = amount_req;
//neededAmountHold[std::make_pair(task, r.dataType)] = amount_req;
neededAmountHold[std::make_pair(task, r.dataType)] = amount_req;
needs[task].insert(r.dataType);
}
// maybe all packets have arrived so we check the requirements
@ -223,7 +219,7 @@ void ProcessingElementCS::receive()
receivedData[type] = 1;
}
log_send_rec("Packet from type " + std::to_string(type) +
" arrived at PE " + std::string(this->name()) + " from node " +
" arrived at PE " + std::to_string(this->id) + " from node " +
std::to_string(received_packet->src.id) +
" - current received packet counter: " + std::to_string(receivedData[type]));
@ -242,25 +238,20 @@ void ProcessingElementCS::startSending(TaskCS& task)
// EXPLAIN: There are multiple possibilities where to send the data. Select one based on probability
float rn = globalResources.getRandomFloatBetween(0, 1);
int numOfPoss = task.possibilities.size();
int numOfDests = 0;
if(numOfPoss) {
numOfDests = task.possibilities.at(0).dataDestinations.size();
}
// for tasks with no destinations, only requirements
if (!numOfDests) {
taskRepeatLeft.at(task)--;
if (!numOfPoss) {
if (taskRepeatLeft.at(task)){
for (DataRequirement& r : task.requirements) {
log_info("Requirement of id " + std::to_string(r.id) +
" of type " + std::to_string(r.dataType) +
log_info("Requirement of type "+std::to_string(r.dataType)+
" created for task " + std::to_string(task.id));
neededFor[r.dataType].insert(task);
int amount_req = globalResources.getRandomIntBetween(r.minCount, r.maxCount);
neededAmount[std::make_pair(task, r.dataType)] = amount_req;
//neededAmountHold[std::make_pair(task, r.dataType)] = amount_req;
neededAmountHold[std::make_pair(task, r.dataType)] = amount_req;
needs[task].insert(r.dataType);
}
checkNeed();
taskRepeatLeft.at(task)--;
}
}
@ -318,9 +309,6 @@ void ProcessingElementCS::checkNeed()
an error where the requirement in a task wouldn't be read */
// uncommented because data that had arrived wasn't diminishing from neededAmount counter
neededAmount.at(pair) -= receivedData.at(type);
log_send_rec("Received data of type " + std::to_string(type)+
" for task " + std::to_string(t.id) + ": " +
std::to_string(receivedData.at(type)));
//neededAmount.at(pair)--;
/* This line was commented out because if a task requires several packets from several data types,
it says that the task is finished receiving the required packets while in fact, it still needs some packets.
@ -364,20 +352,20 @@ void ProcessingElementCS::checkNeed()
/******************* LOG FUNCTIONS ********************/
void ProcessingElementCS::log_info(std::string msg){
SC_REPORT_INFO(PE_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
SC_REPORT_INFO(PE_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
}
void ProcessingElementCS::log_warn(std::string msg){
SC_REPORT_WARNING(PE_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
SC_REPORT_WARNING(PE_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
}
void ProcessingElementCS::log_error(std::string msg){
SC_REPORT_ERROR(PE_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
SC_REPORT_ERROR(PE_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
}
void ProcessingElementCS::log_send_rec(std::string msg){
if (DEBUG) {
SC_REPORT_INFO(PE_PG_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
SC_REPORT_INFO(PE_PG_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
}
}

View file

@ -32,7 +32,7 @@ public:
std::map<dataTypeID_t, std::set<TaskCS>> neededFor;
std::map<std::pair<TaskCS, dataTypeID_t>, int> neededAmount;
// this variable holds the value of neededAmount (doesn't decrease)
//std::map<std::pair<TaskCS, dataTypeID_t>, int> neededAmountHold;
std::map<std::pair<TaskCS, dataTypeID_t>, int> neededAmountHold;
std::map<TaskCS, std::set<dataTypeID_t>> needs;
std::map<dataTypeID_t, int> receivedData;
std::map<DataDestinationCS, TaskCS> destToTask;

View file

@ -195,20 +195,19 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){
": " + to_string(credit_counter[link]));
send_end_response(link, trans);
// Moved here, because here is where the credits are received
log_debug(link, trans, "Issuing next request");
start_pend_req(link, trans);
}
}
void TlmRouter::start_pend_req(int rel_link, tlm_gp& trans){
log_debug(rel_link, trans, "Checking if request are pending");
// find pending link
for(uint8_t dir=0; dir<Direction::num_dirs; dir++){
if( !nxt_send_data_pend[dir].empty() ){
// check pending link valid and send data
Direction rel_dest = send_data_in_prog_dest[dir].front();
if(rel_dest == rel_link){
log_debug(rel_link, trans, "Issuing next request");
tlm_gp* nxt_trans = nxt_send_data_pend[dir].front();
bool data_sent = send_data(dir, rel_link, *nxt_trans);
if (!data_sent){

View file

@ -149,10 +149,11 @@ tlm_sync_enum TlmRouterCS::send_end_req(int link, tlm_gp& trans){
trans.release();
return status;
}
delay = INTERN_PROC_CS_DELAY;
delay = SC_ZERO_TIME; // no processing in circuit switching routers
// Queue internal event to mark beginning of response
string type_name = get_type_name(get_type_from_extension(trans));
phase = type_name !="ConfigRouter" ? INTERNAL_PROC_PHASE : CONF_ROUT_PHASE;
phase = (type_name == TYPE_STREAM) ? INTERNAL_PROC_PHASE :
CONF_ROUT_PHASE;
log_info(link, trans, "Type of processed message: " + type_name);
target_peq.notify(trans, phase, delay);
@ -168,6 +169,7 @@ void TlmRouterCS::switching(int link, tlm_gp& trans){
if (destination == Dir::num_dirs) {
data_sent = true;
check_transaction(link, trans);
// change to fatal?
log_warn(link, trans, "Routing failed. Message couldn't be delivered");
}
else{
@ -180,19 +182,6 @@ void TlmRouterCS::switching(int link, tlm_gp& trans){
}
}
bool TlmRouterCS::send_data(int link, int dest_link, tlm_gp& trans){
log_debug(link,trans,"Send data to link:"+DIR::toString(dest_link));
// check credits or that previous message is complete
if (credit_counter[dest_link] > 0){
send_begin_req(link, trans, dest_link);
return true;
}
else {
log_warn(link,trans, "Waiting for downstream Router!");
report.update_throttled_count(router_name);
return false;
}
}
int TlmRouterCS::get_type_from_extension(tlm_gp& trans){
link_extension* extension;

View file

@ -96,16 +96,6 @@ class TlmRouterCS : public TlmRouter{
*/
void switching(int link, tlm_gp& trans);
/**
* Send data
*
* @param link active link
* @param dest_link destination link to send the data to
* @param trans TLM generic payload object
* @return true if data was sent, otherwise, false
*/
bool send_data(int link, int dest_link, tlm_gp& trans);
/**
* Begin request
*

View file

@ -0,0 +1,45 @@
/*******************************************************************************
* Copyright (C) 2024 Juan Neyra
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
******************************************************************************/
#pragma once
#include "systemc.h"
#include <set>
#include <utils/PacketFactoryCS.h>
#include "ratatoskrUtils/utils/GlobalResources.h"
#include "ratatoskrUtils/utils/GlobalReport.h"
#include "ratatoskrUtils/utils/Report.h"
#include "ratatoskrUtils/container/Container.h"
class NetworkParticipantCS {
public:
GlobalResources& globalResources = GlobalResources::getInstance();
GlobalReport& globalReport = GlobalReport::getInstance();
Report& rep = Report::getInstance();
PacketFactoryCS& packetFactory = PacketFactoryCS::getInstance();
virtual void initialize() = 0;
virtual void bind(Connection*, SignalContainer*, SignalContainer*) = 0;
~NetworkParticipantCS() = default;
};

View file

@ -31,19 +31,17 @@
using namespace sc_dt;
#define DEBUG true
#define DEBUG false
// router paremters
#define NUM_CREDITS 7
// router delays
//clk=1GHz
#define REQ_INIT_DELAY 1
#define REQ_END_DELAY 1
#define REQ_INIT_DELAY 10
#define REQ_END_DELAY 10
#define INTERN_PROC_DELAY 100
#define INTERN_PROC_CS_DELAY 10
#define RESP_END_DELAY 1
#define RESP_END_DELAY 10
#define UNITS_DELAY SC_NS
//write in report
// types
typedef tlm::tlm_generic_payload tlm_gp;

View file

@ -86,7 +86,7 @@ void TlmReport::write_report(){
cout << "Writing system elapsed time" << endl << endl;
stringstream ss_msg_elapsed_time;
ss_msg_elapsed_time << "Elapsed time: " << this->system_elapsed_time << endl;
ss_msg_throttled << "Elapsed time: " << this->system_elapsed_time << endl;
log_file.open(ELAPSED_TIME_FILE);
log_file << ss_msg_elapsed_time.str();

View file

@ -57,7 +57,7 @@ class TlmReport {
/**
* Updates system elapsed time attribute
*/
void update_system_elapsed_time(string system_elapsed_time);
void update_system_elapsed_time(string system_elapsed_time)
private:
std::map<string, int> packet_count;