TT-System-Firmware APIs 19.8.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
vf_curve.c File Reference

Macros

#define FREQ_MARGIN_MAX   300.0F
#define FREQ_MARGIN_MIN   -300.0F
#define VOLTAGE_MARGIN_MAX   150.0F
#define VOLTAGE_MARGIN_MIN   -150.0F
#define VF_INTERCEPT   738.687863F
#define VF_COEFF_RO   -9.399314F
#define VF_COEFF_FREQ   52.359951F
#define VF_COEFF_RO_SQ   -4.295651F
#define VF_COEFF_RO_FREQ   0.000000F
#define VF_COEFF_FREQ_SQ   8.560169F
#define RO_NORM_MEAN   2582.380952F
#define RO_NORM_STD   121.320464F
#define FREQ_NORM_MEAN   1279.761905F
#define FREQ_NORM_STD   189.567027F
#define RO_SS_THRESHOLD   2500.0F
#define FREQ_THRESHOLD_MHZ   1200.0F
#define SS_MARGIN_MV   45.0F
#define FF_LOW_FREQ_MARGIN_MV   25.0F
#define FF_HIGH_FREQ_MARGIN_MV   45.0F
#define VF_QUADRATIC_COEFF   0.00031395F
#define VF_LINEAR_COEFF   -0.43953F
#define VF_CONSTANT   828.83F

Functions

void InitVFCurve (void)
float VFCurve (float freq_mhz)
 Calculate the voltage based on the frequency.
static uint8_t get_voltage_curve_from_freq_handler (const union request *request, struct response *response)
static uint8_t get_freq_curve_from_voltage_handler (const union request *request, struct response *response)
 REGISTER_MESSAGE (TT_SMC_MSG_GET_VOLTAGE_CURVE_FROM_FREQ, get_voltage_curve_from_freq_handler)
 REGISTER_MESSAGE (TT_SMC_MSG_GET_FREQ_CURVE_FROM_VOLTAGE, get_freq_curve_from_voltage_handler)

Variables

static float freq_margin_mhz = 300.0F
static float voltage_margin_mv = 150.0F
static uint32_t process_RO
static bool use_process_vf_curve
static bool process_is_ss
static float vf_ro_base
static float vf_freq_linear
static const struct device *const fwtable_dev = DEVICE_DT_GET(DT_NODELABEL(fwtable))

Macro Definition Documentation

◆ FF_HIGH_FREQ_MARGIN_MV

#define FF_HIGH_FREQ_MARGIN_MV   45.0F

◆ FF_LOW_FREQ_MARGIN_MV

#define FF_LOW_FREQ_MARGIN_MV   25.0F

◆ FREQ_MARGIN_MAX

#define FREQ_MARGIN_MAX   300.0F

◆ FREQ_MARGIN_MIN

#define FREQ_MARGIN_MIN   -300.0F

◆ FREQ_NORM_MEAN

#define FREQ_NORM_MEAN   1279.761905F

◆ FREQ_NORM_STD

#define FREQ_NORM_STD   189.567027F

◆ FREQ_THRESHOLD_MHZ

#define FREQ_THRESHOLD_MHZ   1200.0F

◆ RO_NORM_MEAN

#define RO_NORM_MEAN   2582.380952F

◆ RO_NORM_STD

#define RO_NORM_STD   121.320464F

◆ RO_SS_THRESHOLD

#define RO_SS_THRESHOLD   2500.0F

◆ SS_MARGIN_MV

#define SS_MARGIN_MV   45.0F

◆ VF_COEFF_FREQ

#define VF_COEFF_FREQ   52.359951F

◆ VF_COEFF_FREQ_SQ

#define VF_COEFF_FREQ_SQ   8.560169F

◆ VF_COEFF_RO

#define VF_COEFF_RO   -9.399314F

◆ VF_COEFF_RO_FREQ

#define VF_COEFF_RO_FREQ   0.000000F

◆ VF_COEFF_RO_SQ

#define VF_COEFF_RO_SQ   -4.295651F

◆ VF_CONSTANT

#define VF_CONSTANT   828.83F

◆ VF_INTERCEPT

#define VF_INTERCEPT   738.687863F

◆ VF_LINEAR_COEFF

#define VF_LINEAR_COEFF   -0.43953F

◆ VF_QUADRATIC_COEFF

#define VF_QUADRATIC_COEFF   0.00031395F

◆ VOLTAGE_MARGIN_MAX

#define VOLTAGE_MARGIN_MAX   150.0F

◆ VOLTAGE_MARGIN_MIN

#define VOLTAGE_MARGIN_MIN   -150.0F

Function Documentation

◆ get_freq_curve_from_voltage_handler()

uint8_t get_freq_curve_from_voltage_handler ( const union request * request,
struct response * response )
static

◆ get_voltage_curve_from_freq_handler()

uint8_t get_voltage_curve_from_freq_handler ( const union request * request,
struct response * response )
static

◆ InitVFCurve()

void InitVFCurve ( void )

◆ REGISTER_MESSAGE() [1/2]

◆ REGISTER_MESSAGE() [2/2]

◆ VFCurve()

float VFCurve ( float freq_mhz)

Calculate the voltage based on the frequency.

Parameters
freq_mhzThe frequency in MHz
Returns
The voltage in mV

Variable Documentation

◆ freq_margin_mhz

float freq_margin_mhz = 300.0F
static

◆ fwtable_dev

const struct device* const fwtable_dev = DEVICE_DT_GET(DT_NODELABEL(fwtable))
static

◆ process_is_ss

bool process_is_ss
static

◆ process_RO

uint32_t process_RO
static

◆ use_process_vf_curve

bool use_process_vf_curve
static

◆ vf_freq_linear

float vf_freq_linear
static

◆ vf_ro_base

float vf_ro_base
static

◆ voltage_margin_mv

float voltage_margin_mv = 150.0F
static