Analyser les rapports d’implémentation et conserver les reçus

Analysez un rapport enregistré de timing, de surface, de puissance, de congestion ou de simulation en JSON normalisé, puis enregistrez, listez et rouvrez le reçu.

Utilisez Altifigence CLI 0.1.9 sous Linux pour transformer un rapport texte enregistré en reçu altifigence.reports.parse.v1 avec le moteur de rapports fourni, et pour conserver les reçus dans votre projet.

Choisir un format de rapport

Choisissez la valeur --format qui correspond au rapport. L’entrée doit être un fichier texte UTF-8 ordinaire d’au plus 4194304 octets. Chaque format produit son propre schéma normalisé :

opensta-timing       timing-report.v1
yosys-area           area-report.v1
power                power-report.v1
openroad-congestion  congestion-report.v1
sim-result           sim-result.v1

Analyser un rapport

Enregistrez un rapport de timing dans le projet et analysez-le. --input est relatif au projet.

PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
mkdir -p "$PROJECT/reports"
cat > "$PROJECT/reports/timing.rpt" <<'EOF'
Startpoint: in_reg
Endpoint: out_reg
slack (MET) 0.80
EOF
alti reports parse --project "$PROJECT" --format opensta-timing --input reports/timing.rpt > "$PROJECT/timing.parse.json"
jq -c '{status, schema: .normalized.schemaVersion, start: .normalized.paths[0].startpoint}' "$PROJECT/timing.parse.json"

Vérifiez que le code de sortie est 0. La ligne jq affiche :

{"status":"available","schema":"timing-report.v1","start":"in_reg"}

Le reçu consigne aussi operation_id reports.parse, l’entrée source, byte_length et sha256, l’implementation_id de l’analyseur, diagnostics et le rapport normalized. claims.execution_performed et claims.signoff_assessed valent false : le reçu décrit le fichier que vous avez analysé.

Conserver et rouvrir les reçus

alti reports artifact store --project "$PROJECT" --input timing.parse.json > "$PROJECT/report-manifest.json"
ENTRY_ID="$(jq -r '.entryId' "$PROJECT/report-manifest.json")"
alti reports artifact list --project "$PROJECT"
alti reports artifact show --project "$PROJECT" --entry-id "$ENTRY_ID"

Store accepte un reçu altifigence.reports.parse.v1 non modifié d’au plus 16777216 octets, vérifie l’identité de son entrée, la provenance de l’analyseur et les claims, puis l’écrit sous .altifigence/artifacts/reports/ dans le projet. Son manifeste altifigence.reports.artifact-manifest.v1 comprend entryId, format, inputSha256, parserImplementationId et relativePath results/<entryId>.json. List affiche les manifestes sous forme de tableau JSON ; show affiche le reçu enregistré.

Reprendre après des erreurs

Le moteur affiche les erreurs sur stderr après Error: et se termine avec un code de sortie différent de zéro.

Pour report input exceeds 4194304 bytes, analysez un fichier de rapport d’au plus 4194304 octets.

Pour report input must be a regular file and not a symbolic link, transmettez le chemin du fichier de rapport lui-même.

Pour report input is not valid UTF-8, enregistrez le rapport en texte UTF-8 et analysez-le de nouveau.

Une analyse réussie se termine avec le code 0 et écrit du JSON sur stdout. Lorsque les valeurs temporelles sont absentes, son status est unavailable et son tableau diagnostics contient l’avertissement REPORT_TIMING_VALUES_NOT_FOUND. Fournissez un rapport temporel contenant des valeurs temporelles, par exemple les lignes Startpoint:, Endpoint: et slack ci-dessus, puis analysez-le avec --format opensta-timing.

Pour report parse receipt is invalid: unexpected operation schema or version, enregistrez le fichier exactement tel que alti reports parse l’a écrit.

Pour report artifact entry does not exist: suivi d’un ID, copiez un entryId depuis alti reports artifact list.

Commandes CLI des moteurs