Compiler Generator for Application Specific Instruction-set Processors (ASIPs)
Contact: Jongwon Lee
The Soargen compiler is a compiler-compiler that has been developed in Seoul National University. Soargen takes as input a target architecture description and produces as output a compiler for the target processor.
The architecture is described in a formal description language, called SoarDL .
Since its first creation in 2002, the syntax and semantics of SoarDL have been continuously enhanced to express more and more architectural features of modern processors. Although it still needs further improvement in forthcoming years, it has been successfully used to describe several existing processors in industry as well as in academy.
Soargen can be used to design an ASIP (application specific instruction-set processor). Accurately expressing architectural features is just one necessary condition for the success of Soargen.
Prototyping ASIP desing with SoarDL
Another important one should be how efficient target code can be generated when arbitrary architectures with different structures are described in SoarDL.
For this, we have developed various code generation algorithms that allow us to generate efficient code for a wide range of architecture designs.
SoarGen Compiler Infrastructure
Some features of the SoarGen infrastructure can be accessed at the following web site.
SoarDL is an ADL(Architecture Description Language) developed to generate SDK such as compiler, assemblyer, linker, simulator and debugger. SoarDL can describe various kinds of processors from simple RISC-style processor to irregular DSP processor. The description is parsed and automatically analyzed for making the machine-dependent part of SoarGen. As SoarDL is based on a formalism, the verification of the target processor description is easy and fast. Also other useful tools such as assembler and linker can be generated from the same description.
Hierarchy of SoarDL
SoarDL - Primitive
SoarDL - Structure
SoarDL - Conventions
SoarDL - Behavior
SoarDL - Behavior(addressing mode)
SoarDL - Behavior(instruction set)