System-Level Design Automation And Optimisation Of Network-On-Chips In Terms Of Timing And Energy