Multicore architectures have emerged as an avenue to continue the improvement of software performance even as growth in single-core performance has struggled over the past two decades [1] [2]. However, designing for such systems is a more complex task than for single-core, sequential computing. To effectively utilize multicore systems, designers must devise communication strategies, coordinate dataflow between processing elements in a way that avoids erroneous behaviour such as race conditions, and the software's general architecture must be designed in a way that takes advantage of advancements in hardware architecture [3] [4].In this thesis, we present an architecture and domain-specific language that allows software developers to rapidly prototype hardware architectures, software partitioning, and inter-core communication strategies at design time. We demonstrate an interpreter for this domain-specific language, and use it to illustrate a process of experimenting with inter-core communication and software partitioning strategies.