Well-formatted <network>_c_info.json code-generation output report ¶
This article shows a brief example on how to use the generated
<network>c_info.json
output
files before presenting their structure (i.e. the associated
json
schema).
Usage of the output file ¶
A very simple example of such file is provided here: (the example uses a file created when generating code for Neural-Art target, but the same process for searching information applies on other targets)
{
"buffers": [
{
"alignment": 1,
"batch": 1,
"channel_first": true,
"channel_last": false,
"epochs": {
"end": 6,
"start": 2
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 1,
"intq": {
"axis": -1,
"offsets": [
-33
],
"scales": [
0.0641287
]
},
"is_param": false,
"mpool_id": 1,
"name": "Transpose_5_out_0",
"nbits": 8,
"offset_start": 0,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
1,
32,
64,
5
],
"shape_map": [],
"size_bytes": 10240
},
{
"alignment": 1,
"batch": 1,
"channel_first": true,
"channel_last": true,
"epochs": {
"end": 5,
"start": 2
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 2,
"intq": {
"axis": -1,
"offsets": [
0
],
"scales": [
0.00392156094
]
},
"is_param": false,
"mpool_id": 1,
"name": "Conv2D_3_zero_off_2_inserted_out19",
"nbits": 8,
"offset_start": 10288,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
1
],
"shape_map": [],
"size_bytes": 1
},
{
"alignment": 1,
"batch": 5,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 5,
"start": 3
},
"flags": "",
"format": "STAI_FORMAT_Q",
"id": 3,
"is_param": false,
"mpool_id": 1,
"name": "Conv2D_3_mul_scale_5_inserted_out20",
"nbits": 16,
"offset_start": 10272,
"qmn": {
"m": -13,
"n": 28,
"sign": 1
},
"shape": [
5,
1,
1
],
"shape_map": [],
"size_bytes": 10
},
{
"alignment": 1,
"batch": 5,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 5,
"start": 4
},
"flags": "",
"format": "STAI_FORMAT_Q",
"id": 4,
"is_param": false,
"mpool_id": 1,
"name": "Conv2D_3_off_bias_8_inserted_out21",
"nbits": 32,
"offset_start": 10240,
"qmn": {
"m": 11,
"n": 20,
"sign": 1
},
"shape": [
5,
1,
1
],
"shape_map": [],
"size_bytes": 20
},
{
"alignment": 1,
"batch": 5,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 6,
"start": 2
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 5,
"intq": {
"axis": -1,
"offsets": [
-33
],
"scales": [
0.0641287
]
},
"is_param": false,
"mpool_id": 1,
"name": "Conv2D_3_off_bias_out_7",
"nbits": 8,
"offset_start": 0,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
1,
5,
32,
64
],
"shape_map": [],
"size_bytes": 10240
},
{
"alignment": 1,
"batch": 3,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 6,
"start": 0
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 6,
"intq": {
"axis": 1,
"offsets": [
0,
0,
0,
0,
0
],
"scales": [
0.0122140869,
0.0193230845,
0.0177626014,
0.0191023592,
0.021265354
]
},
"is_param": true,
"mpool_id": 2,
"name": "Conv2D_3_weights",
"nbits": 8,
"offset_start": 0,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
5,
3,
3,
3
],
"shape_map": [],
"size_bytes": 135
},
{
"alignment": 1,
"batch": 1,
"channel_first": true,
"channel_last": true,
"epochs": {
"end": 6,
"start": 0
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 7,
"intq": {
"axis": -1,
"offsets": [
0
],
"scales": [
0.00392156094
]
},
"is_param": true,
"mpool_id": 2,
"name": "Conv2D_3_zero_off_2",
"nbits": 8,
"offset_start": 192,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
1
],
"shape_map": [],
"size_bytes": 1
},
{
"alignment": 1,
"batch": 5,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 6,
"start": 0
},
"flags": "",
"format": "STAI_FORMAT_Q",
"id": 8,
"is_param": true,
"mpool_id": 2,
"name": "Conv2D_3_mul_scale_5",
"nbits": 16,
"offset_start": 176,
"qmn": {
"m": -13,
"n": 28,
"sign": 1
},
"shape": [
5,
1,
1
],
"shape_map": [],
"size_bytes": 10
},
{
"alignment": 1,
"batch": 5,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 6,
"start": 0
},
"flags": "",
"format": "STAI_FORMAT_Q",
"id": 9,
"is_param": true,
"mpool_id": 2,
"name": "Conv2D_3_off_bias_8",
"nbits": 32,
"offset_start": 144,
"qmn": {
"m": 11,
"n": 20,
"sign": 1
},
"shape": [
5,
1,
1
],
"shape_map": [],
"size_bytes": 20
},
{
"alignment": 1,
"batch": 1,
"channel_first": true,
"channel_last": false,
"epochs": {
"end": 5,
"start": 0
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 10,
"intq": {
"axis": -1,
"offsets": [
-128
],
"scales": [
0.00392156094
]
},
"is_param": false,
"mpool_id": 3,
"name": "Input_0_out_0",
"nbits": 8,
"offset_start": 0,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
1,
32,
64,
3
],
"shape_map": [],
"size_bytes": 6144
},
{
"alignment": 1,
"batch": 3,
"channel_first": false,
"channel_last": true,
"epochs": {
"end": 5,
"start": 0
},
"flags": "",
"format": "STAI_FORMAT_S8",
"id": 11,
"intq": {
"axis": -1,
"offsets": [
-128
],
"scales": [
0.00392156094
]
},
"is_param": false,
"mpool_id": 3,
"name": "Transpose_1_out_0",
"nbits": 8,
"offset_start": 0,
"qmn": {
"m": 7,
"n": 0,
"sign": 1
},
"shape": [
1,
3,
32,
64
],
"shape_map": [],
"size_bytes": 6144
}
],
"environment": {
"device": "stm32 family - 0x486 - STM32N6xx @800/400MHz",
"generated_model": {
"generated_time": "2025-04-16T16:13:02+0200",
"model_files": [
{
"name": "network.c",
"signature": ""
},
{
"name": "atonbuf.AXISRAM2.raw",
"signature": ""
},
{
"name": "atonbuf.xSPI2.raw",
"signature": ""
},
{
"name": "atonbuf._user_io_input_0.c",
"signature": ""
}
],
"n_params": 0,
"name": "Default",
"size": 0,
"type": ""
},
"network_signature": "0x9e8ea32c0e3119b0",
"target": "",
"test_name": "",
"tools": [
{
"arguments": "generate -m C:\\Users\\johndoe\\CODE\\stm.ai/models/tflites/model__2025_04_16-16_09_48.tflite --target stm32n6 --st-neural-art default-ez@new_root/user_neuralart.json --no-inputs-allocation",
"environment": [],
"input_model": {
"generated_time": "",
"model_files": [
{
"name": "model__2025_04_16-16_09_48.tflite",
"signature": "0x6fbf2ac29853ca949eff51f802cd3f72"
}
],
"n_params": 140,
"name": "model__2025_04_1616_09_48",
"size": 155,
"type": "tflite"
},
"name": "ST.EdgeAI.Core",
"version": "2.1.0-dev"
},
{
"arguments": " -i C:\\Users\\johndoe\\CODE\\stm.ai\\st_ai_output\\model__2025_04_16-16_09_48_OE_3_2_0.onnx --json-quant-file C:\\Users\\johndoe\\CODE\\stm.ai\\st_ai_output\\model__2025_04_16-16_09_48_OE_3_2_0_Q.json -g network.c --load-mdesc C:\\Users\\johndoe\\CODE\\ATON_Compiler\\v1.1.0-25\\configs\\stm32n6.mdesc --load-mpool C:\\Users\\johndoe\\CODE\\stm.ai\\new_root\\my_mpools\\stm32 n6.mpool --save-mpool-file C:\\Users\\johndoe\\CODE\\stm.ai\\st_ai_ws\\neural_art__network\\stm32 n6.mpool --out-dir-prefix C:\\Users\\johndoe\\CODE\\stm.ai\\st_ai_ws\\neural_art__network/ --mvei --cache-maintenance --enable-virtual-mem-pools --native-float --Ocache-opt --all-buffers-info --encrypt-weights --output-info-file c_info.json",
"environment": [],
"input_model": {
"generated_time": "2025-04-16T16:13:02+0200",
"model_files": [
{
"name": "model__2025_04_16-16_09_48_OE_3_2_0.onnx",
"signature": "0x2aa7f195717dbcd3016be720958d6499"
}
],
"n_params": 0,
"name": "network",
"size": 0,
"type": ""
},
"name": "ATONN Compiler",
"version": "1.1.0-25"
}
]
},
"graphs": [
{
"edges": [
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_FLOW",
"end": {
"node_id": 7,
"port": 0
},
"id": 1,
"name": "epochdep_0_1",
"start": {
"node_id": 1,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_FLOW",
"end": {
"node_id": 9,
"port": 0
},
"id": 2,
"name": "epochdep_1_2",
"start": {
"node_id": 7,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_FLOW",
"end": {
"node_id": 11,
"port": 0
},
"id": 3,
"name": "epochdep_2_3",
"start": {
"node_id": 9,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_FLOW",
"end": {
"node_id": 13,
"port": 0
},
"id": 4,
"name": "epochdep_3_4",
"start": {
"node_id": 11,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_FLOW",
"end": {
"node_id": 15,
"port": 0
},
"id": 5,
"name": "epochdep_4_5",
"start": {
"node_id": 13,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_FLOW",
"end": {
"node_id": 21,
"port": 0
},
"id": 6,
"name": "epochdep_5_6",
"start": {
"node_id": 15,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_INTERNAL",
"end": {
"node_id": 17,
"port": 0
},
"id": 7,
"name": "Conv2D_3_zero_off_out_1_FLOAT__1_3_32_64__",
"start": {
"node_id": 16,
"port": 0
}
},
{
"attributes": {},
"buffer": 6,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 17,
"port": 0
},
"id": 8,
"name": "Conv2D_3_weights_FLOAT__5_3_3_3__",
"start": {
"node_id": 4,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_INTERNAL",
"end": {
"node_id": 18,
"port": 0
},
"id": 9,
"name": "Conv2D_3_out_0_FLOAT__1_5_32_64__",
"start": {
"node_id": 17,
"port": 0
}
},
{
"attributes": {},
"buffer": 0,
"edge_kind": "EDGE_INTERNAL",
"end": {
"node_id": 19,
"port": 0
},
"id": 10,
"name": "Conv2D_3_mul_scale_out_4_FLOAT__1_5_32_64__",
"start": {
"node_id": 18,
"port": 0
}
},
{
"attributes": {},
"buffer": 1,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 22,
"port": 0
},
"id": 11,
"name": "Transpose_5_out_0_INT8__1_32_64_5__",
"start": {
"node_id": 20,
"port": 0
}
},
{
"attributes": {},
"buffer": 11,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 16,
"port": 0
},
"id": 12,
"name": "Dequantize_2_out_0_FLOAT__1_3_32_64__",
"start": {
"node_id": 8,
"port": 0
}
},
{
"attributes": {},
"buffer": 5,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 20,
"port": 0
},
"id": 13,
"name": "Quantize_4_out_0_INT8__1_5_32_64__",
"start": {
"node_id": 19,
"port": 0
}
},
{
"attributes": {},
"buffer": 10,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 8,
"port": 0
},
"id": 14,
"name": "Input_0_out_0_INT8__1_32_64_3__",
"start": {
"node_id": 5,
"port": 0
}
},
{
"attributes": {},
"buffer": 7,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 10,
"port": 0
},
"id": 15,
"name": "Conv2D_3_zero_off_2_FLOAT__1__",
"start": {
"node_id": 2,
"port": 0
}
},
{
"attributes": {},
"buffer": 2,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 16,
"port": 0
},
"id": 16,
"name": "Conv2D_3_zero_off_2_FLOAT__1__",
"start": {
"node_id": 10,
"port": 0
}
},
{
"attributes": {},
"buffer": 8,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 12,
"port": 0
},
"id": 17,
"name": "Conv2D_3_mul_scale_5_FLOAT__5_1_1__",
"start": {
"node_id": 6,
"port": 0
}
},
{
"attributes": {},
"buffer": 3,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 18,
"port": 0
},
"id": 18,
"name": "Conv2D_3_mul_scale_5_FLOAT__5_1_1__",
"start": {
"node_id": 12,
"port": 0
}
},
{
"attributes": {},
"buffer": 9,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 14,
"port": 0
},
"id": 19,
"name": "Conv2D_3_off_bias_8_FLOAT__5_1_1__",
"start": {
"node_id": 3,
"port": 0
}
},
{
"attributes": {},
"buffer": 4,
"edge_kind": "EDGE_MEMORY",
"end": {
"node_id": 19,
"port": 0
},
"id": 20,
"name": "Conv2D_3_off_bias_8_FLOAT__5_1_1__",
"start": {
"node_id": 14,
"port": 0
}
}
],
"exec_time": {
"counters": null,
"cycles": 37273,
"cycles_by_macc": 0.0,
"duration_ms": 0.046591250225901604,
"percentage": 100.0
},
"id": 1,
"inputs": [
10
],
"name": "Default",
"nodes": [
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 1,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "epoch_0",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=Param",
"id": 2,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_zero_off_2",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Param",
"id": 3,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_off_bias_8",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Param",
"id": 4,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_weights",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Param",
"id": 5,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Input_0_out_0",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Param",
"id": 6,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_mul_scale_5",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
},
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 7,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "epoch_1",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=Transpose",
"id": 8,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Transpose_1",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
},
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 9,
"inputs": [
7
],
"macc": 0,
"mapping": "NODE_HW",
"name": "epoch_2",
"original_nodes": [],
"outputs": [
2
],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=WeightDecrypt",
"id": 10,
"inputs": [
7
],
"macc": 0,
"mapping": "NODE_HW",
"name": "WeightDecrypt_inserted_id19",
"original_nodes": [],
"outputs": [
2
],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
},
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 11,
"inputs": [
8
],
"macc": 0,
"mapping": "NODE_HW",
"name": "epoch_3",
"original_nodes": [],
"outputs": [
3
],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=WeightDecrypt",
"id": 12,
"inputs": [
8
],
"macc": 0,
"mapping": "NODE_HW",
"name": "WeightDecrypt_inserted_id20",
"original_nodes": [],
"outputs": [
3
],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
},
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 13,
"inputs": [
9
],
"macc": 0,
"mapping": "NODE_HW",
"name": "epoch_4",
"original_nodes": [],
"outputs": [
4
],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=WeightDecrypt",
"id": 14,
"inputs": [
9
],
"macc": 0,
"mapping": "NODE_HW",
"name": "WeightDecrypt_inserted_id21",
"original_nodes": [],
"outputs": [
4
],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
},
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 15,
"inputs": [
2,
11,
6,
3,
4
],
"macc": 0,
"mapping": "NODE_HW",
"name": "epoch_5",
"original_nodes": [],
"outputs": [
5
],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=Sub",
"id": 16,
"inputs": [
2,
11
],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_suboff_0",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Conv",
"id": 17,
"inputs": [
6
],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Mul",
"id": 18,
"inputs": [
3
],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_mul_scale_3",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Add",
"id": 19,
"inputs": [
4
],
"macc": 0,
"mapping": "NODE_HW",
"name": "Conv2D_3_off_bias_6",
"original_nodes": [],
"outputs": [
5
],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
},
{
"attributes": {},
"description": "Node kind=Transpose",
"id": 20,
"inputs": [],
"macc": 0,
"mapping": "NODE_HW",
"name": "Transpose_5",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
},
{
"attributes": {},
"description": "",
"exec_time": {},
"id": 21,
"inputs": [
1
],
"macc": 0,
"mapping": "NODE_SW",
"name": "epoch_6",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [
{
"attributes": {},
"description": "Node kind=Return",
"id": 22,
"inputs": [
1
],
"macc": 0,
"mapping": "NODE_SW",
"name": "__NN__RETURN__",
"original_nodes": [],
"outputs": [],
"scratchs": [],
"subgraph_nodes": [],
"sw_functions": []
}
],
"sw_functions": []
}
],
"original_inputs": [
{
"c_shape_map": [
"BATCH",
"H",
"W",
"CH"
],
"data_format": {
"quantizer": "UNIFORM",
"scale": [
0.00392156094
],
"size": 8,
"type": "SIGNED",
"zero": [
-128
]
},
"name": "serving_default_The_input0",
"shape": [
1,
32,
64,
3
],
"shape_map": [
"BATCH",
"H",
"W",
"CH"
]
}
],
"original_outputs": [
{
"c_shape_map": [
"BATCH",
"H",
"W",
"CH"
],
"data_format": {
"quantizer": "UNIFORM",
"scale": [
0.0641287
],
"size": 8,
"type": "SIGNED",
"zero": [
-33
]
},
"name": "conv2d_0",
"shape": [
1,
32,
64,
5
],
"shape_map": [
"BATCH",
"H",
"W",
"CH"
]
}
],
"outputs": [
1
]
}
],
"json_schema_version": "2.0",
"memory_accesses": [
{
"mpool_id": 2,
"node_id": 1,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 1,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 2,
"node_id": 7,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 7,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 2,
"node_id": 9,
"read_cycles": 6,
"reads": 1,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 9,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 1
},
{
"mpool_id": 2,
"node_id": 11,
"read_cycles": 30,
"reads": 10,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 11,
"read_cycles": 0,
"reads": 0,
"write_cycles": 1,
"writes": 10
},
{
"mpool_id": 2,
"node_id": 13,
"read_cycles": 60,
"reads": 20,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 13,
"read_cycles": 0,
"reads": 0,
"write_cycles": 3,
"writes": 20
},
{
"mpool_id": 2,
"node_id": 15,
"read_cycles": 810,
"reads": 135,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 15,
"read_cycles": 0,
"reads": 0,
"write_cycles": 3200,
"writes": 10240
},
{
"mpool_id": 2,
"node_id": 21,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 0
},
{
"mpool_id": 1,
"node_id": 21,
"read_cycles": 0,
"reads": 0,
"write_cycles": 0,
"writes": 0
}
],
"memory_footprint": {
"activations": 10289,
"io": [
6144,
0
],
"kernel_flash": null,
"kernel_ram": null,
"series": "generic",
"toolchain": null,
"toolchain_flash": null,
"toolchain_ram": null,
"weights": 193
},
"memory_pools": [
{
"address": "873463808",
"alignment": 8,
"attributes": {
"burst_max_length": 4294967295,
"burst_penalty": 0,
"byte_width": 8,
"freq_ratio": 2.5,
"latency": "MID",
"read_power": 17.324,
"score": 84,
"throughput": "MID",
"use_for_initrs": false,
"write_power": 15.321
},
"buffers": [
1,
2,
3,
4,
5
],
"cacheable": "CACHEABLE_UNDEF",
"fname": "atonbuf.AXISRAM2.raw",
"id": 1,
"name": "cpuRAM2",
"offset_start": 0,
"persistent": true,
"pipelined": "PIPELINED_ON",
"rights": "ACC_WRITE",
"size_bytes": 1048576,
"subpools": [],
"used_size_bytes": 10289,
"user_allocated": false
},
{
"address": "1895825408",
"alignment": 8,
"attributes": {
"burst_max_length": 4294967295,
"burst_penalty": 0,
"byte_width": 1,
"encryption": {
"offset": 0,
"size": 193
},
"freq_ratio": 6,
"latency": "LOW",
"read_power": 110,
"score": 50,
"throughput": "MID",
"use_for_initrs": true,
"write_power": 400
},
"buffers": [
6,
7,
8,
9
],
"cacheable": "CACHEABLE_ON",
"fname": "atonbuf.xSPI2.raw",
"id": 2,
"name": "octoFlash",
"offset_start": 0,
"persistent": true,
"pipelined": "PIPELINED_ON",
"rights": "ACC_READ",
"size_bytes": 117440512,
"subpools": [],
"used_size_bytes": 193,
"user_allocated": false
},
{
"address": "",
"alignment": 32,
"attributes": {
"burst_max_length": 4294967295,
"burst_penalty": 0,
"byte_width": 2,
"freq_ratio": 1,
"latency": "LOW",
"read_power": 0,
"score": 74,
"throughput": "LOW",
"use_for_initrs": false,
"write_power": 0
},
"buffers": [
10,
11
],
"cacheable": "CACHEABLE_UNDEF",
"fname": "atonbuf._user_io_input_0.c",
"id": 3,
"name": "_user_io_input_0",
"offset_start": 0,
"persistent": true,
"pipelined": "PIPELINED_ON",
"rights": "ACC_WRITE",
"size_bytes": 6144,
"subpools": [],
"used_size_bytes": 0,
"user_allocated": true
}
],
"power_estimates": [
{
"average_acc_power_mw": 0,
"average_memory_power_mw": 0,
"compute_cycles": 0,
"max_cycles": 0,
"node_id": 1,
"ops": 0
},
{
"average_acc_power_mw": 0,
"average_memory_power_mw": 0,
"compute_cycles": 0,
"max_cycles": 0,
"node_id": 7,
"ops": 0
},
{
"average_acc_power_mw": 0,
"average_memory_power_mw": 0,
"compute_cycles": 0,
"max_cycles": 6,
"node_id": 9,
"ops": 0
},
{
"average_acc_power_mw": 0,
"average_memory_power_mw": 0,
"compute_cycles": 0,
"max_cycles": 60,
"node_id": 11,
"ops": 0
},
{
"average_acc_power_mw": 0,
"average_memory_power_mw": 0,
"compute_cycles": 0,
"max_cycles": 120,
"node_id": 13,
"ops": 0
},
{
"average_acc_power_mw": 42,
"average_memory_power_mw": 6,
"compute_cycles": 10240,
"max_cycles": 10240,
"node_id": 15,
"ops": 579584
},
{
"average_acc_power_mw": 0,
"average_memory_power_mw": 0,
"compute_cycles": 0,
"max_cycles": 0,
"node_id": 21,
"ops": 0
}
],
"aton_execution_time": [
{
"counters": [
3443,
2175,
1316
],
"cycles": 6933,
"cycles_by_macc": 0,
"duration_ms": 0.008667499758303165,
"percentage": 18.60327790363655
},
{
"counters": [
2084,
796,
801
],
"cycles": 3680,
"cycles_by_macc": 0,
"duration_ms": 0.004601249936968088,
"percentage": 9.875781213550914
},
{
"counters": [
2190,
847,
801
],
"cycles": 3838,
"cycles_by_macc": 0,
"duration_ms": 0.004797500092536211,
"percentage": 10.29699797553216
},
{
"counters": [
11081,
9306,
2433
],
"cycles": 22820,
"cycles_by_macc": 0,
"duration_ms": 0.02852500043809414,
"percentage": 61.22394290728038
}
],
"validation": {
"val_error": 0.002217280911281705,
"val_error_desc": "x-cross (l2r) #1",
"val_metrics": [
{
"acc": "n.a.",
"cos": 0.9999973773956299,
"desc": "X-cross #1",
"l2r": 0.002217280911281705,
"mae": 0.0005135306855663657,
"mean": -0.00011272610572632402,
"nse": 0.9999934029168769,
"rmse": 0.005738645792007446,
"std": 0.005737537983804941
}
]
}
}
This example has been generated by doing a “generate” on a small model to be tested on stm32n6 with Neural-Art enabled.
This command generates a file
st_ai_output/network_c_info.json:
stedgeai generate -m MYMODEL.tflite --target stm32n6 --st-neural-art my_profile@user_neural_art.json
It has then been completed by a “validate” step done by the user after loading the proper validation project on board.
stedgeai validate -m MYMODEL.tflite --target stm32n6 --mode target --desc serial:921600 --val-json st_ai_output/network_c_info.json
Below are shown a few information that can be found digging into this json file.
Generation information ¶
Information about generation steps can be found in the
environment
key. In the example above, it is possible to see that the generation
corresponding to this file was done with a model
model__2025_04_16-16_09_48.tflite, that the generation requested
a “generate” for stm32n6 with use of the Neural-Art. It is noted that the user requested to use the
--no-inputs-allocation,
so the tool should not allocate space for the inputs, it is the duty of the user to do so. The options used for the Neural-Art compiler
were (among others):
--cache-maintenance
--enable-virtual-mem-pools
--native-float
--Ocache-opt
--all-buffers-info
--encrypt-weights
Memory usage ¶
Looking at the
memory_pools
part of the json provided, one can see that the user provided two memory pools:
cpuRAM2@ [0x34100000 - 0x34200000]contains buffers 1,2,3,4,5
all buffers use up to 10.048kB (=10289 bytes)
octoFlash@ [0x71000000 - 0x78000000].contains buffers 6,7,8,9
all buffers take 193 bytes
all buffers from offset 0 to offset 193 bytes are encrypted. (see
"attributes":"encryption")
An additional pool is found in the json file (added in the file by the tools because the user requested to use
--no-inputs-allocation)This pool is not allocated by the tools (see
"user_allocated": true)This pool has no address allocated by the tool
This pool has a total size of 6144 (which is the size of the input buffer, as we will see below)
Finding characteristics of the I/O buffers of a model ¶
An easy and efficient way to find where are the input/output buffers located is to:
Read the
graphsentry of the jsonAt the current time, the first item always represent the main graph of execution.
In the first graph, look at the
inputsandoutputsentries: those are the links to buffer IDs (to be found in thebufferspart of the JSON file)
In the example above, it is easy to see that the only input buffer is buffer with ID=
10, the only output buffer is the buffer with ID=
1.
Following the tracks… to the buffer part of the json, looking for buffers where
"id"=1
and
"id"=10, we find that:
Output buffer (
id=1)has a shape of
[1,32,64,5]is 10240 bytes (10kB)
is stored in memory pool with id=1:
cpuRAM2, at offset 0 from the base ofcpuRAM2.
Input buffer (
id=10) – this one is a bit special because it is not allocated by the toolshas a shape of
[1, 32, 64, 3]is 6144 bytes long
is stored in memory pool with id=3 (the one presented above, containing user-allocated buffers)
Checking validation on target scores ¶
As a validation has been done on this code, it is possible to find “scores” for the validation by looking at the
validation
entry.
For this model, we can see that the model seems to be well supported by the tools: for the only output it has, it is observed
that when fed with the same inputs, and comparing the outputs of the original “tflite” model vs the outputs of the c-model-generated-by-stedgeai, the error is low.
In particular, the
cos
metric (cosine similarity) is very close to 1, and
l2r
(L2 relative error) is very close to 0.
Fields description of the file ¶
Overview ¶
This section provides a detailed description of the JSON schema for the unified networks output format. The schema is designed to standardize the output format for tools information, ensuring consistency and ease of use.
Reference ¶
The up-to-date schema can be found in
<installation_dir>/Utilities/etc/schemas/ai_json_schema_v2.0.json.
Below is an attempt at describing the schema.
Properties ¶
Main properties are detailed here, a lot of them use references to objects defined in the Definitions part below. All the “ Description ” lines can be unfolded to show greater details about the contents of each part of the JSON file.
json_schema_version
¶
Description: Specifies the version of the JSON schema.
Type:
stringPattern:
^[0-9]+\.[0-9]+Examples:
["1.2", "1.2.3"]
environment
¶
Description: Information related to the used environment.
Type:
object$ref: #/$defs/environment_desc
buffers
¶
Description: Description of all allocated buffers.
Type:
arrayItems: #/$defs/buffer
graphs
¶
Description: List of all graphs of the network as an array.
Type:
arrayItems: #/$defs/graph
memory_pools
¶
Description: Description of all memory pools and their contents.
Type:
arrayItems: #/$defs/mempool
memory_accesses
¶
Description: Description of memory accesses per epoch per memory pool.
Type:
arrayItems: #/$defs/memory_access
power_estimates
¶
Description: Description of power consumption per epoch.
Type:
arrayItems: #/$defs/power_estimate
validation
¶
Description: Description of model validation.
Type:
objectProperties:
device: Where was the validation performed?
Type:
stringEnum:
["VALIDATION_HOST", "VALIDATION_SIMULATOR", "VALIDATION_TARGET"]
val_error: Validation error.
Type:
number
val_error_desc: Validation error description.
Type:
stringPattern:
^[a-zA-Z0-9_]+$
val_metrics: Validation metrics.
Type:
arrayItems: #/$defs/val_metrics
Required:
["device", "val_metrics"]
memory_footprint
¶
Description: Description of memory footprint.
Type:
objectProperties:
activations: Activation size in bytes.
Type:
integer
weights: Weights size in bytes.
Type:
integer
io: Array of size 2 containing respectively input size and output size, in bytes.
Type:
arrayItems:
integer
kernel_flash: Kernel flash in bytes.
Type:
integerMinimum:
0
kernel_ram: Kernel RAM in bytes.
Type:
integerMinimum:
0
series: Series name.
Type:
string
toolchain: Toolchain used.
Type:
string
toolchain_flash: Toolchain flash used in bytes.
Type:
integer
toolchain_ram: Toolchain RAM used in bytes.
Type:
integer
aton_execution_time
¶
Description: When doing validation with Neural-Art, time spent on each step during inference.
Type:
arrayItems: #/$defs/aton_exec_t
Definitions (
$defs)
¶
original_details
¶
Description: Details of original inputs/outputs data type & shape.
Type:
objectProperties:
name: Original layer name.
Type:
string
data_format: Details of IO data formats.
Type:
objectProperties:
quantizer: Original IO quantizer type.
Type:
stringEnum:
["NONE", "DOREFA", "UNIFORM"]
scale: Original IO scale.
Type:
arrayItems:
number
zero: Original IO zero.
Type:
arrayItems:
integer
type: Original IO type.
Type:
stringEnum:
["FLOAT", "LUT_FLOAT", "SIGNED", "UNSIGNED", "BOOL", "STRING"]
size: Original IO type size.
Type:
integer
shape: Original IO shapes.
Type:
arrayItems:
integer
shape_map: Original IO shapes map.
Type:
arrayItems:
string
c_shape_map: C-model IO shapes map.
Type:
arrayItems:
string
exec_time
¶
Description: Details of execution per node or per graph.
Type:
objectProperties:
counters: Counters per node.
Type:
arrayItems:
integer
cycles: Cycles per node.
Type:
integer
cycles_by_macc: Cycles by MACC per node.
Type:
number
duration_ms: Inference time per node (ms).
Type:
number
percentage: Percentage of execution time per node.
Type:
number
environment_desc
¶
Description: Info related to the used environment.
Type:
objectProperties:
tools: List of used tools.
Type:
arrayItems: #/$defs/tool_desc
generated_model:
$ref: #/$defs/model_desc
network_signature: Unique Identifier of generated network model.
Type:
string
target: Description of the target device used for generation.
Type:
string
test_name: Name of the test performed.
Type:
string
Required:
["tools", "generated_model", "network_signature"]
file_desc
¶
Description: Descriptors for the files generated.
Type:
objectProperties:
name: Model Filename.
Type:
string
signature: Unique Identifier of the file.
Type:
string
model_desc
¶
Description: Descriptors for the initial model.
Type:
objectProperties:
name: Model name (Optional).
Type:
string
type: Model type.
Type:
string
size: Model size.
Type:
integer
n_params: Model number of parameters.
Type:
integer
model_files:
Type:
arrayItems: #/$defs/file_desc
generated_time: Time of launch of the tool.
Type:
stringFormat:
date-timeExamples:
["2025-03-20T16:19:49+0100", "%Y-%m-%dT%H:%M:%S%z"]
Required:
["model_files"]
tool_desc
¶
Description: Used tools descriptors.
Type:
objectProperties:
name: Tool name.
Type:
string
version: Version number starts with 3-dot-separated-numbers.
Type:
stringPattern:
^[0-9]+\.[0-9]+\.[0-9]Examples:
["1.2.3", "2.3.5-985"]
arguments: Arguments/parameters given to the tool.
Type:
string
environment: Environment used to call the tool.
Type:
arrayItems:
string
input_model:
$ref: #/$defs/model_desc
Required:
["name", "version", "arguments", "input_model"]
val_metrics
¶
Description: Validation metrics.
Type:
objectProperties:
acc: Validation accuracy.
Type:
stringPattern:
^(\\d+(\\.\\d+)?%)
cos: Cosine Similarity, bigger is better, best=1, range=(0, 1].
Type:
number
desc: Validation description.
Type:
stringPattern:
^[a-zA-Z0-9_]+$
l2r: L2 relative error.
Type:
number
mae: Mean Absolute Error.
Type:
number
mean: Mean value.
Type:
number
nse: Nash-Sutcliffe efficiency criteria, bigger is better, best=1, range=(-inf, 1].
Type:
number
rmse: Root Mean Squared Error.
Type:
number
std: Standard deviation.
Type:
number
mempool
¶
Description: Description of a memory pool & its contents.
Type:
objectProperties:
name: Memory pool name.
Type:
stringPattern:
^[a-zA-Z0-9_]+$
fname: Memory pool initializer filename.
Type:
stringPattern:
^[a-zA-Z0-9_ .-]+$
id: Mempool unique identifier.
Type:
integer
alignment: Pool address alignment in bytes.
Type:
integerMinimum:
1
address: When ‘NULL’ or symbol means usemod relative, decimal number >= 0 is absolute.
Type:
string
offset_start: Offset in the memory where the pool starts.
Type:
integer
size_bytes: Full available size of the memory pool, in bytes. -1 means the pool is created by tool.
Type:
integerMinimum:
-1
used_size_bytes: Total allocated size used in the memory pool, in bytes.
Type:
integerMinimum:
0
rights: Equivalent of TargetDescription.mem_access in Target Description Protocol Documentation.
Type:
stringEnum:
["ACC_UNDEF", "ACC_READ", "ACC_WRITE"]
cacheable: Equivalent of TargetDescription.cacheable_val in Target Description Protocol Documentation.
Type:
stringEnum:
["CACHEABLE_UNDEF", "CACHEABLE_ON", "CACHEABLE_OFF"]
pipelined: Equivalent of TargetDescription.pipelined_val in Target Description Protocol Documentation.
Type:
stringEnum:
["PIPELINED_UNDEF", "PIPELINED_ON", "PIPELINED_OFF"]
user_allocated: Is the memory pool corresponding to a user-allocated memory region?
Type:
boolean
persistent: A persistent memory pool shall not be modified between inferences.
Type:
boolean
attributes: Additional properties (extra-info that are not mandatory).
Type:
objectProperties:
throughput: Equivalent of TargetDescription.mem_prop_level in Target Description Protocol Documentation.
Type:
stringEnum:
["UNDEF", "LOW", "MID", "HIGH"]
latency:
Type:
stringEnum:
["UNDEF", "LOW", "MID", "HIGH"]
byte_width: Memory bus access width.
Type:
integerMinimum:
0
freq_ratio: Memory frequency ratio compared to accelerators.
Type:
numberMinimum:
0
burst_max_length: Max Burst length.
Type:
integerMinimum:
0
burst_penalty: Initial Burst Penalty (# of memory clock cycles).
Type:
integerMinimum:
0
read_power: Active read power for a single byte_width access in mW.
Type:
numberMinimum:
0
write_power: Active write power for a single byte_width access in mW.
Type:
numberMinimum:
0
use_for_initrs:
Type:
boolean
score:
Type:
integerMinimum:
0
encryption: Encryption properties (one range per memory pool).
Type:
objectProperties:
offset:
Type:
integerMinimum:
0Description: Offset in the memory pool for the first encrypted data address.
size:
Type:
integerMinimum:
0Description: Size of the encrypted data in bytes.
Required:
["throughput", "latency", "score"]
subpools: In case of merged pools, list of contained pools IDs.
Type:
arrayItems:
integer
buffers: Array of buffers that are placed within the memory pool.
Type:
arrayItems:
integer
Required:
["name", "id", "alignment", "address", "offset_start", "size_bytes", "used_size_bytes", "buffers", "user_allocated", "persistent"]
buffer
¶
Description: Description of a buffer properties.
Type:
objectProperties:
name: Buffer name.
Type:
stringPattern:
^[a-zA-Z0-9_]+$
id: Buffer unique identifier. In C models, it is equal to the id passed by the inspection callback routine.
Type:
integer
alignment: Buffer alignment in bytes.
Type:
integerMinimum:
1
mpool_id: ID of the pool where the buffer is allocated.
Type:
integer
offset_start: Memory offset in bytes where the buffer starts. Relative address in memory.
Type:
integerMinimum:
-1
size_bytes: Size in bytes of the buffer.
Type:
integerMinimum:
0
is_param: True if the buffer is used for parameters, false if used for activations.
Type:
boolean
flags: A list of flags separated by
|character.Type:
string
epochs: Epoch number the buffer is used in.
Type:
objectProperties:
start: Epoch start value.
Type:
integerMinimum:
0
end: Epoch end value.
Type:
integerMinimum:
0
shape: Shape of the buffer.
Type:
arrayItems:
integer
shape_map: Shape map labels of the buffer.
Type:
arrayItems:
string
channel_first: Is the buffer channel first?
Type:
boolean
channel_last: Is the buffer channel last?
Type:
boolean
batch: Used only if channel_first/last=false.
Type:
integerMinimum:
0
format: Buffer element format.
Type:
stringPattern:
^STAI_FORMAT_
nbits: Number of bits for each entry.
Type:
integerMinimum:
0
qmn: Qmn format descriptor. The sum of sign, m, and n values gives the actual bit size of the format.
Type:
objectProperties:
m: Number of bits for the integer part (excluding sign bit).
Type:
integer
n: Number of fractional bits.
Type:
integer
sign: Signed or not?
Type:
integerMinimum:
0Maximum:
1
intq:
Type:
objectProperties:
axis: If -1: quantization per tensor. Otherwise, axis of the channels.
Type:
integerMinimum:
-1
scales: Scale factors for the current buffer (float values).
Type:
arrayItems:
number
offsets: Offset values for the current buffer.
Type:
arrayItems:
integer
Required:
["name", "id", "alignment", "offset_start", "size_bytes", "is_param", "epochs", "shape", "format", "nbits"]
graph_edge
¶
Description: Description of an edge (object to show data flow between a buffer and a node, or between a node and a node).
Type:
objectProperties:
name: Name of the edge.
Type:
string
id: Edge unique identifier.
Type:
integer
edge_kind: Kind of edge: FLOW (just dependency), MEMORY (with associated buffer allocated), and INTERNAL (internal communication between Accelerators).
Type:
stringEnum:
["EDGE_UNDEF", "EDGE_FLOW", "EDGE_MEMORY", "EDGE_INTERNAL"]
buffer: For MEMORY edge identifies the buffer used.
Type:
integer
start:
Type:
objectProperties:
node_id: Origin Node graph reference.
Type:
integer
port: Output port number.
Type:
integer
end:
Type:
objectProperties:
node_id: Target Node graph reference.
Type:
integer
port: Input port number.
Type:
integer
attributes: A dictionary of additional information to show as-is when showing the graph on a display.
Type:
objectProperties:
additional_info: Add any info for specifying edge properties here.
Type:
string
Required:
["id", "start", "end", "edge_kind"]
graph_node
¶
Description: Graph description - an ordered list of steps to be drawn within a box of the graph representation.
Type:
objectProperties:
name: Name of the node.
Type:
stringPattern:
^[a-zA-Z0-9_]+$
id: Node unique identifier.
Type:
integer
inputs: Input Buffer IDs.
Type:
arrayItems:
integer
outputs: Output Buffer IDs.
Type:
arrayItems:
integer
scratchs: Scratch Buffer IDs.
Type:
arrayItems:
integer
subgraph_nodes: All sub-nodes belonging to the current graph.
Type:
arrayItems: #/$defs/graph_node
mapping: Specifies if mapped on SW, on HW, on EpochController, or hybrid SW/HW.
Type:
stringEnum:
["NODE_UNDEF", "NODE_SW", "NODE_HW", "NODE_SW_HW", "NODE_EC"]
macc: Total MACC number for the current graph node.
Type:
integerMinimum:
0
original_nodes: List of IDs of the original model nodes (applicable for layers, for example).
Type:
arrayItems: Original model id or name as a string. May be postfixed with
:<node_part>.Type:
string
exec_time:
$ref: #/$defs/exec_time
description: Description of the graph node (can be a layer type, for example, or epoch, or …).
Type:
string
attributes: A map key-value strings where key is the name of the attribute.
Type:
objectAdditionalProperties:
string
sw_functions: List of SW functions mapping the node (Available only on NODE_SW or NODE_SW_HW types).
Type:
arrayItems:
string
Required:
["name", "id", "inputs", "outputs", "scratchs", "mapping", "macc", "subgraph_nodes"]
graph
¶
Description: Description of a network graph.
Type:
objectProperties:
name: Name of the graph.
Type:
stringPattern:
^[a-zA-Z0-9_]+$
id: Graph unique identifier.
Type:
integer
inputs: Graph Input Buffer IDs.
Type:
arrayItems:
integer
outputs: Graph Output Buffer IDs.
Type:
arrayItems:
integer
nodes: A list of graph nodes entries.
Type:
arrayItems: #/$defs/graph_node
edges: A list of graph edges entries.
Type:
arrayItems: #/$defs/graph_edge
exec_time:
$ref: #/$defs/exec_time
original_inputs: A list of original inputs.
Type:
arrayItems: #/$defs/original_details
original_outputs: A list of original outputs.
Type:
arrayItems: #/$defs/original_details
Required:
["name", "id", "inputs", "outputs", "nodes", "edges"]
memory_access
¶
Description: Memory accesses per epoch. (only relevant for Neural-Art)
Type:
objectProperties:
node_id: Node graph reference.
Type:
integer
mpool_id: Memory Pool reference.
Type:
integer
reads: Number of reads.
Type:
integerMinimum:
0
read_cycles: Number of cycles used for read operations.
Type:
integerMinimum:
0
writes: Number of writes.
Type:
integerMinimum:
0
write_cycles: Number of cycles used for write operations.
Type:
integerMinimum:
0
aton_exec_t
¶
Description: Detail of the time spent on one epoch during inference on Neural-Art. (only relevant for Neural-Art)
Type:
objectProperties:
counters: Array of size 3 containing the time spent in pre-hw, hw and post-op phases (in cycles)
Type:
arrayItems:
integer
cycles: Total number of cycles spent on an epoch
Type:
integer
duration_ms: Time spent on an epoch (in ms)
Type:
float
percentage: Percentage of the total inference time spent in this epoch
Type:
float
cycles_by_macc: (deprecated) Total number of cycles spent by macc (only applicable for sw epochs)
Type:
integer
power_estimate
¶
Description: Power-related data per epoch (only relevant for Neural-Art)
Type:
objectProperties:
node_id: Node graph reference.
Type:
integer
ops: Total ops number.
Type:
integerMinimum:
0
compute_cycles: Number of cycles used for computation.
Type:
integerMinimum:
0
max_cycles: Maximum cycles.
Type:
integerMinimum:
0
average_acc_power_mw: Average Accelerators (e.g., ATON) power used in mW.
Type:
integerMinimum:
0
average_memory_power_mw: Average power (in mW) used for accessing the memories.
Type:
integerMinimum:
0