Dựng tuyến Manhattan hai chân

Đi dây một net trên lưới DBU có giới hạn và kiểm tra các đoạn cùng tổng chiều dài.

Sử dụng Altifigence CLI 0.1.9 trên Linux để dựng một tuyến Manhattan hai chân nhỏ ở cục bộ. Đầu vào định nghĩa lưới hình chữ nhật và các net có thứ tự với tọa độ nguồn và đích tính bằng đơn vị cơ sở dữ liệu. Ví dụ này nối một nguồn tại (10, 10) với một đích tại (30, 30) trong lưới 40 × 40. Lưu thành route-input.json trước khi chạy lệnh.

Chỉ đọc kết quả đã lưu khi trạng thái thoát là 0. Lưu riêng luồng lỗi chuẩn và kiểm tra các trường kết quả được mô tả bên dưới.

Chuẩn bị đầu vào đi dây

{
  "grid_bounds": {
    "x_min": 0,
    "y_min": 0,
    "x_max": 40,
    "y_max": 40
  },
  "nets": [
    {
      "net_id": "net_z",
      "source": {
        "x": 10,
        "y": 10
      },
      "sink": {
        "x": 30,
        "y": 30
      }
    }
  ]
}

Gán cho mỗi net một định danh duy nhất, không rỗng và giữ cả hai điểm đầu cuối bên trong lưới. Bộ dựng giữ nguyên thứ tự net đầu vào. Nó dựng đoạn nằm ngang trước, rồi đến đoạn thẳng đứng, và bỏ qua mọi đoạn có chiều dài bằng 0. Các quy tắc này giúp bạn dễ dàng xem xét ví dụ này trực tiếp từ tọa độ.

Chạy dựng tuyến

alti physical capabilities
alti physical two-pin-manhattan-route < route-input.json > route-result.json

Kiểm tra route-result.json để xem schema local-two-pin-manhattan-route, đầu vào được yêu cầu, giá trị băm đầu vào, các tuyến và tổng chiều dài Manhattan. Với ví dụ này, kết quả dự kiến là đoạn nằm ngang từ (10, 10) đến (30, 10), theo sau là đoạn thẳng đứng đến (30, 30). Mỗi đoạn dài 20 DBU và tổng chiều dài là 40 DBU. Giữ đầu vào gốc cùng kết quả để có thể lặp lại việc dựng tuyến.

Kiểm tra kết quả

Một số trường được chọn từ kết quả tuyến được trình bày bên dưới; kết quả đầy đủ còn bao gồm giá trị băm đầu vào và tọa độ các đoạn.

{"schema":"altifigence.physical.local-two-pin-manhattan-route.v0","execution_performed":true,"requested_net_order":["net_z"],"total_manhattan_length_dbu":40}

Kiểm tra đầu vào bị từ chối

Tọa độ x của đích bằng 41 nằm ngoài lưới này và tạo invalid_job, mã thoát 13, với thông báo job input is not an admitted local Physical job. Đặt sink.x về 30 bên trong lưới, rồi chạy lại việc dựng tuyến.