Exemplo n.º 1
0
    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,
        )
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
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()