NOTE: The Jupyter Notebook below is included in the Chimera SDK and can be run interactively by running the following CLI command:
$ quadric sdk notebook
From the Jupyter Notebook window in your browser, select the notebook named /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/onnx_conversion.ipynb.
Conversion from TFLITE to ONNX
This notebook demonstrates how to convert TFLITE files to ONNX.
A TFLITE file in Mediapipe legacy model page is used as an example.
For Mediapipe Legacy Solutions, please refer Mediapipe page.
Package Install
The following packages are installed.
- tensorflow
- onnxconverter-common
- tensorflow-onnx
!pip3 install -r ../../../requirements.txt -q
[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv[0m[33m
[0m
import os
import sys
from pathlib import Path
import shutil, subprocess, zipfile
FILE_PATH = Path(os.path.abspath(""))
sys.path.append(f"{FILE_PATH.parent}")
from examples.models.zoo.zoo_utils import download_file
from mputils.convert_utils import (
execute_command,
get_inpoup,
get_oup_with_nchw,
replace_unk_to_one,
)
import os
import sys
from pathlib import Path
FILE_PATH = Path(os.path.abspath(""))
sys.path.append(f"{FILE_PATH.parent}")
from examples.models.zoo.zoo_utils import download_and_extract_zip
github_list = [
(
"https://github.com/microsoft/onnxconverter-common/archive/refs/tags/v%s.zip",
"1.15.0",
),
("https://github.com/onnx/tensorflow-onnx/archive/refs/tags/v%s.zip", "1.16.1"),
]
for url, version in github_list:
url = url % (version)
basename = url.split("/")[-5]
filename = Path(url).name
if not Path(basename).exists():
download_and_extract_zip(url, filename)
Path(f"{basename}-{version}").rename(basename)
Path(filename).unlink(missing_ok=True)
print(f"{basename} is setup.")
onnxconverter-common is setup.
tensorflow-onnx is setup.
TFLITE File
Here, iris_landmark.tflite in Mediapipe legacy model page is used as an example.
tf_file = "iris_landmark.tflite"
tf_file = Path(tf_file)
url = f"https://storage.googleapis.com/mediapipe-assets/{tf_file}"
download_file(url, tf_file)
PosixPath('iris_landmark.tflite')
Conversion from TFLITE to ONNX
The following steps are taken to convert TFLITE files to ONNX.
- Change input/output format from NHWC to NCHW
- Replace unk__** with 1
- Generate final ONNX
Change Input/Output Format to NCHW
TFLITE models adopt NHWC (channel-last) format for input/output. It is converted to NCHW (channel-first) format because it has more affinity for ONNX.
To do so, the onnxconverter-common package is used. It provides common functions and utilities for use in converters from various AI frameworks to ONNX. It also enables the different converters to work together to convert a model from mixed frameworks, like a scikit-learn pipeline embedding a xgboost model.
With this package, a tflite file is converted to an onnx model Input/output format is changed from NHWC to NCHW. . Names for input/output aralso e changed for later usagW.
opset = 16
cmd_option = f"--opset {opset} --tflite ../{tf_file} --output ../{tf_file.stem}.onnx --dequantize"
cmd_body = f"python3 -m tf2onnx.convert {cmd_option} "
exitcode, outputs = get_inpoup(cmd_body)
if exitcode == 0:
in_list, in_replace, out_list, out_replace = outputs
else:
print(outputs)
assert False, f"Cannot proceed because tf2onnx.convert failed for {str(tf_file)}"
cmd_inpart = f"--inputs {in_list} --inputs-as-nchw {in_list} --rename-inputs {in_replace} "
cmd_outpart = f"--outputs {out_list} --outputs-as-nchw {out_list} --rename-outputs {out_replace}"
command_line = cmd_body + cmd_inpart + cmd_outpart
exitcode, output = execute_command("tensorflow-onnx", command_line, False)
if exitcode != 0:
print(output)
assert False, f"Failed in tf2onnx.convert for {str(tf_file)}"
print(f"{str(tf_file)} is converted to {tf_file.stem}.onnx.")
print(f"\tInput names: {in_list} ==> {in_replace}\n\tOutput names: {out_list} ==> {out_replace}")
iris_landmark.tflite is converted to iris_landmark.onnx.
Input names: "input_1" ==> "inputs0"
Output names: "output_eyes_contours_and_brows,output_iris" ==> "outputs0,outputs1"
Replace unk__** with 1
If there are 'unk__**' as a batch size in the model, they should be replaced with 1.
To do this, the onnx model is converted to a python script, and replace those strings.
## python -m onnxconverter_common.onnx2py
cmd_option = f"../{tf_file.stem}.onnx ../{tf_file.stem}.py"
cmd_body = f"python3 -m onnxconverter_common.onnx2py {cmd_option}"
exitcode, output = execute_command("onnxconverter-common", cmd_body, False)
if not os.path.isfile(f"{tf_file.stem}.py"):
assert False, f"Failed onnxconverter-common to create {tf_file.stem}.py\n{output}"
if replace_unk_to_one(tf_file):
print(f"{tf_file} contained 'unk__**' and replaced to 1")
Generate Final ONNX
Finally, the onnx model is recreated.
## generate onnx
onnx_file = f"{tf_file.stem}-convert.onnx"
cmd_body = f"python3 {tf_file.stem}.py {onnx_file}"
exitcode, output_text = execute_command("", cmd_body)
if exitcode != 0:
print(output)
assert False, f"Failed in tf2onnx.convert for {str(tf_file)}"
print(f"Generate onnx as {onnx_file}")
python3 iris_landmark.py iris_landmark-convert.onnx is succeeded.
Generate onnx as iris_landmark-convert.onnx
Quantization and Compilation
Now we are going to compile the model. Because iris_landmark.tflite is a float32 model, we start with quantization with synthetic inputs which means that the inputs are generated synthetically.
For iris_landmark, QB1 as a QB type and 1MB as an ocm size are appropriate. Depending on models, please specify appropriate ones.
from tvm.contrib.epu.chimera_job.hw_config import DEFAULT_8_ARRAY_SIZE
from tvm.contrib.epu.chimera_job.quantize import quadric_quantize
import tvm.contrib.epu.chimera_job.core as core
from tvm.contrib.epu.chimera_job.chimera_job import ChimeraJob
print(f"1. Start quantizing {onnx_file}")
quantize_result = quadric_quantize(onnx_file, 100, synthetic_input=True, asymmetric_activation=True)
print(f"2. Define chimerajob with {quantize_result.qmodel_path}")
cgc_job = ChimeraJob(
model_p=quantize_result.qmodel_path,
**DEFAULT_8_ARRAY_SIZE.to_dict(),
trange_file=quantize_result.tranges_path,
)
print("3. Start analyzing network")
cgc_job.analyze_network()
print("4. Start compiling network")
cgc_job.compile(quiet=True)
print(cgc_job)
1. Start quantizing iris_landmark-convert.onnx
2026-06-19 04:01 - INFO - epu - quantize - Generating synthetic data
2026-06-19 04:01 - INFO - epu - quantize - Optimized model to opset
2026-06-19 04:01 - INFO - epu - quantize - Saved optimized model to iris_landmark-convert_float32_opt.onnx
2026-06-19 04:01 - INFO - epu - quantize - Input shapes: [1, 3, 64, 64]. Input names: inputs0
2026-06-19 04:01 - INFO - epu - quantize - Output shapes: [[1, 213], [1, 15]]. Output names: ['outputs0', 'outputs1']
2026-06-19 04:01 - DEBUG - epu - quantize - Full exclusion set for quantization: ['Softmax', 'Sigmoid', 'QuadricCustomOp']
2026-06-19 04:01 - DEBUG - epu - quantize - excl_nodes []
2026-06-19 04:01 - INFO - epu - quantize - Quantization started...
WARNING:root:Please use QuantFormat.QDQ for activation type QInt8 and weight type QInt8. Or it will lead to bad performance on x64.
2026-06-19 04:01 - INFO - epu - quantize - Quantization done succesfully!
2026-06-19 04:01 - INFO - epu - quantize - ONNX full precision model size: 2.51 MB
2026-06-19 04:01 - INFO - epu - quantize - ONNX quantized model size: 0.73 MB
2026-06-19 04:01 - INFO - epu - quantize - Saved quantized model to /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx
2026-06-19 04:01 - INFO - epu - quantize - Saved shape inferenced model to /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx
2026-06-19 04:01 - INFO - epu - quantize - Checking for remaining FLOAT/FLOAT16 types.
2026-06-19 04:01 - INFO - epu - quantize - Model still has FLOAT/FLOAT16 types. Creating ranges for floating point tensors using calibration data
2026-06-19 04:01 - INFO - epu - quantize - Saved tensor ranges to /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx.tranges
2. Define chimerajob with /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx
/tmp/ipykernel_51397/2932871584.py:10: DeprecationWarning: Specifying hardware configuration through individual parameters is deprecated. Please use hw_config parameter instead. Example: hw_cfg = HWConfig(product='QC-U', ocm_size='16MB'); ChimeraJob('model.onnx', hw_config=hw_cfg)
cgc_job = ChimeraJob(
3. Start analyzing network
2026-06-19 04:01 - INFO - epu - chimera_job - START==================================onnx_ingest
2026-06-19 04:01 - INFO - epu - chimera_job - Numerical ranges provided
2026-06-19 04:01 - INFO - epu - codegen - START===============================optimize_relay
2026-06-19 04:01 - INFO - epu - codegen - START====================quantize_to_cpu_runnable_fx
2026-06-19 04:01 - INFO - epu - fx -
Source name Op Output 0 Range Output 0 Frac Bits
--------------------------------------------- -------------------------- ---------------------- --------------------
conv2d_DequantizeLinear contrib.epu.qlinear_conv2d [-7.34016f, 8.12877f] 27
p_re_lu nn.prelu [-4.42341f, 8.12877f] 27
conv2d_1_DequantizeLinear contrib.epu.qlinear_conv2d [-9.46088f, 12.6724f] 27
p_re_lu_1 nn.prelu [-7.14683f, 12.6724f] 27
add__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-10.066f, 10.9736f] 27
p_re_lu_2 nn.prelu [-2.12711f, 10.9736f] 27
conv2d_3_DequantizeLinear contrib.epu.qlinear_conv2d [-12.067f, 14.5854f] 27
p_re_lu_3 nn.prelu [-3.05304f, 14.5854f] 27
add_1__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-7.94748f, 10.4762f] 27
p_re_lu_4 nn.prelu [-5.0358f, 10.4762f] 27
conv2d_5_DequantizeLinear contrib.epu.qlinear_conv2d [-11.9285f, 9.02918f] 27
p_re_lu_5 nn.prelu [-3.81072f, 9.02918f] 27
add_2__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-6.7741f, 10.1611f] 27
p_re_lu_6 nn.prelu [-2.7213f, 10.1611f] 27
conv2d_7_DequantizeLinear contrib.epu.qlinear_conv2d [-11.8486f, 7.92524f] 27
p_re_lu_7 nn.prelu [-3.46649f, 7.92524f] 27
add_3__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-7.94107f, 11.0875f] 27
p_re_lu_8 nn.prelu [-2.63785f, 11.0875f] 27
conv2d_9_DequantizeLinear contrib.epu.qlinear_conv2d [-5.92408f, 6.8861f] 28
p_re_lu_9 nn.prelu [-2.94938f, 6.8861f] 28
add_4__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-2.89868f, 11.0478f] 27
p_re_lu_10 nn.prelu [-0.71019f, 11.0478f] 27
conv2d_11_DequantizeLinear contrib.epu.qlinear_conv2d [-10.1226f, 8.98949f] 27
p_re_lu_11 nn.prelu [-4.76794f, 8.98949f] 27
add_5__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-4.89435f, 11.1064f] 27
p_re_lu_12 nn.prelu [-0.927484f, 11.1064f] 27
conv2d_13_DequantizeLinear contrib.epu.qlinear_conv2d [-9.40148f, 12.1118f] 27
p_re_lu_13 nn.prelu [-2.30969f, 12.1118f] 27
add_6__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-6.55803f, 10.6822f] 27
p_re_lu_14 nn.prelu [-1.69176f, 10.6822f] 27
conv2d_15_DequantizeLinear contrib.epu.qlinear_conv2d [-7.00121f, 5.14374f] 28
p_re_lu_15 nn.prelu [-1.26485f, 5.14374f] 28
add_7__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-4.59979f, 9.70444f] 27
p_re_lu_16 nn.prelu [-1.88479f, 9.70444f] 27
conv2d_17_DequantizeLinear contrib.epu.qlinear_conv2d [-8.53424f, 6.94931f] 27
p_re_lu_17 nn.prelu [-2.76296f, 6.94931f] 27
add_8__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-5.12762f, 9.24098f] 27
p_re_lu_18 nn.prelu [-1.07331f, 9.24098f] 27
conv2d_19_DequantizeLinear contrib.epu.qlinear_conv2d [-4.45645f, 4.59905f] 28
p_re_lu_19 nn.prelu [-3.41837f, 4.59905f] 28
add_9__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.40875f, 9.00884f] 27
p_re_lu_20 nn.prelu [-1.42879f, 9.00884f] 27
conv2d_21_DequantizeLinear contrib.epu.qlinear_conv2d [-6.34979f, 6.39979f] 28
p_re_lu_21 nn.prelu [-2.07875f, 6.39979f] 28
add_10__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-4.40711f, 7.84562f] 27
p_re_lu_22 nn.prelu [-2.62492f, 7.84562f] 27
conv2d_23_DequantizeLinear contrib.epu.qlinear_conv2d [-3.55038f, 4.68005f] 28
p_re_lu_23 nn.prelu [-1.54221f, 4.68005f] 28
add_11__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-5.18704f, 7.36066f] 27
p_re_lu_24 nn.prelu [-1.06645f, 7.36066f] 27
conv2d_25_DequantizeLinear contrib.epu.qlinear_conv2d [-2.8864f, 3.40447f] 28
p_re_lu_25 nn.prelu [-1.6651f, 3.40447f] 28
add_12__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-2.43735f, 6.1792f] 28
p_re_lu_26 nn.prelu [-1.35755f, 6.1792f] 28
conv2d_27_DequantizeLinear contrib.epu.qlinear_conv2d [-2.71805f, 2.9672f] 28
p_re_lu_27 nn.prelu [-1.4354f, 2.9672f] 28
add_13__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.01204f, 5.84479f] 28
p_re_lu_28 nn.prelu [-2.26777f, 5.84479f] 28
conv2d_29_DequantizeLinear contrib.epu.qlinear_conv2d [-2.9351f, 2.71274f] 29
p_re_lu_29 nn.prelu [-0.669236f, 2.71274f] 29
add_14__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.08454f, 6.09651f] 28
p_re_lu_30 nn.prelu [-1.78016f, 6.09651f] 28
conv2d_31_DequantizeLinear contrib.epu.qlinear_conv2d [-2.95665f, 2.37818f] 29
p_re_lu_31 nn.prelu [-2.15735f, 2.37818f] 29
add_15__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.39989f, 7.39477f] 27
p_re_lu_32 nn.prelu [-1.07502f, 7.39477f] 27
conv2d_33_DequantizeLinear contrib.epu.qlinear_conv2d [-2.49351f, 2.87388f] 29
p_re_lu_33 nn.prelu [-0.966073f, 2.87388f] 29
add_16__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-2.24598f, 7.72303f] 27
p_re_lu_34 nn.prelu [-1.32124f, 7.72303f] 27
conv2d_35_DequantizeLinear contrib.epu.qlinear_conv2d [-1.94053f, 2.86369f] 29
p_re_lu_35 nn.prelu [-0.606001f, 2.86369f] 29
add_17__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-2.37886f, 9.42214f] 27
p_re_lu_36 nn.prelu [-1.77375f, 9.42214f] 27
conv_eyes_contours_and_brows_DequantizeLinear contrib.epu.qlinear_conv2d [-16.2439f, 53.6875f] 25
output_eyes_contours_and_brows reshape [-16.2439f, 53.6875f] 25
conv2d_37_DequantizeLinear contrib.epu.qlinear_conv2d [-6.32238f, 6.17535f] 28
p_re_lu_37 nn.prelu [-1.70034f, 6.17535f] 28
add_18__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.71438f, 8.22806f] 27
p_re_lu_38 nn.prelu [-1.41333f, 8.22806f] 27
conv2d_39_DequantizeLinear contrib.epu.qlinear_conv2d [-4.17118f, 5.15909f] 28
p_re_lu_39 nn.prelu [-1.86831f, 5.15909f] 28
add_19__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-2.95929f, 7.65187f] 27
p_re_lu_40 nn.prelu [-1.74262f, 7.65187f] 27
conv2d_41_DequantizeLinear contrib.epu.qlinear_conv2d [-2.51177f, 4.32132f] 28
p_re_lu_41 nn.prelu [-1.92909f, 4.32132f] 28
add_20__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.59001f, 6.76737f] 28
p_re_lu_42 nn.prelu [-3.03545f, 6.76737f] 28
conv2d_43_DequantizeLinear contrib.epu.qlinear_conv2d [-3.10935f, 3.1587f] 28
p_re_lu_43 nn.prelu [-1.12316f, 3.1587f] 28
add_21__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.15547f, 7.07959f] 27
p_re_lu_44 nn.prelu [-2.41626f, 7.07959f] 27
conv2d_45_DequantizeLinear contrib.epu.qlinear_conv2d [-2.49229f, 4.89763f] 28
p_re_lu_45 nn.prelu [-1.29383f, 4.89763f] 28
add_22__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-2.59179f, 7.12743f] 27
p_re_lu_46 nn.prelu [-1.90979f, 7.12743f] 27
conv2d_47_DequantizeLinear contrib.epu.qlinear_conv2d [-4.71281f, 4.07975f] 28
p_re_lu_47 nn.prelu [-0.833847f, 4.07975f] 28
add_23__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-5.07581f, 8.33501f] 27
p_re_lu_48 nn.prelu [-2.02173f, 8.33501f] 27
conv2d_49_DequantizeLinear contrib.epu.qlinear_conv2d [-3.38343f, 5.42039f] 28
p_re_lu_49 nn.prelu [-1.10543f, 5.42039f] 28
add_24__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-4.17947f, 9.09036f] 27
p_re_lu_50 nn.prelu [-1.18274f, 9.09036f] 27
conv2d_51_DequantizeLinear contrib.epu.qlinear_conv2d [-2.541f, 3.24432f] 28
p_re_lu_51 nn.prelu [-0.56593f, 3.24432f] 28
add_25__xeno_compat__1_DequantizeLinear contrib.epu.dequantize [-3.64679f, 10.4431f] 27
p_re_lu_52 nn.prelu [-2.46499f, 10.4431f] 27
conv_iris_DequantizeLinear contrib.epu.qlinear_conv2d [-6.43777f, 43.3086f] 25
output_iris reshape [-6.43777f, 43.3086f] 25
Analysis of /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx
4. Start compiling network
╒═════════════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Module Name │ iris_landmark_convert_opt_asym_int8_q_QC_N_1d7_8MB_4kB_128GBps_128GBps_16_OFF_x1_x1 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ONNX File │ /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Product Target │ QC-N │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Number of Cores │ 1 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ISS Clock Frequency │ 1.700 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ L2M Size │ 8MB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ LRM Size │ 4kB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Read BW │ 128GBps │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Write BW │ 128GBps │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ MACS per PE │ 16 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max L2M │ 0.298MB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max LRM │ 0.812kB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max Temp Ext Bytes │ 0.000MB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Network GMACs │ 0.054 │
╘═════════════════════╧═══════════════════════════════════════════════════════════════════════════════════════════════════════╛
╒════╤════════╤══════════╤════════════════╤══════════════════════════╤═══════╕
│ │ Type │ Name │ shape │ type │ mse │
╞════╪════════╪══════════╪════════════════╪══════════════════════════╪═══════╡
│ 0 │ Input │ inputs0 │ [1, 3, 64, 64] │ tensor[FixedPoint32<30>] │ n/a │
├────┼────────┼──────────┼────────────────┼──────────────────────────┼───────┤
│ 1 │ Output │ outputs0 │ [1, 213] │ tensor[FixedPoint32<25>] │ n/a │
├────┼────────┼──────────┼────────────────┼──────────────────────────┼───────┤
│ 2 │ Output │ outputs1 │ [1, 15] │ tensor[FixedPoint32<25>] │ n/a │
╘════╧════════╧══════════╧════════════════╧══════════════════════════╧═══════╛
cgc_job.run_inference_harness()
print(cgc_job)
cgc_job.plot_run_statistics()
2026-06-19 04:04 - INFO - epu - iss_testing - Found tranges for input: <tvm.contrib.epu.interval.Interval object at 0x7b6bf0d88850>
FILM 17/17: 100%|███████████████████████████████████████████████████| 17/17 [00:04<00:00, 3.90it/s]
2026-06-19 04:04 - INFO - epu - iss_testing - Found tranges for input: <tvm.contrib.epu.interval.Interval object at 0x7b6a60782e30>
2026-06-19 04:04 - INFO - epu - iss_testing - Started Executing Onnxruntime...
2026-06-19 04:04 - INFO - epu - iss_testing - Done 0:00:00.065080
╒═════════════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Module Name │ iris_landmark_convert_opt_asym_int8_q_QC_N_1d7_8MB_4kB_128GBps_128GBps_16_OFF_x1_x1 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ONNX File │ /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/iris_landmark-convert_opt_asym_int8_q.onnx │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Product Target │ QC-N │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Number of Cores │ 1 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ISS Clock Frequency │ 1.700 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ L2M Size │ 8MB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ LRM Size │ 4kB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Read BW │ 128GBps │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Write BW │ 128GBps │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ MACS per PE │ 16 │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max L2M │ 0.298MB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max LRM │ 0.812kB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max Temp Ext Bytes │ 0.000MB │
├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Network GMACs │ 0.054 │
╘═════════════════════╧═══════════════════════════════════════════════════════════════════════════════════════════════════════╛
╒════╤════════╤══════════╤════════════════╤══════════════════════════╤════════╕
│ │ Type │ Name │ shape │ type │ mse │
╞════╪════════╪══════════╪════════════════╪══════════════════════════╪════════╡
│ 0 │ Input │ inputs0 │ [1, 3, 64, 64] │ tensor[FixedPoint32<30>] │ n/a │
├────┼────────┼──────────┼────────────────┼──────────────────────────┼────────┤
│ 1 │ Output │ outputs0 │ [1, 213] │ tensor[FixedPoint32<25>] │ 24.401 │
├────┼────────┼──────────┼────────────────┼──────────────────────────┼────────┤
│ 2 │ Output │ outputs1 │ [1, 15] │ tensor[FixedPoint32<25>] │ 8.532 │
╘════╧════════╧══════════╧════════════════╧══════════════════════════╧════════╛
Post-ISS Report 1.7 GHz ***
Fully placed-and-routed gate simulation:
╒══════════════════════════════════╤═════════╕
│ Latency (ms) │ 0.56 │
├──────────────────────────────────┼─────────┤
│ FPS │ 1774.41 │
├──────────────────────────────────┼─────────┤
│ Average Power @ 3nm SSGNP (mW) │ 197.18 │
├──────────────────────────────────┼─────────┤
│ FPS per Watt @ 3nm SSGNP (FPS/W) │ 8998.94 │
├──────────────────────────────────┼─────────┤
│ Ext Rd Bytes (MB) │ 1.02 │
├──────────────────────────────────┼─────────┤
│ Ext Wr Bytes (MB) │ 0.00 │
├──────────────────────────────────┼─────────┤
│ Avg Ext Rd BW (GBps) │ 1.77 │
├──────────────────────────────────┼─────────┤
│ Avg Ext Wr BW (GBps) │ 0.00 │
├──────────────────────────────────┼─────────┤
│ MAC Utilization │ 5.47% │
╘══════════════════════════════════╧═════════╛
*** Data generated using 7nm SSGNP gatesim and scaled to 3nm
[SDK-CLI] : TotalCycles: 958,064
[SDK-CLI] : Executions/second: 1,774.41
compute : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 609.536K
data_array : ▇▇▇▇▇▇▇▇▇▇▇ 139.494K
mac : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 171.378K
data_external: ▏ 1.53K
data_ocm : ▇▇ 35.825K
for more information check run directory: /quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/ccl_build/iris_landmark_convert_opt_asym_int8_q_QC_N_1d7_8MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_040429_093bfc
2026-06-19 04:04 - INFO - epu - chimera_job - Combined plots generated and saved to:
/quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/ccl_build/iris_landmark_convert_opt_asym_int8_q_QC_N_1d7_8MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_040429_093bfc/data/iris_landmark_convert_opt_asym_int8_q_QC_N_1d7_8MB_4kB_128GBps_128GBps_16_OFF_x1_x1.combined.png
'/quadric/sdk-cli/examples/models/mediapipe/onnx_conversion/ccl_build/iris_landmark_convert_opt_asym_int8_q_QC_N_1d7_8MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_040429_093bfc/data'
