Compare commits

...

3 commits

46 changed files with 32669 additions and 7429 deletions

4
.gitignore vendored
View file

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

View file

@ -50,6 +50,4 @@ 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: 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
# TODO: Run everything again

View file

@ -93,7 +93,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="6"/>
<task value="7"/>
</destination>
</destinations>
</possibility>
@ -120,7 +120,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="6"/>
<task value="7"/>
</destination>
</destinations>
</possibility>
@ -147,7 +147,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="6"/>
<task value="7"/>
</destination>
</destinations>
</possibility>
@ -174,7 +174,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="6"/>
<task value="7"/>
</destination>
</destinations>
</possibility>
@ -201,7 +201,7 @@
<interval min="100" max="100"/>
<count min="1" max="1"/>
<type value="0"/>
<task value="6"/>
<task value="7"/>
</destination>
</destinations>
</possibility>
@ -214,9 +214,9 @@
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="0"/>
<type value="2"/>
<source value="0"/>
<count max="5" min="5"/>
<count max="1" min="1"/>
</requirement>
</requires>
<generates>
@ -227,35 +227,7 @@
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<count min="1" max="1"/>
<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"/>
<type value="0"/>
<task value="7"/>
</destination>
</destinations>
@ -269,11 +241,53 @@
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="1"/>
<source value="4"/>
<type value="0"/>
<source value="6"/>
<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">
@ -306,6 +320,11 @@
<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.xml</nocFile>
<nocFile>config/efficienet/net_conf.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/efficienet/data_Flits.xml</dataFile>
<mapFile>config/efficienet/map.xml</mapFile>
<dataFile>config/efficienet/data_Flits_conf.xml</dataFile>
<mapFile>config/efficienet/map_conf.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

@ -0,0 +1,561 @@
<?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

@ -0,0 +1,599 @@
<?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>

1612
config/efficienet/net_conf.xml Executable file

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.xml</nocFile>
<nocFile>config/mobilenet/net_conf.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/mobilenet/data_R1000.xml</dataFile>
<mapFile>config/mobilenet/map.xml</mapFile>
<dataFile>config/mobilenet/data_R1000_conf_non_opt.xml</dataFile>
<mapFile>config/mobilenet/map_conf_non_opt.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

@ -0,0 +1,306 @@
<?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

@ -0,0 +1,343 @@
<?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>

1612
config/mobilenet/net_conf.xml Executable file

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/ai_test2/net.xml</nocFile>
<nocFile>config/mobilenet_fb/net_conf.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>
</noc>
<application>
<benchmark>task</benchmark>
<dataFile>config/ai_test2/data.xml</dataFile>
<mapFile>config/ai_test2/map.xml</mapFile>
<dataFile>config/mobilenet_fb/data_conf.xml</dataFile>
<mapFile>config/mobilenet_fb/map_conf.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

@ -0,0 +1,342 @@
<?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

@ -0,0 +1,377 @@
<?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>

1612
config/mobilenet_fb/net_conf.xml Executable file

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_test/net.xml</nocFile>
<nocFile>config/simple_2_layer_test/net.xml</nocFile>
<flitsPerPacket value="1"/>
<bitWidth value="32"/>
<Vdd value="5"/>

View file

@ -179,20 +179,10 @@
<requirement id="0">
<type value="1"/>
<source value="4"/>
<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"/>
<count max="3" min="3"/>
</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

@ -0,0 +1,597 @@
<?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

@ -0,0 +1,83 @@
<?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,19 +1,47 @@
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]
sourc_x = 0
sourc_y = 1
#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]
dest_x = 3
dest_y = 3
# 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]
rout_type = 0
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]
id = 0
print("**********************FOR data.xml**********************")
id = write_config_tasks(sourc_x, sourc_y, dest_x, dest_y, id, rout_type)
routing_typ = 0 # xy routing
print()
print("**********************FOR map.xml**********************")
write_map(sourc_x, sourc_y, dest_x, dest_y, id, rout_type)
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()

View file

