KiCad PCB EDA Suite
Loading...
Searching...
No Matches
tuning_profile_parameters_iface.h
Go to the documentation of this file.
1/*
2* This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
20#ifndef PCBNEW_TUNING_PROFILE_PARAMETERS_IFACE_H
21#define PCBNEW_TUNING_PROFILE_PARAMETERS_IFACE_H
22
24#include <netclass.h>
25
26class BOARD;
28
33{
36
39
41 int64_t Width;
42
44 bool IsDiffPairCoupled{ false };
45
47 int64_t DiffPairCouplingGap{ 0 };
48};
49
50
57{
58public:
60 m_board{ aBoard },
61 m_lengthCalculation{ aCalculation }
62 {
63 }
64
66
71 virtual void OnStackupChanged() {};
72
77 virtual void OnSettingsChanged() {};
78
85 virtual std::vector<int64_t> GetPropagationDelays( const std::vector<LENGTH_DELAY_CALCULATION_ITEM>& aItems,
86 const TUNING_PROFILE_GEOMETRY_CONTEXT& aContext ) = 0;
87
95 const TUNING_PROFILE_GEOMETRY_CONTEXT& aContext ) = 0;
96
106 virtual int64_t GetViaPropagationDelay( const PCB_LAYER_ID aSignalStartLayer, const PCB_LAYER_ID aSignalEndLayer,
107 const PCB_LAYER_ID aViaStartLayer, const PCB_LAYER_ID aViaEndLayer,
108 const TUNING_PROFILE_GEOMETRY_CONTEXT& aContext ) const = 0;
109
117 virtual int64_t GetTrackLengthForPropagationDelay( int64_t aDelay,
118 const TUNING_PROFILE_GEOMETRY_CONTEXT& aContext ) = 0;
119
125 virtual bool CanCalculateLengthForDelay( const TUNING_PROFILE_GEOMETRY_CONTEXT& aContext ) const = 0;
126
134 const TUNING_PROFILE_GEOMETRY_CONTEXT& aContext ) = 0;
135
136protected:
139
142};
143
144#endif //PCBNEW_TUNING_PROFILE_PARAMETERS_IFACE_H
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:409
Lightweight class which holds a pad, via, or a routed trace outline.
Class which calculates lengths (and associated routing statistics) in a BOARD context.
A collection of nets and the parameters used to route or test these nets.
Definition netclass.h:43
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
virtual int64_t GetPropagationDelay(const LENGTH_DELAY_CALCULATION_ITEM &aItem, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext)=0
Gets the propagation delay (in internal units) for the given item in the given geometry context.
virtual int64_t GetTrackLengthForPropagationDelay(int64_t aDelay, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext)=0
Gets the track length (in internal distance units) required for the given propagation delay (in inter...
virtual bool CanCalculateLengthForDelay(const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext) const =0
Returns true if a track length can be derived from a propagation delay in the given geometry context.
virtual void OnStackupChanged()
Event called by the length and time calculation architecture if the board stackup has changed.
virtual ~TUNING_PROFILE_PARAMETERS_IFACE()=default
virtual std::vector< int64_t > GetPropagationDelays(const std::vector< LENGTH_DELAY_CALCULATION_ITEM > &aItems, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext)=0
Gets the propagation delays (in internal units) for the given items in the given geometry context.
virtual int64_t CalculatePropagationDelayForShapeLineChain(const SHAPE_LINE_CHAIN &aShape, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext)=0
Gets the propagation delay for the given shape line chain.
virtual int64_t GetViaPropagationDelay(const PCB_LAYER_ID aSignalStartLayer, const PCB_LAYER_ID aSignalEndLayer, const PCB_LAYER_ID aViaStartLayer, const PCB_LAYER_ID aViaEndLayer, const TUNING_PROFILE_GEOMETRY_CONTEXT &aContext) const =0
Gets the via propagation delay for the given via layer geometry.
BOARD * m_board
The board all calculations are for.
LENGTH_DELAY_CALCULATION * m_lengthCalculation
The parent length / delay calculation object.
TUNING_PROFILE_PARAMETERS_IFACE(BOARD *aBoard, LENGTH_DELAY_CALCULATION *aCalculation)
virtual void OnSettingsChanged()
Event called by the length and time calculation architecture if netclass definitions have changed.
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
A data structure to contain basic geometry data which can affect signal propagation calculations.
int64_t DiffPairCouplingGap
The gap between coupled tracks.
const NETCLASS * NetClass
The net class this track belongs to.
int64_t Width
The width (in internal units) of the track.
bool IsDiffPairCoupled
Whether this track or via is a member of a coupled differential pair.
PCB_LAYER_ID Layer
The layer this track is on.