This commit is contained in:
Jeff Young 2024-06-10 20:16:30 +01:00
parent a02cb75656
commit 4e133ae83b
10 changed files with 93 additions and 92 deletions

View File

@ -205,7 +205,7 @@ set( EESCHEMA_SIM_SRCS
sim/sim_library.cpp
sim/sim_library_spice.cpp
sim/sim_library_kibis.cpp
sim/sim_library_ibis.cpp
sim/sim_lib_mgr.cpp
sim/sim_model_serializer.cpp
@ -213,7 +213,7 @@ set( EESCHEMA_SIM_SRCS
sim/sim_model_behavioral.cpp
sim/sim_model_ideal.cpp
sim/sim_model_l_mutual.cpp
sim/sim_model_kibis.cpp
sim/sim_model_ibis.cpp
sim/sim_model_ngspice.cpp
sim/sim_model_ngspice_data_bjt.cpp
sim/sim_model_ngspice_data_bsim1.cpp

View File

@ -26,9 +26,9 @@
#include <dialog_ibis_parser_reporter.h>
#include <dialog_sim_model.h>
#include <sim/sim_property.h>
#include <sim/sim_library_kibis.h>
#include <sim/sim_library_ibis.h>
#include <sim/sim_model.h>
#include <sim/sim_model_kibis.h>
#include <sim/sim_model_ibis.h>
#include <sim/sim_model_raw_spice.h>
#include <sim/sim_model_spice_fallback.h>
#include <sim/sim_model_subckt.h>
@ -251,43 +251,43 @@ bool DIALOG_SIM_MODEL<T>::TransferDataToWindow()
if( isIbisLoaded() && ( m_modelNameChoice->GetSelection() >= 0 ) )
{
int idx = m_modelNameChoice->GetSelection();
auto kibismodel = dynamic_cast<SIM_MODEL_KIBIS*>( &m_libraryModelsMgr.GetModels()[idx].get() );
auto ibismodel = dynamic_cast<SIM_MODEL_IBIS*>( &m_libraryModelsMgr.GetModels()[idx].get() );
if( kibismodel )
if( ibismodel )
{
onModelNameChoice( dummyEvent ); // refresh list of pins
int i = 0;
for( const std::pair<std::string, std::string>& strs : kibismodel->GetIbisPins() )
for( const std::pair<std::string, std::string>& strs : ibismodel->GetIbisPins() )
{
if( strs.first == SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY_KIBIS::PIN_FIELD ) )
if( strs.first == SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY_IBIS::PIN_FIELD ) )
{
auto kibisLibrary = static_cast<const SIM_LIBRARY_KIBIS*>( library() );
auto ibisLibrary = static_cast<const SIM_LIBRARY_IBIS*>( library() );
kibismodel->ChangePin( *kibisLibrary, strs.first );
ibismodel->ChangePin( *ibisLibrary, strs.first );
m_pinCombobox->SetSelection( static_cast<int>( i ) );
break;
}
i++;
}
if( i < static_cast<int>( kibismodel->GetIbisPins().size() ) )
if( i < static_cast<int>( ibismodel->GetIbisPins().size() ) )
{
onPinCombobox( dummyEvent ); // refresh list of models
m_pinModelCombobox->SetStringSelection(
SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY_KIBIS::MODEL_FIELD ) );
SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY_IBIS::MODEL_FIELD ) );
}
if( SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY_KIBIS::DIFF_FIELD ) == "1" )
if( SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY_IBIS::DIFF_FIELD ) == "1" )
{
kibismodel->SwitchSingleEndedDiff( true );
ibismodel->SwitchSingleEndedDiff( true );
m_differentialCheckbox->SetValue( true );
}
else
{
kibismodel->SwitchSingleEndedDiff( false );
ibismodel->SwitchSingleEndedDiff( false );
m_differentialCheckbox->SetValue( false );
}
}
@ -372,7 +372,7 @@ bool DIALOG_SIM_MODEL<T>::TransferDataFromWindow()
if( isIbisLoaded() )
{
SIM_MODEL_KIBIS* ibismodel = static_cast<SIM_MODEL_KIBIS*>(
SIM_MODEL_IBIS* ibismodel = static_cast<SIM_MODEL_IBIS*>(
&m_libraryModelsMgr.GetModels().at( m_modelNameChoice->GetSelection() ).get() );
if( ibismodel )
@ -387,9 +387,9 @@ bool DIALOG_SIM_MODEL<T>::TransferDataFromWindow()
if( ibismodel->CanDifferential() && m_differentialCheckbox->GetValue() )
differential = "1";
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY_KIBIS::PIN_FIELD, pins );
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY_KIBIS::MODEL_FIELD, modelName );
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY_KIBIS::DIFF_FIELD, differential );
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY_IBIS::PIN_FIELD, pins );
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY_IBIS::MODEL_FIELD, modelName );
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY_IBIS::DIFF_FIELD, differential );
}
}
@ -474,8 +474,8 @@ void DIALOG_SIM_MODEL<T>::updateWidgets()
template <typename T>
void DIALOG_SIM_MODEL<T>::updateIbisWidgets( SIM_MODEL* aModel )
{
SIM_MODEL_KIBIS* modelkibis = isIbisLoaded() ? dynamic_cast<SIM_MODEL_KIBIS*>( aModel )
: nullptr;
SIM_MODEL_IBIS* modelibis = isIbisLoaded() ? dynamic_cast<SIM_MODEL_IBIS*>( aModel )
: nullptr;
m_pinLabel->Show( isIbisLoaded() );
m_pinCombobox->Show( isIbisLoaded() );
@ -510,7 +510,7 @@ void DIALOG_SIM_MODEL<T>::updateIbisWidgets( SIM_MODEL* aModel )
}
}
m_differentialCheckbox->Show( isIbisLoaded() && modelkibis && modelkibis->CanDifferential() );
m_differentialCheckbox->Show( isIbisLoaded() && modelibis && modelibis->CanDifferential() );
m_modelNameLabel->SetLabel( isIbisLoaded() ? _( "Component:" ) : _( "Model:" ) );
}
@ -1244,7 +1244,7 @@ void DIALOG_SIM_MODEL<T>::onModelNameChoice( wxCommandEvent& aEvent )
if( isIbisLoaded() )
{
wxArrayString pinLabels;
SIM_MODEL_KIBIS* modelkibis = dynamic_cast<SIM_MODEL_KIBIS*>( &curModel() );
SIM_MODEL_IBIS* modelkibis = dynamic_cast<SIM_MODEL_IBIS*>( &curModel() );
wxCHECK2( modelkibis, return );
@ -1267,12 +1267,12 @@ void DIALOG_SIM_MODEL<T>::onPinCombobox( wxCommandEvent& aEvent )
{
wxArrayString modelLabels;
SIM_MODEL_KIBIS& ibisModel = static_cast<SIM_MODEL_KIBIS&>( curModel() );
SIM_MODEL_IBIS& ibisModel = static_cast<SIM_MODEL_IBIS&>( curModel() );
std::vector<std::pair<std::string, std::string>> strs = ibisModel.GetIbisPins();
std::string pinNumber = strs.at( m_pinCombobox->GetSelection() ).first;
const SIM_LIBRARY_KIBIS* ibisLibrary = dynamic_cast<const SIM_LIBRARY_KIBIS*>( library() );
const SIM_LIBRARY_IBIS* ibisLibrary = dynamic_cast<const SIM_LIBRARY_IBIS*>( library() );
ibisModel.ChangePin( *ibisLibrary, pinNumber );
@ -1317,12 +1317,12 @@ void DIALOG_SIM_MODEL<T>::onPinModelComboboxTextEnter( wxCommandEvent& aEvent )
template <typename T>
void DIALOG_SIM_MODEL<T>::onDifferentialCheckbox( wxCommandEvent& aEvent )
{
SIM_MODEL_KIBIS* modelkibis = dynamic_cast<SIM_MODEL_KIBIS*>( &curModel() );
SIM_MODEL_IBIS* modelibis = dynamic_cast<SIM_MODEL_IBIS*>( &curModel() );
wxCHECK( modelkibis, /* void */ );
wxCHECK( modelibis, /* void */ );
bool diff = m_differentialCheckbox->GetValue() && modelkibis->CanDifferential();
modelkibis->SwitchSingleEndedDiff( diff );
bool diff = m_differentialCheckbox->GetValue() && modelibis->CanDifferential();
modelibis->SwitchSingleEndedDiff( diff );
updateWidgets();
}
@ -1362,9 +1362,9 @@ void DIALOG_SIM_MODEL<T>::onWaveformChoice( wxCommandEvent& aEvent )
{
int idx = m_modelNameChoice->GetSelection();
auto& baseModel = static_cast<SIM_MODEL_KIBIS&>( m_libraryModelsMgr.GetModels()[idx].get() );
auto& baseModel = static_cast<SIM_MODEL_IBIS&>( m_libraryModelsMgr.GetModels()[idx].get() );
m_libraryModelsMgr.SetModel( idx, std::make_unique<SIM_MODEL_KIBIS>( type, baseModel ) );
m_libraryModelsMgr.SetModel( idx, std::make_unique<SIM_MODEL_IBIS>( type, baseModel ) );
try
{

View File

@ -32,7 +32,7 @@
#include <sim/sim_model.h>
#include <sim/sim_library.h>
#include <sim/sim_library_kibis.h>
#include <sim/sim_library_ibis.h>
#include <sch_symbol.h>
@ -118,7 +118,7 @@ private:
void adjustParamGridColumns( int aWidth, bool aForce );
bool isIbisLoaded() { return dynamic_cast<const SIM_LIBRARY_KIBIS*>( library() ); }
bool isIbisLoaded() { return dynamic_cast<const SIM_LIBRARY_IBIS*>( library() ); }
private:
EDA_BASE_FRAME* m_frame;

View File

@ -32,7 +32,7 @@
#include <confirm.h>
#include <pgm_base.h>
#include <env_paths.h>
#include <sim/sim_library_kibis.h>
#include <sim/sim_library_ibis.h>
#include <sim/sim_xspice_parser.h>
#include <sch_screen.h>
#include <sch_textbox.h>
@ -428,7 +428,7 @@ void NETLIST_EXPORTER_SPICE::readModel( SCH_SHEET_PATH& aSheet, SCH_SYMBOL& aSym
if( !path.IsEmpty() )
m_rawIncludes.insert( path );
}
else if( auto kibisModel = dynamic_cast<const SIM_MODEL_KIBIS*>( aItem.model ) )
else if( auto ibisModel = dynamic_cast<const SIM_MODEL_IBIS*>( aItem.model ) )
{
wxFileName cacheFn;
cacheFn.AssignDir( PATHS::GetUserCachePath() );
@ -443,10 +443,11 @@ void NETLIST_EXPORTER_SPICE::readModel( SCH_SHEET_PATH& aSheet, SCH_SYMBOL& aSym
cacheFn.GetFullPath() );
}
auto spiceGenerator = static_cast<const SPICE_GENERATOR_KIBIS&>( kibisModel->SpiceGenerator() );
std::string modelData = spiceGenerator.IbisDevice(
aItem, m_schematic->Prj(),
cacheFn.GetPath( wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR ), aReporter );
auto spiceGenerator = static_cast<const SPICE_GENERATOR_IBIS&>( ibisModel->SpiceGenerator() );
wxString cacheFilepath = cacheFn.GetPath( wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR );
std::string modelData = spiceGenerator.IbisDevice( aItem, m_schematic->Prj(),
cacheFilepath, aReporter );
cacheFile.Write( wxString( modelData ) );
m_rawIncludes.insert( cacheFn.GetFullPath() );

View File

@ -22,7 +22,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <sim/sim_library_kibis.h>
#include <sim/sim_library_ibis.h>
#include <sim/sim_library.h>
#include <sim/sim_library_spice.h>
#include <boost/algorithm/string/case_conv.hpp>
@ -36,7 +36,7 @@ SIM_LIBRARY::Create( const wxString& aFilePath, bool aForceFullParse, REPORTER&
std::unique_ptr<SIM_LIBRARY> library;
if( aFilePath.EndsWith( ".ibs" ) )
library = std::make_unique<SIM_LIBRARY_KIBIS>();
library = std::make_unique<SIM_LIBRARY_IBIS>();
else
library = std::make_unique<SIM_LIBRARY_SPICE>( aForceFullParse );

View File

@ -21,15 +21,15 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <sim/sim_library_kibis.h>
#include <sim/sim_model_kibis.h>
#include <sim/sim_library_ibis.h>
#include <sim/sim_model_ibis.h>
#include <ki_exception.h>
#include <locale_io.h>
#include <pegtl/contrib/parse_tree.hpp>
#include <sch_pin.h>
void SIM_LIBRARY_KIBIS::ReadFile( const wxString& aFilePath, REPORTER& aReporter )
void SIM_LIBRARY_IBIS::ReadFile( const wxString& aFilePath, REPORTER& aReporter )
{
SIM_LIBRARY::ReadFile( aFilePath, aReporter );
m_kibis = KIBIS( aFilePath.ToStdString(), &aReporter );
@ -52,7 +52,7 @@ void SIM_LIBRARY_KIBIS::ReadFile( const wxString& aFilePath, REPORTER& aReporter
m_models.push_back( SIM_MODEL::Create( SIM_MODEL::TYPE::KIBIS_DEVICE, pins, aReporter ) );
m_modelNames.emplace_back( kcomp.m_name );
SIM_MODEL_KIBIS* libcomp = dynamic_cast<SIM_MODEL_KIBIS*>( m_models.back().get() );
SIM_MODEL_IBIS* libcomp = dynamic_cast<SIM_MODEL_IBIS*>( m_models.back().get() );
if ( libcomp )
InitModel( *libcomp, kcomp.m_name );
@ -60,7 +60,7 @@ void SIM_LIBRARY_KIBIS::ReadFile( const wxString& aFilePath, REPORTER& aReporter
}
bool SIM_LIBRARY_KIBIS::InitModel( SIM_MODEL_KIBIS& aModel, wxString aCompName )
bool SIM_LIBRARY_IBIS::InitModel( SIM_MODEL_IBIS& aModel, wxString aCompName )
{
for( KIBIS_COMPONENT& kcomp : m_kibis.m_components )
{
@ -83,7 +83,7 @@ bool SIM_LIBRARY_KIBIS::InitModel( SIM_MODEL_KIBIS& aModel, wxString aCompName )
}
bool SIM_LIBRARY_KIBIS::isPinDiff( const std::string& aComp, const std::string& aPinNumber ) const
bool SIM_LIBRARY_IBIS::isPinDiff( const std::string& aComp, const std::string& aPinNumber ) const
{
for( std::pair<std::string, std::string> aInfo : m_diffPins )
{

View File

@ -21,16 +21,16 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef SIM_LIBRARY_KIBIS_H
#define SIM_LIBRARY_KIBIS_H
#ifndef SIM_LIBRARY_IBIS_H
#define SIM_LIBRARY_IBIS_H
#include <sim/kibis/kibis.h>
#include <sim/sim_library.h>
#include <sim/sim_model_kibis.h>
#include <sim/sim_model_ibis.h>
class SIM_LIBRARY_KIBIS : public SIM_LIBRARY
class SIM_LIBRARY_IBIS : public SIM_LIBRARY
{
friend class SIM_MODEL_KIBIS;
friend class SIM_MODEL_IBIS;
public:
static constexpr auto PIN_FIELD = "Sim.Ibis.Pin";
@ -40,7 +40,7 @@ public:
// @copydoc SIM_LIBRARY::ReadFile()
void ReadFile( const wxString& aFilePath, REPORTER& aReporter ) override;
bool InitModel( SIM_MODEL_KIBIS& aModel, wxString aCompName );
bool InitModel( SIM_MODEL_IBIS& aModel, wxString aCompName );
bool isPinDiff( const std::string& aComp, const std::string& aPinNumber ) const;
protected:
@ -48,4 +48,4 @@ protected:
std::vector<std::pair<std::string, std::string>> m_diffPins;
};
#endif // SIM_LIBRARY_SPICE_H
#endif // SIM_LIBRARY_IBIS_H

View File

@ -33,7 +33,7 @@
#include <sim/sim_model_l_mutual.h>
#include <sim/sim_model_ngspice.h>
#include <sim/sim_model_r_pot.h>
#include <sim/sim_model_kibis.h>
#include <sim/sim_model_ibis.h>
#include <sim/sim_model_source.h>
#include <sim/sim_model_raw_spice.h>
#include <sim/sim_model_subckt.h>
@ -41,7 +41,7 @@
#include <sim/sim_model_tline.h>
#include <sim/sim_model_xspice.h>
#include <sim/sim_lib_mgr.h>
#include <sim/sim_library_kibis.h>
#include <sim/sim_library_ibis.h>
#include <boost/algorithm/string.hpp>
#include <fmt/core.h>
@ -423,7 +423,7 @@ TYPE SIM_MODEL::ReadTypeFromFields( const std::vector<SCH_FIELD>& aFields, REPOR
void SIM_MODEL::ReadDataFields( const std::vector<SCH_FIELD>* aFields,
const std::vector<SCH_PIN*>& aPins )
{
bool diffMode = GetFieldValue( aFields, SIM_LIBRARY_KIBIS::DIFF_FIELD ) == "1";
bool diffMode = GetFieldValue( aFields, SIM_LIBRARY_IBIS::DIFF_FIELD ) == "1";
SwitchSingleEndedDiff( diffMode );
m_serializer->ParseEnable( GetFieldValue( aFields, SIM_LEGACY_ENABLE_FIELD_V7 ) );
@ -944,7 +944,7 @@ std::unique_ptr<SIM_MODEL> SIM_MODEL::Create( TYPE aType )
case TYPE::KIBIS_DRIVER_DC:
case TYPE::KIBIS_DRIVER_RECT:
case TYPE::KIBIS_DRIVER_PRBS:
return std::make_unique<SIM_MODEL_KIBIS>( aType );
return std::make_unique<SIM_MODEL_IBIS>( aType );
case TYPE::RAWSPICE:
return std::make_unique<SIM_MODEL_RAW_SPICE>();

View File

@ -22,32 +22,32 @@
*/
#include <sim/kibis/kibis.h>
#include <sim/sim_model_kibis.h>
#include <sim/sim_library_kibis.h>
#include <sim/sim_model_ibis.h>
#include <sim/sim_library_ibis.h>
#include <fmt/core.h>
#include <wx/filename.h>
#include <kiway.h>
#include "sim_lib_mgr.h"
std::string SPICE_GENERATOR_KIBIS::ModelName( const SPICE_ITEM& aItem ) const
std::string SPICE_GENERATOR_IBIS::ModelName( const SPICE_ITEM& aItem ) const
{
return fmt::format( "{}.{}", aItem.refName, aItem.baseModelName );
}
std::string SPICE_GENERATOR_KIBIS::ModelLine( const SPICE_ITEM& aItem ) const
std::string SPICE_GENERATOR_IBIS::ModelLine( const SPICE_ITEM& aItem ) const
{
return "";
}
std::vector<std::reference_wrapper<const SIM_MODEL::PARAM>> SPICE_GENERATOR_KIBIS::GetInstanceParams() const
std::vector<std::reference_wrapper<const SIM_MODEL::PARAM>> SPICE_GENERATOR_IBIS::GetInstanceParams() const
{
std::vector<std::reference_wrapper<const SIM_MODEL::PARAM>> vec;
return vec;
}
std::vector<std::string> SPICE_GENERATOR_KIBIS::CurrentNames( const SPICE_ITEM& aItem ) const
std::vector<std::string> SPICE_GENERATOR_IBIS::CurrentNames( const SPICE_ITEM& aItem ) const
{
std::vector<std::string> currentNames;
@ -58,15 +58,15 @@ std::vector<std::string> SPICE_GENERATOR_KIBIS::CurrentNames( const SPICE_ITEM&
}
std::string SPICE_GENERATOR_KIBIS::IbisDevice( const SPICE_ITEM& aItem, const PROJECT& aProject,
const wxString& aCacheDir,
REPORTER& aReporter ) const
std::string SPICE_GENERATOR_IBIS::IbisDevice( const SPICE_ITEM& aItem, const PROJECT& aProject,
const wxString& aCacheDir,
REPORTER& aReporter ) const
{
std::string ibisLibFilename = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY::LIBRARY_FIELD );
std::string ibisCompName = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY::NAME_FIELD );
std::string ibisPinName = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY_KIBIS::PIN_FIELD );
std::string ibisModelName = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY_KIBIS::MODEL_FIELD );
bool diffMode = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY_KIBIS::DIFF_FIELD ) == "1";
std::string ibisPinName = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY_IBIS::PIN_FIELD );
std::string ibisModelName = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY_IBIS::MODEL_FIELD );
bool diffMode = SIM_MODEL::GetFieldValue( &aItem.fields, SIM_LIBRARY_IBIS::DIFF_FIELD ) == "1";
wxString path = SIM_LIB_MGR::ResolveLibraryPath( ibisLibFilename, &aProject );
@ -220,8 +220,8 @@ std::string SPICE_GENERATOR_KIBIS::IbisDevice( const SPICE_ITEM& aItem, const PR
}
SIM_MODEL_KIBIS::SIM_MODEL_KIBIS( TYPE aType ) :
SIM_MODEL( aType, std::make_unique<SPICE_GENERATOR_KIBIS>( *this ) ),
SIM_MODEL_IBIS::SIM_MODEL_IBIS( TYPE aType ) :
SIM_MODEL( aType, std::make_unique<SPICE_GENERATOR_IBIS>( *this ) ),
m_enableDiff( false ),
m_sourceModel( nullptr )
{
@ -251,7 +251,7 @@ SIM_MODEL_KIBIS::SIM_MODEL_KIBIS( TYPE aType ) :
}
void SIM_MODEL_KIBIS::SwitchSingleEndedDiff( bool aDiff )
void SIM_MODEL_IBIS::SwitchSingleEndedDiff( bool aDiff )
{
ClearPins();
@ -268,8 +268,8 @@ void SIM_MODEL_KIBIS::SwitchSingleEndedDiff( bool aDiff )
}
}
SIM_MODEL_KIBIS::SIM_MODEL_KIBIS( TYPE aType, const SIM_MODEL_KIBIS& aSource ) :
SIM_MODEL_KIBIS( aType )
SIM_MODEL_IBIS::SIM_MODEL_IBIS( TYPE aType, const SIM_MODEL_IBIS& aSource ) :
SIM_MODEL_IBIS( aType )
{
for( PARAM& param1 : m_params )
{
@ -291,7 +291,7 @@ SIM_MODEL_KIBIS::SIM_MODEL_KIBIS( TYPE aType, const SIM_MODEL_KIBIS& aSource ) :
}
bool SIM_MODEL_KIBIS::ChangePin( const SIM_LIBRARY_KIBIS& aLib, std::string aPinNumber )
bool SIM_MODEL_IBIS::ChangePin( const SIM_LIBRARY_IBIS& aLib, std::string aPinNumber )
{
KIBIS_COMPONENT* kcomp = aLib.m_kibis.GetComponent( std::string( GetComponentName() ) );
@ -312,17 +312,17 @@ bool SIM_MODEL_KIBIS::ChangePin( const SIM_LIBRARY_KIBIS& aLib, std::string aPin
}
void SIM_MODEL_KIBIS::SetBaseModel( const SIM_MODEL& aBaseModel )
void SIM_MODEL_IBIS::SetBaseModel( const SIM_MODEL& aBaseModel )
{
// Actual base models can only be of the same type, which is not the case here, as in addition
// to IBIS device model type we have multiple types of drivers available for the same sourced
// model. And we don't want to inherit the default values anyway. So we just store these models
// and use the only for Spice code generation.
m_sourceModel = dynamic_cast<const SIM_MODEL_KIBIS*>( &aBaseModel );
m_sourceModel = dynamic_cast<const SIM_MODEL_IBIS*>( &aBaseModel );
}
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makeParamInfos( TYPE aType )
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_IBIS::makeParamInfos( TYPE aType )
{
std::vector<PARAM::INFO> paramInfos;
PARAM::INFO paramInfo;
@ -396,7 +396,7 @@ std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makeParamInfos( TYPE aType
}
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makeDcWaveformParamInfos()
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_IBIS::makeDcWaveformParamInfos()
{
std::vector<PARAM::INFO> paramInfos;
PARAM::INFO paramInfo;
@ -414,7 +414,7 @@ std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makeDcWaveformParamInfos()
}
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makeRectWaveformParamInfos()
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_IBIS::makeRectWaveformParamInfos()
{
std::vector<PARAM::INFO> paramInfos;
PARAM::INFO paramInfo;
@ -455,7 +455,7 @@ std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makeRectWaveformParamInfos(
}
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_KIBIS::makePrbsWaveformParamInfos()
std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_IBIS::makePrbsWaveformParamInfos()
{
std::vector<PARAM::INFO> paramInfos;
PARAM::INFO paramInfo;

View File

@ -21,19 +21,19 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef SIM_MODEL_KIBIS_H
#define SIM_MODEL_KIBIS_H
#ifndef SIM_MODEL_IBIS_H
#define SIM_MODEL_IBIS_H
#include <sim/kibis/kibis.h>
#include <sim/sim_model.h>
#include <sim/spice_generator.h>
#include <project.h>
class SIM_LIBRARY_KIBIS;
class SIM_LIBRARY_IBIS;
class REPORTER;
class SPICE_GENERATOR_KIBIS : public SPICE_GENERATOR
class SPICE_GENERATOR_IBIS : public SPICE_GENERATOR
{
public:
using SPICE_GENERATOR::SPICE_GENERATOR;
@ -49,16 +49,16 @@ protected:
std::vector<std::reference_wrapper<const SIM_MODEL::PARAM>> GetInstanceParams() const override;
};
class SIM_MODEL_KIBIS : public SIM_MODEL
class SIM_MODEL_IBIS : public SIM_MODEL
{
friend class SIM_LIBRARY_KIBIS;
friend class SIM_LIBRARY_IBIS;
public:
SIM_MODEL_KIBIS( TYPE aType );
SIM_MODEL_IBIS( TYPE aType );
// @brief Special copy constructor
// creates a a model with aType, but tries to match parameters from aSource.
SIM_MODEL_KIBIS( TYPE aType, const SIM_MODEL_KIBIS& aSource );
SIM_MODEL_IBIS( TYPE aType, const SIM_MODEL_IBIS& aSource );
std::vector<std::pair<std::string, std::string>> GetIbisPins() const
{
@ -81,7 +81,7 @@ public:
/**
* @brief update the list of available models based on the pin number.
*/
bool ChangePin( const SIM_LIBRARY_KIBIS& aLib, std::string aPinNumber );
bool ChangePin( const SIM_LIBRARY_IBIS& aLib, std::string aPinNumber );
void SetBaseModel( const SIM_MODEL& aBaseModel ) override;
@ -97,7 +97,7 @@ private:
static std::vector<PARAM::INFO> makeRectWaveformParamInfos();
static std::vector<PARAM::INFO> makePrbsWaveformParamInfos();
const SIM_MODEL_KIBIS* m_sourceModel;
const SIM_MODEL_IBIS* m_sourceModel;
std::vector<std::string> m_ibisModels;
std::vector<std::pair<std::string, std::string>> m_ibisPins;
std::string m_componentName;