2026-07-10 10:38:57 +02:00

44 lines
1.6 KiB
Python

from ScEpTIC.config.base_config import ScEpTICBaseConfig
from ScEpTIC.emulator.energy.system_energy_model import SystemEnergyModel
class MinCapacitorSizeConfig(ScEpTICBaseConfig):
"""
Configuration for the minimum capacitor size analysis
"""
_config_domain = {
'system_model': {'class': SystemEnergyModel, 'mode': 'set'},
'min_capacitance': {'class': str, 'mode': 'set'},
'capacitance_size_step': {'class': str, 'mode': 'set'},
}
def __init__(self, main_config):
super().__init__(main_config)
self.system_model = None
self.min_capacitance = '15u'
self.capacitance_size_step = '5u'
self._register_config_callback("system_model", self._system_model_callback)
def _system_model_callback(self, config_name, config_value):
"""
Callback to configure all the parameters given the system model (ensures consistency)
:param config_name: the configuration name
:param config_value: the configuration value
"""
if not self.system_model.mcu.has_nvm:
self._main_config.memory.non_volatile.set_config("enabled", False)
self._main_config.register_file.set_config("n_physical_registers", self.system_model.mcu.registers)
self._main_config.memory.volatile.set_config("max_size", self.system_model.mcu.volatile_memory_size)
self._main_config.memory.non_volatile.set_config("max_size", self.system_model.mcu.non_volatile_memory_size)
# Returns the configuration
def get_config(main_config):
return MinCapacitorSizeConfig(main_config)