実装レポートを解析してレシートを保存する

保存したタイミング、面積、電力、混雑度、またはシミュレーションのレポートを正規化されたJSONに解析し、そのレシートを保存、一覧表示して再度開きます。

Linux上のAltifigence CLI 0.1.9を使用して、同梱のレポートエンジンで保存したテキストレポートをaltifigence.reports.parse.v1レシートに変換し、レシートをプロジェクトに保持します。

レポート形式を選択する

レポートに合う--formatの値を選んでください。入力は4194304バイト以下の通常のUTF-8テキストファイルでなければなりません。各形式が生成する正規化スキーマは、それぞれ次のとおりです。

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

レポートを解析する

タイミングレポートをプロジェクトに保存して解析してください。--inputはプロジェクトからの相対パスです。

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"

終了ステータスが0であることを確認してください。jqの行は次を出力します。

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

レシートには、operation_idのreports.parse、入力のsource、byte_length、sha256、パーサーのimplementation_id、diagnostics、normalizedレポートも記録されます。claims.execution_performedとclaims.signoff_assessedはfalseです。レシートは、解析したファイルを記述するものです。

レシートを保存して再度開く

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は、16777216バイト以下の未変更のaltifigence.reports.parse.v1レシートを受け付け、入力の識別情報、パーサーの来歴、クレームを検査して、プロジェクトの.altifigence/artifacts/reports/の下に書き込みます。そのaltifigence.reports.artifact-manifest.v1マニフェストには、entryId、format、inputSha256、parserImplementationId、relativePathのresults/<entryId>.jsonが含まれます。ListはマニフェストをJSON配列として出力し、showは保存されたレシートを出力します。

エラーに対処する

エンジンはエラーをError:の後にstderrへ出力し、ゼロ以外の終了ステータスで終了します。

report input exceeds 4194304 bytesの場合は、4194304バイト以下のレポートファイルを解析してください。

report input must be a regular file and not a symbolic linkの場合は、レポートファイル自体のパスを指定してください。

report input is not valid UTF-8の場合は、レポートをUTF-8テキストとして保存し、もう一度解析してください。

解析に成功すると終了ステータス0で終了し、JSONをstdoutに書き込みます。タイミング値がない場合、statusはunavailableとなり、diagnostics配列には警告REPORT_TIMING_VALUES_NOT_FOUNDが含まれます。上記のStartpoint:、Endpoint:、スラックの行のようなタイミング値を含むタイミングレポートを用意し、--format opensta-timingで解析してください。

report parse receipt is invalid: unexpected operation schema or versionの場合は、alti reports parseが書き込んだとおりにファイルを保存してください。

report artifact entry does not exist:の後にIDが続く場合は、alti reports artifact listからentryIdをコピーしてください。

CLI エンジンコマンド