Parse implementation reports and keep the receipts

Parse a saved timing, area, power, congestion or simulation report into normalized JSON, then store, list and reopen the receipt.

Use Altifigence CLI 0.1.9 on Linux to turn a saved text report into an altifigence.reports.parse.v1 receipt with the bundled reports engine, and to keep receipts in your project.

Choose a report format

Pick the --format value that matches the report. The input must be a regular UTF-8 text file of at most 4194304 bytes. Each format produces its own normalized schema:

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

Parse a report

Save a timing report in the project and parse it. --input is relative to the project.

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"

Require exit status 0. The jq line prints:

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

The receipt also records operation_id reports.parse, the input source, byte_length and sha256, the parser implementation_id, diagnostics and the normalized report. claims.execution_performed and claims.signoff_assessed are false: the receipt describes the file you parsed.

Keep and reopen receipts

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 accepts an unmodified altifigence.reports.parse.v1 receipt of at most 16777216 bytes, checks its input identity, parser provenance and claims, and writes it under .altifigence/artifacts/reports/ in the project. Its altifigence.reports.artifact-manifest.v1 manifest includes entryId, format, inputSha256, parserImplementationId and relativePath results/<entryId>.json. List prints the manifests as a JSON array; show prints the stored receipt.

Recover from errors

The engine prints errors to stderr after Error: and exits nonzero.

For report input exceeds 4194304 bytes, parse a report file of at most 4194304 bytes.

For report input must be a regular file and not a symbolic link, pass the path of the report file itself.

For report input is not valid UTF-8, save the report as UTF-8 text and parse it again.

A successful parse exits with status 0 and writes JSON to stdout. When timing values are missing, its status is unavailable and its diagnostics array contains the warning REPORT_TIMING_VALUES_NOT_FOUND. Provide a timing report containing timing values, such as the Startpoint:, Endpoint: and slack lines above, and parse it with --format opensta-timing.

For report parse receipt is invalid: unexpected operation schema or version, store the file exactly as alti reports parse wrote it.

For report artifact entry does not exist: followed by an id, copy an entryId from alti reports artifact list.

CLI engine commands