gem5-users@gem5.org

The gem5 Users mailing list

View all threads

Simulating NoC and collecting packet traces

DA
Dr A. Vijaya Bhaskar
Wed, Oct 18, 2023 1:16 AM

Hi all, I have the following doubts regarding simulation of NoC. Please
give your inputs.

  1. How to simulate NoC when not using garnet_standalone protocol?
    For example, I ran gem5 with the following command and stats.txt does not
    give any network related stats.
    build/X86_MI_example/gem5.opt configs/learning_gem5/part3/simple_ruby1.py
    --network=garnet

  2. How to collect or print packet information when garnet is used. I want
    to use flit::print function defined in flit.cc. What is the usage?
    I have tried to use a simple cout statement (as mentioned in previous
    posts) like "*std::cout << t_flit;" in the wakeup function of
    InputUnit.cc but its not printing anything.

  3. How to use garnet with standard library? For example I want to print
    network statistics after running the following command. What files should I
    change?
    build/X86/gem5.opt configs/example/gem5_library/x86-parsec-benchmarks.py
    --benchmark=blackscholes --size=simsmall

Thanks and regards,
Vijay

Hi all, I have the following doubts regarding simulation of NoC. Please give your inputs. 1. How to simulate NoC when not using garnet_standalone protocol? For example, I ran gem5 with the following command and stats.txt does not give any network related stats. *build/X86_MI_example/gem5.opt configs/learning_gem5/part3/simple_ruby1.py --network=garnet* 2. How to collect or print packet information when garnet is used. I want to use flit::print function defined in flit.cc. What is the usage? I have tried to use a simple cout statement (as mentioned in previous posts) like "*std::cout << *t_flit;*" in the wakeup function of InputUnit.cc but its not printing anything. 3. How to use garnet with standard library? For example I want to print network statistics after running the following command. What files should I change? *build/X86/gem5.opt configs/example/gem5_library/x86-parsec-benchmarks.py --benchmark=blackscholes --size=simsmall* Thanks and regards, Vijay
GB
gabriel.busnot@arteris.com
Wed, Oct 18, 2023 1:47 PM

Hi Vijay,

  1. build/X86_MI_example/gem5.opt is built with the MI protocol by default while configs/learning_gem5/part3/simple_ruby1.py requires the MSI protocol. I guess your simulation fails before it starts. You should see network related stats in a well configured ruby-based simulation.

  2. Depending on which packet information you need and how much of it you need to collect, you can use the RubyNetwork debug flag (or RubyQueue) and filter down the information you are interested in with, e.g., grep.

  3. As far as I know, there is currently no implementation of a garnet-based standard network component. You can roll down your own based on the SimplePt2Pt standard network component. You should also check Network.py under configs/network to check what configuration steps Garnet requires.

Regards,

Gabriel

Hi Vijay, 1. *build/X86_MI_example/gem5.opt* is built with the MI protocol by default while *configs/learning_gem5/part3/simple_ruby1.py* requires the MSI protocol. I guess your simulation fails before it starts. You should see network related stats in a well configured ruby-based simulation. 2. Depending on which packet information you need and how much of it you need to collect, you can use the RubyNetwork debug flag (or RubyQueue) and filter down the information you are interested in with, e.g., grep. 3. As far as I know, there is currently no implementation of a garnet-based standard network component. You can roll down your own based on the SimplePt2Pt standard network component. You should also check Network.py under configs/network to check what configuration steps Garnet requires. Regards, Gabriel