Git Product home page Git Product logo

noxim's Introduction

Noxim - the NoC Simulator

Welcome to Noxim, the Network-on-Chip Simulator developed at the University of Catania (Italy). The Noxim simulator is developed using SystemC, a system description language based on C++, and it can be downloaded under GPL license terms.

If you use Noxim in your research, we would appreciate the following citation in any publications to which it has contributed:

V. Catania, A. Mineo, S. Monteleone, M. Palesi and D. Patti, "Improving the energy efficiency of wireless Network on Chip architectures through online selective buffers and receivers shutdown," 2016 13th IEEE Annual Consumer Communications & Networking Conference (CCNC), Las Vegas, NV, 2016, pp. 668-673, doi: 10.1109/CCNC.2016.7444860. Scopus reference

V. Catania, A. Mineo, S. Monteleone, M. Palesi and D. Patti, "Energy efficient transceiver in wireless Network on Chip architectures," 2016 Design, Automation & Test in Europe Conference & Exhibition (DATE), Dresden, 2016, pp. 1321-1326. Scopus reference

Registration

To receive information about new Noxim features, updates and events, please register here: Registration Form

What's New ?

[March 2018]

  • Support for virtual channels for improved traffic management
  • Support for multiple radio-frequency channels for each Radio-Hub
  • New yaml examples (please update yours, since format is slightly different)

[April 2017] Noxim tutorial slides from lecture given at "Advanced Computer Architectures" (ELEC3219 - University of Southampton)

[June 2015] Massively improved version of Noxim. Major changes include:

  • Wireless transmission support
  • Hub connections for eterogeneous topologies
  • YAML configuration file for all features/parameters
  • Totally rewritten power model to support fine-grained estimation
  • Modular plugin-like addition of Routing/Selection strategies
  • Optional accurate logs for deep debugging (see DEBUG in Makefile)

Installation & Quick Start

If you are working on Ubuntu, you can install noxim and all the dependencies with the following command: (BE sure of copying the entire line, i.e., ending with "ubuntu.sh)

bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/davidepatti/noxim/master/other/setup/ubuntu.sh)

Similarly for macOS:

/bin/zsh -c "$(curl -fsSL https://raw.githubusercontent.com/davidepatti/noxim/master/other/setup/macos.zsh)"

Or, to get just the latest master sources, you can run:

git clone https://github.com/davidepatti/noxim.git

Noxim has a command line interface for defining several parameters of a NoC. In particular the user can customize the network size, buffer size, packet size distribution, routing algorithm, selection strategy, packet injection rate, traffic time distribution, traffic pattern, hot-spot traffic distribution.

The simulator allows NoC evaluation in terms of throughput, delay and power consumption. This information is delivered to the user both in terms of average and per-communication results.

In detail, the user is allowed to collect different evaluation metrics including the total number of received packets/flits, global average throughput, max/min global delay, total energy consumption, per-communications delay/throughput/energy etc.

The Noxim simulator is shipped along with Noxim Explorer, a tool useful during the design space exploration phase. Infact, Noxim Explorer executes many simulations using Noxim in order to explore the design space, and modifying the configuration parameters for each simulation. Noxim Explorer will create new configuration parameters for you, or complete the exploration according to the information read from a script (known as exploration script or space file).

noxim's People

Contributors

andreaskurth avatar davidepatti avatar fafa1971 avatar inventor02 avatar sirine7878 avatar smonteleone avatar t-bre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

noxim's Issues

Power consumption of routing algorithms

Hi,
In "bin/power.yaml" , Static and Dynamic power consumption are defined for XY and DYAD routing algorithms.
Would you please explain a little more about the mechanism of computation of power consumption for
a routing algorithm?
Thanks a lot

What is butterfly traffic distribution?

Hi, I can't find any literature about butterfly traffic distribution. There's butterfly topology, obviously they are not the same thing. I can't find the code in noxim related to it either.

Can't *Make* noxim correctly

I'm using ubuntu 14.04, the installation directory of systemc-2.3.2 is /usr/include/systemc-2.3.2 and YAML is /usr/include/yaml-cpp. So I changed the noxim Makefile to this:

LIBRARIES CONFIGURATION

SYSTEMC := /usr/include/systemc-2.3.2
YAML := /usr/include/yaml-cpp

