hwcomponents.scaling package

Submodules

hwcomponents.scaling.scalefuncs module

hwcomponents.scaling.scalefuncs.cacti_depth_area(target, scalefrom)[source]

CACTI depth scaling. Based on empirical measurement of CACTI, for which area scales linearly with depth.

Parameters:
  • target (float) – The target depth.

  • scalefrom (float) – The depth to scale from.

Return type:

float

Returns:

The scaled area.

hwcomponents.scaling.scalefuncs.cacti_depth_energy(target, scalefrom)[source]

CACTI depth scaling. Based on empirical measurement of CACTI, for which energy scales with depth to the power of (1.56 / 2).

Parameters:
  • target (float) – The target depth.

  • scalefrom (float) – The depth to scale from.

Return type:

float

Returns:

The scaled energy.

hwcomponents.scaling.scalefuncs.cacti_depth_leak(target, scalefrom)[source]

CACTI depth scaling. Based on empirical measurement of CACTI, for which leakage power scales linearly with depth.

Parameters:
  • target (float) – The target depth.

  • scalefrom (float) – The depth to scale from.

Return type:

float

Returns:

The scaled leakage power.

hwcomponents.scaling.scalefuncs.linear(target, scalefrom)[source]

Linear scaling function. Returns target / scalefrom.

Parameters:
  • target (float) – The target value.

  • scalefrom (float) – The value to scale from.

Return type:

float

Returns:

The scaled value.

hwcomponents.scaling.scalefuncs.nlog2n(target, scalefrom)[source]

Logarithmic scaling function. Returns (target / scalefrom) * math.log(target / scalefrom, 2).

Return type:

float

hwcomponents.scaling.scalefuncs.nlog_base(power)[source]

Logarithmic scaling function. Returns a lambda that computes (target * math.log(target, power)) / (scalefrom * math.log(scalefrom, power)).

Parameters:

power (float) – The power to scale by.

Return type:

Callable[[float, float], float]

Returns:

A lambda that computes (target * math.log(target, power)) / (scalefrom * math.log(scalefrom, power)).

hwcomponents.scaling.scalefuncs.noscale(target, scalefrom)[source]
Return type:

float

hwcomponents.scaling.scalefuncs.pow_base(power)[source]

Power scaling function. Returns a lambda that computes (target - scalefrom) ** power.

Parameters:

power (float) – The power to scale by.

Return type:

Callable[[float, float], float]

Returns:

A lambda that computes (target - scalefrom) ** power.

hwcomponents.scaling.scalefuncs.quadratic(target, scalefrom)[source]

Quadratic scaling function. Returns (target / scalefrom) ** 2.

Return type:

float

hwcomponents.scaling.scalefuncs.reciprocal(target, scalefrom)[source]

Reciprocal scaling function. Returns 1 / (target / scalefrom).

Parameters:
  • target (float) – The target value.

  • scalefrom (float) – The value to scale from.

Return type:

float

Returns:

The scaled value.

hwcomponents.scaling.techscaling module

hwcomponents.scaling.techscaling.tech_node_area(to_node, from_node)[source]

Returns the scaling factor for area from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

Return type:

float

Returns:

The scaling factor for area.

hwcomponents.scaling.techscaling.tech_node_energy(to_node, from_node, vdd=None)[source]

Returns the scaling factor for energy from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

  • vdd (Optional[float]) – The voltage to scale by. If not provided, 0.8V is used.

Return type:

float

Returns:

The scaling factor for energy.

hwcomponents.scaling.techscaling.tech_node_latency(to_node, from_node)[source]

Returns the scaling factor for latency from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

Return type:

float

Returns:

The scaling factor for latency.

hwcomponents.scaling.techscaling.tech_node_leak(to_node, from_node, vdd=None)[source]

Returns the scaling factor for leakage power from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

  • vdd (Optional[float]) – The voltage to scale by. If not provided, 0.8V is used.

