43 const wxString delayProfileName = aItems.front().GetEffectiveNetClass()->GetTuningProfile();
47 return std::vector<int64_t>( aItems.size(), 0 );
49 std::vector<int64_t> propagationDelays;
50 propagationDelays.reserve( aItems.size() );
55 return propagationDelays;
84 if( itemType == LENGTH_DELAY_CALCULATION_ITEM::TYPE::LINE )
86 double delayUnit = 0.0;
95 return static_cast<int64_t
>( delayUnit * (
static_cast<double>( aItem.
GetLine().Length() ) /
PCB_IU_PER_MM ) );
98 if( itemType == LENGTH_DELAY_CALCULATION_ITEM::TYPE::VIA )
111 const auto viaItr = viaOverrides.find(
114 if( viaItr != viaOverrides.end() )
115 return viaItr->second;
122 if( itemType == LENGTH_DELAY_CALCULATION_ITEM::TYPE::PAD )
151 double delayUnit = 0.0;
159 const double lengthInMM =
static_cast<double>( aDelay ) / delayUnit;
173 double delayUnit = 0.0;
181 return static_cast<int64_t
>( delayUnit * (
static_cast<double>( aShape.
Length() ) /
PCB_IU_PER_MM ) );
197 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.
Represents a single line in a time domain profile track propagation setup.
int GetDelay(const bool aForce=false) 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.
wxString GetTuningProfile() 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.
TUNING_PROFILES stores the configuration for impedance / delay tuning profiles.
const std::vector< TUNING_PROFILE > & GetTuningProfiles() const
BOARD * m_board
The board all calculations are for.
LENGTH_DELAY_CALCULATION * m_lengthCalculation
The parent length / delay calculation object.
std::map< wxString, const TUNING_PROFILE * > m_delayProfilesCache
Cached map of tuning profile names to per-layer time domain parameters.
int64_t GetTrackLengthForPropagationDelay(int64_t aDelay, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext) override
Gets the track length (in internal distance units) required for the given propagation delay (in inter...
const TUNING_PROFILE * GetTuningProfile(const wxString &aDelayProfileName)
Gets the tuning profile pointer for the given tuning profile name.
int64_t CalculatePropagationDelayForShapeLineChain(const SHAPE_LINE_CHAIN &aShape, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext) override
Gets the propagation delay for the given shape line chain.
std::map< wxString, std::map< VIA_OVERRIDE_CACHE_KEY, int64_t > > m_viaOverridesCache
Cached per-tuning profile via overrides.
int64_t GetPropagationDelay(const LENGTH_DELAY_CALCULATION_ITEM &aItem, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext) override
Gets the propagation delay (in internal units) for the given item in the given geometry context.
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 TUNING_PROFILE_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 TUNING_PROFILE_GEOMETRY_CONTEXT &aContext, const TUNING_PROFILE *aDelayProfile) const
Gets the propagation delay (in internal units) for the given item in the given geometry context,...
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
A data structure to contain basic geometry data which can affect signal propagation calculations.
const NETCLASS * NetClass
The net class this track belongs to.
PCB_LAYER_ID Layer
The layer this track is on.
Cache key for use with std::map.
Represents a single line in the tuning profile configuration grid.
bool m_EnableTimeDomainTuning
std::map< PCB_LAYER_ID, DELAY_PROFILE_TRACK_PROPAGATION_ENTRY > m_TrackPropagationEntriesMap
int m_ViaPropagationDelay