Example #1
0
    def __init__(self, master):
        self.master = master
        self.master.title("Credo QSFP-SFP Tester")
        self.api = Falcon_lib()

        self.tab_1 = Frame(self.master,relief=)
        self.tab_1.grid(row=0,column=0)
        self.monitor_1 = Label(self.tab_1, text='RX Monitor 1')
        self.monitor_1.bind("<Button-3>", self.print_click)
        self.monitor_1.pack(ipady=5)
        self.table_1 = Frame(self.tab_1)
        self.table_1.pack(fill='both', padx=10)

        self.link_status = Label(self.table_1, text='Link Status')
        self.link_status.grid(row=1, sticky='W', padx=10)
        self.eye = Label(self.table_1, text='Eye Margin')
        self.eye.grid(row=3, sticky='W', padx=10)
        self.BER = Label(self.table_1, text='BER')
        self.BER.grid(row=4, sticky='W', padx=10)
        self.passfail = Label(self.table_1, text='Pass/Fail')
        self.passfail.grid(row=5, sticky='W', padx=10)



        self.table_2 = Frame(self.master)
        self.table_2.grid(row=0,column=1)#pack(fill='both', padx=10)
        self.monitor_2 = Label(self.tab_1, text='RX Monitor 2')
        self.monitor_2.pack(pady=10)

        self.link_status = Label(self.table_2, text='Link Status')
        self.link_status.grid(row=1, sticky='W', padx=10)
        self.eye = Label(self.table_2, text='Eye Margin')
        self.eye.grid(row=3, sticky='W', padx=10)
        self.BER = Label(self.table_2, text='BER')
        self.BER.grid(row=4, sticky='W', padx=10)
        self.passfail = Label(self.table_2, text='Pass/Fail')
        self.passfail.grid(row=5, sticky='W', padx=10)
        self.count = 0

        self.all_button = Button(self.tab_1, text='Reset All',
                                 command=self.prbs_reset)
        self.all_button.pack(pady=10)

        self.all_button1 = Button(self.tab_1, text='Reset All  1',
                                 command=self.testGPIO)
        self.all_button1.pack(pady=11)

        self.main_menu = Menu(self.master)
        self.master.config(menu=self.main_menu)
        self.option_menu = Menu(self.main_menu, tearoff=0)
        self.option_menu.add_command(label='Load Alternate Script',
                                     command=self.load_window)
        self.option_menu.add_separator()
        self.option_menu.add_command(label='Exit', command=the_end)
        self.main_menu.add_cascade(label='Options', menu=self.option_menu)

        self.table()
        self.display()
