Designing Regular Network-on-Chip Topologies under Technology, Architecture and Software Constraints