@ -2,8 +2,8 @@ from enum import Enum
MAX_ROUT_Y = 4
GEN_TASK_START = """ <tasks>
<task id="0">
GEN_TASK_START = """
<task id="{}">
<start min="0" max="0"/>
<duration min="-1" max="-1"/>
<repeat min="1" max="1"/>
@ -21,7 +21,6 @@ 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"/>
@ -29,8 +28,8 @@ LAST_TASK = """ <task id="{}">
<repeat max="1" min="1"/>
<requires>
<requirement id="0">
<type value="0"/>
<source value="0"/>
<type value="{}"/>
<source value="{}"/>
<count max="{}" min="{}"/>
</requirement>
</requires>
@ -38,8 +37,8 @@ LAST_TASK = """ <task id="{}">
REQ_TASK_REQ = """ <requires>
<requirement id="0">
<type value="2"/>
<source value="0"/>
<type value="{}"/>
<source value="{}"/>
<count max="1" min="1"/>
</requirement>
</requires>"""
@ -49,23 +48,24 @@ REQ_TASK_GEN = """ <generates>
<probability value="1"/>
<destinations>
<destination id="0">
<delay min="0" max="100"/>
<interval min="100" max="100"/>
<delay min="50" max="50"/>
<interval min="20" max="20"/>
<count min="1" max="1"/>
<type value="0"/>
<type value="{}"/>
<task value="{}"/>
</destination>
</destinations>
</possibility>
</generates>"""
</generates>
</task>"""
DEST_HEADER = " <destination id=\"{}\">"
DEST_H_END = " </destination>"
DELAY_TAG = " <delay min=\"0\" max=\"100\"/>"
INTERVAL_TAG = " <interval min=\"100\" max=\"100\"/>"
DELAY_TAG = " <delay min=\"50\" max=\"50\"/>"
INTERVAL_TAG = " <interval min=\"20\" max=\"20\"/>"
COUNT_TAG = " <count min=\"1\" max=\"1\"/>"
TYPE_TAG = " <type value=\"2\"/>"
TYPE_TAG = " <type value=\"{}\"/>"
TASK_TAG = " <task value=\"{}\"/>"
CONFIG_TAG = " <config link=\"{}\" destination=\"{}\"/>"
@ -76,6 +76,18 @@ 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,107 +1,275 @@
from templates import *
from bs4 import BeautifulSoup
def get_opposs_dir(dir):
if DIRS.LOCAL:
if dir == DIRS.LOCAL:
return DIRS.LOCAL
elif DIRS.EAST:
elif dir == DIRS.EAST:
return DIRS.WEST
elif DIRS.WEST:
elif dir == DIRS.WEST:
return DIRS.EAST
elif DIRS.NORTH:
elif dir == DIRS.NORTH:
return DIRS.SOUTH
elif DIRS.SOUTH:
elif dir == DIRS.SOUTH:
return DIRS.NORTH
elif DIRS.UP:
elif dir == DIRS.UP:
return DIRS.DOWN
elif DIRS.DOWN:
elif dir == DIRS.DOWN:
return DIRS.UP
else:
return DIRS.INVALID
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
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
else:
link = get_opposs_dir(dir).value
dest = dir.value
print(CONFIG_TAG.format(link, dest))
print(DEST_H_END)
id+=1
return id
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
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_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_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)
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)
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)
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"
write_req_task(id)
print()
print(LAST_TASK.format(id, id-1, id-1))
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)
elif rout_type==1: # YX routing
print(GEN_TASK_START)
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"
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)
self.write_req_task()
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
#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
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
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()

View file

@ -0,0 +1,25 @@
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

@ -0,0 +1,44 @@
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

@ -0,0 +1,84 @@
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 == TYPE_STREAM ? 1:0;
int lay = (type_name.find(TYPE_STREAM) != string::npos) ? 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,7 +312,6 @@ 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
@ -320,6 +319,9 @@ 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);
}
}
@ -422,7 +424,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) != TYPE_STREAM){
if(get_type_name(p->dataType).find(TYPE_STREAM) == string::npos){
if(resp_in_progress) {
log_info("Previous response transaction still in progress, scheduling it for next time");
nxt_resp_pend.push(&trans);
@ -476,7 +478,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 == TYPE_STREAM ? 1:0;
int lay = (type_name.find(TYPE_STREAM) != string::npos) ? 1:0;
tlm::tlm_sync_enum status = (*target[lay])->nb_transport_bw(trans,
bw_phase, delay);
if (status == tlm::TLM_COMPLETED) {
@ -486,7 +488,7 @@ tlm::tlm_sync_enum NetworkInterfaceTlm::send_end_req(tlm_gp& trans){
}
// Queue internal event to mark beginning of response
delay = type_name != TYPE_STREAM ?
delay = (type_name.find(TYPE_STREAM) == string::npos) ?
delay + sc_time(INTERN_PROC_DELAY, UNITS_DELAY) :
SC_ZERO_TIME; // no processing on stream
target_peq.notify(trans, INTERNAL_PROC_PHASE, delay);
@ -523,7 +525,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 == TYPE_STREAM)){
(type_name.find(TYPE_STREAM) != string::npos))){
credit_counter += added_creds;
log_info("Credit counter updated: "+to_string(credit_counter));
}

View file

@ -266,6 +266,11 @@ 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,7 +73,10 @@ 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) + " destined for task " +
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.destinationTask) +
" (repeat count: " +
std::to_string(taskRepeatLeft.at(destToTask.at(dest))) +
@ -182,12 +185,13 @@ 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 type "+std::to_string(r.dataType)+
log_info("Requirement of id " + std::to_string(r.id) +
" 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
@ -219,7 +223,7 @@ void ProcessingElementCS::receive()
receivedData[type] = 1;
}
log_send_rec("Packet from type " + std::to_string(type) +
" arrived at PE " + std::to_string(this->id) + " from node " +
" arrived at PE " + std::string(this->name()) + " from node " +
std::to_string(received_packet->src.id) +
" - current received packet counter: " + std::to_string(receivedData[type]));
@ -238,20 +242,25 @@ 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 (!numOfPoss) {
if (!numOfDests) {
taskRepeatLeft.at(task)--;
if (taskRepeatLeft.at(task)){
for (DataRequirement& r : task.requirements) {
log_info("Requirement of type "+std::to_string(r.dataType)+
log_info("Requirement of id " + std::to_string(r.id) +
" 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)--;
}
}
@ -309,6 +318,9 @@ 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.
@ -352,20 +364,20 @@ void ProcessingElementCS::checkNeed()
/******************* LOG FUNCTIONS ********************/
void ProcessingElementCS::log_info(std::string msg){
SC_REPORT_INFO(PE_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
SC_REPORT_INFO(PE_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
}
void ProcessingElementCS::log_warn(std::string msg){
SC_REPORT_WARNING(PE_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
SC_REPORT_WARNING(PE_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
}
void ProcessingElementCS::log_error(std::string msg){
SC_REPORT_ERROR(PE_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
SC_REPORT_ERROR(PE_LOG, ("PE->" + std::string(this->name()) + ": " + msg).c_str());
}
void ProcessingElementCS::log_send_rec(std::string msg){
if (DEBUG) {
SC_REPORT_INFO(PE_PG_LOG, ("ID->" + std::to_string(this->id) + ": " + msg).c_str());
SC_REPORT_INFO(PE_PG_LOG, ("PE->" + std::string(this->name()) + ": " + 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,19 +195,20 @@ 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,11 +149,10 @@ tlm_sync_enum TlmRouterCS::send_end_req(int link, tlm_gp& trans){
trans.release();
return status;
}
delay = SC_ZERO_TIME; // no processing in circuit switching routers
delay = INTERN_PROC_CS_DELAY;
// Queue internal event to mark beginning of response
string type_name = get_type_name(get_type_from_extension(trans));
phase = (type_name == TYPE_STREAM) ? INTERNAL_PROC_PHASE :
CONF_ROUT_PHASE;
phase = type_name !="ConfigRouter" ? INTERNAL_PROC_PHASE : CONF_ROUT_PHASE;
log_info(link, trans, "Type of processed message: " + type_name);
target_peq.notify(trans, phase, delay);
@ -169,7 +168,6 @@ 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{
@ -182,6 +180,19 @@ 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,6 +96,16 @@ 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

@ -1,45 +0,0 @@
/*******************************************************************************
* 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,17 +31,19 @@
using namespace sc_dt;
#define DEBUG false
#define DEBUG true
// router paremters
#define NUM_CREDITS 7
// router delays
#define REQ_INIT_DELAY 10
#define REQ_END_DELAY 10
//clk=1GHz
#define REQ_INIT_DELAY 1
#define REQ_END_DELAY 1
#define INTERN_PROC_DELAY 100
#define RESP_END_DELAY 10
#define INTERN_PROC_CS_DELAY 10
#define RESP_END_DELAY 1
#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_throttled << "Elapsed time: " << this->system_elapsed_time << endl;
ss_msg_elapsed_time << "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;