!!!Please note that we are still migrating everything to Code Aurora. If you download everything at this point, you may encounter issues like regression not passing, etc.

This is the home page for the Architectural Description Language (ADL) project and it's relevant tools.


The goal of this project is to provide a straight-forward means for specifying the architecture and micro-architecture of a microprocessor core such that various tools, such as simulators, assemblers, etc., may be generated from this single description. The idea is that a user does not need to be a software expert in order to create high quality models and the various tools needed to develop software and conduct trade-off analysis on a proposed new design.

The ADL project is broken up into two main parts: Architecture description via the ADL language and micro-architecture via the uADL language. The first concentrates on describing the functional aspects of a processor, such as instructions, registers, the MMU, caches, etc. This generally corresponds to the programmer's view of a processor. The uADL language describes the underlying implementation of a particular processor; its pipeline, reservation stations, etc.

From the ADL description, we can create an assembler based upon GNU gas, a disassembler based upon GNU objdump, an interpreter-based simulator, a dynamic-binary-translation-based simulator, HTML documentation, and a Perl or XML-based database.

A uADL file may be combined with an ADL model in order to create a cycle-accurate or cycle-approximate model. Since the functional behavior of the core is described separately from the timing model, multiple micro-architectures may be used with the same architecture. The timing model may also approximate an actual design to any desired level of accuracy, allowing a modeler to spend time only on what is important: Where less accuracy is needed, such as for rarely used instructions, a simple, default behavior may be applied.


RNumber was initially developed to provide support for large integers in C++ for developing an application to generate random stimulus for microprocessor validation (Raptor). This application domain has some unique requirements that were not present in number libraries available at the time. These main requirement not available was to be able to control whether the number would expand the number of bits that represent it on overflow or to wrap around to zero on overflow. Since expansion of number on overflow is not typically used in the problem domain RNumber was developed for, it is not as convenient to use as wrapping on overflow.


Plasma:  Parallel LAnguage for System Modelling and Analysis
Plasma is a superset of C++, adding parallel extensions similar to that providedby the language Occam.


Each release will have a tag of the release version.

Downloading and Building from Source

run ./autogen.sh, this should generate makefiles. Then run make all.


The source code available for download from Code Aurora may be covered by one or more different licenses. The files in Code Aurora may contain changes and additions on top of the code from the original source. These changes and additions are covered under the same license as the original source. In many cases, the license is explicitly listed at the beginning of the file. A list of licenses is included for reference purposes only.

Created by superadmin on 2020/04/18 20:52

Need help?

If you need help with XWiki you can contact: