# System Simulation
Software can model any behavior. In [[Semiconductors#Emulation and Virtualization|virtualized systems]], software models the behavior of software. But software can also model the behavior of hardware, so it means we can simulate hardware with software.
Simulation always costs us something; typically, in the form of computing power and execution time. The more complex the simulation, the more resources it will require. If computing resources are kept constant and simulation complexity increases, it will then take a longer time to reach meaningful results. There is no free lunch in engineering, and therefore, there is no free lunch when simulating systems.
But the digital systems we design are more than just CPU cores. They will also contain storage, interfaces, and different specialized equipment and peripherals like batteries, sensors, and actuators. The act of simulating a complex digital system needs to take this into account and create a digital representation of all the components in a way the system will behave similarly to the real system; it is not enough just to simulate processors, although it is perhaps one of the most complex tasks when modeling a computer-controlled system.
Digital systems are always embedded in an environment, and in many cases, the environment interacts with the system (think of a vehicle like an aircraft, a rocket, or an autonomous car), so to obtain credible behavior of the system it is necessary to also replicate the surrounding environment in a numerical capacity when we develop these systems.
[[Abstraction Levels, Transaction-Level Modeling, and Digital Twins]]
[[Modeling The Environment]]
[[System Level Simulation]]
[[Target Simulation (Virtual Platforms)]]
[[Co-Simulation]]
[[Flight Simulation (start here)]]
[[Industrial Virtual Reality and "The Metaverse"]]
[[site/Resources/Simulation/References|References]]