Skip to content
README.md 2.66 KiB
Newer Older
TOSA MLIR Translator
==========================

# Introduction

The *TOSA MLIR Translator* repository implements translators between the TOSA MLIR
dialect and serialized representations.

The current implementation supports serialization from MLIR form to flatbuffers.
A deserializer from flatbuffers to MLIR form is in development.

# Dependencies

## TOSA serialization library
<https://review.mlplatform.org/plugins/gitiles/tosa/serialization_lib>
The library includes a FlatBuffers schema and a C++ API for reading and writing a TOSA
graph as a flatbuffer.

Check out the required git submodules with:

``` bash
git submodule update --init --recursive
```

There are two ways of using the TOSA MLIR Translator.
## As part of another MLIR repository
The first method involves including this repository within another MLIR repository with a pass manager registering the passes implemented within this repository.
The included CMake rules can be used to add this repository as a submodule.
The `include/SerializationPasses.h` enables MLIR pass registration inclusion.

If target "tosa_serialize" is linked correctly, you should able to see "--tosa-serialize"
and "--tosa-serialize-json" options available in your MLIR pass manager/MLIR optimizer.

## As a standalone TOSA Optimizer Driver (`tosa-opt`):
See the README.md in the `tosa-opt` directory.

# Usage

To serialize a TOSA MLIR graph to TOSA flatbuffer binary file:

  \<YOUR_MLIR_OPTIMIZER\> --tosa-serialize \<TOSA_MLIR_GRAPH\> \
  --tosa-flatbuffer-filename \<TOSA_FLATBUFFER_FILENAME\>

To serialize a TOSA MLIR graph to TOSA flatbuffer JSON file:

  \<YOUR_MLIR_OPTIMIZER\> --tosa-serialize-json \<TOSA_MLIR_GRAPH\> \
  --tosa-flatbuffer-schema \<PATH_TO_TOSA_FLATBUFFER_SCHEMA\>  \
  --tosa-flatbuffer-filename \<TOSA_FLATBUFFER_FILENAME\>

  where \<PATH_TO_TOSA_FLATBUFFER_SCHEMA\> is provided within the serialization library
  submodule in third_party/serialization_lib/schema/tosa.fbs

# Pre Commit Checks

Before pushing a commit, pre commit checks must be run to ensure conformity.

## Prerequisites
* clang-format (tested with 14)
* pre-commit (tested with 3.8.0)

Install pre-commit with:

``` bash
pip install pre-commit==3.8.0
```

## Run Pre Commit Checks

``` bash
pre-commit run --all
```

This project uses Calendar Versioning ([CalVer](https://calver.org/)) in the format: `YYYY.0M.Micro`

- **YYYY** – 4-digit release year (e.g., 2025)
- **0M** – 2-digit Zero-padded release month (e.g., 07 for July)
- **Micro** – The third and usually final number in the version. Sometimes referred to as the "patch" segment.
# License

The *TOSA MLIR Translator* is licensed under Apache-2.0 with LLVM Exceptions.