hlsfactory.flow_catapult

Siemens Catapult HLS synthesis flow.

Module Contents

Classes

DesignHLSSynthData

Synthesis metrics extracted from a Catapult RTL report.

CatapultHLSSynthFlow

Run a design’s Catapult synthesis Tcl script and collect its area report.

Functions

get_catapult_bin

Resolve the Catapult executable from an override, environment, or PATH.

auto_find_synth_report

Find the Catapult rtl.rpt generated below dir_path.

auto_find_cycle_report

Find the Catapult cycle.rpt generated below dir_path.

_parse_post_assignment_area

Data

API

hlsfactory.flow_catapult.HLSFACTORY_CATAPULT_PATH_ENV_VAR = 'HLSFACTORY_CATAPULT_PATH'
hlsfactory.flow_catapult._NUMBER_PATTERN = '(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?\\d+)?'
hlsfactory.flow_catapult._TOTAL_AREA_PATTERNS = ()
hlsfactory.flow_catapult._TOTAL_AREA_BREAKDOWN_PATTERN = 'compile(...)'
hlsfactory.flow_catapult.get_catapult_bin(catapult_bin: str | pathlib.Path | None = None) → str[source]

Resolve the Catapult executable from an override, environment, or PATH.

HLSFACTORY_CATAPULT_PATH may name the executable directly or an installation directory containing bin/catapult or Mgc_home/bin/catapult.

hlsfactory.flow_catapult.auto_find_synth_report(dir_path: pathlib.Path) → pathlib.Path[source]

Find the Catapult rtl.rpt generated below dir_path.

hlsfactory.flow_catapult.auto_find_cycle_report(dir_path: pathlib.Path) → pathlib.Path[source]

Find the Catapult cycle.rpt generated below dir_path.

hlsfactory.flow_catapult._parse_post_assignment_area(report_text: str, label: str) → float | None[source]
class hlsfactory.flow_catapult.DesignHLSSynthData[source]

Synthesis metrics extracted from a Catapult RTL report.

total_area: float = None
tool_version: str | None = None
clock_signal: str | None = None
clock_edge: str | None = None
clock_period: float | None = None
clock_period_ns: float | None = None
clock_uncertainty_ns: float | None = None
clock_allocation_percent: float | None = None
real_operation_count: int | None = None
latency_cycles: int | None = None
latency_seconds: float | None = None
throughput_cycles: int | None = None
throughput_seconds: float | None = None
reset_length_cycles: int | None = None
initiation_interval_cycles: int | None = None
combinational_area: float | None = None
raw_area: float | None = None
sequential_area: float | None = None
total_area_score: float | None = None
total_register_area: float | None = None
datapath_area: float | None = None
mux_area: float | None = None
functional_unit_area: float | None = None
logic_area: float | None = None
buffer_area: float | None = None
memory_area: float | None = None
rom_area: float | None = None
register_area: float | None = None
fsm_area: float | None = None
fsm_register_area: float | None = None
fsm_combinational_area: float | None = None
critical_path_delay_ns: float | None = None
critical_path_slack_ns: float | None = None
classmethod parse_from_synth_report_file(report_file: pathlib.Path, cycle_report_file: pathlib.Path | None = None) → hlsfactory.flow_catapult.DesignHLSSynthData[source]

Parse timing, latency, throughput, and area synthesis metrics.

class hlsfactory.flow_catapult.CatapultHLSSynthFlow(catapult_bin: str | pathlib.Path | None = None, log_output: bool = False, log_execution_time: bool = True)[source]

Bases: hlsfactory.framework.ToolFlow

Run a design’s Catapult synthesis Tcl script and collect its area report.

Initialization

name = 'CatapultHLSSynthFlow'
execute(design: hlsfactory.framework.Design, timeout: float | None = None) → list[hlsfactory.framework.Design][source]
_log_execution_time(design_dir: pathlib.Path, start_time: float, status: hlsfactory.utils.ExecutionDataStatus = ExecutionDataStatus.SUCCESS, error_message: str | None = None) → None[source]
hlsfactory.flow_catapult.__all__ = ['CatapultHLSSynthFlow', 'DesignHLSSynthData', 'HLSFACTORY_CATAPULT_PATH_ENV_VAR', 'auto_find_cycle_...