system modelling in embedded system

System Modeling can help to create better embedded systems. In that sense, I mean that while the hardware design is executed, and we know that the design cycle is quite long, System Modeling can help in witting and validating embedded software much more in advance, and more accurately than using only CPU instruction set simulators or Cycle based simulators. BUT ! this means that System Simulators needs to include and take into account the following:
1) Execution Speed: in order to be able to run a true real application software (meaning including operating systems) the system modeling environment / tool needs to be powerful enough to run such quantity of software in a timely manner
2) Accuracy: The modeling environment needs to take into account the right level of accuracy, which could be different upon application field.
3) Buidling Blocks: To create a SoC, or an ASIC, you usually build it based on IP libraries, having CPUs, Memory Interfaces, DMA engines, Busses, … All those pieces need to be available as fully validated models to be sure to concentrate on the right problematic of building and fine tuning the system rather than developping basic blocks full of bugs.
4) Around the SoC / ASIC: System modeling can be really useful if you can include in the model the required components which are required to stimulate the SoC / ASIC . This involves Memory devices, but could invovle data streaming components (ADC, DAC) … as well as other active components that could react and be data dependent.
System modelling… If i take literally what a system means, then instead of optimizing individually a component and then see how they interact together, you could go at a very high level and model the system as a whole. Then even before trying to optimize at the individual level, you first see how the components interact within the system and thus, find better tradeoffs.
So yes, a top down approach is better than a bottom up approach. You can (even though it is not guaranteed) design better systems. However, you have to have an expertise in the lower levels so you know how to take advantage of more tradeoffs and thus squeeze more performance out of your system.