By Jakob Engblom
Network simulation is an integral part of Simics, and most Simics target systems are networked in one way or another. The Simics Networking video posted on the Wind River Youtube channel provides a recorded demo of the fundamentals of Simics networking. In the video, we show a small heterogeneous Ethernet network containing five different machines, and perform some basic operations on the simulated network such as checkpointing and reconfiguration of the network links during the simulation.
The setup in the video contains five boards *. These five boards use three different types of target architectures (IA, PPC, and ARM), five different types of SoC, five different boards, running five varieties of operating systems (Wind River Linux 4.3, Wind River Linux 5.0, Generic Linux, VxWorks 6.8, and VxWorks 6.9). The targets demonstrate a small part of the large number of different target machines available in the Simics model library.
The example shown is only a small network, really. Simics has been used to simulate very large networks of systems, scaling up several thousand target processors spread across dozens or even hundreds of networked boards. Simics has been used to model a range of different networks, including Ethernet, serial, I2C, MIL-STD-1553, ARINC 429, Packet-over-Sonet (POS), ATM, and CAN. Unlike typical IT virtual machine systems, Simics networks are typically simulated with all the target machines contained within a single Simics process. Running within a single process simplifies virtual networking greatly (no need to involve the host) and lets the virtual network forward any kind of packet to any machine. This means that Simics Ethernet can be used to transport not just common TCP and UDP, but also SCTP, as well as low-level ICMP and (R)ARP. The Simics packet stream looks just like what is captured on a physical Ethernet link, and thus standard tools like Wireshark can be used to inspect the traffic flowing inside the Simics simulation.
To scale up to insanely large networks, Simics can distribute the virtual network across multiple connected and synchronized Simics processes (for an example of this, see the chapter on running Simics on clusters in the recently-released Intel Technology Journal issue on Simics). However, in most cases a single multicore laptop or server is sufficient to run the kinds of networks a single user needs.
For more on Simics and network simulation, see:
- “Debug Quicker with Simics” shows how Simics can debug software on an network of machines, rather than just a single machine at a time.
- “Teaching networking using Simics” shows how Simics network simulation can be used for teaching, rather than just development.
- The blog post on Simics Crystal Forest shows an example of a Simics network statistics tool implemented within the Simics Eclipse GUI.
- We have some examples of how Simics connects to external computers, such as the RTI DDS communications middleware and Visuality NQ CIFS server.
* The names of the boards are taken from the Swedish spelling alphabet, in case you were wondering.
For additional information from Wind River, visit us on Facebook.