Automatic generation of software TLM in multiple abstraction layers for efficient HW/SW co-simulation