Construir uma rota Manhattan de dois pinos

Roteie uma net em uma grade DBU com limites definidos e inspecione seus segmentos e comprimento total.

Use o Altifigence CLI 0.1.9 no Linux para construir uma pequena rota Manhattan local de dois pinos. A entrada define uma grade retangular e nets ordenadas com coordenadas de origem e destino em unidades de banco de dados. Este exemplo conecta uma origem em (10, 10) a um destino em (30, 30) dentro de uma grade de 40 por 40. Salve-o como route-input.json antes de executar o comando.

Exija o status de saída 0 antes de ler um resultado salvo. Mantenha a saída de erro padrão separada e inspecione os campos do resultado descritos abaixo.

Preparar a entrada da rota

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

Atribua a cada net um identificador único e não vazio e mantenha ambas as extremidades dentro da grade. O construtor preserva a ordem de entrada das nets. Ele constrói primeiro o segmento horizontal, depois o vertical e omite qualquer segmento de comprimento zero. Essas regras facilitam revisar este exemplo diretamente a partir de suas coordenadas.

Executar a construção

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

Inspecione route-result.json para verificar o esquema local-two-pin-manhattan-route, a entrada solicitada, o resumo criptográfico da entrada, as rotas e o comprimento Manhattan total. Para este exemplo, espere um segmento horizontal de (10, 10) a (30, 10), seguido de um segmento vertical até (30, 30). Cada segmento mede 20 DBU, e o total mede 40 DBU. Mantenha a entrada original junto do resultado para que a construção possa ser repetida.

Inspecionar o resultado

Alguns campos do resultado da rota são mostrados abaixo; o resultado completo também inclui o resumo criptográfico da entrada e as coordenadas dos segmentos.

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

Verificar uma entrada rejeitada

Uma coordenada x de destino igual a 41 fica fora desta grade e produz invalid_job, código de saída 13, com job input is not an admitted local Physical job. Defina sink.x novamente como 30, dentro da grade, e repita a construção.