We strongly recommend that you read this introduction to The Liberty Simulation Environment (LSE) first. However, here are a few links for the impatient:Download LSE
The Liberty Simulation Environment (LSE) is a concurrent and structural component-based modeling tool designed to reduce time spent building simulation models, to improve fidelity of models, to foster more collaboration, and to facilitate technology transfer. LSE is a publicly-available, documented infrastructure that achieves these goals by allowing system models to be built from easy to build libraries of flexible and reusable components. The following few paragraphs provide a brief introduction to LSE and describe the philosophy behind its past and future development. The best way to learn about LSE is to download and try it, to read about it, or to come see a tutorial.
One of the best ways to describe LSE is to first describe what LSE is not. The Liberty Simulation Environment is not a simulator. Unlike many existing tools, rather than providing specific processor microarchitecture simulators that can be adapted or extended, LSE provides a language, compiler, and set of libraries designed specifically for creating hardware models. Other simulation frameworks often consist of only libraries built on top of existing programming languages and suffer from artifacts since the model description languages are ill suited for the task. Since models described in LSE resemble hardware, these artifacts are avoided. The modeling research web pages at the Liberty group in Princeton have more insight into what is necessary in a good modeling system.
The Liberty Simulation Environment is made up of several pieces. At its core is the Liberty Structural Specification (LSS) language and its compiler. The compiler includes a concurrency scheduler and an optimizing code generator. Simulation models are described in LSS and these models can be compiled to executable simulators. Since LSE is an infrastructure for building models rather than being a simulator, it does not have a limited scope. Models can range from processor cores to multiprocessor systems and their interconnection networks. In fact, nothing in LSE's core design makes it specific to processor or microarchitecture modeling. It can be used to model any synchronous hardware.
In addition to being a powerful modeling language, LSS, uses aspect-oriented techniques so simulation models can easily be instrumented without modifying the specification of the model. This instrumentation code can report statistics during model execution and it can even be used to drive visualization!
The screenshot below shows a simple model of a linear feedback
shift register (LFSR) being displayed in another part of LSE, its
model visualizer. The Visualizer reads the model description and
automatically draws the components and connections between
components in the system. The screenshot not only shows the how the
Visualizer can provide a visual block diagram of a model, but how it
can also collect instrumentation information and automatically
visualize system state.
In addition to building system models in LSS, one also describes component models in LSS. These component models (called modules in LSE) form the building blocks used to make system models. In the example above bit0, bit1, bit2, and xor are all instances of modules. In fact bit0 - bit2 are all instances of the same module, delay, which is part of a module library provided with LSE. LSE currently has two module libraries written for it:
corelibcontains modules like delay elements, queues, routers, arbiters, etc. While seemingly simple, this library alone is quite powerful and can be used to build most parts of a processor model.
archlibcontains modules that can be used to build up caches, branch predictors, etc. For maximum flexibility, this library does not only contain monolithic entities like caches, but has pieces from which these things can easily be built hierarchically.
Much research has gone into the design and implementation of the Liberty Simulation Environment. Publications related to its design have appeared in conferences such as MICRO, DAC and even WCAE, a workshop on computer architecture education. In addition to researching new techniques in hardware model development, a lot of effort has been put into building a robust system that makes model development easy. This allows researchers, in industry and academia alike, to concentrate on interesting research problems rather than spending time building simulators.
As more people use LSE, the opportunity to share modules between research groups will increase, lowering barriers to collaboration. This common framework will allow easy exploration of interaction of ideas, validation of results, and technology transfer to industry. Further still, component reuse on this common platform will reduce the effort to explore vastly new designs opening avenues of research formerly closed due to the high overhead of exploration. In this collaborative spirit, the Liberty Simulation Environment is released with a free, open-source license. We welcome you to join us in this collaboration.
To get started with the Liberty Simulation Environment, the first step is to download it and follow the Getting Started with LSE manual. Other documentation can be found at this link. Further help can always be found on the various LSE related mailing lists.
After reading the Getting Started manual, you should have a feel of how to use the system. To get insight into how it can be used to model microprocessors, its best to look at a model that has already been created. On the download page, there are various sample models available for download. Understanding these models will provide a solid foundation for you to build future models.
Several bugs in LSE have been fixed and new versions are available.
Join us for the official public release of The Liberty Simulation Environment Version 1.0 at the upcoming MICRO36 Tutorial!