Simulation is used in design verification for hardware systems, including analogue and digital systems. Two main tasks:

  • We drive the design by giving it a certain input.
    • This includes correct inputs, and inputs that are supposed to fail!
  • Then we check its behaviour and observe whether it outputs expected behaviour.

Why simulate things? When doing hardware design with FPGAs, it can take minutes to days to actually build physical circuits to test. For ASICs, it can be cost-prohibitive and take months. So instead we simulate to get similar functionality and make sure we get it right before testing IRL or fabricating a chip.

Some key questions: how do we know if we’re driving all possible input scenarios? How do we know when a failure has occurred?

Tools