autorouting-dataset
收藏autorouting-dataset
数据集概述
该数据集包含用于基准测试的自动布线问题,以及大量实用工具,包括一个查看器和测试服务器,用于开发新的自动布线算法。
自动布线问题
自动布线是指在二维表面上绘制线路(导线)以连接铜垫。线路可以通过铜镀孔(称为“通孔”)穿过垫子。线路还必须避开“障碍物”,这些障碍物是其他垫子或线路无法通过的阻塞区域,例如孔或指定给天线的区域。
问题分类
数据集包含不同分类的问题,每个问题适用于不同的自动布线场景。
| 问题 | 准备状态 | 描述 | 难度 |
|---|---|---|---|
single-trace |
🟢 view | 通过障碍物布线单条线路 | 简单 |
traces |
🟢 view | 布线多条线路到点对,不交叉 | 中等 |
single-trace-group |
🔴 TBA | 通过多个点布线单条线路 | 简单 |
layers-traces |
🔴 TBA | 通过多层布线连接两个点的线路 | 简单 |
traces-groups |
🔴 TBA | 布线多条线路到点组,不交叉 | 中等 |
layers-traces |
🔴 TBA | 通过多层布线多条线路到点对,不交叉 | 困难 |
layers-traces-groups |
🔴 TBA | 通过多个地点布线多条线路到点组,不交叉 | 困难 |
hyperdense-* |
🔴 TBA | 超密集BGA布线 | 困难+ |
incremental-* |
🔴 TBA | 相同数据集但组件移动或线路改变。测试缓存效率 | 困难+ |
示例问题
simple-multi-point-trace
基准测试
基准测试使用的标准包括:
- 速度(机器规格待定)
- 在类别内完全布线的电路板百分比
- 质量(与理想布线相比,线路长度如何?通常较短的线路更好)
- 问题类型
- 增量速度(如果单个组件移动或线路改变的速度)
数据集使用
数据集由数千个文件组成,采用tscircuit soup格式。每个问题类型在datasets目录中都有相应的数据集。您可以从releases page下载包含数据集的zip文件。如果您的求解器是TypeScript编写的,您可以通过导入autorouting-dataset动态生成数据集。
数据集可以轻松可视化,并包含大量可用于约束的元数据。您可以使用getSimpleRouteJson实用函数将其转换为简单对象,接口如下:
tsx interface SimpleRouteJson { layerCount: number obstacles: Array<{ type: "rect" | "oval" // 注意:大多数数据集不包含椭圆形 center: { x: number; y: number } width: number height: number }> connections: Array<{ name: string pointsToConnect: Array<{ x: number; y: number }> }> bounds: { minX: number; maxX: number; minY: number; maxY: number } }
编写求解器
您可以使用任何语言编写求解器,但目前对TypeScript求解器提供一流支持。
TypeScript求解器
TypeScript求解器可以接受tscircuit soup或SimpleRouteJson。示例代码如下:
tsx import { startAutoroutingDevServer, getSimpleRouteJson } from "autorouting-dataset"
const mySolver = (soup: AnySoupElement[]) => { const routeJson = getSimpleRouteJson(soup)
// ...
// 返回一个或多个pcb_trace对象作为解决方案 return [ { "type": "pcb_trace", "route": [ { "route_type": "wire", "x": 3, "y": 1, "width": 5, "layer": "top" }, { "route_type": "via", "x": 3, "y": 1, "from_layer": "top", "to_layer": "bottom" } ] } ] }
startAutoroutingDevServer({ solver: mySolver, port: 3000 })
您可以使用bun --hot ./solver-server.ts运行此文件。
非TypeScript求解器
- 使用您的算法托管服务器(参见下面的简单Flask服务器)
- 运行
npx autorouting-dataset server start并配置您的服务器URL
可视化问题/解决方案
tscircuit在debug.tscircuit.com上运行调试服务,您可以使用它来可视化解或未解的问题。如果您使用的是TypeScript以外的语言,可以参考这里的说明(待定)。
如果您使用的是TypeScript,您可能希望增量可视化您的解决方案或自定义您自己的可视化。为此,有一个易于使用的RouterPlayground组件,允许可视化您的解决方案。
运行基准测试
如果您有TypeScript求解器,可以使用以下代码程序化运行基准测试:
tsx import { runBenchmark } from "autorouting-dataset" import mySolver from "./my-solver"
const result = await runBenchmark({ mySolver, verbose: true, })
console.log(result)
社区求解器
即将推出!请创建问题以将您的求解器添加到此仓库,我们将列出基准测试等!
我们正在为测量性能准备专用测试机器。