Example #2
0
class FalconGUI:
    def __init__(self, master):
        self.master = master
        self.master.title("Credo QSFP-SFP Tester")
        self.api = Falcon_lib()

        self.mainFrm = Frame(self.master)
        self.mainFrm.grid(row=0, column=0)
        self.monitor_1 = Label(self.mainFrm, text='RX Monitor 1')
        self.monitor_1.bind("<Button-3>", self.print_click)
        self.monitor_1.pack(ipady=5)
        self.subFrm1 = LabelFrame(self.mainFrm, text="QSFP1", padx=5, pady=5)
        self.subFrm1.pack(fill='both', padx=10)

        self.link_status = Label(self.subFrm1, text='Link Status')
        self.link_status.grid(row=1, sticky='W', padx=10)
        self.eye = Label(self.subFrm1, text='Eye Margin')
        self.eye.grid(row=3, sticky='W', padx=10)
        self.BER = Label(self.subFrm1, text='BER')
        self.BER.grid(row=4, sticky='W', padx=10)
        self.passfail = Label(self.subFrm1, text='Pass/Fail')
        self.passfail.grid(row=5, sticky='W', padx=10)

        #        group = LabelFrame(master, text="Group", padx=5, pady=5)
        #        group.grid(row=2, column=0)
        #        group.pack(padx=10, pady=10)

        self.monitor_2 = Label(self.mainFrm, text='RX Monitor 2')
        self.monitor_2.pack(pady=10)
        self.subFrm2 = LabelFrame(self.mainFrm, text="QSFP2", padx=5, pady=5)
        self.subFrm2.pack(fill='both', padx=10)  #grid(row=0,column=1)

        self.link_status = Label(self.subFrm2, text='Link Status')
        self.link_status.grid(row=1, sticky='W', padx=10)
        self.eye = Label(self.subFrm2, text='Eye Margin')
        self.eye.grid(row=3, sticky='W', padx=10)
        self.BER = Label(self.subFrm2, text='BER')
        self.BER.grid(row=4, sticky='W', padx=10)
        self.passfail = Label(self.subFrm2, text='Pass/Fail')
        self.passfail.grid(row=5, sticky='W', padx=10)
        self.count = 0

        self.monitor_3 = Label(self.mainFrm, text='RX Monitor 3')
        self.monitor_3.pack(pady=10)
        self.subFrm3 = LabelFrame(self.mainFrm, text="SFP3~6", padx=5, pady=5)
        self.subFrm3.pack(fill='both', padx=10)  #grid(row=0,column=1)

        self.link_status = Label(self.subFrm3, text='Link Status')
        self.link_status.grid(row=1, sticky='W', padx=10)
        self.eye = Label(self.subFrm3, text='Eye Margin')
        self.eye.grid(row=3, sticky='W', padx=10)
        self.BER = Label(self.subFrm3, text='BER')
        self.BER.grid(row=4, sticky='W', padx=10)
        self.passfail = Label(self.subFrm3, text='Pass/Fail')
        self.passfail.grid(row=5, sticky='W', padx=10)

        self.subFrm4 = LabelFrame(self.mainFrm, text="sub4", padx=5, pady=5)
        #        self.subFrm4.pack(fill='both', padx=10)#grid(row=0,column=1)

        self.link_status = Label(self.subFrm4, text='Link Status')
        self.link_status.grid(row=1, sticky='W', padx=10)
        self.eye = Label(self.subFrm4, text='Eye Margin')
        self.eye.grid(row=3, sticky='W', padx=10)
        self.BER = Label(self.subFrm4, text='BER')
        self.BER.grid(row=4, sticky='W', padx=10)
        self.passfail = Label(self.subFrm4, text='Pass/Fail')
        self.passfail.grid(row=5, sticky='W', padx=10)

        self.all_button = Button(self.mainFrm,
                                 text='Reset All',
                                 command=self.prbs_reset)
        self.all_button.pack(pady=10)
        '''
        self.all_button1 = Button(self.mainFrm, text='Reset All  1',
                                 command=self.testGPIO)
        self.all_button1.pack(pady=11)
        '''
        self.main_menu = Menu(self.master)
        self.master.config(menu=self.main_menu)
        self.option_menu = Menu(self.main_menu, tearoff=0)
        self.option_menu.add_command(label='Load Alternate Script',
                                     command=self.load_window)
        self.option_menu.add_separator()
        self.option_menu.add_command(label='Exit', command=the_end)
        self.main_menu.add_cascade(label='Options', menu=self.option_menu)

        self.table()
        self.display()

    def print_click(self):
        print 'You right clicked!'

    def prbs_reset(self):
        for i in range(16):
            self.api.Falcon_Reset_PRBS_Cntr_B(i + 1)
        self.count = 0

    def table(self):
        eye = []
        ber = []
        ar = []
        br = []

        for i in range(1, 9):
            eye.append('eye_%d' % i)
            ber.append('ber_%d' % i)
            ar.append('AR%d' % i)
            if i < 5:
                ar[i - 1] = Label(self.subFrm1, text='AR%d' % i, bg='grey')
                eye[i - 1] = Label(self.subFrm1, bg='white')
                ber[i - 1] = Label(self.subFrm1, bg='white')
                ar[i - 1].grid(row=0, column=i, sticky='S', ipadx=41, pady=1)
                eye[i - 1].grid(row=3, column=i, ipadx=52, ipady=5)
                ber[i - 1].grid(row=4, column=i, ipadx=52, ipady=5)
            else:
                ar[i - 1] = Label(self.subFrm2, text='AR%d' % i, bg='grey')
                eye[i - 1] = Label(self.subFrm2, bg='white')
                ber[i - 1] = Label(self.subFrm2, bg='white')
                ar[i - 1].grid(row=0,
                               column=i - 4,
                               sticky='S',
                               ipadx=41,
                               pady=1)
                eye[i - 1].grid(row=3, column=i - 4, ipadx=52, ipady=5)
                ber[i - 1].grid(row=4, column=i - 4, ipadx=52, ipady=5)

        for i in range(1, 9):
            v = i + 8
            eye.append('eye_%d' % i)
            ber.append('ber_%d' % i)
            br.append('BR%d' % i)
            if i < 5:
                br[i - 1] = Label(self.subFrm3, text='BR%d' % i, bg='grey')
                eye[v - 1] = Label(self.subFrm3, bg='white')
                ber[v - 1] = Label(self.subFrm3, bg='white')
                br[i - 1].grid(row=0, column=i, ipadx=41, pady=1)
                eye[v - 1].grid(row=3, column=i, ipadx=52, ipady=5)
                ber[v - 1].grid(row=4, column=i, ipadx=52, ipady=5)
            else:
                br[i - 1] = Label(self.subFrm4, text='BR%d' % i, bg='grey')
                eye[v - 1] = Label(self.subFrm4, bg='white')
                ber[v - 1] = Label(self.subFrm4, bg='white')
                br[i - 1].grid(row=0, column=i - 4, ipadx=41, pady=1)
                eye[v - 1].grid(row=3, column=i - 4, ipadx=52, ipady=5)
                ber[v - 1].grid(row=4, column=i - 4, ipadx=52, ipady=5)

    def data(self):

        link = []
        eye = []
        ber = []
        fail = []

        self.count += 1
        timer = Label(self.master, text='Test Time: %d' % self.count)
        timer.grid(row=1, pady=10, ipadx=7)

        for i in range(1, 9):
            link.append('link_%d' % i)
            eye.append('eye_%d' % i)
            ber.append('ber_%d' % i)
            fail.append('fail_%d' % i)
            if i < 5:
                link[i - 1] = Label(self.subFrm3, width=3, height=1)
                fail[i - 1] = Label(self.subFrm3,
                                    width=3,
                                    height=1,
                                    relief='solid',
                                    bd=1)
                eye[i - 1] = Label(self.subFrm3,
                                   text='%.3f' % self.eye_marg(i),
                                   bg='white',
                                   width=3,
                                   height=1)
                ber[i - 1] = Label(self.subFrm3,
                                   text='%.2E' % self.ber(i),
                                   bg='white',
                                   width=3,
                                   height=1)
            else:
                link[i - 1] = Label(self.subFrm4, width=3, height=1)
                fail[i - 1] = Label(self.subFrm4,
                                    width=3,
                                    height=1,
                                    relief='solid',
                                    bd=1)
                eye[i - 1] = Label(self.subFrm4,
                                   text='%.3f' % self.eye_marg(i),
                                   bg='white',
                                   width=3,
                                   height=1)
                ber[i - 1] = Label(self.subFrm4,
                                   text='%.2E' % self.ber(i),
                                   bg='white',
                                   width=3,
                                   height=1)

            if self.link_stat(i) == 1:
                link[i - 1].config(text='ON', bg='green')
                if self.ber(i) <= 1e-13:
                    fail[i - 1].config(text='PASS', bg='green')
                else:
                    fail[i - 1].config(text='FAIL', bg='red')
            else:
                link[i - 1].config(text='OFF', bg='red')
                fail[i - 1].config(text='FAIL', bg='red')

            if (i < 5):
                link[i - 1].grid(row=1, column=i, ipadx=41, ipady=5)
                eye[i - 1].grid(row=3, column=i, ipadx=14)
                ber[i - 1].grid(row=4, column=i, ipadx=14)
                fail[i - 1].grid(row=5, column=i, ipadx=40, ipady=5)
            else:
                link[i - 1].grid(row=1, column=i - 4, ipadx=41, ipady=5)
                eye[i - 1].grid(row=3, column=i - 4, ipadx=14)
                ber[i - 1].grid(row=4, column=i - 4, ipadx=14)
                fail[i - 1].grid(row=5, column=i - 4, ipadx=40, ipady=5)

        for i in range(1, 9):
            v = i + 8
            link.append('link_%d' % i)
            eye.append('eye_%d' % i)
            ber.append('ber_%d' % i)
            fail.append('fail_%d' % i)
            if i < 5:
                link[v - 1] = Label(self.subFrm1, width=3, height=1)
                fail[v - 1] = Label(self.subFrm1,
                                    width=3,
                                    height=1,
                                    relief='solid',
                                    bd=1)
                eye[v - 1] = Label(self.subFrm1,
                                   text='%.3f' % self.eye_marg(v),
                                   bg='white',
                                   width=3,
                                   height=1)
                ber[v - 1] = Label(self.subFrm1,
                                   text='%.2E' % self.ber(v),
                                   bg='white',
                                   width=3,
                                   height=1)
            else:
                link[v - 1] = Label(self.subFrm2, width=3, height=1)
                fail[v - 1] = Label(self.subFrm2,
                                    width=3,
                                    height=1,
                                    relief='solid',
                                    bd=1)
                eye[v - 1] = Label(self.subFrm2,
                                   text='%.3f' % self.eye_marg(v),
                                   bg='white',
                                   width=3,
                                   height=1)
                ber[v - 1] = Label(self.subFrm2,
                                   text='%.2E' % self.ber(v),
                                   bg='white',
                                   width=3,
                                   height=1)

            if self.link_stat(v) == 1:
                link[v - 1].config(text='ON', bg='green')
                if self.ber(v) <= 1e-13:
                    fail[v - 1].config(text='PASS', bg='green')
                else:
                    fail[v - 1].config(text='FAIL', bg='red')
            else:
                link[v - 1].config(text='OFF', bg='red')
                fail[v - 1].config(text='FAIL', bg='red')

            if (i < 5):
                link[v - 1].grid(row=1, column=i, ipadx=41, ipady=5)
                eye[v - 1].grid(row=3, column=i, ipadx=14)
                ber[v - 1].grid(row=4, column=i, ipadx=14)
                fail[v - 1].grid(row=5, column=i, ipadx=40, ipady=5)
            else:
                link[v - 1].grid(row=1, column=i - 4, ipadx=41, ipady=5)
                eye[v - 1].grid(row=3, column=i - 4, ipadx=14)
                ber[v - 1].grid(row=4, column=i - 4, ipadx=14)
                fail[v - 1].grid(row=5, column=i - 4, ipadx=40, ipady=5)
            '''
            link[v - 1].grid(row=1, column=i, ipadx=41, ipady=5)
            eye[v - 1].grid(row=3, column=i, ipadx=14)
            ber[v - 1].grid(row=4, column=i, ipadx=14)
            fail[v - 1].grid(row=5, column=i, ipadx=40, ipady=5)
            '''

    def display(self):
        self.data()
        self.master.after(1000, self.display)

    def testGPIO(self):
        adr = 0
        a = self.api.MdioRd(0)
        print "addr %x's value0x%x" % (adr, a)

    def connect(self):
        self.api.connect()

    def link_stat(self, m):
        return int(self.api.Falcon_Link_Status_B(m))

    def eye_marg(self, m):
        eye = float(self.api.Falcon_Read_Eyemargin_B(m))
        return eye

    def ber(self, m):
        return self.api.RxReadPRBSCounterB(m) / float((40 * 50 * 10**9))

    def load_window(self):
        new = Toplevel(self.master)
        what = Fetch(new)
Example #3
0
        if filename != '':
            self.new_script.config(text=words.pop(-1))
            test.LoadScript(filename)


def the_end():
    root.quit()
    root.destroy()

    sys.exit()


if __name__ == "__main__":
    global script
    root = tk.Tk()
    test = Falcon_lib()
    script = 'Falcon_CHRIS2.txt'

    try:
        test.connect()
    except BaseException:
        Error(root)
    else:
        test.Falcon_Software_Reset()
        time.sleep(0.5)
        test.LoadScript(script)
        time.sleep(0.5)
        test.Falcon_Logic_Reset()
        FalconGUI(root)

    root.protocol("WM_DELETE_WINDOW", the_end)