When I make the file, there's an error like this:
build/Buffer.o: In function _GLOBAL__sub_I__ZN6BufferC2Ev': Buffer.cpp:(.text.startup+0x2e): undefined reference to sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)'
build/Channel.o: In function _GLOBAL__sub_I__ZN7Channel11b_transportEiRN3tlm19tlm_generic_payloadERN7sc_core7sc_timeE': Channel.cpp:(.text.startup+0x2e): undefined reference to sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)'
build/ConfigurationManager.o: In function _GLOBAL__sub_I_config': ConfigurationManager.cpp:(.text.startup+0x2d): undefined reference to sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)'
build/GlobalStats.o: In function _GLOBAL__sub_I__ZN11GlobalStatsC2EPK3NoC': GlobalStats.cpp:(.text.startup+0x2e): undefined reference to sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)'
build/Hub.o: In function _GLOBAL__sub_I__ZN3Hub9tile2PortEi': Hub.cpp:(.text.startup+0x2e): undefined reference to sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)'
build/Initiator.o:Initiator.cpp:(.text.startup+0x2e): more undefined references to `sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)' follow
collect2: error: ld returned 1 exit status

I don't know what's wrong, can anyone help me?

Mapping in Noxim

Hi,
I'm going to implement a new mapping algorithm in the Noxim for a research project.
Please guide me how do I use the Noxim for mapping purpose.

Thanks in advance

Running Config file and Facing Error.

I've tried to use another topology (not mesh) in Noxim. So I've changed some codes in source code files .After compiling Noxim, I tried to run default_config.yaml, but I was faced with this error:
....
Loading configuration from"/home/..."... Done
Loading power from file "power.yaml"... Done
noxim: libs/system-2.3.1/include/sysc/communication/sc_port.h"541" void sc_core::sc_port_b::add_interface(sc_core::sc_interface*) [with IF = sc_core::sc_signal_in_if] Assertion 'iface !- 0' failed.
Aborted (core dumped)

I would be very thankful if you could tell me the reason of this error, and how I can fix it.
Thanks alot
Rachel

Verbosity Option not working?

Hello,

I was working with the program and trying to understand the difference between the DETAILED and VERBOSE options. The detailed option works great, outputs a lot of data.

But when I set different verbosity levels, there doesn't seem to be any change in output. Has this option been deprecated?

[13:05:31] mikeyvxt:bin git:(master*) $ ./noxim -config default_config.yaml -verbose 3

        SystemC 2.3.1-Accellera --- May  4 2016 15:46:52
        Copyright (c) 1996-2014 by all Contributors,
        ALL RIGHTS RESERVED

		Noxim - the NoC Simulator
		(C) University of Catania

Loading configuration from file "default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
Reset for 1000 cycles... 
 done! Now running for 10000 cycles...
Noxim simulation completed.
 ( 11000 cycles executed)
% Total received packets: 2231
% Total received flits: 17855
% Received/Ideal flits Ratio: 0.991944
% Average wireless utilization: 0
% Global average delay (cycles): 14.5177
% Max delay (cycles): 100
% Network throughput (flits/cycle): 1.98389
% Average IP throughput (flits/cycle/IP): 0.0793556
% Total energy (J): 3.35602e-06
% 	Dynamic energy (J): 2.69689e-07
% 	Static energy (J): 3.08633e-06
[13:05:36] mikeyvxt:bin git:(master*) $ ./noxim -config default_config.yaml -verbose 1

        SystemC 2.3.1-Accellera --- May  4 2016 15:46:52
        Copyright (c) 1996-2014 by all Contributors,
        ALL RIGHTS RESERVED

		Noxim - the NoC Simulator
		(C) University of Catania

Loading configuration from file "default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
Reset for 1000 cycles... 
 done! Now running for 10000 cycles...
Noxim simulation completed.
 ( 11000 cycles executed)
% Total received packets: 2303
% Total received flits: 18413
% Received/Ideal flits Ratio: 1.02294
% Average wireless utilization: 0
% Global average delay (cycles): 14.307
% Max delay (cycles): 83
% Network throughput (flits/cycle): 2.04589
% Average IP throughput (flits/cycle/IP): 0.0818356
% Total energy (J): 3.35523e-06
% 	Dynamic energy (J): 2.689e-07
% 	Static energy (J): 3.08633e-06
[13:08:35] mikeyvxt:bin git:(master*) $ 

install noxim

hi
i have some problems in install noxim on ubuntu
is there any way to install it on windows??

gdb noxim

Hi,
How to debug noxim with gdb? I try to debug the executable file,when I use a list command, the gdb just list the code belong to another source file, like this:
`❯ gdb noxim
Password:

