def setUp(self): self.file_name = self.generate_data() cocotb_compile_and_run( [qmca_dir + "/tests/mca_tb.v"], sim_bus="basil.utils.sim.SiLibUsbBusDriver", include_dirs=(qmca_dir,), extra="export SIMULATION_MODULES=" + yaml.dump({"MCAFileDriver": {"file_name": str(self.file_name)}}), ) with open(qmca_dir + "/qmca.yaml", "r") as f: cnfg = yaml.load(f) cnfg["transfer_layer"][0]["type"] = "SiSim" cnfg["hw_drivers"][0]["init"]["no_calibration"] = True # this should be based on some search # cnfg['transfer_layer'].remove(cnfg['transfer_layer'][1]) # cnfg['hw_drivers'].remove(cnfg['hw_drivers'][1]) # cnfg['hw_drivers'].remove(cnfg['hw_drivers'][0]) # cnfg['registers'].remove(cnfg['registers'][5]) # cnfg['registers'].remove(cnfg['registers'][4]) # cnfg['registers'].remove(cnfg['registers'][3]) # cnfg['registers'].remove(cnfg['registers'][2]) # cnfg['registers'].remove(cnfg['registers'][1]) # cnfg['registers'].remove(cnfg['registers'][0]) self.ch = 0 # Channel to use self.ev = 0 # Event to use self.th = 2500 # Threshold self.my_qmca = qmca.qmca( config=cnfg, channel=self.ch, sample_count=self.sample_count, sample_delay=self.sample_delay, threshold=self.th, )
def _take_source_scan(self, qmca_channel, threshold=3000, duration=600, file_name='', max_events=1000000, adc_differential_voltage=1.5): ''' Take a single source scan using qMCA setup / class ''' if not file_name: file_name = 'source_scan_%s' % (self.pcb) elif file_name.split('.')[-1] == 'h5': file_name = file_name.split('.')[:-1] with qmca.qmca(channel=qmca_channel, threshold=threshold, adc_differential_voltage=adc_differential_voltage) as my_qmca: start_time = time.time() actual_time = start_time my_qmca.start(out_filename=file_name) while ((actual_time < (start_time + duration)) and (my_qmca.event_count <= max_events)): if self.pbar.currval < 100: self.pbar.update(self.pbar.currval + 0.5) actual_time = time.time() time.sleep(1)
import qmca import time import progressbar duration = 60*30 max_events = 1000000 my_qmca = qmca.qmca(channel=2, threshold=6000, sample_count=200, sample_delay=50, write_after_n_events=10000, adc_differential_voltage=1.5) pbar = progressbar.ProgressBar(widgets=['', progressbar.Percentage(), ' ', progressbar.Bar(marker='*', left='|', right='|'), ' ', progressbar.AdaptiveETA()], maxval=duration, poll=10, term_width=80).start() start_time = time.time() actual_time = start_time my_qmca.start() while ((actual_time < (start_time + duration)) and (my_qmca.event_count <= max_events)): pbar.update(actual_time - start_time) actual_time = time.time() time.sleep(1) my_qmca.stop() pbar.finish()