42 const wxString delayProfileName = aItems.front().GetEffectiveNetClass()->GetDelayProfile();
46 return std::vector<int64_t>( aItems.size(), 0 );
48 std::vector<int64_t> propagationDelays;
49 propagationDelays.reserve( aItems.size() );
54 return propagationDelays;
83 if( itemType == LENGTH_DELAY_CALCULATION_ITEM::TYPE::LINE )
89 if( itemType == LENGTH_DELAY_CALCULATION_ITEM::TYPE::VIA )
99 const auto viaItr = viaOverrides.find(
102 if( viaItr != viaOverrides.end() )
103 return viaItr->second;
110 if( itemType == LENGTH_DELAY_CALCULATION_ITEM::TYPE::PAD )
141 const double lengthInMM =
static_cast<double>( aDelay ) / delayUnit;
156 return static_cast<int64_t
>( delayUnit * (
static_cast<double>( aShape.
Length() ) /
PCB_IU_PER_MM ) );
173 std::map<VIA_OVERRIDE_CACHE_KEY, int64_t>& viaOverrides =
m_viaOverridesCache[profile.m_ProfileName];
constexpr double PCB_IU_PER_MM
Pcbnew IU is 1 nanometer.
PROJECT * GetProject() const
Lightweight class which holds a pad, via, or a routed trace outline.
MERGE_STATUS GetMergeStatus() const
Gets the MERGE_STATUS of this item.
TYPE
The type of routing object this item proxies.
TYPE Type() const
Gets the routing item type.
const PCB_VIA * GetVia() const
Gets the VIA associated with this item.
const NETCLASS * GetEffectiveNetClass() const
Returns the effective net class for the item.
SHAPE_LINE_CHAIN & GetLine() const
Gets the SHAPE_LINE_CHAIN associated with this item.
PCB_LAYER_ID GetEndLayer() const
Gets the end board layer for the proxied item.
const PAD * GetPad() const
Gets the parent PAD associated with this item.
PCB_LAYER_ID GetStartLayer() const
Gets the start board layer for the proxied item.
int StackupHeight(PCB_LAYER_ID aFirstLayer, PCB_LAYER_ID aSecondLayer) const
Returns the stackup distance between the two given layers.
wxString GetDelayProfile() const
PCB_LAYER_ID EndLayer() const
PCB_LAYER_ID StartLayer() const
int GetPadToDieDelay() const
const PADSTACK & Padstack() const
Container for project specific data.
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
long long int Length() const
Return length of the line chain in Euclidean metric.
BOARD * m_board
The board all calculations are for.
LENGTH_DELAY_CALCULATION * m_lengthCalculation
The parent length / delay calculation object.
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.
const DELAY_PROFILE * GetDelayProfile(const wxString &aDelayProfileName)
Gets the tuning profile pointer for the given tuning profile name.
void OnSettingsChanged() override
Event called by the length and time calculation architecture if netclass definitions have changed.
std::map< wxString, const DELAY_PROFILE * > m_delayProfilesCache
Cached map of tuning profile names to per-layer time domain parameters.
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 inter...
std::map< wxString, std::map< VIA_OVERRIDE_CACHE_KEY, int64_t > > m_viaOverridesCache
Cached per-tuning profile via overrides.
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.
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,...
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.
TIME_DOMAIN_PARAMETERS stores the configuration for time-domain tuning.
const std::vector< DELAY_PROFILE > & GetDelayProfiles() const
PCB_LAYER_ID
A quick note on layer IDs:
static float distance(const SFVEC2UI &a, const SFVEC2UI &b)
Represents a single line in the time domain configuration via overrides configuration grid.
PCB_LAYER_ID m_SignalLayerFrom
PCB_LAYER_ID m_ViaLayerFrom
PCB_LAYER_ID m_SignalLayerTo
PCB_LAYER_ID m_ViaLayerTo
Represents a single line in the time domain configuration net class configuration grid.
std::map< PCB_LAYER_ID, int > m_LayerPropagationDelays
int m_ViaPropagationDelay
A data structure to contain basic geometry data which can affect signal propagation calculations.
PCB_LAYER_ID Layer
The layer this track is on.
const NETCLASS * NetClass
The net class this track belongs to.
Cache key for use with std::map.