The project will address these issues by building a system that constructs key optimizer and simulator components from a common architectural description. Prior work in generating compilers or simulators using only formal architecture descriptions had not succeeded in producing systems capable enough for real work. That difficulty will over-come by not insisting on fully automatic construction. Rather, the project focuses on making it easier for researcher and engineers to extend and modify key components using more specific model descriptions and a flexible, extensible framework. Rather than building components from scratch, makes it easier to evolve components: incremental architectural changes should require incremental effort to support. This is a co-evolution approach since one must evolve both simulators and compilers optimizers simultaneously and consistently.