Bangun rute Manhattan dua pin

Rutekan satu net pada grid DBU berbatas dan periksa segmen serta panjang totalnya.

Gunakan Altifigence CLI 0.1.9 di Linux untuk membangun rute Manhattan dua pin lokal yang kecil. Masukan mendefinisikan grid persegi panjang dan net berurutan dengan koordinat sumber serta tujuan dalam satuan basis data. Contoh ini menghubungkan satu sumber di (10, 10) ke satu tujuan di (30, 30) di dalam grid 40 kali 40. Simpan sebagai route-input.json sebelum menjalankan perintah.

Pastikan status keluar bernilai 0 sebelum membaca hasil yang disimpan. Simpan keluaran kesalahan standar secara terpisah dan periksa bidang hasil yang dijelaskan di bawah ini.

Siapkan masukan rute

{
  "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
      }
    }
  ]
}

Berikan pengenal unik yang tidak kosong untuk setiap net dan pertahankan kedua titik ujung di dalam grid. Konstruktor mempertahankan urutan net masukan. Konstruktor membuat segmen horizontal terlebih dahulu, lalu segmen vertikal, dan menghilangkan segmen apa pun yang panjangnya nol. Aturan tersebut membuat contoh ini mudah ditinjau langsung dari koordinatnya.

Jalankan konstruksi

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

Periksa route-result.json untuk skema local-two-pin-manhattan-route, masukan yang diminta, digest masukan, rute, dan panjang Manhattan total. Untuk contoh ini, harapkan segmen horizontal dari (10, 10) ke (30, 10), diikuti segmen vertikal ke (30, 30). Setiap segmen berukuran 20 DBU dan totalnya 40 DBU. Simpan masukan asli bersama hasil agar konstruksi dapat diulangi.

Periksa hasil

Beberapa bidang dari hasil rute ditampilkan di bawah ini; hasil lengkap juga mencakup digest masukan dan koordinat segmen.

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

Periksa masukan yang ditolak

Koordinat x tujuan sebesar 41 berada di luar grid ini dan menghasilkan invalid_job, kode keluar 13, dengan job input is not an admitted local Physical job. Kembalikan sink.x menjadi 30 di dalam grid, lalu ulangi konstruksi.