Ejemplo n.º 1
0
 def __init__(self, configs):
     configs["processor"]["data"]['waveform'] = {
         'slope_length':
         configs["input_data"]['ramp_time'] *
         configs["processor"]["driver"]['sampling_frequency']
     }  # add this because needed in setup_mgr.py of processors        self.configs = configs
     # define processor and input generator
     self.processor = get_driver(configs["processor"])
     self.configs = configs
Ejemplo n.º 2
0
 def __init__(self, configs, logger=None):
     super(HardwareProcessor, self).__init__()
     self.driver = get_driver(configs)
     if configs['processor_type'] == 'simulation_debug':
         self.voltage_ranges = self.driver.voltage_ranges
     else:
         self.voltage_ranges = TorchUtils.get_tensor_from_numpy(self.driver.voltage_ranges)
     self.waveform_mgr = WaveformManager(configs["data"]["waveform"])
     self.logger = logger
     # TODO: Manage amplification from this class
     self.amplification = configs["driver"]["amplification"]
     self.clipping_value = [
         configs["driver"]["output_clipping_range"][0] * self.amplification,
         configs["driver"]["output_clipping_range"][1] * self.amplification,
     ]
Ejemplo n.º 3
0
    def run_test(self):

        # save(mode='configs', path=self.configs['results_base_dir'], filename='test_configs.json', overwrite=self.configs['overwrite_results'], data=self.configs)

        self.processor = get_driver(self.configs['processor'])
        experiments = ["IV1", "IV2", "IV3", "IV4", "IV5", "IV6", "IV7"]
        self.devices_in_experiments = {}
        output = {}
        output_array = []

        for exp in experiments:
            output[exp] = {}
            self.devices_in_experiments[exp] = self.configs['devices'].copy()
            output_array = self.processor.forward_numpy(
                IVtest.create_input_arrays(self))

            for i, dev in enumerate(self.configs['devices']):
                output[exp][dev] = output_array.T[i, :]

        self.iv_plot(configs, output)
        self.processor.close_tasks()