Describir: Designing 2D and 3D Network-on-Chip Architectures