Source code for piel.types.connectivity.timing
from typing import Optional, Union
from piel.types.core import NumericalTypes
from piel.types.connectivity.core import Instance
from piel.types.units import Unit, s
from piel.types.metrics import ScalarMetric
[docs]
class TimeMetric(ScalarMetric):
"""
This class contains stastical timing information about a given path.
Notes
=====
Each component has some relevant time metrics which characterize
the propagation of a signal across it. Now, this is more intricate in the case
of dispersive of multi-frequency signals propagating through a device since
propagation is dependent on signal frequency. One way to conceptualize it
is that each frequency corresponds to an individual frequency, but this ignores
recombination or superposition between the frequencies in a dispersive model.
Also, timing information is in relation to the input signal that is being propagated through a component.
We can create a higher level dispersive time metrics for multi-frequency components based on this one.
The relevant timing we are interested in is as follows, as it has multiple definitions
- In-to-Out Timing Propagation through a component
- Group Delay of a signal through an interconnect
- 10% to 90% rise time of the output waveform of an active component
Having a shared timing definition is essential to perform correct timing analysis
"""
value: NumericalTypes = 0
mean: Optional[NumericalTypes] = 0
min: Optional[NumericalTypes] = 0
max: Optional[NumericalTypes] = 0
standard_deviation: Optional[NumericalTypes] = 0
unit: Unit = s
[docs]
class DispersiveTimeMetrics(Instance):
"""
A dispersive time-metrics is useful to represent multi-frequency timing information
based on the harmonic nature of signals.
"""
frequency_group: dict[float, TimeMetric] = {}
"""
Definition of a mutli-frequency component.
"""
TimeMetricsTypes = Union[TimeMetric, DispersiveTimeMetrics]
"""
Corresponds to all the implemented timing metrics accordingly.
"""
ZeroTimeMetrics = TimeMetric(value=0, mean=0, min=0, max=0, standard_deviation=0)
"""
Default zero-time metrics defined.
"""