For instance, you can have an architecture which is based on message pass programming model. This way, it is your job to assign each process/thread to the processing units. Those processing units should have an ID or something, that identifies them.
Another example, if the architecture supports OpenMP (shared memory), is to bind threads to cores (setting the env. variable GOMP_CPU_AFFINITY, or similar). This way, each thread will be bind to chosen cores. If you choose nothing, the operation system (or runtime system) will decide by itself most of cases.
Considering routing, I mean, the way the messages goes through the NoC, you should know the used routing protocol, mainly.
If this answer is not clear, could you be more specific on your question?