diff --git a/' b/'
new file mode 100644
index 0000000..15c94fe
--- /dev/null
+++ b/'
@@ -0,0 +1,6 @@
+Merge branch 'echarts' of https://github.com/landlorfm/Letsvis into echarts
+# Please enter a commit message to explain why this merge is necessary,
+# especially if it merges an updated upstream into a topic branch.
+#
+# Lines starting with '#' will be ignored, and an empty message aborts
+# the commit.
diff --git a/README.md b/README.md
index bd33864..c5a946d 100644
--- a/README.md
+++ b/README.md
@@ -31,86 +31,89 @@
## 项目结构
```markdown
letsvis/
-├── dist/ # 构建输出目录(最终产物)
-│ └── letsvis-standalone.html # 自包含HTML入口
+├── dist/ # 构建输出目录
+│ └── letsvis-standalone.html # 自包含HTML入口
│
├── src/
-│ ├── core/ # 核心逻辑
-│ │ ├── parser/ # 日志解析
-│ │ │ ├── lmem-parser.js # LMEM解析器
-│ │ │ ├── timestep-parser.js # Timestep解析器
-│ │ │ ├── log-associator.js # 关联两种解析并计算时序内存统计(弃用)
-│ │ │ ├── memory-statistics.js # 内存信息统计
-│ │ │ └── log-preprocessor.js # 日志预处理提取有效信息
+│ ├── core/
+│ │ ├── parser/ # 【保留】日志解析核心逻辑
+│ │ │ │
+│ │ │ └── dep-collector.js # ts 依赖关系构建
│ │ │
-│ │ ├── diff/ # 对比引擎(TODO)
-│ │ │ ├── diff-engine.js # 核心差异算法
-│ │ │ └── conflict-detector.js # Bank冲突检测
+│ │ ├── diff/ (TODO) # 【保留】对比引擎
+│ │ │ ├── diff-engine.js # 核心差异算法
+│ │ │ └── conflict-detector.js # Bank冲突检测
│ │ │
-│ │ └── visualization/ # 可视化核心
-│ │ ├── renderers/ # 拆分不同渲染器
-│ │ │ ├── lmem-renderer.js # LMEM渲染
-│ │ │ ├── memory-summary.js # 时序内存统计计算渲染
-│ │ │ ├── timeline-renderer.js # Timestep渲染
-│ │ │ └── canvas2d-render.js # 可复用的坐标轴绘制逻辑
-│ │ ├── controls/ # 交互控制
-│ │ │ ├── zoom-handler.js
-│ │ │ └── selection-manager.js
-│ │ └── shader-loader.js # 着色器统一管理
+│ │ └── visualization/ # 可视化核心
+│ │ ├── echarts-manager.js # ECharts实例统一管理器
+│ │ │
+│ │ ├── lanes/ # 泳道多态实现
+│ │ │ ├── base-lane.js # 泳道基类
+│ │ │ ├── gdma-lane.js # GDMA 泳道实现
+│ │ │ ├── layer-lane.js # Layer泳道实现
+│ │ │ ├── profile-lane.js # Profile泳道实现
+│ │ │ └── lane-factory.js # 泳道工厂
+│ │ │
+│ │ ├── table/ # 表格
+│ │ │ ├── useProfileTableData.js # profile表格筛选逻辑
+│ │ │ └── useTableData.js # timestep表格筛选逻辑
+│ │ │
+│ │ └── option-generators/ # 各图表option生成器
+│ │ ├── lmem-option.js # LMEM option生成
+│ │ ├── timestep-option.js # 时间轴option生成
+│ │ ├── profile-option.js # profile option生成
+│ │ └── summary-option.js # 统计图表option生成
│ │
-│ ├── ui/ # 用户界面
-│ │ ├── components/ # 可复用组件
-│ │ │ ├── file-selector.vue # 文件选择器
-│ │ │ ├── lmem-spec-panel.vue # 规格面板统一控制器
-│ │ │ └── comparison-slider.vue # 对比控制条
+│ │
+│ ├── ui/
+│ │ ├── components/
+│ │ │ ├── charts/ # ★新增: ECharts图表组件
+│ │ │ │ ├── base-chart.vue # 基础图表组件
+│ │ │ │ ├── lmem-chart.vue # LMEM组件
+│ │ │ │ ├── timestep-chart.vue # 时间轴图表组件
+│ │ │ │ ├── profile-chart.vue # profile图表组件
+│ │ │ │ └── memory-summary-chart.vue # 内存统计组件
+│ │ │ │
+│ │ │ ├── data-table/ # ★新增: 表格组件
+│ │ │ │ ├── data-table.vue # 纯展示表格
+│ │ │ │ ├── profile-table-filter.vue # profile 筛选面板
+│ │ │ │ └── table-filter.vue # 时间步筛选面板
+│ │ │ │
+│ │ │ ├── file-selector.vue # 【保留】文件选择器
+│ │ │ ├── lmem-spec-panel.vue # 【保留】规格面板控制器
+│ │ │ └── comparison-slider.vue # 【调整】对比控制条(适配ECharts)
│ │ │
-│ │ └── views/ # 主视图
-│ │ ├── lmem-view.vue # LMEM可视化页,同时包含时间步内存总览统计图
-│ │ └── timestep-view.vue # Timestep可视化页
+│ │ └── views/ # 主视图
+│ │ ├── lmem-view.vue # 【重构】LMEM可视化页
+│ │ ├── timestep-view.vue # 【重构】Timestep可视化页
+│ │ └── profile-view.vue # 【新增】Profile可视化页
│ │
-│ ├── workers/ # Web Worker脚本
-│ │ ├── parser.worker.js # 解析Worker
-│ │ └── diff.worker.js # 对比Worker
+│ ├── workers/ # 【弃用】Web Worker脚本
│ │
-│ ├── router/ # 路由
+│ ├── router/ # 【保留】路由
│ │ └── index.js
│ │
+│ ├── assets/
+│ │ └── styles/ # 【调整】样式
+│ │ ├── themes/
+│ │ │ └──
+│ │ └── base.css # 【调整】基础样式
│ │
-│ ├── assets/ # 静态资源
-│ │ ├── shaders/ # WebGL着色器
-│ │ │ ├── memory.vert # 主渲染顶点着色器
-│ │ │ ├── memory.frag # 主渲染片元着色器
-│ │ │ ├── grid.vert # 网格顶点着色器
-│ │ │ ├── grid.frag # 网格片元着色器
-│ │ │ ├── tooltip.vert # 工具提示顶点着色器
-│ │ │ ├── tooltip.frag # 工具提示片元着色器
-│ │ │ ├── summary.vert # 统计视图顶点着色器
-│ │ │ └── summary.frag # 统计视图片元着色器
-│ │ │
-│ │ └── styles/ # 样式
-│ │ ├── themes/ # 主题
-│ │ └── base.css # 基础样式
-│ │
-│ └── utils/ # 工具函数
-│ ├── coordinate-utils.js # 坐标转换处理
-│ ├── file-utils.js # 文件处理
-│ └── color-utils.js # 颜色编码
+│ └── utils/ # 【保留】工具函数
+│ ├── shared-state.js # 【新增】页面共享数据处理
+│ └── color-utils.js # 颜色编码(可能调整)
│
-├── test/
-│ ├── unit/ # 单元测试
-│ │ ├── parser.test.js # 解析器测试
-│ │ └── diff.test.js # 对比测试
+├── test/ # 【需要更新】测试
+│ ├── unit/
+│ │ ├── parser.test.js # 【保留】解析器测试
+│ │ ├── diff.test.js # 【保留】对比测试
+│ │ └── visualization.test.js # ★新增: 可视化option生成器测试
│ │
-│ └── fixtures/ # 测试用例
-│ ├── sample1.log # 样例日志1
-│ └── sample2.log # 样例日志2
-│
-├── config/ # 构建配置
-│ └── rollup.config.js # Rollup打包配置
-│
-├── index.html
+│ └── fixtures/ # 【保留】测试用例
│
-└── vite.config.js # 资源内联配置
+├── config/ # 【调整】构建配置
+├── package.json # 【调整】依赖更新(加入echarts)
+└── index.html # 【保留】开发入口
```
diff --git a/dist/letsvis-standalone.html b/dist/letsvis-standalone.html
new file mode 100644
index 0000000..b896756
--- /dev/null
+++ b/dist/letsvis-standalone.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+ LayerGroup 调试可视化工具
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/lmem.json b/dist/lmem.json
new file mode 100644
index 0000000..5fbf630
--- /dev/null
+++ b/dist/lmem.json
@@ -0,0 +1,744 @@
+[
+ {
+ "settings": {
+ "allow_bank_conflict": false,
+ "shape_secs": [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ },
+ "allocations": [
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Add",
+ "op_name": "137_Add",
+ "addr": 0,
+ "size": 25600,
+ "timestep_start": 1,
+ "timestep_end": 4,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "134_Conv",
+ "addr": 0,
+ "size": 25600,
+ "timestep_start": 18,
+ "timestep_end": 0,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "147_Mul",
+ "addr": 0,
+ "size": 12800,
+ "timestep_start": 8,
+ "timestep_end": 13,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "142_Conv",
+ "addr": 0,
+ "size": 25600,
+ "timestep_start": 5,
+ "timestep_end": 6,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "156_Mul",
+ "addr": 0,
+ "size": 6400,
+ "timestep_start": 14,
+ "timestep_end": 15,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "158_Conv",
+ "addr": 0,
+ "size": 6400,
+ "timestep_start": 16,
+ "timestep_end": 17,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "145_Conv_merge",
+ "addr": 0,
+ "size": 51200,
+ "timestep_start": 7,
+ "timestep_end": 7,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "151_Conv",
+ "addr": 12800,
+ "size": 6400,
+ "timestep_start": 11,
+ "timestep_end": 12,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "148_Conv",
+ "addr": 16384,
+ "size": 6400,
+ "timestep_start": 9,
+ "timestep_end": 10,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "154_Conv",
+ "addr": 16384,
+ "size": 6400,
+ "timestep_start": 13,
+ "timestep_end": 14,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "160_Mul_table",
+ "addr": 16384,
+ "size": 256,
+ "timestep_start": 16,
+ "timestep_end": 17,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Add",
+ "op_name": "156_Mul",
+ "addr": 16384,
+ "size": 25600,
+ "timestep_start": 15,
+ "timestep_end": 15,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "138_Conv",
+ "addr": 25600,
+ "size": 25600,
+ "timestep_start": 2,
+ "timestep_end": 3,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "163_Mul",
+ "addr": 25600,
+ "size": 6400,
+ "timestep_start": 19,
+ "timestep_end": 20,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "130_Mul",
+ "addr": 32768,
+ "size": 25600,
+ "timestep_start": 0,
+ "timestep_end": 1,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Concat",
+ "op_name": "141_Concat",
+ "addr": 32768,
+ "size": 25600,
+ "timestep_start": 4,
+ "timestep_end": 5,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "153_Mul",
+ "addr": 32768,
+ "size": 6400,
+ "timestep_start": 12,
+ "timestep_end": 13,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "160_Mul",
+ "addr": 32768,
+ "size": 6400,
+ "timestep_start": 17,
+ "timestep_end": 18,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "150_Mul_table",
+ "addr": 32768,
+ "size": 256,
+ "timestep_start": 9,
+ "timestep_end": 10,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "151_Conv_merge",
+ "addr": 32768,
+ "size": 25600,
+ "timestep_start": 11,
+ "timestep_end": 11,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "158_Conv_merge",
+ "addr": 32768,
+ "size": 25600,
+ "timestep_start": 16,
+ "timestep_end": 16,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Add",
+ "op_name": "163_Mul",
+ "addr": 32768,
+ "size": 25600,
+ "timestep_start": 20,
+ "timestep_end": 20,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "161_Conv",
+ "addr": 49152,
+ "size": 6400,
+ "timestep_start": 18,
+ "timestep_end": 19,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "148_Conv_merge",
+ "addr": 49152,
+ "size": 25600,
+ "timestep_start": 9,
+ "timestep_end": 9,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "154_Conv_merge",
+ "addr": 49152,
+ "size": 25600,
+ "timestep_start": 13,
+ "timestep_end": 13,
+ "hold_in_lmem": false,
+ "bank_id": 0,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "136_Mul",
+ "addr": 65536,
+ "size": 25600,
+ "timestep_start": 0,
+ "timestep_end": 1,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "140_Mul",
+ "addr": 65536,
+ "size": 25600,
+ "timestep_start": 3,
+ "timestep_end": 4,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "144_Mul",
+ "addr": 65536,
+ "size": 25600,
+ "timestep_start": 6,
+ "timestep_end": 7,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Add",
+ "op_name": "157_Add",
+ "addr": 65536,
+ "size": 6400,
+ "timestep_start": 15,
+ "timestep_end": 20,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "153_Mul_table",
+ "addr": 65536,
+ "size": 256,
+ "timestep_start": 11,
+ "timestep_end": 12,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "138_Conv_merge",
+ "addr": 65536,
+ "size": 102400,
+ "timestep_start": 2,
+ "timestep_end": 2,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "142_Conv_merge",
+ "addr": 65536,
+ "size": 102400,
+ "timestep_start": 5,
+ "timestep_end": 5,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "163_Mul_table",
+ "addr": 71936,
+ "size": 256,
+ "timestep_start": 18,
+ "timestep_end": 19,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "156_Mul_table",
+ "addr": 74752,
+ "size": 256,
+ "timestep_start": 11,
+ "timestep_end": 14,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "150_Mul",
+ "addr": 81920,
+ "size": 6400,
+ "timestep_start": 10,
+ "timestep_end": 15,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "161_Conv_merge",
+ "addr": 81920,
+ "size": 640,
+ "timestep_start": 16,
+ "timestep_end": 18,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "145_Conv",
+ "addr": 98304,
+ "size": 12800,
+ "timestep_start": 7,
+ "timestep_end": 8,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "154_Conv_merge",
+ "addr": 98304,
+ "size": 640,
+ "timestep_start": 11,
+ "timestep_end": 13,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "136_Mul_table",
+ "addr": 98304,
+ "size": 256,
+ "timestep_start": 20,
+ "timestep_end": 0,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Add",
+ "op_name": "136_Mul",
+ "addr": 98304,
+ "size": 102400,
+ "timestep_start": 1,
+ "timestep_end": 1,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_OPERATION",
+ "op_type": "tpu.Conv2D",
+ "op_name": "161_Conv_merge",
+ "addr": 98304,
+ "size": 25600,
+ "timestep_start": 18,
+ "timestep_end": 18,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "158_Conv_merge",
+ "addr": 98304,
+ "size": 128,
+ "timestep_start": 15,
+ "timestep_end": 16,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "148_Conv_merge",
+ "addr": 114688,
+ "size": 192,
+ "timestep_start": 7,
+ "timestep_end": 9,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "147_Mul_table",
+ "addr": 114880,
+ "size": 256,
+ "timestep_start": 7,
+ "timestep_end": 8,
+ "hold_in_lmem": false,
+ "bank_id": 1,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "151_Conv_merge",
+ "addr": 131072,
+ "size": 128,
+ "timestep_start": 9,
+ "timestep_end": 11,
+ "hold_in_lmem": false,
+ "bank_id": 2,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "145_Conv_merge",
+ "addr": 180224,
+ "size": 1280,
+ "timestep_start": 5,
+ "timestep_end": 7,
+ "hold_in_lmem": false,
+ "bank_id": 2,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "140_Mul_table",
+ "addr": 180224,
+ "size": 256,
+ "timestep_start": 2,
+ "timestep_end": 3,
+ "hold_in_lmem": false,
+ "bank_id": 2,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "144_Mul_table",
+ "addr": 181504,
+ "size": 256,
+ "timestep_start": 5,
+ "timestep_end": 6,
+ "hold_in_lmem": false,
+ "bank_id": 2,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "142_Conv_merge",
+ "addr": 196608,
+ "size": 128,
+ "timestep_start": 4,
+ "timestep_end": 5,
+ "hold_in_lmem": false,
+ "bank_id": 3,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Add",
+ "op_name": "164_Add",
+ "addr": 200704,
+ "size": 6400,
+ "timestep_start": 20,
+ "timestep_end": 2,
+ "hold_in_lmem": false,
+ "bank_id": 3,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_ACTIVATION",
+ "op_type": "tpu.Lut",
+ "op_name": "127_Mul",
+ "addr": 212992,
+ "size": 25600,
+ "timestep_start": 1,
+ "timestep_end": 2,
+ "hold_in_lmem": false,
+ "bank_id": 3,
+ "max_timestep": 20
+ },
+ {
+ "tag": "iteration_result",
+ "status": "success",
+ "lmem_type": "LMEM_WEIGHT",
+ "op_type": "top.Weight",
+ "op_name": "138_Conv_merge",
+ "addr": 245760,
+ "size": 128,
+ "timestep_start": 1,
+ "timestep_end": 2,
+ "hold_in_lmem": false,
+ "bank_id": 3,
+ "max_timestep": 20
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/index.html b/index.html
index a5b6777..424b7ad 100644
--- a/index.html
+++ b/index.html
@@ -1,4 +1,4 @@
-
+