Разбор отчётов о реализации и сохранение квитанций

Разберите сохранённый отчёт о временных характеристиках, площади, энергопотреблении, перегрузке трассировки или симуляции в нормализованный JSON, затем сохраните квитанцию, выведите список квитанций и повторно откройте её.

Используйте Altifigence CLI 0.1.9 в Linux, чтобы преобразовать сохранённый текстовый отчёт в квитанцию altifigence.reports.parse.v1 с помощью поставляемого в комплекте движка отчётов и хранить квитанции в проекте.

Выбор формата отчёта

Выберите значение --format, соответствующее отчёту. Входными данными должен быть обычный текстовый файл UTF-8 размером не более 4194304 байт. Каждый формат создаёт собственную нормализованную схему:

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 принимает неизменённую квитанцию altifigence.reports.parse.v1 размером не более 16777216 байт, проверяет идентичность входных данных, происхождение парсера и утверждения (claims) и записывает её в .altifigence/artifacts/reports/ в проекте. Её манифест altifigence.reports.artifact-manifest.v1 включает entryId, format, inputSha256, parserImplementationId и relativePath results/<entryId>.json. List выводит манифесты в виде массива JSON; show выводит сохранённую квитанцию.

Действия при ошибках

Движок выводит ошибки в stderr после Error: и завершается с ненулевым кодом.

При 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: и slack, и разберите его с помощью --format opensta-timing.

При report parse receipt is invalid: unexpected operation schema or version сохраните файл точно в том виде, в каком его записал alti reports parse.

При report artifact entry does not exist: с последующим идентификатором скопируйте entryId из alti reports artifact list.

Команды движков CLI