GNU gdb (GDB) 8.0.1

Copyright (C) 2017 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.

This GDB was configured as "x86_64-apple-darwin17.0.0".

Type "show configuration" for configuration details.

For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.

Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.

For help, type "help".

Type "apropos word" to search for commands related to "word"...
Reading symbols from noxim...done.

(gdb) list
1 #include "Selection_RANDOM.h"
2
3 SelectionStrategiesRegister Selection_RANDOM::selectionStrategiesRegister("RANDOM", getInstance());
4
5 Selection_RANDOM * Selection_RANDOM::selection_RANDOM = 0;
6
7 Selection_RANDOM * Selection_RANDOM::getInstance() {
8 if ( selection_RANDOM == 0 )
9 selection_RANDOM = new Selection_RANDOM();
10
(gdb) `
The code belongs to /noxim/src/selectionStrategies/Selection_RANDOM.cpp, can't figure out why this happened.

I try to set breakpoint in gdb, but it can't stop the execution of noxim, maybe the breakpoint is in Selection_RANDOM.cpp. Then how can I debug noxim with gdb?

a error occured during noxim first "make"

the error message is following:
~/Desktop/noxim/noxim-master/bin$ make
g++ -O3 -Wall -DSC_NO_WRITE_CHECK -I../src -isystem /home/Desktop/systemc-2.3.1a/include -I/home/Desktop/yaml-cpp/include -c ../src/emitfromevents.cpp -o build/emitfromevents.o
In file included from ../src/emitfromevents.cpp:5:0:
../src/yaml-cpp/emitter.h:125:8: error: ‘unique_ptr’ in namespace ‘std’ does not name a template type
std::unique_ptr m_pState;
^
Makefile:43: recipe for target 'build/emitfromevents.o' failed
make: *** [build/emitfromevents.o] Error 1

I want to know what may cause this error?Thank you very much.

Results in .m file

Hello
How can I see more results in Matlab with running the following command line:
./noxim -config ../config_examples/default_config.yaml

in the old version of Noxim, we can see this results with m.file.

Error: (E549) uncaught exception: yaml-cpp: error at line 0, column 0: invalid node; this may result from using a map iterator as a sequence iterator, or vice-versa

Hello,
when I execute Noxim, I have the following error:
./noxim -config ../config_examples/default_config.yaml

SystemC 2.3.1-Accellera --- Nov 20 2017 10:56:41
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED

Noxim - the WNoC Simulator
(C) University of Catania

Adaptations by LGGM - UdeA

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done

Error: (E549) uncaught exception: yaml-cpp: error at line 0, column 0: invalid node; this may result from using a map iterator as a sequence iterator, or vice-versa
In file: ../../../../src/sysc/kernel/sc_except.cpp:100

Have I done something wrong?

How to add wakeup latency to Router?

I am trying to power gate router and then power on. There will be few cycles latency before power gated router starts working. Would like to know how we can add latency in the simulation for only one object such as router and how we can keep track of no. of cycles executed till any point of time?

Order not enforced between Router::rxProcess() and Router::txProcess()

Router.cpp

Model execution can behave differently if rxProcess() is called before txProcess(). This way, txProcess() views the flit stored at buffer[i] at the same cycle at which the flit was stored by rxProcess().

This happens because SystemC does not guarantee the execution order of SC_METHODs happening at the same clock cycle. It looks like the definition order at the constructor of the module is taken into consideration, but it does not enforce it necessarily.

It must be enforced the following order of the operations: TX before RX.

How to run Noxim in Mac OS?

Hi there..
I am wondering, is it possible to run noxim in Mac OS terminal? I've successfully installed system-c and yaml, but I could not run ./noxim through Mac OS Terminal.

Thanks in advanced.

Error: (E549) uncaught exception: yaml-cpp: error at line 0, column 0: invalid node; this may result from using a map iterator as a sequence iterator, or vice-versa

I've installed noxim in my Ubuntu 16.04 machine, with libyaml-cpp-dev and libboost-dev packages from official Ubuntu repositories.

Executing the command:

[...]/noxim/bin$ ./noxim -config ../config_examples/default_config.yaml 

        SystemC 2.3.1-Accellera --- Apr  7 2017 12:26:23
        Copyright (c) 1996-2014 by all Contributors,
        ALL RIGHTS RESERVED

		Noxim - the NoC Simulator
		(C) University of Catania

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done

Error: (E549) uncaught exception: yaml-cpp: error at line 0, column 0: invalid node; 
this may result from using a map iterator as a sequence iterator, or vice-versa
In file: ../../../../src/sysc/kernel/sc_except.cpp:100

Have I done something wrong? I just followed the install instructions in the doc/INSTALL.txt file...

Noxim Simulation Not Running, Assertion Error

Summary
When I run noxim, I am returned an error saying it cannot find a YAML configuration file. The command I ran is this:
bin$ ./noxim -sim 40000 -warmup 5000 -dimx 8 -dimy 8 -buffer 2
This returns:
No YAML configuration file found! Use -config to load examples from config_examples folder

If I run the command with the -config flag, then I get a segfault with a core dump.
bin$ ./noxim -config
returns:
Segmentation fault (core dumped)

Finally, if I run the command giving it a config file as an argument, it returns a separate error.
./noxim -config ../config_examples/default_config.yaml
This returns:

        SystemC 2.3.1-Accellera --- Jun 14 2015 20:36:52
        Copyright (c) 1996-2014 by all Contributors,
        ALL RIGHTS RESERVED

                Noxim - the NoC Simulator
                (C) University of Catania

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
noxim: libs/systemc-2.3.1/include/sysc/kernel/sc_process.h:616: void sc_core::sc_process_b::reference_increment(): Assertion `m_references_n != 0' failed.
Aborted (core dumped)

Steps To Recreate
There were actually problems installing noxim. I run Ubuntu 16.04, and I ran the install script on this repo's README (see https://github.com/davidepatti/noxim/blob/master/other/setup/ubuntu.sh). The first time I ran it, there were errors due to certain files requiring compiler support for ISO C++ 2011 standard. Here is the error output:

g++ -O3 -Wall  -I../src -isystem libs/systemc-2.3.1/include -Ilibs/yaml-cpp/include -c ../src/Stats.cpp -o build/Stats.o
In file included from /usr/include/c++/5/type_traits:35:0,
                 from libs/yaml-cpp/include/yaml-cpp/node/detail/impl.h:12,
                 from libs/yaml-cpp/include/yaml-cpp/yaml.h:20,
                 from ../src/Power.h:18,
                 from ../src/Stats.h:18,
                 from ../src/Stats.cpp:11:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

So I went into the bin directory and modified the Makefile to include -std=c++11 flag in OPT, and then it compiled the rest of the files successfully, proceeding to break again on line 47 from the setup script.

Here is the output from an increased backtrace from gdb. I'm not sure what to make of it.

Loading configuration from file "config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
noxim: libs/systemc-2.3.1/include/sysc/kernel/sc_process.h:616: void sc_core::sc_process_b::reference_increment(): Assertion `m_references_n != 0' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff6e1d418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  0x00007ffff6e1d418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007ffff6e1f01a in __GI_abort () at abort.c:89
#2  0x00007ffff6e15bd7 in __assert_fail_base (fmt=<optimized out>, 
    assertion=assertion@entry=0x4a8710 "m_references_n != 0", 
    file=file@entry=0x4a8a00 "libs/systemc-2.3.1/include/sysc/kernel/sc_process.h", 
    line=line@entry=616, 
    function=function@entry=0x4ab8e0 <sc_core::sc_process_b::reference_increment()::__PRETTY_FUNCTION__> "void sc_core::sc_process_b::reference_increment()") at assert.c:92
#3  0x00007ffff6e15c82 in __GI___assert_fail (assertion=assertion@entry=0x4a8710 "m_references_n != 0", 
    file=file@entry=0x4a8a00 "libs/systemc-2.3.1/include/sysc/kernel/sc_process.h", 
    line=line@entry=616, 
    function=function@entry=0x4ab8e0 <sc_core::sc_process_b::reference_increment()::__PRETTY_FUNCTION__> "void sc_core::sc_process_b::reference_increment()") at assert.c:101
#4  0x000000000044b77a in sc_core::sc_process_b::reference_increment (this=<optimized out>)
    at libs/systemc-2.3.1/include/sysc/kernel/sc_process.h:616
#5  sc_core::sc_process_handle::sc_process_handle (this=<optimized out>, orig=...)
    at libs/systemc-2.3.1/include/sysc/kernel/sc_process_handle.h:214
#6  0x0000000000452c90 in sc_core::sc_spawn<sc_boost::_bi::bind_t<void, sc_boost::_mfi::mf0<void, tlm_utils::simple_target_socket<Target, 32u, tlm::tlm_base_protocol_types>::fw_process>, sc_boost::_bi::list1<sc_boost::_bi::value<tlm_utils::simple_target_socket<Target, 32u, tlm::tlm_base_protocol_types>::fw_process*> > > > (opt_p=0x7fffffffcc80, name_p=0x768be8 "b2nb_thread_0", object=...)
    at libs/systemc-2.3.1/include/sysc/kernel/sc_spawn.h:119
#7  tlm_utils::simple_target_socket<Target, 32u, tlm::tlm_base_protocol_types>::fw_process::fw_process (
    p_own=0x768160, this=0x768278, __in_chrg=<optimized out>, __vtt_parm=<optimized out>)
    at libs/systemc-2.3.1/include/tlm_utils/simple_target_socket.h:203
#8  tlm_utils::simple_target_socket<Target, 32u, tlm::tlm_base_protocol_types>::simple_target_socket (
    n=0x4a86e7 "socket", this=0x768160)
    at libs/systemc-2.3.1/include/tlm_utils/simple_target_socket.h:73
#9  Target::Target (h=0x75c1e0, id=0, 
    nm=<error reading variable: access outside bounds of object referenced via synthetic pointer>, 
    this=0x768070) at ../src/Target.h:34
#10 Hub::Hub (this=0x75c1e0, nm=..., id=<optimized out>, tr=<optimized out>) at ../src/Hub.h:157
#11 0x0000000000442d54 in NoC::buildMesh (this=this@entry=0x715930) at ../src/NoC.cpp:39
#12 0x000000000041f417 in NoC::NoC (this=0x715930) at ../src/NoC.h:79
#13 sc_main (arg_num=<optimized out>, arg_vet=<optimized out>) at ../src/Main.cpp:54
#14 0x00007ffff7acce64 in sc_elab_and_sim ()
   from /usr/local/systemc-2.3.1/lib-linux64/libsystemc-2.3.1.so
#15 0x00007ffff6e08830 in __libc_start_main (main=0x4094b0 <main@plt>, argc=3, argv=0x7fffffffdaf8, 
    init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdae8)
    at ../csu/libc-start.c:291
#16 0x000000000040f449 in _start ()

System Info
lsb-release:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"

cpu:

Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
64-bit

Any help is much appreciated. I might try installing a previous version of noxim for now.

changing the power.yaml file.

Hi,
If I want to increase the number of hubs without changing the number of nodes(Tiles) (for example 6 hubs), How can I achieve the information to change below part of power.yaml file:
......
tx_attenuation_map:
# - [TX Hub ID, RX Hub ID, Attenuation]
- [0, 1, 1.1]
- [0, 2, 2.2]
- [0, 3, 3.3]
- [1, 0, 1.0]
- [1, 2, 2.2]
- [1, 3, 3.3]
- [2, 0, 1.0]
- [2, 1, 1.1]
- [2, 3, 3.3]
- [3, 0, 1.0]
- [3, 1, 1.1]
- [3, 2, 2.2]

An ABP error occurs every time after add multiple outputs.

Hi, I've been working on supporting broadcast on Noxim. And ReservationTable , Router::txProcess() , Router::route() method are modified so that one input can be reserved for multiple outputs.

However, in the txProcess() forwarding phase, where one filt is forwarded to multiple output ports, an Error cannot forward Input[m] to Output[n] always occurs for unicast flit after broadcast flit.

I've read the NoC.cpp and ABP protocol, I think it'll be allright if I invert req_tx[o] and current_tx[o] after sending out any filts to output[o].

It's really confusing and hard to debug. Any help would be grateful.

ps: my modification is here -> victorisildur_forked_noxim

No yaml cofiguration found on Ubunto 14.0.2 LTS

I run the command you provided but it is not working for me and my fellow too. The same error come on our pc's. Help us to resolve this problem.
When i run noxim following message comes.

SystemC 2.3.1-Accellera --- Sep 23 2015 11:33:47
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED

    Noxim - the NoC Simulator
    (C) University of Catania

No YAML configuration file found!
Use -config to load examples from config_examples folder

A question about source code (NoC.h)

Hi,

A question about source code (NoC.h).
Why are "req", "ack", "flit" and "flit_slots" defined as instances of struct sc_signal_NSWEH?
but "t" is defined as a pointer to Tile?

Thank you.

routing algorithm winoc

Hi,
How does Routing Algorithm Wireless Network On chip in Noxim Simulation work? And this section in which source codes of Noxim Simulation is located?

Changing mesh_dim_x mesh_dim_y results in Hub port not bound error

Hi, I tried to change mesh_dim_x and mesh_dim_y to 8_8, 16_4, 4*4 etc.

And I got this error:
Error: (E109) complete binding failed: port not bound: port 'NoC.Hub_15.port_97' (sc_in) In file: ../../../../src/sysc/communication/sc_port.cpp:231

I'm using mesh topology and don't use wireless hub(it seems like that cuz I didn't configure any thing about wireless). I'm using the /config_examples/other/config16x16.yaml

Could you please tell me how to make it right? Thx

3D NoC suport

Hi prof. Davide Patti,
How can simulate a 3D NoC with Noxim?
Is Noxim support through-silicon via (TSV) links?

Thanks a lot

Noxim error "No YAML configuration file found! Use -config to load examples from config_examples folder"

Hi everyone,
I just installed noxim using the following command:
bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/davidepatti/noxim/master/other/setup/ubuntu.sh)
Then with my first test I got the following error:

am-0107907988@ubuntu:~/Desktop/noxim/bin$ ./noxim -sim 40000 -warmup 5000 -dimx 8 -dimy 8 -buffer 2

    SystemC 2.3.1-Accellera --- Jan 28 2017 09:11:03
    Copyright (c) 1996-2014 by all Contributors,
    ALL RIGHTS RESERVED

	Noxim - the NoC Simulator
	(C) University of Catania

No YAML configuration file found!
Use -config to load examples from config_examples folder**

So any help would be appreciated

Noxim Virtual Channles

Hello!
I am trying to figure out how virtual channels work in Noxim. Please help me understand how they are implemented?

Fault Tolerance using Noxim

I am unable to understand how to induce faults in Nocs through the noxim simulator.
Please help me .just suggest from where i can look in all source and configuration files for faults

Clearing signals of borderlines.

Hi,
At file NoC.cpp we have the definition of tiles, map RX/TX signals and clearing signal for borderlines,

1- If we have [0][0], [1][0], [2][0], [3][0], ..., [mesh_X-1][0], does the [i][j] node locate in "NORTH" borderline?

2- we have 2 signals (RX and TX) for each direction; "req[i][j].south" and "req[i][j].north":

t[i][j]->req_rx[DIRECTION_NORTH] (req[i][j].south);
t[i][j]->req_tx[DIRECTION_NORTH] (req[i][j].north);

For Clearing signals for borderline nodes, if we have request signal [i][0], why we clear just one signal (RX signal) for node located at NORTH borderline?
req[i][0].south = 0;

And why it doesn't need to clear TX signal (req[i][0].north) of the node located at NORTH borderline ?

And also we have this situation for three other borderlines.

Thank you for your time.

traffic

Hi,
How to run a table_based traffic in Noxim?

Redirection of Output?

Dear All.
I have changed defult_config.yaml file as follows:

Routing algorithms:

XY

XYWi

routing_algorithm: XYWi ( a modify XY routing for wire+wireless)
use_winoc: true
verbose_mode: VERBOSE_LOW

Trace

trace_mode: true
trace_filename: ../rad.txt
i run this file with ./noxim -config ../config_examples/defult_config.yaml in command line and results be shown and trace file be created in ../rad.txt. but, how do i store the output?

wireless network on chip

hi
How come when we configure wireless network on chip at simulator we don't see any improvement in the number of received packets and Global average delay in comparison to network on chip? Does it need to change the source codes or any other parts?

Hardware Module Diagram

Greetings!
Thanks for such a great and helpful simulator for NOC researchers. I need your help in providing the module diagram of hardware than you used to design simulator. Because it would help users in better understanding of simulator. I know its a huge favor but please provide us. Because my professor wants me to give sketch of simulator in hardware. And as a beginner in SystemC platform I am unable to find that.
Thanks in Advance.

for routing algorithm other then XY and DYAD

noxim: ../src/Power.cpp:104: void Power::configureRouter(int, int, int, std::__cxx11::string, std::__cxx11::string): Assertion `GlobalParams::power_configuration.routerPowerConfig.routing_algorithm_pm.find(routing_function) != GlobalParams::power_configuration.routerPowerConfig.routing_algorithm_pm.end()' failed.
Aborted (core dumped)

i am getting this error

Assertion Error

Hi,

systemc 2.3.1
gcc 15.1

I run the command below:

./noxim -config ../config_examples/default_config.yaml

and it returns error:

        SystemC 2.3.1-Accellera --- Jun 14 2015 16:06:33
        Copyright (c) 1996-2014 by all Contributors,
        ALL RIGHTS RESERVED

                Noxim - the NoC Simulator
                (C) University of Catania

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
noxim: /software/public/systemc/2.3.1/include/sysc/kernel/sc_process.h:616: void sc_core::sc_process_b::reference_increment(): Assertion `m_references_n != 0' failed.
Aborted

It's almost the same as this issue #9, but it doesn't work for me.

I've been troubled for a few days. Anyone can help me fix it?

Simulation does not run.

Hi,
I have modified Noxim source and I have compiled it without any error. But when I run this command:

./noxim -config ../config_examples/default_config.yaml

got this (configuration file and power configuration file , both loaded, but simulation did not execute):

SystemC 2.3.1-Accellera --- Sep 12 2017 13:42:33
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED

      Noxim - the NoC Simulator
      (C) University of Catania

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
Channel 0 data rate 8 Gbps, flit transmission delay 4000 ps, (aligned to 4000 ps) 4 cycles

No power configuration file found

Hi
I was trying the lab2 experiment in Access Noxim. I modified the sim.cfg file as directed but I got this error message:
No YAML power configurations file found!
Use -power to load examples from config_examples folder

Issue with Negative-First

Hello,

Regarding the current implementation of Negative-first in Noxim: Packets headed South-East are routed using XY, i.e. Positive then negative, which violates the rules of Negative-first and may induce deadlocks.

Possible fix:

if (destination.x < current.x || destination.y > current.y) // check negative directions first
{
if (destination.x < current.x) directions.push_back(DIRECTION_WEST);
if (destination.y > current.y) directions.push_back(DIRECTION_SOUTH);
} else if (destination.x > current.x || destination.y < current.y) {
if (destination.x > current.x) directions.push_back(DIRECTION_EAST);
if (destination.y < current.y) directions.push_back(DIRECTION_NORTH);
} else
directions.push_back(DIRECTION_LOCAL);

Best regards

Depreciation of std::gets

When compiling noxim using the included script, I encountered an error because GCC could not find std::gets (which is used included from systemc.h).

It seems that std::gets is no longer part of C++ since C++14 (see http://en.cppreference.com/w/cpp/io/c/gets), so I presume that my gcc version (6.2.0-5ubuntu12) was defaulting to this newer standard.

I was able to fix the build by forcing gcc to use C++11 (which included std::gets). I did this by modifying noxim's Makefile OPTS variable so as to use the option --std=c++11 in addition to what was already there. I have not checked whether versions of systemc newer than the one used by the installation script fix this issue.

Butterfly Topology

Hello ,
Noxim use the topo mesh as default and I want to support butterfly topology. Thus I must change the code (e.g. signals mapping when creating the NoC). However, as a beginner in SystemC platform it is difficult to understand code because noxim use advance system level coding. So I am unable to solve that and I am asking for this NoC Topology.
If you can give any clue or closest stuff will be well appreciated. .
Thanks in Advance.

Segmentation Fault on trying to run example from the article

I'm trying to run a slightly modified default_config.yaml as in the article but I keep getting segmentation faults. I'm using Ubuntu and installed noxim using the quick start option (bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/davidepatti/noxim/master/other/setup/ubuntu.sh))

I have use_winoc = true

and:

0:
    rxChannels: [0, 2]
    txChannels: [0, 2]
    attachedNodes: [0,1,4,5]

1:
    rxChannels: [0, 1]
    txChannels: [0, 1]
    attachedNodes: [2,3,6,7]

2:
    rxChannels: [2, 3]
    txChannels: [2, 3]
    attachedNodes: [8,9,12,13]

3:
    rxChannels: [1, 3]
    txChannels: [2, 3]
    attachedNodes: [10,11,14,15]

This gave me a segmentation fault on "std::__cxx11::basic_string<char, std::char_traits, std::allocator >::compare(char const*) const 0x00007ffff77c8430" inside the attachHub function.

If I add different channels like so:
0:
dataRate: 8
1:
dataRate: 8
2:
my_config .txt

    dataRate: 8
3:
    dataRate: 8

I get another segmentation fault on updateTokenPacketRing.

I've attached the file as a txt because github doesn't accept yaml file
my_config .txt

Segmentation fault (core dumped) encountered on running "noxim object" after "make"

I have been trying to run noxim simulator for the first time after installation but it shows segmentation fault--
$ ./noxim

    SystemC 2.3.1-Accellera --- Jul 27 2015 13:51:54
    Copyright (c) 1996-2014 by all Contributors,
    ALL RIGHTS RESERVED

    Noxim - the NoC Simulator
    (C) University of Catania

Loading configuration from file config.yaml
Segmentation fault (core dumped)

Also, I get the following warnings during "make"--
../src/Channel.cpp: In member function ‘void Channel::powerManager(int, tlm::tlm_generic_payload&)’:
../src/Channel.cpp:65:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (i!=hub_dst_index)
^

../src/Hub.cpp:42:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<rxChannels.size();i++)
^
../src/Hub.cpp:69:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<rxChannels.size();i++)
^
../src/Hub.cpp: In member function ‘void Hub::perCycleUpdate()’:
../src/Hub.cpp:88:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<txChannels.size();i++)
^
../src/Hub.cpp: In member function ‘void Hub::updateRxPower()’:
../src/Hub.cpp:115:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<rxChannels.size();i++)
^

Help me with the debugging details please.

Tile-Hub-Tile

Hi,
In which part of the source code, I can find Tile-Hub-Tile process?
I mean if source tile and destination tile connect to the same hub, we have tile-hub-tile connection,
where can I find this part?

If in hub.cpp, which part of the code exactly?

Hub.cpp......>In this part, line 403:
void Hub::tileToAntennaProcess()
{....
403: r_from_tile[i] = route(flit);
...}
we can have two answers for route(flit);
1-port number which the destination tile is connected or 2- DIRECTION_WIRELESS
we only use DIRECTION_WIRELESS
what if we have "port number which the destination tile is connected" as the returned of route(flit)?

Error; running a new routing algorithm.

Hi,
I want to try a new routing algorithm; I've changed XY routing (in order not to get error of power) and I ran the command below:
./noxim -config ../config_examples/default_config.yaml

and got this error:

    SystemC 2.3.1-Accellera --- Apr 12 2017 10:06:33
    Copyright (c) 1996-2014 by all Contributors,
    ALL RIGHTS RESERVED

            Noxim - the NoC Simulator
            (C) University of Catania

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
Reset for 1000 cycles...
done! Now running for 10000 cycles...

Error: (E549) uncaught exception: UNKNOWN EXCEPTION
In file: ../../../../src/sysc/kernel/sc_except.cpp:107
In process: NoC.Tile[02][00]_(#2).Router.txProcess @ 1007 ns

repeating one more time:
....
....
In process: NoC.Tile[02][03]_(#14).Router.txProcess @ 1018 ns

And after repeating 3-4 times it returns this error:
SystemC 2.3.1-Accellera --- Apr 12 2017 10:36:33
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
Noxim - the NoC Simulator
(C) University of Catania

Loading configuration from file "../config_examples/default_config.yaml"... Done
Loading power configurations from file "power.yaml"... Done
Reset for 1000 cycles...
done! Now running for 10000 cycles...
noxim: ../src/selectionStrategies/Selection_RANDOM.cpp:15: virtual int Selection_RANDOM::
apply(Router*, const std::vector&, const RouteData&): Assertion `directions.size()!=0' failed.
Aborted (core dumped)

How to add broadcast support for Router?

Hi, this is a great tool, I'm working on it to simulate a broadcast strategy.

The problem is Router::route() only return one direction. How could broadcast be down in that?

Any thoughts would be helpful.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.