diff --git a/.gitignore b/.gitignore index d35aad3..3f5a156 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ # Testing results test_results.xml +# Documentation +doc/* + diff --git a/ToDo b/ToDo index 8b13789..f692db1 100644 --- a/ToDo +++ b/ToDo @@ -1 +1,7 @@ +- Create a Python model configurator, which: + 1. Automatically creates a *.AMI file, which is consistent with the model. + 2. Allow for GUI setting of model parameterization: + a. Tx tap weights + b. Rx CTLE options + b. Rx DFE options diff --git a/branch_readme b/branch_readme deleted file mode 100644 index 3921e0f..0000000 --- a/branch_readme +++ /dev/null @@ -1,8 +0,0 @@ -Branch 'configurator' goals: - -1. Automatically create a *.AMI file, which is consistent with the model. -2. Allow for GUI setting of model parameterization: - a. Tx tap weights - b. Rx CTLE options - b. Rx DFE options - diff --git a/doc/html/_r_e_a_d_m_e_8md.html b/doc/html/_r_e_a_d_m_e_8md.html new file mode 100644 index 0000000..f566f07 --- /dev/null +++ b/doc/html/_r_e_a_d_m_e_8md.html @@ -0,0 +1,101 @@ + + +
+ + + +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Implementation of AmiRx class. +More...
+#include <string>
#include <vector>
#include <algorithm>
#include <memory>
#include "include/ami_rx.h"
#include "include/util.h"
Go to the source code of this file.
++Macros | |
#define | MAX_INIT_ADAPT_BITS 10000 |
+Variables | |
std::ostringstream | debug_stream |
Implementation of AmiRx class.
+Original author: David Banas
+ Original date: May 20, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file ami_rx.cpp.
+#define MAX_INIT_ADAPT_BITS 10000 | +
Definition at line 17 of file ami_rx.cpp.
+ +std::ostringstream debug_stream | +
Definition at line 17 of file amimodel.cpp.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Interface to AmiRx class. +More...
+#include <string>
#include <vector>
#include "include/amimodel.h"
#include "include/digital_filter.h"
#include "include/dfe.h"
Go to the source code of this file.
++Classes | |
class | AmiRx |
A generic IBIS-AMI Rx model implementation. More... | |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Implementation of AmiTx class. +More...
+ +Go to the source code of this file.
+Implementation of AmiTx class.
+Original author: David Banas
+ Original date: May 7, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file ami_tx.cpp.
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Interface to AmiTx class. +More...
+#include <string>
#include <vector>
#include "include/amimodel.h"
#include "include/digital_filter.h"
Go to the source code of this file.
++Classes | |
class | AmiTx |
A generic IBIS-AMI Tx model implementation. More... | |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Implementation of AMIModel class. +More...
+ +Go to the source code of this file.
++Macros | |
#define | EPS_REL 0.0001 |
+Variables | |
std::ostringstream | debug_stream |
Implementation of AMIModel class.
+Original author: David Banas
+ Original date: May 2, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file amimodel.cpp.
+#define EPS_REL 0.0001 | +
Definition at line 15 of file amimodel.cpp.
+ +std::ostringstream debug_stream | +
Definition at line 17 of file amimodel.cpp.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Interface to AMIModel class. +More...
+#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/qi_omit.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_fusion.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/variant.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <fstream>
#include <string>
#include <vector>
#include <utility>
Go to the source code of this file.
++Classes | |
struct | ibisami::ParamTree |
The parameter tree definition. More... | |
struct | ibisami::Value |
Used to access a leaf node. More... | |
struct | ibisami::Node |
Used to access a branch node. More... | |
class | AMIModel |
Abstract class providing the base functionality required by all IBIS-AMI models. More... | |
+Namespaces | |
ibisami | |
Used to protect several complex custom types from potential name collisions. | |
+Macros | |
#define | PRBS_LEN 7 |
+Typedefs | |
typedef boost::variant< boost::recursive_wrapper< ParamTree >, std::string > | ibisami::ParamNode |
typedef std::pair< bool, std::string > | ParseRes |
+Functions | |
BOOST_FUSION_ADAPT_STRUCT (ibisami::ParamTree,(std::string, name)(std::vector< ibisami::ParamNode >, children)) namespace ibisami | |
Interface to AMIModel class.
+Original author: David Banas
+ Original date: May 1, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+This abstract class provides the common base for all AMI models.
+ +Definition in file amimodel.h.
+#define PRBS_LEN 7 | +
Definition at line 28 of file amimodel.h.
+ +typedef std::pair<bool, std::string> ParseRes | +
Definition at line 118 of file amimodel.h.
+ +BOOST_FUSION_ADAPT_STRUCT | +( | +ibisami::ParamTree | +, | +
+ | + | (std::string, name)(std::vector< ibisami::ParamNode >, children) | ++ |
+ | ) | ++ |
Definition at line 76 of file amimodel.h.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
▼Nibisami | Used to protect several complex custom types from potential name collisions |
CAMIGrammar | AMI parameter tree grammatical definition |
CNode | Used to access a branch node |
CParamTree | The parameter tree definition |
CValue | Used to access a leaf node |
CAMIModel | Abstract class providing the base functionality required by all IBIS-AMI models |
CAmiPointers | Holds the pointers, which we pass back to the AMI_Init() caller |
CAmiRx | A generic IBIS-AMI Rx model implementation |
CAmiTx | A generic IBIS-AMI Tx model implementation |
CDFE | A generic DFE implementation |
CDigitalFilter | A generic digital filter implementation, using "Direct Form 2" processing |
CFIRFilter | A FIR (finite impulse response) filter implementation, with optional over-sampling |
CMyRx | An example device specific Rx model implementation |
CMyTx | An example device specific Tx model implementation |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for AMIModel, including all inherited members.
+aggressors_ | AMIModel | protected |
bit_time_ | AMIModel | protected |
clog_ | AMIModel | protected |
gen_data(double *res_vec) | AMIModel | protected |
gen_data_cnt_ | AMIModel | protected |
gen_data_last_ | AMIModel | protected |
get_param(const std::vector< std::string > &node_names) const | AMIModel | protected |
get_param_bool(const std::vector< std::string > &node_names, bool default_val) const | AMIModel | protected |
get_param_float(const std::vector< std::string > &node_names, double default_val) const | AMIModel | protected |
get_param_int(const std::vector< std::string > &node_names, long default_val) const | AMIModel | protected |
impulse_matrix_ | AMIModel | protected |
init(double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) | AMIModel | virtual |
log(std::string msg) | AMIModel | inlineprotected |
log_ | AMIModel | protected |
msg() | AMIModel | inline |
msg_ | AMIModel | protected |
name_ | AMIModel | protected |
number_of_rows_ | AMIModel | protected |
param_str() | AMIModel | inline |
param_str_ | AMIModel | protected |
param_tree_ | AMIModel | protected |
parse_params(const std::string &AMI_parameters_in) | AMIModel | protected |
proc_imp()=0 | AMIModel | pure virtual |
proc_sig(double *sig, long len, double *clock_times)=0 | AMIModel | pure virtual |
sample_interval_ | AMIModel | protected |
samples_per_bit_ | AMIModel | protected |
shift_reg_ | AMIModel | protected |
~AMIModel() | AMIModel | inlinevirtual |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Abstract class providing the base functionality required by all IBIS-AMI models. + More...
+ +#include <amimodel.h>
+Public Member Functions | |
virtual | ~AMIModel () |
virtual void | init (double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) |
Initialize the model. More... | |
virtual void | proc_imp ()=0 |
Process an incoming impulse response. More... | |
virtual bool | proc_sig (double *sig, long len, double *clock_times)=0 |
Process a signal. More... | |
std::string & | msg () |
Retrieve the model message. More... | |
std::string & | param_str () |
Retrieve the model parameter string. More... | |
+Protected Member Functions | |
ParseRes | parse_params (const std::string &AMI_parameters_in) |
Parse the incoming AMI parameter string. More... | |
std::string | get_param (const std::vector< std::string > &node_names) const |
Get the string value of a parameter. More... | |
long | get_param_int (const std::vector< std::string > &node_names, long default_val) const |
Get the value of an integer parameter. More... | |
double | get_param_float (const std::vector< std::string > &node_names, double default_val) const |
Get the value of a floating point parameter. More... | |
bool | get_param_bool (const std::vector< std::string > &node_names, bool default_val) const |
Get the value of a Boolean parameter. More... | |
void | gen_data (double *res_vec) |
Generate random binary oversampled data. More... | |
void | log (std::string msg) |
+Protected Attributes | |
std::string | msg_ |
std::string | param_str_ |
std::string | name_ |
double | sample_interval_ |
double | bit_time_ |
double * | impulse_matrix_ |
double | gen_data_last_ |
long | number_of_rows_ |
long | aggressors_ |
long | samples_per_bit_ |
unsigned long | gen_data_cnt_ |
ibisami::ParamTree | param_tree_ |
std::ofstream | clog_ |
bool | log_ |
int | shift_reg_ [PRBS_LEN] |
Abstract class providing the base functionality required by all IBIS-AMI models.
+ +Definition at line 121 of file amimodel.h.
+
+
|
+ +inlinevirtual | +
Definition at line 123 of file amimodel.h.
+ +
+
|
+ +protected | +
Generate random binary oversampled data.
+res_vec | A pointer to an array of doubles to be overwritten. (It is assumed that, at least, number_of_rows_ elements have been allocated.) |
The default implementation uses PRBS-7, [7,6].
+ +Definition at line 232 of file amimodel.cpp.
+ +
+
|
+ +protected | +
Get the string value of a parameter.
+Returns the string value of a particular AMI parameter.
+Inputs:
Returns:
Definition at line 190 of file amimodel.cpp.
+ +
+
|
+ +protected | +
Get the value of a Boolean parameter.
+Returns the Boolean value of a particular Bool parameter.
+Inputs:
Returns:
Throws:
Definition at line 158 of file amimodel.cpp.
+ +
+
|
+ +protected | +
Get the value of a floating point parameter.
+Returns the floating point value of a particular Float parameter.
+Inputs:
Returns:
Throws:
Definition at line 119 of file amimodel.cpp.
+ +
+
|
+ +protected | +
Get the value of an integer parameter.
+Returns the integer value of a particular Integer parameter.
+Inputs:
Returns:
Throws:
Definition at line 80 of file amimodel.cpp.
+ +
+
|
+ +virtual | +
Initialize the model.
+(See AMI_Init() for parameter descriptions.)
Reimplemented in MyRx, AmiRx, and MyTx.
+ +Definition at line 20 of file amimodel.cpp.
+ +
+
|
+ +inlineprotected | +
Definition at line 169 of file amimodel.h.
+ +
+
|
+ +inline | +
Retrieve the model message.
+ +Definition at line 159 of file amimodel.h.
+ +
+
|
+ +inline | +
Retrieve the model parameter string.
+ +Definition at line 160 of file amimodel.h.
+ +
+
|
+ +protected | +
Parse the incoming AMI parameter string.
+ +Definition at line 46 of file amimodel.cpp.
+ +
+
|
+ +pure virtual | +
Process an incoming impulse response.
+This function takes no arguments and returns nothing. It processes the array of doubles sent into init(), in place. The model already contains everything it needs to do this, via the init() call. The only reason this function isn't absorped into init() is to allow derived classes to add to the init() functionality, before the impulse response is processed.
+ + + +
+
|
+ +pure virtual | +
Process a signal.
+sig | A pointer to the array of doubles to be processed. |
len | The number of samples to process. |
clock_times | A pointer to the array of doubles used for storing the clock times. |
As per the IBIS standard, the user is allowed to presume that there has been enough storage allocated for clock_times, given the value of sig_len, sample_interval, and bit_time.
+
+
|
+ +protected | +
Definition at line 173 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 172 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 176 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 174 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 172 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 172 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 177 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 171 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 171 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 173 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 171 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 175 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 172 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 173 of file amimodel.h.
+ +
+
|
+ +protected | +
Definition at line 178 of file amimodel.h.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for AmiRx, including all inherited members.
+aggressors_ | AMIModel | protected |
AmiRx() | AmiRx | inline |
bit_time_ | AMIModel | protected |
clog_ | AMIModel | protected |
ctle_ | AmiRx | protected |
dfe_ | AmiRx | protected |
dfe_dump_file_ | AmiRx | protected |
dfe_dump_stream_ | AmiRx | protected |
dfe_input_file_ | AmiRx | protected |
dfe_input_stream_ | AmiRx | protected |
dump_adaptation_input_ | AmiRx | protected |
dump_dfe_adaptation_ | AmiRx | protected |
gen_data(double *res_vec) | AMIModel | protected |
gen_data_cnt_ | AMIModel | protected |
gen_data_last_ | AMIModel | protected |
get_param(const std::vector< std::string > &node_names) const | AMIModel | protected |
get_param_bool(const std::vector< std::string > &node_names, bool default_val) const | AMIModel | protected |
get_param_float(const std::vector< std::string > &node_names, double default_val) const | AMIModel | protected |
get_param_int(const std::vector< std::string > &node_names, long default_val) const | AMIModel | protected |
impulse_matrix_ | AMIModel | protected |
init(double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override | AmiRx | virtual |
init_adapt_tap_ | AmiRx | protected |
log(std::string msg) | AMIModel | inlineprotected |
log_ | AMIModel | protected |
msg() | AMIModel | inline |
msg_ | AMIModel | protected |
name_ | AMIModel | protected |
number_of_rows_ | AMIModel | protected |
param_str() | AMIModel | inline |
param_str_ | AMIModel | protected |
param_tree_ | AMIModel | protected |
parse_params(const std::string &AMI_parameters_in) | AMIModel | protected |
proc_imp() override | AmiRx | virtual |
proc_sig(double *sig, long len, double *clock_times) override | AmiRx | virtual |
sample_interval_ | AMIModel | protected |
samples_per_bit_ | AMIModel | protected |
shift_reg_ | AMIModel | protected |
sig_tap_ | AmiRx | protected |
~AMIModel() | AMIModel | inlinevirtual |
~AmiRx() | AmiRx | inlinevirtual |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
A generic IBIS-AMI Rx model implementation. + More...
+ +#include <ami_rx.h>
+Public Member Functions | |
AmiRx () | |
virtual | ~AmiRx () |
void | init (double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override |
Initializer. More... | |
void | proc_imp () override |
Override of AMIModel::proc_imp() specific to Rx models. More... | |
bool | proc_sig (double *sig, long len, double *clock_times) override |
Override of AMIModel::proc_sig() specific to Rx models. More... | |
Public Member Functions inherited from AMIModel | |
virtual | ~AMIModel () |
std::string & | msg () |
Retrieve the model message. More... | |
std::string & | param_str () |
Retrieve the model parameter string. More... | |
+Protected Attributes | |
DigitalFilter * | ctle_ |
DFE * | dfe_ |
std::ofstream | dfe_dump_stream_ |
std::ofstream | dfe_input_stream_ |
bool | dump_dfe_adaptation_ |
bool | dump_adaptation_input_ |
std::string | dfe_dump_file_ |
std::string | dfe_input_file_ |
int | sig_tap_ |
int | init_adapt_tap_ |
Protected Attributes inherited from AMIModel | |
std::string | msg_ |
std::string | param_str_ |
std::string | name_ |
double | sample_interval_ |
double | bit_time_ |
double * | impulse_matrix_ |
double | gen_data_last_ |
long | number_of_rows_ |
long | aggressors_ |
long | samples_per_bit_ |
unsigned long | gen_data_cnt_ |
ibisami::ParamTree | param_tree_ |
std::ofstream | clog_ |
bool | log_ |
int | shift_reg_ [PRBS_LEN] |
+Additional Inherited Members | |
Protected Member Functions inherited from AMIModel | |
ParseRes | parse_params (const std::string &AMI_parameters_in) |
Parse the incoming AMI parameter string. More... | |
std::string | get_param (const std::vector< std::string > &node_names) const |
Get the string value of a parameter. More... | |
long | get_param_int (const std::vector< std::string > &node_names, long default_val) const |
Get the value of an integer parameter. More... | |
double | get_param_float (const std::vector< std::string > &node_names, double default_val) const |
Get the value of a floating point parameter. More... | |
bool | get_param_bool (const std::vector< std::string > &node_names, bool default_val) const |
Get the value of a Boolean parameter. More... | |
void | gen_data (double *res_vec) |
Generate random binary oversampled data. More... | |
void | log (std::string msg) |
A generic IBIS-AMI Rx model implementation.
+This abstract class provides generic Rx model capability. Device specific Rx models should derive from this class.
+ + +
+
|
+ +inline | +
+
|
+ +inlinevirtual | +
+
|
+ +overridevirtual | +
+
|
+ +overridevirtual | +
Override of AMIModel::proc_imp() specific to Rx models.
+ +Implements AMIModel.
+ +Definition at line 76 of file ami_rx.cpp.
+ +
+
|
+ +overridevirtual | +
Override of AMIModel::proc_sig() specific to Rx models.
+ +Implements AMIModel.
+ +Definition at line 64 of file ami_rx.cpp.
+ +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for AmiTx, including all inherited members.
+aggressors_ | AMIModel | protected |
bit_time_ | AMIModel | protected |
clog_ | AMIModel | protected |
filter_ | AmiTx | protected |
gen_data(double *res_vec) | AMIModel | protected |
gen_data_cnt_ | AMIModel | protected |
gen_data_last_ | AMIModel | protected |
get_param(const std::vector< std::string > &node_names) const | AMIModel | protected |
get_param_bool(const std::vector< std::string > &node_names, bool default_val) const | AMIModel | protected |
get_param_float(const std::vector< std::string > &node_names, double default_val) const | AMIModel | protected |
get_param_int(const std::vector< std::string > &node_names, long default_val) const | AMIModel | protected |
have_preemph_ | AmiTx | protected |
impulse_matrix_ | AMIModel | protected |
init(double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) | AMIModel | virtual |
log(std::string msg) | AMIModel | inlineprotected |
log_ | AMIModel | protected |
msg() | AMIModel | inline |
msg_ | AMIModel | protected |
name_ | AMIModel | protected |
num_taps_ | AmiTx | protected |
number_of_rows_ | AMIModel | protected |
param_str() | AMIModel | inline |
param_str_ | AMIModel | protected |
param_tree_ | AMIModel | protected |
parse_params(const std::string &AMI_parameters_in) | AMIModel | protected |
proc_imp() override | AmiTx | virtual |
proc_sig(double *sig, long len, double *clock_times) override | AmiTx | virtual |
sample_interval_ | AMIModel | protected |
samples_per_bit_ | AMIModel | protected |
shift_reg_ | AMIModel | protected |
tap_weights_ | AmiTx | protected |
~AMIModel() | AMIModel | inlinevirtual |
~AmiTx() | AmiTx | inlinevirtual |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
A generic IBIS-AMI Tx model implementation. + More...
+ +#include <ami_tx.h>
+Public Member Functions | |
virtual | ~AmiTx () |
void | proc_imp () override |
Process the channel impulse response. More... | |
bool | proc_sig (double *sig, long len, double *clock_times) override |
Process a signal. More... | |
Public Member Functions inherited from AMIModel | |
virtual | ~AMIModel () |
virtual void | init (double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) |
Initialize the model. More... | |
std::string & | msg () |
Retrieve the model message. More... | |
std::string & | param_str () |
Retrieve the model parameter string. More... | |
+Protected Attributes | |
DigitalFilter * | filter_ |
Used for pre-emphasis. More... | |
bool | have_preemph_ |
True, if I have a pre-emphasis filter. More... | |
int | num_taps_ |
Number of taps in my pre-emphasis filter. More... | |
std::vector< double > | tap_weights_ |
Tap weights for pre-emphasis filter. More... | |
Protected Attributes inherited from AMIModel | |
std::string | msg_ |
std::string | param_str_ |
std::string | name_ |
double | sample_interval_ |
double | bit_time_ |
double * | impulse_matrix_ |
double | gen_data_last_ |
long | number_of_rows_ |
long | aggressors_ |
long | samples_per_bit_ |
unsigned long | gen_data_cnt_ |
ibisami::ParamTree | param_tree_ |
std::ofstream | clog_ |
bool | log_ |
int | shift_reg_ [PRBS_LEN] |
+Additional Inherited Members | |
Protected Member Functions inherited from AMIModel | |
ParseRes | parse_params (const std::string &AMI_parameters_in) |
Parse the incoming AMI parameter string. More... | |
std::string | get_param (const std::vector< std::string > &node_names) const |
Get the string value of a parameter. More... | |
long | get_param_int (const std::vector< std::string > &node_names, long default_val) const |
Get the value of an integer parameter. More... | |
double | get_param_float (const std::vector< std::string > &node_names, double default_val) const |
Get the value of a floating point parameter. More... | |
bool | get_param_bool (const std::vector< std::string > &node_names, bool default_val) const |
Get the value of a Boolean parameter. More... | |
void | gen_data (double *res_vec) |
Generate random binary oversampled data. More... | |
void | log (std::string msg) |
A generic IBIS-AMI Tx model implementation.
+This abstract class provides generic Tx model capability. Device specific Tx models should derive from this class.
+ + +
+
|
+ +inlinevirtual | +
+
|
+ +overridevirtual | +
Process the channel impulse response.
+ +Implements AMIModel.
+ +Definition at line 14 of file ami_tx.cpp.
+ +
+
|
+ +overridevirtual | +
Process a signal.
+sig | A pointer to the array of doubles to be processed. |
len | The number of samples to process. |
clock_times | A pointer to the array of doubles used for storing the clock times. |
As per the IBIS standard, the user is allowed to presume that there has been enough storage allocated for clock_times, given the value of sig_len, sample_interval, and bit_time.
+Implements AMIModel.
+ +Definition at line 30 of file ami_tx.cpp.
+ +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for DFE, including all inherited members.
+apply(double *sig, const long len, double *clock_times) | DFE | virtual |
backward_filter_ | DFE | protected |
backward_filter_output_ | DFE | protected |
cdr_locked_ | DFE | protected |
clk_cntr_ | DFE | protected |
clock_per_ | DFE | protected |
clock_pers_ | DFE | protected |
DFE(double slicer_output_mag, double error_gain, int adapt_mode, double sample_interval, double clock_per, const std::vector< double > &tap_weights) | DFE | |
edge_sample_ | DFE | protected |
err_gain_ | DFE | protected |
get_weights() | DFE | inline |
last_clk_sample_ | DFE | protected |
last_summer_output_ | DFE | protected |
max_weights_ | DFE | protected |
min_weights_ | DFE | protected |
mode | DFE | |
next_backward_filter_output_ | DFE | protected |
next_clock_ | DFE | protected |
next_ui_edge_ | DFE | protected |
sample_interval_ | DFE | protected |
set_max_weights(std::vector< double > weights) | DFE | inline |
set_min_weights(std::vector< double > weights) | DFE | inline |
sim_time_ | DFE | protected |
slicer_mag() | DFE | inline |
slicer_mag_ | DFE | protected |
tap_values_ | DFE | protected |
tap_weights_ | DFE | protected |
weights_ | DFE | protected |
~DFE() | DFE | inlinevirtual |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
A generic DFE implementation. + More...
+ +#include <dfe.h>
+Public Member Functions | |
DFE (double slicer_output_mag, double error_gain, int adapt_mode, double sample_interval, double clock_per, const std::vector< double > &tap_weights) | |
Constructor. More... | |
virtual | ~DFE () |
virtual bool | apply (double *sig, const long len, double *clock_times) |
Filter application. More... | |
std::vector< double > | get_weights () |
void | set_max_weights (std::vector< double > weights) |
void | set_min_weights (std::vector< double > weights) |
double | slicer_mag () |
+Public Attributes | |
int | mode |
+Protected Attributes | |
FIRFilter * | backward_filter_ |
std::vector< double > | clock_pers_ |
std::vector< double > | tap_weights_ |
std::vector< double > | tap_values_ |
std::vector< double > | min_weights_ |
std::vector< double > | max_weights_ |
std::vector< std::vector< double > > | weights_ |
unsigned long | clk_cntr_ |
bool | cdr_locked_ |
double | sim_time_ |
double | next_ui_edge_ |
double | backward_filter_output_ |
double | edge_sample_ |
double | last_summer_output_ |
double | sample_interval_ |
double | clock_per_ |
double | next_clock_ |
double | last_clk_sample_ |
double | slicer_mag_ |
double | err_gain_ |
double | next_backward_filter_output_ |
DFE::DFE | +( | +double | +slicer_output_mag, | +
+ | + | double | +error_gain, | +
+ | + | int | +adapt_mode, | +
+ | + | double | +sample_interval, | +
+ | + | double | +clock_per, | +
+ | + | const std::vector< double > & | +tap_weights | +
+ | ) | ++ |
+
|
+ +inlinevirtual | +
+
|
+ +virtual | +
+
|
+ +inline | +
+
|
+ +inline | +
+
|
+ +inline | +
+
|
+ +inline | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+
|
+ +protected | +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for DigitalFilter, including all inherited members.
+apply(double *sig, const long len) | DigitalFilter | |
den_ | DigitalFilter | protected |
DigitalFilter(const std::vector< double > &num, const std::vector< double > &den) | DigitalFilter | |
num_ | DigitalFilter | protected |
num_taps_ | DigitalFilter | protected |
state_ | DigitalFilter | protected |
~DigitalFilter() | DigitalFilter | inlinevirtual |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
A generic digital filter implementation, using "Direct Form 2" processing. + More...
+ +#include <digital_filter.h>
+Public Member Functions | |
DigitalFilter (const std::vector< double > &num, const std::vector< double > &den) | |
Constructor. More... | |
virtual | ~DigitalFilter () |
void | apply (double *sig, const long len) |
Filter application. More... | |
+Protected Attributes | |
std::vector< double > | num_ |
std::vector< double > | den_ |
std::vector< double > | state_ |
int | num_taps_ |
A generic digital filter implementation, using "Direct Form 2" processing.
+ +Definition at line 18 of file digital_filter.h.
+DigitalFilter::DigitalFilter | +( | +const std::vector< double > & | +num, | +
+ | + | const std::vector< double > & | +den | +
+ | ) | ++ |
Constructor.
+num | A vector of doubles forming the numerator of the filter response. |
den | A vector of doubles forming the denominator of the filter response. |
Definition at line 18 of file digital_filter.cpp.
+ +
+
|
+ +inlinevirtual | +
Definition at line 22 of file digital_filter.h.
+ +void DigitalFilter::apply | +( | +double * | +sig, | +
+ | + | const long | +len | +
+ | ) | ++ |
Filter application.
+sig | A pointer to the vector of doubles to be processed. |
len | The number of samples to process. |
Definition at line 49 of file digital_filter.cpp.
+ +
+
|
+ +protected | +
Definition at line 26 of file digital_filter.h.
+ +
+
|
+ +protected | +
Definition at line 26 of file digital_filter.h.
+ +
+
|
+ +protected | +
Definition at line 27 of file digital_filter.h.
+ +
+
|
+ +protected | +
Definition at line 26 of file digital_filter.h.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for FIRFilter, including all inherited members.
+apply(double *sig, const long len) | FIRFilter | |
delay_chain_ | FIRFilter | protected |
FIRFilter(const std::vector< double > &weights, int oversample_factor=1) | FIRFilter | explicit |
get_values() | FIRFilter | |
get_weights() | FIRFilter | |
oversample_factor_ | FIRFilter | protected |
set_weights(const std::vector< double > &new_weights) | FIRFilter | inline |
step(double x) | FIRFilter | |
weights_ | FIRFilter | protected |
~FIRFilter() | FIRFilter | inlinevirtual |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
A FIR (finite impulse response) filter implementation, with optional over-sampling. + More...
+ +#include <fir_filter.h>
+Public Member Functions | |
FIRFilter (const std::vector< double > &weights, int oversample_factor=1) | |
Constructor. More... | |
virtual | ~FIRFilter () |
void | apply (double *sig, const long len) |
Filter application. More... | |
double | step (double x) |
Filter single stepping. More... | |
void | set_weights (const std::vector< double > &new_weights) |
std::vector< double > | get_weights () |
std::vector< double > | get_values () |
+Protected Attributes | |
std::vector< double > | weights_ |
std::vector< double > | delay_chain_ |
int | oversample_factor_ |
A FIR (finite impulse response) filter implementation, with optional over-sampling.
+ +Definition at line 18 of file fir_filter.h.
+
+
|
+ +explicit | +
Constructor.
+weights | A vector of doubles containing the desired filter tap weights. |
oversample_factor | An integer giving the number of signal vector elements per weight. |
Definition at line 19 of file fir_filter.cpp.
+ +
+
|
+ +inlinevirtual | +
Definition at line 21 of file fir_filter.h.
+ +void FIRFilter::apply | +( | +double * | +sig, | +
+ | + | const long | +len | +
+ | ) | ++ |
Filter application.
+sig | A pointer to the vector of doubles to be processed, in place. |
len | The number of samples to process. |
Definition at line 30 of file fir_filter.cpp.
+ +std::vector< double > FIRFilter::get_values | +( | +) | ++ |
Definition at line 63 of file fir_filter.cpp.
+ +std::vector< double > FIRFilter::get_weights | +( | +) | ++ |
Definition at line 59 of file fir_filter.cpp.
+ +
+
|
+ +inline | +
Definition at line 24 of file fir_filter.h.
+ +double FIRFilter::step | +( | +double | +x | ) | ++ |
Filter single stepping.
+x | The input value to use, when stepping the filter. |
Definition at line 54 of file fir_filter.cpp.
+ +
+
|
+ +protected | +
Definition at line 29 of file fir_filter.h.
+ +
+
|
+ +protected | +
Definition at line 30 of file fir_filter.h.
+ +
+
|
+ +protected | +
Definition at line 29 of file fir_filter.h.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for MyRx, including all inherited members.
+aggressors_ | AMIModel | protected |
AmiRx() | AmiRx | inline |
bit_time_ | AMIModel | protected |
clog_ | AMIModel | protected |
ctle_ | AmiRx | protected |
dfe_ | AmiRx | protected |
dfe_dump_file_ | AmiRx | protected |
dfe_dump_stream_ | AmiRx | protected |
dfe_input_file_ | AmiRx | protected |
dfe_input_stream_ | AmiRx | protected |
dump_adaptation_input_ | AmiRx | protected |
dump_dfe_adaptation_ | AmiRx | protected |
gen_data(double *res_vec) | AMIModel | protected |
gen_data_cnt_ | AMIModel | protected |
gen_data_last_ | AMIModel | protected |
get_param(const std::vector< std::string > &node_names) const | AMIModel | protected |
get_param_bool(const std::vector< std::string > &node_names, bool default_val) const | AMIModel | protected |
get_param_float(const std::vector< std::string > &node_names, double default_val) const | AMIModel | protected |
get_param_int(const std::vector< std::string > &node_names, long default_val) const | AMIModel | protected |
impulse_matrix_ | AMIModel | protected |
init(double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override | MyRx | inlinevirtual |
init_adapt_tap_ | AmiRx | protected |
log(std::string msg) | AMIModel | inlineprotected |
log_ | AMIModel | protected |
msg() | AMIModel | inline |
msg_ | AMIModel | protected |
MyRx() | MyRx | inline |
name_ | AMIModel | protected |
number_of_rows_ | AMIModel | protected |
param_str() | AMIModel | inline |
param_str_ | AMIModel | protected |
param_tree_ | AMIModel | protected |
parse_params(const std::string &AMI_parameters_in) | AMIModel | protected |
proc_imp() override | AmiRx | virtual |
proc_sig(double *sig, long len, double *clock_times) override | AmiRx | virtual |
sample_interval_ | AMIModel | protected |
samples_per_bit_ | AMIModel | protected |
shift_reg_ | AMIModel | protected |
sig_tap_ | AmiRx | protected |
~AMIModel() | AMIModel | inlinevirtual |
~AmiRx() | AmiRx | inlinevirtual |
~MyRx() | MyRx | inline |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
An example device specific Rx model implementation. + More...
++Public Member Functions | |
MyRx () | |
Constructor. More... | |
~MyRx () | |
Destructor. More... | |
void | init (double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override |
Initializer. More... | |
Public Member Functions inherited from AmiRx | |
AmiRx () | |
virtual | ~AmiRx () |
void | init (double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override |
Initializer. More... | |
void | proc_imp () override |
Override of AMIModel::proc_imp() specific to Rx models. More... | |
bool | proc_sig (double *sig, long len, double *clock_times) override |
Override of AMIModel::proc_sig() specific to Rx models. More... | |
Public Member Functions inherited from AMIModel | |
virtual | ~AMIModel () |
std::string & | msg () |
Retrieve the model message. More... | |
std::string & | param_str () |
Retrieve the model parameter string. More... | |
+Additional Inherited Members | |
Protected Member Functions inherited from AMIModel | |
ParseRes | parse_params (const std::string &AMI_parameters_in) |
Parse the incoming AMI parameter string. More... | |
std::string | get_param (const std::vector< std::string > &node_names) const |
Get the string value of a parameter. More... | |
long | get_param_int (const std::vector< std::string > &node_names, long default_val) const |
Get the value of an integer parameter. More... | |
double | get_param_float (const std::vector< std::string > &node_names, double default_val) const |
Get the value of a floating point parameter. More... | |
bool | get_param_bool (const std::vector< std::string > &node_names, bool default_val) const |
Get the value of a Boolean parameter. More... | |
void | gen_data (double *res_vec) |
Generate random binary oversampled data. More... | |
void | log (std::string msg) |
Protected Attributes inherited from AmiRx | |
DigitalFilter * | ctle_ |
DFE * | dfe_ |
std::ofstream | dfe_dump_stream_ |
std::ofstream | dfe_input_stream_ |
bool | dump_dfe_adaptation_ |
bool | dump_adaptation_input_ |
std::string | dfe_dump_file_ |
std::string | dfe_input_file_ |
int | sig_tap_ |
int | init_adapt_tap_ |
Protected Attributes inherited from AMIModel | |
std::string | msg_ |
std::string | param_str_ |
std::string | name_ |
double | sample_interval_ |
double | bit_time_ |
double * | impulse_matrix_ |
double | gen_data_last_ |
long | number_of_rows_ |
long | aggressors_ |
long | samples_per_bit_ |
unsigned long | gen_data_cnt_ |
ibisami::ParamTree | param_tree_ |
std::ofstream | clog_ |
bool | log_ |
int | shift_reg_ [PRBS_LEN] |
An example device specific Rx model implementation.
+ +Definition at line 21 of file example_rx.cpp.
+
+
|
+ +inline | +
Constructor.
+ +Definition at line 26 of file example_rx.cpp.
+ +
+
|
+ +inline | +
Destructor.
+ +Definition at line 29 of file example_rx.cpp.
+ +
+
|
+ +inlineoverridevirtual | +
Initializer.
+ +Reimplemented from AMIModel.
+ +Definition at line 32 of file example_rx.cpp.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
This is the complete list of members for MyTx, including all inherited members.
+aggressors_ | AMIModel | protected |
bit_time_ | AMIModel | protected |
clog_ | AMIModel | protected |
filter_ | AmiTx | protected |
gen_data(double *res_vec) | AMIModel | protected |
gen_data_cnt_ | AMIModel | protected |
gen_data_last_ | AMIModel | protected |
get_param(const std::vector< std::string > &node_names) const | AMIModel | protected |
get_param_bool(const std::vector< std::string > &node_names, bool default_val) const | AMIModel | protected |
get_param_float(const std::vector< std::string > &node_names, double default_val) const | AMIModel | protected |
get_param_int(const std::vector< std::string > &node_names, long default_val) const | AMIModel | protected |
have_preemph_ | AmiTx | protected |
impulse_matrix_ | AMIModel | protected |
init(double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override | MyTx | inlinevirtual |
log(std::string msg) | AMIModel | inlineprotected |
log_ | AMIModel | protected |
msg() | AMIModel | inline |
msg_ | AMIModel | protected |
MyTx() | MyTx | inline |
name_ | AMIModel | protected |
num_taps_ | AmiTx | protected |
number_of_rows_ | AMIModel | protected |
param_str() | AMIModel | inline |
param_str_ | AMIModel | protected |
param_tree_ | AMIModel | protected |
parse_params(const std::string &AMI_parameters_in) | AMIModel | protected |
proc_imp() override | AmiTx | virtual |
proc_sig(double *sig, long len, double *clock_times) override | AmiTx | virtual |
sample_interval_ | AMIModel | protected |
samples_per_bit_ | AMIModel | protected |
shift_reg_ | AMIModel | protected |
tap_weights_ | AmiTx | protected |
~AMIModel() | AMIModel | inlinevirtual |
~AmiTx() | AmiTx | inlinevirtual |
~MyTx() | MyTx | inline |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
An example device specific Tx model implementation. + More...
++Public Member Functions | |
MyTx () | |
~MyTx () | |
void | init (double *impulse_matrix, const long number_of_rows, const long aggressors, const double sample_interval, const double bit_time, const std::string &AMI_parameters_in) override |
Initialize the model. More... | |
Public Member Functions inherited from AmiTx | |
virtual | ~AmiTx () |
void | proc_imp () override |
Process the channel impulse response. More... | |
bool | proc_sig (double *sig, long len, double *clock_times) override |
Process a signal. More... | |
Public Member Functions inherited from AMIModel | |
virtual | ~AMIModel () |
std::string & | msg () |
Retrieve the model message. More... | |
std::string & | param_str () |
Retrieve the model parameter string. More... | |
+Additional Inherited Members | |
Protected Member Functions inherited from AMIModel | |
ParseRes | parse_params (const std::string &AMI_parameters_in) |
Parse the incoming AMI parameter string. More... | |
std::string | get_param (const std::vector< std::string > &node_names) const |
Get the string value of a parameter. More... | |
long | get_param_int (const std::vector< std::string > &node_names, long default_val) const |
Get the value of an integer parameter. More... | |
double | get_param_float (const std::vector< std::string > &node_names, double default_val) const |
Get the value of a floating point parameter. More... | |
bool | get_param_bool (const std::vector< std::string > &node_names, bool default_val) const |
Get the value of a Boolean parameter. More... | |
void | gen_data (double *res_vec) |
Generate random binary oversampled data. More... | |
void | log (std::string msg) |
Protected Attributes inherited from AmiTx | |
DigitalFilter * | filter_ |
Used for pre-emphasis. More... | |
bool | have_preemph_ |
True, if I have a pre-emphasis filter. More... | |
int | num_taps_ |
Number of taps in my pre-emphasis filter. More... | |
std::vector< double > | tap_weights_ |
Tap weights for pre-emphasis filter. More... | |
Protected Attributes inherited from AMIModel | |
std::string | msg_ |
std::string | param_str_ |
std::string | name_ |
double | sample_interval_ |
double | bit_time_ |
double * | impulse_matrix_ |
double | gen_data_last_ |
long | number_of_rows_ |
long | aggressors_ |
long | samples_per_bit_ |
unsigned long | gen_data_cnt_ |
ibisami::ParamTree | param_tree_ |
std::ofstream | clog_ |
bool | log_ |
int | shift_reg_ [PRBS_LEN] |
An example device specific Tx model implementation.
+ +Definition at line 18 of file example_tx.cpp.
+
+
|
+ +inline | +
Definition at line 22 of file example_tx.cpp.
+ +
+
|
+ +inline | +
Definition at line 23 of file example_tx.cpp.
+ +
+
|
+ +inlineoverridevirtual | +
Initialize the model.
+(See AMI_Init() for parameter descriptions.)
Reimplemented from AMIModel.
+ +Definition at line 24 of file example_tx.cpp.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
| AmiTx |
|
| ||||
| |||||||
AMIGrammar (ibisami) | MyRx | ParamTree (ibisami) | |||||
AMIModel | DFE | MyTx |
| ||||
AmiPointers | DigitalFilter |
| |||||
AmiRx |
| Value (ibisami) | |||||
Node (ibisami) | |||||||
FIRFilter | |||||||
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Implementation of DFE class. +More...
+#include <vector>
#include <string>
#include <sstream>
#include "include/dfe.h"
#include "include/util.h"
Go to the source code of this file.
++Macros | |
#define | CLKS_PER_ADAPTATION 1 |
+Variables | |
std::ostringstream | debug_stream |
Implementation of DFE class.
+Original author: David Banas
+ Original date: June 2, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file dfe.cpp.
+std::ostringstream debug_stream | +
Definition at line 17 of file amimodel.cpp.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Interface to DFE class. +More...
+ +Go to the source code of this file.
++Classes | |
class | DFE |
A generic DFE implementation. More... | |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Implementation of DigitalFilter class. +More...
+ +Go to the source code of this file.
+Implementation of DigitalFilter class.
+Original author: David Banas
+ Original date: May 7, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file digital_filter.cpp.
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Interface to DigitalFilter class. +More...
+#include <vector>
Go to the source code of this file.
++Classes | |
class | DigitalFilter |
A generic digital filter implementation, using "Direct Form 2" processing. More... | |
Interface to DigitalFilter class.
+Original author: David Banas
+ Original date: May 7, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+This class provides a generic digital filter.
+ +Definition in file digital_filter.h.
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+Files | |
file | ami_rx.cpp [code] |
Implementation of AmiRx class. | |
file | ami_tx.cpp [code] |
Implementation of AmiTx class. | |
file | amimodel.cpp [code] |
Implementation of AMIModel class. | |
file | dfe.cpp [code] |
Implementation of DFE class. | |
file | digital_filter.cpp [code] |
Implementation of DigitalFilter class. | |
file | fir_filter.cpp [code] |
Implementation of FIRFilter class. | |
file | ibisami_api.cpp [code] |
Provides IBIS-AMI API and necessary bootstrapping. | |
file | util.cpp [code] |
Small, generally useful utilities. | |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+Files | |
file | example_rx.cpp [code] |
Example of using ibisami to build a Rx model. | |
file | example_rx.py [code] |
file | example_tx.cpp [code] |
Example of using ibisami to build a Tx model. | |
file | example_tx.py [code] |
file | test.py [code] |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+Files | |
file | ami_rx.h [code] |
Interface to AmiRx class. | |
file | ami_tx.h [code] |
Interface to AmiTx class. | |
file | amimodel.h [code] |
Interface to AMIModel class. | |
file | dfe.h [code] |
Interface to DFE class. | |
file | digital_filter.h [code] |
Interface to DigitalFilter class. | |
file | fir_filter.h [code] |
Interface to FIRFilter class. | |
file | util.h [code] |
Small, generally useful utilities. | |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Example of using ibisami to build a Rx model. +More...
+ +Go to the source code of this file.
++Classes | |
class | MyRx |
An example device specific Rx model implementation. More... | |
+Macros | |
#define | PI 3.14159 |
#define | RX_BW 30.0e9 |
#define | CTLE_DC_GAIN 1.0 |
#define | DFE_DUMP_FILE "example_rx_dfe_dump.csv" |
#define | DFE_INPUT_FILE "example_rx_dfe_input.csv" |
+Variables | |
MyRx | my_rx |
AMIModel * | ami_model = &my_rx |
The pointer required by the API implementation. More... | |
Example of using ibisami to build a Rx model.
+Original author: David Banas
+ Original date: May 20, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file example_rx.cpp.
+#define CTLE_DC_GAIN 1.0 | +
Definition at line 16 of file example_rx.cpp.
+ +#define DFE_DUMP_FILE "example_rx_dfe_dump.csv" | +
Definition at line 17 of file example_rx.cpp.
+ +#define DFE_INPUT_FILE "example_rx_dfe_input.csv" | +
Definition at line 18 of file example_rx.cpp.
+ +#define PI 3.14159 | +
Definition at line 14 of file example_rx.cpp.
+ +#define RX_BW 30.0e9 | +
Definition at line 15 of file example_rx.cpp.
+ +The pointer required by the API implementation.
+Defined in our device-specific source code file.
+ +Definition at line 171 of file example_rx.cpp.
+ +MyRx my_rx | +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Go to the source code of this file.
++Namespaces | |
example_rx | |
+Variables | |
string | example_rx.kFileBaseName = 'example_rx' |
string | example_rx.kDescription = 'Example Rx model from ibisami package.' |
dictionary | example_rx.ibis_params |
dictionary | example_rx.ami_params |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Example of using ibisami to build a Tx model. +More...
+ +Go to the source code of this file.
++Classes | |
class | MyTx |
An example device specific Tx model implementation. More... | |
+Macros | |
#define | TAP_SCALE 0.047 |
+Variables | |
MyTx | my_tx |
AMIModel * | ami_model = &my_tx |
The pointer required by the API implementation. More... | |
Example of using ibisami to build a Tx model.
+Original author: David Banas
+ Original date: May 8, 2015 Initial conversion to EmPy template format: Feb 25, 2016
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file example_tx.cpp.
+#define TAP_SCALE 0.047 | +
Definition at line 11 of file example_tx.cpp.
+ +The pointer required by the API implementation.
+Defined in our device-specific source code file.
+ +Definition at line 87 of file example_tx.cpp.
+ +MyTx my_tx | +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Go to the source code of this file.
++Namespaces | |
example_tx | |
+Variables | |
string | example_tx.kFileBaseName = 'example_tx' |
string | example_tx.kDescription = 'Example Tx model from ibisami package.' |
dictionary | example_tx.ibis_params |
dictionary | example_tx.ami_params |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
▼ example | |
example_rx.cpp | Example of using ibisami to build a Rx model |
example_rx.py | |
example_tx.cpp | Example of using ibisami to build a Tx model |
example_tx.py | |
test.py | |
▼ include | |
ami_rx.h | Interface to AmiRx class |
ami_tx.h | Interface to AmiTx class |
amimodel.h | Interface to AMIModel class |
dfe.h | Interface to DFE class |
digital_filter.h | Interface to DigitalFilter class |
fir_filter.h | Interface to FIRFilter class |
util.h | Small, generally useful utilities |
▼ src | |
ami_rx.cpp | Implementation of AmiRx class |
ami_tx.cpp | Implementation of AmiTx class |
amimodel.cpp | Implementation of AMIModel class |
dfe.cpp | Implementation of DFE class |
digital_filter.cpp | Implementation of DigitalFilter class |
fir_filter.cpp | Implementation of FIRFilter class |
ibisami_api.cpp | Provides IBIS-AMI API and necessary bootstrapping |
util.cpp | Small, generally useful utilities |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Implementation of FIRFilter class. +More...
+ +Go to the source code of this file.
+Implementation of FIRFilter class.
+Original author: David Banas
+ Original date: June 8, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+ +Definition in file fir_filter.cpp.
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Interface to FIRFilter class. +More...
+#include <vector>
Go to the source code of this file.
++Classes | |
class | FIRFilter |
A FIR (finite impulse response) filter implementation, with optional over-sampling. More... | |
Interface to FIRFilter class.
+Original author: David Banas
+ Original date: June 7, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+This class provides a finite impulse response digital filter with optional over-sampling.
+ +Definition in file fir_filter.h.
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Cibisami::AMIGrammar | AMI parameter tree grammatical definition |
▼CAMIModel | Abstract class providing the base functionality required by all IBIS-AMI models |
▼CAmiRx | A generic IBIS-AMI Rx model implementation |
CMyRx | An example device specific Rx model implementation |
▼CAmiTx | A generic IBIS-AMI Tx model implementation |
CMyTx | An example device specific Tx model implementation |
CAmiPointers | Holds the pointers, which we pass back to the AMI_Init() caller |
CDFE | A generic DFE implementation |
CDigitalFilter | A generic digital filter implementation, using "Direct Form 2" processing |
CFIRFilter | A FIR (finite impulse response) filter implementation, with optional over-sampling |
Cibisami::ParamTree | The parameter tree definition |
▼Cstatic_visitor | |
Cibisami::Node | Used to access a branch node |
Cibisami::Value | Used to access a leaf node |
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Provides IBIS-AMI API and necessary bootstrapping. +More...
+ +Go to the source code of this file.
++Classes | |
struct | AmiPointers |
Holds the pointers, which we pass back to the AMI_Init() caller. More... | |
+Macros | |
#define | DLL_EXPORT |
+Functions | |
DLL_EXPORT long | AMI_Init (double *impulse_matrix, long number_of_rows, long aggressors, double sample_interval, double bit_time, char *AMI_parameters_in, char **AMI_parameters_out, void **AMI_memory_handle, char **msg) |
IBIS-AMI model initialization and impulse response processing. (Required) More... | |
DLL_EXPORT long | AMI_Close (void *AMI_memory) |
Clean-up. (Required) More... | |
+Variables | |
AMIModel * | ami_model |
Defined in our device-specific source code file. More... | |
Provides IBIS-AMI API and necessary bootstrapping.
+Original author: David Banas
+ Original date: April 29, 2015
Copyright (c) 2015 David Banas; all rights reserved World wide.
+Provides the API (application programming interface) to the *.SO (shared object) or *.DLL (dynamically linked library) file.
+Note: The required API for a IBIS-AMI model is defined by the IBIS standard, which is available here: http://www.eda.org/ibis/
+ +Definition in file ibisami_api.cpp.
+#define DLL_EXPORT | +
Definition at line 37 of file ibisami_api.cpp.
+ +DLL_EXPORT long AMI_Close | +( | +void * | +AMI_memory | ) | ++ |
Clean-up. (Required)
+AMI_memory | A pointer to the model memory structure. |
Definition at line 133 of file ibisami_api.cpp.
+ +DLL_EXPORT long AMI_Init | +( | +double * | +impulse_matrix, | +
+ | + | long | +number_of_rows, | +
+ | + | long | +aggressors, | +
+ | + | double | +sample_interval, | +
+ | + | double | +bit_time, | +
+ | + | char * | +AMI_parameters_in, | +
+ | + | char ** | +AMI_parameters_out, | +
+ | + | void ** | +AMI_memory_handle, | +
+ | + | char ** | +msg | +
+ | ) | ++ |
IBIS-AMI model initialization and impulse response processing. (Required)
+impulse_matrix | A matrix of doubles containing, at least, the impulse response to be processed (i.e. - the victim), in place. |
number_of_rows | The length of all impulse responses provided (victim and aggressors). |
aggressors | The number of aggressors included in impulse_matrix. |
sample_interval | The time interval between adjacent elements of the vectors contained in impulse_matrix. |
bit_time | The unit interval. |
AMI_parameters_in | A pointer to a char array containing the input AMI parameter string. |
AMI_parameters_out | A handle to be updated with the pointer to the output AMI parameter string. |
AMI_memory_handle | A handle to be updated with the pointer to the model memory structure. |
msg | A handle to be updated with the pointer to the message being returned by the model. |
Definition at line 53 of file ibisami_api.cpp.
+ +AMIModel* ami_model | +
Defined in our device-specific source code file.
+Defined in our device-specific source code file.
+ +Definition at line 171 of file example_rx.cpp.
+ +
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
+ ibisami
+ 0.8
+
+ Public domain IBIS-AMI model creation infrastructure.
+ |
+
Note: This is NOT the user's guide! For help getting started, please, visit the Getting Started page of the Wiki, here: https://github.com/capn-freako/ibisami/wiki/Getting-Started
+Note: This documentation was generated, using Doxygen.
+ibisami is a public domain package of C++ code, and associated support files, intended to provide a common public code base for the generic portion of an IBIS-AMI model.
+The ibisami code base is hosted by GitHub and is available, here: https://github.com/capn-freako/ibisami
+The original commit was posted by David Banas on April 29, 2015.
+The code is released under the BSD3 license, specifically, in order to avoid any concerns of "virality". That is, it is intended that this code be usable by all, and that no one making modifications to it is under any obligation to share those modifications with anyone for any reason. This holds, regardless of whether or not those modifications are used for commercial purposes.
+MAKING IMPROVEMENTS TO THIS CODE, USING THOSE IMPROVEMENTS FOR COMMERCIAL PURPOSES, AND KEEPING THOSE IMPROVEMENTS ENTIRELY TO YOURSELF IS TOTALLY ACCEPTABLE.
+(Of course, we hope you'll share with us, but if you don't that's our problem, not yours. ;-) )
+If you would like to help out in maintaining/improving this code:
Note: It may seem a little clunky to do things this way, but it makes collaborative project management MUCH easier. Thanks, in advance, for your cooperation.
+t |