What problem does it solve?
It solves the problem of manually and inefficiently tuning many parameters to optimize a target metric by running repeated experiments, extracting results, and iteratively selecting better configurations.
Core Features & Use Cases
- Autonomous run → analyze → tune loop: Executes the target program for multiple design points, parses an objective metric, and chooses the next parameter set until success criteria or limits are reached.
- Inference and range management: Infers missing parameter ranges by reading the codebase and applies domain heuristics, then expands boundaries when the best result lands at an edge.
- Structured logging and reporting: Creates a repeatable
dse_results/ workspace with CSV logs, per-run outputs, recovery state, and a final markdown report; also supports plotting when available.
Use Case: You want to optimize a gem5/EDA/synthesis flow by tuning cache sizes, pipeline width, or synthesis passes to maximize IPC or minimize area×delay under a fixed timeout.
Quick Start
Run the design space exploration loop with your task, including the program to execute, the parameters to tune (or let it infer ranges), the objective metric and direction, and a timeout like 2h.