Simulation Methods
co-design is a way to simulate at a very high level of abstraction, prior to the actual implementation. These simulations follow the theme of trading details for run-time speed.
By creating a functional model which can be tested, system designers can make sure the requirements are clear.
making a single model of both hardware and software functionality, the design boundary between the two is effectively removed.
Having a running model also allows engineers to test different hardware/software functionality splits for performance and get some rough timing estimates for various ideas.
Running a functional model also allows engineers to find fundamental bugs in the design before implementing them. Can reuse for performance updates.