In this paper, we present a general framework which allows the designer to specify a wide range of criteria for allocation. Major factors considered as part of our framework are mixed criticalities of tasks, schedulability, power consumption, fault-tolerance, and dependability requirements in addition to typical functional aspects such as memory constraints. This being a global optimization problem, we are forced to use meta-heuristic algorithms, and we were able to represent these requirements in a very intuitive manner by the usage of energy functions in simulated annealing. We envision the proposed methodology as a quite simple, scalable, as well as computationally effective solution covering a wide range of system architectures and solution spaces.