1. HLSFactory设计空间细化前端解析
在硬件加速器设计领域,设计空间探索(Design Space Exploration, DSE)是一个关键但耗时的环节。OptDSLFrontend工具通过引入领域特定语言(DSL)的方法,将Vitis HLS的优化参数组合生成过程自动化,大幅提升了设计空间探索的效率。
这个前端工具的核心价值在于:它允许硬件工程师用简洁的DSL描述想要探索的优化空间,然后自动生成数百甚至数千种不同的优化组合,每个组合对应一个独立的设计目录和优化脚本。这种方法特别适合需要系统化评估不同硬件优化策略对性能/资源影响的场景。
2. 核心架构与工作流程
2.1 整体处理流程
OptDSLFrontend的工作流程可以分为五个主要阶段:
-
模板解析阶段:
- 读取设计目录下的
opt_template.tcl文件 - 识别并解析其中的DSL块(
array_partition和loop_opt) - 将静态TCL指令保存为公共部分
- 读取设计目录下的
-
设计空间展开阶段:
- 对每个数组分区配置,展开所有(factor, type)组合
- 对每个循环优化配置,展开所有(pipeline, unroll, factor)组合
- 使用笛卡尔积生成完整的优化组合空间
-
优化脚本生成阶段:
- 将静态TCL与每个组合对应的优化指令拼接
- 可选执行随机采样以控制组合数量
- 生成记录配置详情的
opt_config.json
-
设计目录复制阶段:
- 为每个优化组合创建独立的设计目录
- 目录命名采用
原名_opt_<md5哈希>的格式 - 写入对应的优化脚本和配置文件
-
基线处理阶段:
- 通过OptDSLPassthroughFrontend生成无优化的基线配置
- 确保设计空间探索包含原始设计作为参照
2.2 DSL模板结构详解
opt_template.tcl文件采用混合格式,包含静态TCL指令和DSL块。一个典型示例如下:
code复制# 静态TCL指令(所有组合共用)
open_project myproj
set_top my_top_func
