System level design