... | ... | @@ -2,16 +2,16 @@ Here are some information about the project architecture. |
|
|
|
|
|
## Structure
|
|
|
|
|
|
Sources can be found under `./src/main/scala/...` and associated unit-tests under `./src/test/scala/...`
|
|
|
Sources can be found under `src/main/scala/...` and associated unit-tests under `src/test/scala/...`
|
|
|
|
|
|
Project is divided in different submodules:
|
|
|
|
|
|
* global project configuration file is `./src/main/scala/QeceContext.scala`
|
|
|
* resources for integration in other chisel projects are to be found in `./src/main/resources/...`
|
|
|
* estimation transforms can be found in `./src/main/scala/estimation/...`
|
|
|
* exploration relative functions - including exploration strategies - can be found in `./src/main/scala/exploration/...`
|
|
|
* backend bindings are available in `./src/main/scala/backend/...` - only Xilinx Virtex 7 boards are available currently
|
|
|
* characterization functions - *i.e.* functions to generate a characterized library of operators and macros for a given target board - can be found in `./src/main/scala/characterization/...`
|
|
|
* global project configuration file is `src/main/scala/QeceContext.scala`
|
|
|
* resources for integration in other chisel projects are to be found in `src/main/resources/...`
|
|
|
* estimation transforms can be found in `src/main/scala/estimation/...`
|
|
|
* exploration relative functions - including exploration strategies - can be found in `src/main/scala/exploration/...`
|
|
|
* backend bindings are available in `src/main/scala/backend/...` - only Xilinx Virtex 7 boards are available currently
|
|
|
* characterization functions - *i.e.* functions to generate a characterized library of operators and macros for a given target board - can be found in `src/main/scala/characterization/...`
|
|
|
|
|
|
|
|
|
## Estimations
|
... | ... | @@ -19,7 +19,7 @@ Project is divided in different submodules: |
|
|
Three kinds of estimators are considered at the moment: **resource estimation**, **frequency estimation** and **quality of result estimation**.
|
|
|
|
|
|
* FIRRTL based **resource estimation** is based on prior **macro replacement** of some patterns in the circuits, and uses a library of characterized operators.</br>
|
|
|
Such library is to be found in `./src/main/resources/lib/<target>.json`, and can be generated using `qece.characterization.LibraryBuilder` class (`./src/main/scala/characterization/Library.scala`).</br>
|
|
|
Such library is to be found in `src/main/resources/lib/<target>.json`, and can be generated using `qece.characterization.LibraryBuilder` class (`src/main/scala/characterization/Library.scala`).</br>
|
|
|
Another resource estimator is based on **synthesis results** through backend calls.
|
|
|
|
|
|
* **Quality of result estimation** is based on an empirical approach, leveraging simulator bindings to provide insights of circuit behavior.
|
... | ... | @@ -27,13 +27,13 @@ Another resource estimator is based on **synthesis results** through backend cal |
|
|
* FIRRTL based **frequency estimation** is currently deprecated, as chosen approach result in complex and non accurate estimations.</br>
|
|
|
However, frequency estimation through **synthesis results** are available using backend API.
|
|
|
|
|
|
Estimators can be call by using `qece.estimation.WithTransform` trait - and examples are to be found in `./src/test/scala/estimation/...`.
|
|
|
Estimators can be call by using `qece.estimation.WithTransform` trait - and examples are to be found in `src/test/scala/estimation/...`.
|
|
|
|
|
|
## Exploration
|
|
|
|
|
|
In order to be explorable, a **chisel** `Module` must implement `qece.exploration.utils.WithExplorable` trait - you can directly extend `qece.exploration.utils.Explorable` class to build a `MultiIOModule` implementing this trait.
|
|
|
|
|
|
Strategies can be defined using `qece.exploration.strategies.StrategyBuilder` - and examples are to be found in `./src/test/scala/exploration/strategies/...`.
|
|
|
Strategies can be defined using `qece.exploration.strategies.StrategyBuilder` - and examples are to be found in `src/test/scala/exploration/strategies/...`.
|
|
|
|
|
|
## Linting
|
|
|
|
... | ... | |