|
CIRCT 22.0.0git
|
Public Member Functions | |
| __init__ (self, collection) | |
| int | __len__ (self) |
| Union[DataflowPath, List[DataflowPath]] | __getitem__ (self, Union[slice, int] index) |
| DataflowPath | longest_path (self) |
| DataflowPath | get_by_delay_ratio (self, float ratio) |
| None | print_summary (self) |
| merge (self, "LongestPathCollection" src) | |
| drop_non_critical_paths (self, bool per_end_point=True) | |
Public Attributes | |
| collection | |
| length | |
A collection of timing paths sorted by delay (longest first).
This class provides a Python wrapper around the C++ LongestPathCollection,
offering convenient access to timing paths with caching for performance.
The paths are pre-sorted by delay in descending order.
Attributes:
collection: The underlying C++ collection object
length: Number of paths in the collection
| synth.LongestPathCollection.__init__ | ( | self, | |
| collection | |||
| ) |
Initialize the collection wrapper.
Args:
collection: The underlying C++ LongestPathCollection object
Definition at line 245 of file synth.py.
Referenced by synth.LongestPathCollection.drop_non_critical_paths(), and synth.LongestPathCollection.merge().
| Union[DataflowPath, List[DataflowPath]] synth.LongestPathCollection.__getitem__ | ( | self, | |
| Union[slice, int] | index | ||
| ) |
Get a specific path from the collection by index.
Supports both integer and slice indexing. Integer indices can be negative.
Args:
index: Integer index or slice object to access paths
Returns:
DataflowPath or list of DataflowPaths for slice access
Raises:
IndexError: If index is out of range
Definition at line 262 of file synth.py.
References circt::hw::InnerSymbolNamespaceCollection.collection, synth.LongestPathCollection.collection, synth.LongestPathCollection.length, circt::ExportVerilog::StringOrOpToEmit.length, HostMemReadReq.length, ValueSlice.length, DriveSlice.length, and SignalSlice.length.
Referenced by om.List.__iter__().
| int synth.LongestPathCollection.__len__ | ( | self | ) |
Get the number of paths in the collection.
Definition at line 258 of file synth.py.
References synth.LongestPathCollection.length, circt::ExportVerilog::StringOrOpToEmit.length, HostMemReadReq.length, ValueSlice.length, DriveSlice.length, and SignalSlice.length.
Referenced by om.List.__iter__().
| synth.LongestPathCollection.drop_non_critical_paths | ( | self, | |
| bool | per_end_point = True |
||
| ) |
Drop all paths except the longest path per end point or start point.
Args:
per_end_point: Whether to keep only the longest path per end point
(True) or per start point (False)
Definition at line 335 of file synth.py.
References seq.CompRegOp.__init__(), seq.CompRegClockEnabledOp.__init__(), esiaccel.codegen.Generator.__init__(), sv.IfDefOp.__init__(), om.List.__init__(), om.Object.__init__(), esiaccel.types.Port.__init__(), esiaccel.types.ReadPort.__init__(), esiaccel.types.WritePort.__init__(), Python.support.NamedValueOpView.__init__(), synth.LongestPathCollection.__init__(), esiaccel.accelerator.Accelerator.__init__(), Python.support.BackedgeBuilder.Edge.__init__(), sv.WireOp.__init__(), sv.RegOp.__init__(), synth.Instance.__init__(), esiaccel.types.BundlePort.__init__(), esiaccel.types.FunctionPort.__init__(), esiaccel.types.CallbackPort.__init__(), esiaccel.types.TelemetryPort.__init__(), esiaccel.types.MMIORegion.__init__(), Python.support.OpOperand.__init__(), comb.ExtractOpBuilder.__init__(), om.Evaluator.__init__(), synth.LongestPathAnalysis.__init__(), hw.InstanceBuilder.__init__(), fsm.StateOp.__init__(), fsm.MachineOp.__init__(), hw.HWModuleOp.__init__(), hw.HWModuleExternOp.__init__(), Python.setup.CMakeExtension.__init__(), setup.CMakeExtension.__init__(), esiaccel.accelerator.HWModule.__init__(), esiaccel.accelerator.Instance.__init__(), comb.ICmpOpBuilder.__init__(), simulator.Simulator.__init__(), verilator.Verilator.__init__(), questa.Questa.__init__(), Python.support.BackedgeBuilder.__init__(), esiaccel.types.ESIType.__init__(), esiaccel.types.VoidType.__init__(), esiaccel.types.ArrayType.__init__(), esiaccel.types.BitsType.__init__(), esiaccel.types.IntType.__init__(), esiaccel.types.UIntType.__init__(), esiaccel.types.SIntType.__init__(), esiaccel.types.StructType.__init__(), Python.support.UnconnectedSignalError.__init__(), esiaccel.accelerator.AcceleratorConnection.__init__(), simulator.SourceFiles.__init__(), simulator.SimProcess.__init__(), esiaccel.types.MessageFuture.__init__(), circt::hw::InnerSymbolNamespaceCollection.collection, synth.LongestPathCollection.collection, and synth.LongestPathCollection.drop_non_critical_paths().
Referenced by synth.LongestPathCollection.drop_non_critical_paths().
| DataflowPath synth.LongestPathCollection.get_by_delay_ratio | ( | self, | |
| float | ratio | ||
| ) |
Get the path at the specified position in the delay-sorted collection.
Since paths are sorted by delay in descending order, higher ratios
correspond to paths with higher delays (closer to the critical path).
Args:
ratio: Position ratio between 0.0 and 1.0
(e.g., 1.0 = longest delay path, 0.0 = shortest delay path,
0.95 = path among the top 5% slowest paths)
Returns:
DataflowPath at the specified position ratio
| DataflowPath synth.LongestPathCollection.longest_path | ( | self | ) |
| synth.LongestPathCollection.merge | ( | self, | |
| "LongestPathCollection" | src | ||
| ) |
Merge another collection into this one.
Args:
src: The collection to merge into this one
Definition at line 325 of file synth.py.
References seq.CompRegOp.__init__(), seq.CompRegClockEnabledOp.__init__(), esiaccel.codegen.Generator.__init__(), sv.IfDefOp.__init__(), om.List.__init__(), om.Object.__init__(), esiaccel.types.Port.__init__(), esiaccel.types.ReadPort.__init__(), esiaccel.types.WritePort.__init__(), Python.support.NamedValueOpView.__init__(), synth.LongestPathCollection.__init__(), esiaccel.accelerator.Accelerator.__init__(), Python.support.BackedgeBuilder.Edge.__init__(), sv.WireOp.__init__(), sv.RegOp.__init__(), synth.Instance.__init__(), esiaccel.types.BundlePort.__init__(), esiaccel.types.FunctionPort.__init__(), esiaccel.types.CallbackPort.__init__(), esiaccel.types.TelemetryPort.__init__(), esiaccel.types.MMIORegion.__init__(), Python.support.OpOperand.__init__(), comb.ExtractOpBuilder.__init__(), om.Evaluator.__init__(), synth.LongestPathAnalysis.__init__(), hw.InstanceBuilder.__init__(), fsm.StateOp.__init__(), fsm.MachineOp.__init__(), hw.HWModuleOp.__init__(), hw.HWModuleExternOp.__init__(), Python.setup.CMakeExtension.__init__(), setup.CMakeExtension.__init__(), esiaccel.accelerator.HWModule.__init__(), esiaccel.accelerator.Instance.__init__(), comb.ICmpOpBuilder.__init__(), simulator.Simulator.__init__(), verilator.Verilator.__init__(), questa.Questa.__init__(), Python.support.BackedgeBuilder.__init__(), esiaccel.types.ESIType.__init__(), esiaccel.types.VoidType.__init__(), esiaccel.types.ArrayType.__init__(), esiaccel.types.BitsType.__init__(), esiaccel.types.IntType.__init__(), esiaccel.types.UIntType.__init__(), esiaccel.types.SIntType.__init__(), esiaccel.types.StructType.__init__(), Python.support.UnconnectedSignalError.__init__(), esiaccel.accelerator.AcceleratorConnection.__init__(), simulator.SourceFiles.__init__(), simulator.SimProcess.__init__(), esiaccel.types.MessageFuture.__init__(), circt::hw::InnerSymbolNamespaceCollection.collection, synth.LongestPathCollection.collection, and synth.LongestPathCollection.merge().
Referenced by synth.LongestPathCollection.merge().
| None synth.LongestPathCollection.print_summary | ( | self | ) |
| synth.LongestPathCollection.collection |
Definition at line 251 of file synth.py.
Referenced by synth.LongestPathCollection.__getitem__(), synth.LongestPathCollection.drop_non_critical_paths(), and synth.LongestPathCollection.merge().
| synth.LongestPathCollection.length |
Definition at line 252 of file synth.py.
Referenced by synth.LongestPathCollection.__getitem__(), and synth.LongestPathCollection.__len__().