ADDED: PCB Tuning Profiles

Tuning profiles build on the previous delay tuning work to allow
the definition of track geometries per-layer for a given tuning
profile. These can be calculated from a target impedance (with
all relevant geometry taken from the board stackup), or entered
manually.

Tuning profiles can be configured to enable time-domain tuning,
and to automatically generate track geometry DRC rules for net
classes which have an assigned tuning profile.

Adds a DRC check for net classes with a tuning profile assigned
which is not itself defined.
This commit is contained in:
JamesJCode
2025-10-15 18:58:12 +01:00
parent 513a58a438
commit b7ce289e4e
68 changed files with 6347 additions and 2518 deletions
+8 -2
View File
@@ -59,7 +59,7 @@ NETCLASS::NETCLASS( const wxString& aName, bool aInitWithDefaults ) : m_isDefaul
SetName( aName );
SetPriority( -1 );
SetDelayProfile( wxEmptyString );
SetTuningProfile( wxEmptyString );
// Colors are a special optional case - always set, but UNSPECIFIED used in place of optional
SetPcbColor( COLOR4D::UNSPECIFIED );
@@ -102,7 +102,7 @@ void NETCLASS::ResetParents()
SetBusWidthParent( this );
SetSchematicColorParent( this );
SetLineStyleParent( this );
SetDelayProfileParent( this );
SetTuningProfileParent( this );
}
@@ -180,6 +180,9 @@ void NETCLASS::Serialize( google::protobuf::Any &aContainer ) const
if( m_pcbColor != COLOR4D::UNSPECIFIED )
PackColor( *board->mutable_color(), m_pcbColor );
if( m_tuningProfile != wxEmptyString )
board->set_tuning_profile( m_tuningProfile.ToUTF8() );
project::NetClassSchematicSettings* schematic = nc.mutable_schematic();
if( m_wireWidth )
@@ -246,6 +249,9 @@ bool NETCLASS::Deserialize( const google::protobuf::Any &aContainer )
if( nc.board().has_color() )
m_pcbColor = UnpackColor( nc.board().color() );
if( nc.board().has_tuning_profile() )
m_tuningProfile = wxString::FromUTF8( nc.board().tuning_profile() );
if( nc.schematic().has_wire_width() )
m_wireWidth = nc.schematic().wire_width().value_nm();