実装レポートを解析してレシートを保存する
保存したタイミング、面積、電力、混雑度、またはシミュレーションのレポートを正規化された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をコピーしてください。