Return type:

float

Returns:

The scaling factor for leakage power.

Module contents

hwcomponents.scaling.cacti_depth_area(target, scalefrom)[source]

CACTI depth scaling. Based on empirical measurement of CACTI, for which area scales linearly with depth.

Parameters:
  • target (float) – The target depth.

  • scalefrom (float) – The depth to scale from.

Return type:

float

Returns:

The scaled area.

hwcomponents.scaling.cacti_depth_energy(target, scalefrom)[source]

CACTI depth scaling. Based on empirical measurement of CACTI, for which energy scales with depth to the power of (1.56 / 2).

Parameters:
  • target (float) – The target depth.

  • scalefrom (float) – The depth to scale from.

Return type:

float

Returns:

The scaled energy.

hwcomponents.scaling.cacti_depth_leak(target, scalefrom)[source]

CACTI depth scaling. Based on empirical measurement of CACTI, for which leakage power scales linearly with depth.

Parameters:
  • target (float) – The target depth.

  • scalefrom (float) – The depth to scale from.

Return type:

float

Returns:

The scaled leakage power.

hwcomponents.scaling.linear(target, scalefrom)[source]

Linear scaling function. Returns target / scalefrom.

Parameters:
  • target (float) – The target value.

  • scalefrom (float) – The value to scale from.

Return type:

float

Returns:

The scaled value.

hwcomponents.scaling.nlog2n(target, scalefrom)[source]

Logarithmic scaling function. Returns (target / scalefrom) * math.log(target / scalefrom, 2).

Return type:

float

hwcomponents.scaling.nlog_base(power)[source]

Logarithmic scaling function. Returns a lambda that computes (target * math.log(target, power)) / (scalefrom * math.log(scalefrom, power)).

Parameters:

power (float) – The power to scale by.

Return type:

Callable[[float, float], float]

Returns:

A lambda that computes (target * math.log(target, power)) / (scalefrom * math.log(scalefrom, power)).

hwcomponents.scaling.noscale(target, scalefrom)[source]
Return type:

float

hwcomponents.scaling.pow_base(power)[source]

Power scaling function. Returns a lambda that computes (target - scalefrom) ** power.

Parameters:

power (float) – The power to scale by.

Return type:

Callable[[float, float], float]

Returns:

A lambda that computes (target - scalefrom) ** power.

hwcomponents.scaling.quadratic(target, scalefrom)[source]

Quadratic scaling function. Returns (target / scalefrom) ** 2.

Return type:

float

hwcomponents.scaling.reciprocal(target, scalefrom)[source]

Reciprocal scaling function. Returns 1 / (target / scalefrom).

Parameters:
  • target (float) – The target value.

  • scalefrom (float) – The value to scale from.

Return type:

float

Returns:

The scaled value.

hwcomponents.scaling.tech_node_area(to_node, from_node)[source]

Returns the scaling factor for area from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

Return type:

float

Returns:

The scaling factor for area.

hwcomponents.scaling.tech_node_energy(to_node, from_node, vdd=None)[source]

Returns the scaling factor for energy from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

  • vdd (Optional[float]) – The voltage to scale by. If not provided, 0.8V is used.

Return type:

float

Returns:

The scaling factor for energy.

hwcomponents.scaling.tech_node_latency(to_node, from_node)[source]

Returns the scaling factor for latency from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

Return type:

float

Returns:

The scaling factor for latency.

hwcomponents.scaling.tech_node_leak(to_node, from_node, vdd=None)[source]

Returns the scaling factor for leakage power from the technology node from_node to the technology node to_node. Interpolates if necessary.

Parameters:
  • to_node (float) – The technology node to scale to.

  • from_node (float) – The technology node to scale from.

  • vdd (Optional[float]) – The voltage to scale by. If not provided, 0.8V is used.

Return type:

float

Returns:

The scaling factor for leakage power.