KiCad PCB EDA Suite
|
#include <time_domain_parameters_user_defined.h>
Classes | |
struct | VIA_OVERRIDE_CACHE_KEY |
Cache key for use with std::map. More... | |
Public Member Functions | |
TIME_DOMAIN_PARAMETERS_USER_DEFINED (BOARD *aBoard, LENGTH_DELAY_CALCULATION *aCalculation) | |
void | OnSettingsChanged () override |
Event called by the length and time calculation architecture if netclass definitions have changed. | |
std::vector< int64_t > | GetPropagationDelays (const std::vector< LENGTH_DELAY_CALCULATION_ITEM > &aItems, const TIME_DOMAIN_GEOMETRY_CONTEXT &aContext) override |
Gets the propagation delays (in internal units) for the given items in the given geometry context. | |
int64_t | GetPropagationDelay (const LENGTH_DELAY_CALCULATION_ITEM &aItem, const TIME_DOMAIN_GEOMETRY_CONTEXT &aContext) override |
Gets the propagation delay (in internal units) for the given item in the given geometry context. | |
int64_t | GetTrackLengthForPropagationDelay (int64_t aDelay, const TIME_DOMAIN_GEOMETRY_CONTEXT &aContext) override |
Gets the track length (in internal distance units) required for the given propagation delay (in internal time units). | |
int64_t | CalculatePropagationDelayForShapeLineChain (const SHAPE_LINE_CHAIN &aShape, const TIME_DOMAIN_GEOMETRY_CONTEXT &aContext) override |
Gets the propagation delay for the given shape line chain. | |
virtual void | OnStackupChanged () |
Event called by the length and time calculation architecture if the board stackup has changed. | |
Protected Attributes | |
BOARD * | m_board |
The board all calculations are for. | |
LENGTH_DELAY_CALCULATION * | m_lengthCalculation |
The parent length / delay calculation object. | |
Private Member Functions | |
void | rebuildCaches () |
int64_t | getPropagationDelay (const LENGTH_DELAY_CALCULATION_ITEM &aItem, const TIME_DOMAIN_GEOMETRY_CONTEXT &aContext, const DELAY_PROFILE *aDelayProfile) const |
Gets the propagation delay (in internal units) for the given item in the given geometry context, for items in the pre-found net class. | |
const DELAY_PROFILE * | GetDelayProfile (const wxString &aDelayProfileName) |
Gets the tuning profile pointer for the given tuning profile name. | |
Private Attributes | |
std::map< wxString, const DELAY_PROFILE * > | m_delayProfilesCache |
Cached map of tuning profile names to per-layer time domain parameters. | |
std::map< wxString, std::map< VIA_OVERRIDE_CACHE_KEY, int64_t > > | m_viaOverridesCache |
Cached per-tuning profile via overrides. | |
Definition at line 31 of file time_domain_parameters_user_defined.h.
|
inlineexplicit |
Definition at line 34 of file time_domain_parameters_user_defined.h.
References TIME_DOMAIN_PARAMETERS_IFACE::TIME_DOMAIN_PARAMETERS_IFACE().
|
overridevirtual |
Gets the propagation delay for the given shape line chain.
aShape | is the shape to calculate delay for |
aContext | is the geometry context for which to query to propagation delay |
Implements TIME_DOMAIN_PARAMETERS_IFACE.
Definition at line 147 of file time_domain_parameters_user_defined.cpp.
References NETCLASS::GetDelayProfile(), GetDelayProfile(), TIME_DOMAIN_GEOMETRY_CONTEXT::Layer, SHAPE_LINE_CHAIN::Length(), DELAY_PROFILE::m_LayerPropagationDelays, TIME_DOMAIN_GEOMETRY_CONTEXT::NetClass, and PCB_IU_PER_MM.
|
private |
Gets the tuning profile pointer for the given tuning profile name.
aDelayProfileName | the tuning profile name to return |
Definition at line 120 of file time_domain_parameters_user_defined.cpp.
References m_delayProfilesCache.
Referenced by CalculatePropagationDelayForShapeLineChain(), GetPropagationDelay(), GetPropagationDelays(), and GetTrackLengthForPropagationDelay().
|
overridevirtual |
Gets the propagation delay (in internal units) for the given item in the given geometry context.
aItem | the board item to query propagation delay for |
aContext | the geometry context in which to query to propagation delay |
Implements TIME_DOMAIN_PARAMETERS_IFACE.
Definition at line 59 of file time_domain_parameters_user_defined.cpp.
References NETCLASS::GetDelayProfile(), GetDelayProfile(), LENGTH_DELAY_CALCULATION_ITEM::GetEffectiveNetClass(), LENGTH_DELAY_CALCULATION_ITEM::GetMergeStatus(), getPropagationDelay(), and LENGTH_DELAY_CALCULATION_ITEM::MERGED_RETIRED.
|
private |
Gets the propagation delay (in internal units) for the given item in the given geometry context, for items in the pre-found net class.
Preconditions:
aItem | the board item to query propagation delay for |
aContext | the geometry context in which to query to propagation delay |
aDelayProfile | the time domain tuning profile for the given item |
Definition at line 75 of file time_domain_parameters_user_defined.cpp.
References distance(), PADSTACK::EndLayer(), LENGTH_DELAY_CALCULATION_ITEM::GetEndLayer(), LENGTH_DELAY_CALCULATION_ITEM::GetLine(), LENGTH_DELAY_CALCULATION_ITEM::GetMergeStatus(), LENGTH_DELAY_CALCULATION_ITEM::GetPad(), PAD::GetPadToDieDelay(), LENGTH_DELAY_CALCULATION_ITEM::GetStartLayer(), LENGTH_DELAY_CALCULATION_ITEM::GetVia(), DELAY_PROFILE::m_LayerPropagationDelays, TIME_DOMAIN_PARAMETERS_IFACE::m_lengthCalculation, DELAY_PROFILE::m_ProfileName, m_viaOverridesCache, DELAY_PROFILE::m_ViaPropagationDelay, LENGTH_DELAY_CALCULATION_ITEM::MERGED_RETIRED, PCB_VIA::Padstack(), PCB_IU_PER_MM, PADSTACK::StartLayer(), and LENGTH_DELAY_CALCULATION_ITEM::Type().
Referenced by GetPropagationDelay(), and GetPropagationDelays().
|
overridevirtual |
Gets the propagation delays (in internal units) for the given items in the given geometry context.
This assumes that all items are in the same netclass
aItems | the board items to query propagation delay for |
aContext | the geometry context in which to query to propagation delay |
Implements TIME_DOMAIN_PARAMETERS_IFACE.
Definition at line 37 of file time_domain_parameters_user_defined.cpp.
References GetDelayProfile(), and getPropagationDelay().
|
overridevirtual |
Gets the track length (in internal distance units) required for the given propagation delay (in internal time units).
The track length should be calculated with the given geometry context.
aContext | the geometry context in which to query to propagation delay |
aDelay | the propagation delay for which a length should be calculated |
Implements TIME_DOMAIN_PARAMETERS_IFACE.
Definition at line 132 of file time_domain_parameters_user_defined.cpp.
References NETCLASS::GetDelayProfile(), GetDelayProfile(), TIME_DOMAIN_GEOMETRY_CONTEXT::Layer, DELAY_PROFILE::m_LayerPropagationDelays, TIME_DOMAIN_GEOMETRY_CONTEXT::NetClass, and PCB_IU_PER_MM.
|
overridevirtual |
Event called by the length and time calculation architecture if netclass definitions have changed.
This can be used to invalidate any calculation / simulation caches.
Reimplemented from TIME_DOMAIN_PARAMETERS_IFACE.
Definition at line 30 of file time_domain_parameters_user_defined.cpp.
References rebuildCaches().
|
inlinevirtualinherited |
Event called by the length and time calculation architecture if the board stackup has changed.
This can be used to invalidate any calculation / simulation caches.
Definition at line 73 of file time_domain_parameters_iface.h.
|
private |
Definition at line 161 of file time_domain_parameters_user_defined.cpp.
References TIME_DOMAIN_PARAMETERS::GetDelayProfiles(), TIME_DOMAIN_PARAMETERS_IFACE::m_board, DELAY_PROFILE_VIA_OVERRIDE_ENTRY::m_Delay, m_delayProfilesCache, DELAY_PROFILE_VIA_OVERRIDE_ENTRY::m_SignalLayerFrom, DELAY_PROFILE_VIA_OVERRIDE_ENTRY::m_SignalLayerTo, DELAY_PROFILE_VIA_OVERRIDE_ENTRY::m_ViaLayerFrom, DELAY_PROFILE_VIA_OVERRIDE_ENTRY::m_ViaLayerTo, m_viaOverridesCache, and project.
Referenced by OnSettingsChanged().
|
protectedinherited |
The board all calculations are for.
Definition at line 120 of file time_domain_parameters_iface.h.
Referenced by TIME_DOMAIN_PARAMETERS_USER_DEFINED::rebuildCaches(), and TIME_DOMAIN_PARAMETERS_IFACE().
|
private |
Cached map of tuning profile names to per-layer time domain parameters.
Definition at line 136 of file time_domain_parameters_user_defined.h.
Referenced by GetDelayProfile(), and rebuildCaches().
|
protectedinherited |
The parent length / delay calculation object.
Definition at line 123 of file time_domain_parameters_iface.h.
Referenced by TIME_DOMAIN_PARAMETERS_USER_DEFINED::getPropagationDelay(), and TIME_DOMAIN_PARAMETERS_IFACE().
|
private |
Cached per-tuning profile via overrides.
Definition at line 139 of file time_domain_parameters_user_defined.h.
Referenced by getPropagationDelay(), and rebuildCaches().