Ejemplo n.º 1
0
def negedge():
    global cycles, idle, Ain, state, Max
    cycles += 1
    veri.force('tb.cycles', str(cycles))
    if (cycles > 1000):
        veri.listing('tb', '1000', 'cucu.list')
        veri.finish()
    rst_n = veri.peek('tb.rst_n')
    if (rst_n != '1'):
        ain = veri.peek('tb.ain')
        Len = len(ain)
        Max = 1 << Len
        return

    veri.force('tb.en', '1')

    if state == 'idle':
        Ain = random.randint(0, Max)
        veri.force('tb.ain', logs.make_str(Ain))
        veri.force('tb.vldin', '1')
        state = 'work0'
    elif state == 'work0':
        veri.force('tb.vldin', '0')
        state = 'wait0'
    elif state == 'wait0':
        vldout = logs.peek('tb.vldout')
        if vldout == 1:
            Out = logs.peek('tb.out')
            Exp = int(math.sqrt(Ain))
            if Out == Exp:
                logs.log_correct('in=%d out=%d' % (Ain, Out))
            else:
                logs.log_wrong('ain=%d max=%d expected=%d act=%d' %
                               (Ain, Max, int(math.sqrt(Ain)), Out))
            state = 'idle'
Ejemplo n.º 2
0
def use_command_wrds(self, wrds):
    if wrds == []: return
    if (wrds[0] in ['quit', 'exit']):
        veri.finish()
    elif wrds[0] in ['slow', 'sleep']:
        if len(wrds) == 1:
            veri.force('tb.run_slowly', '1')
        elif wrds[1] in ['True', '1']:
            veri.force('tb.run_slowly', '1')
        elif wrds[1] in ['False', '0']:
            veri.force('tb.run_slowly', '0')
        else:
            print 'command "slow" or "sleep" accept one parameter: True or False or 1 or 0"'
    elif wrds[0] == 'os':
        Cmd = string.join(wrds[1:], ' ')
        os.system(Cmd)
    elif wrds[0] == 'time':
        print 'time', veri.stime()
    elif wrds[0] == 'eval':
        Cmd = string.join(wrds[1:], ' ')
        print eval(Cmd)
    elif wrds[0] == 'exec':
        Cmd = string.join(wrds[1:], ' ')
        exec(Cmd)
    elif wrds[0] in ['file', 'source']:
        try:
            Fin = open(wrds[1])
        except:
            print 'failed to open %s' % wrds[1]
            return
        lines = Fin.readlines()
        Fin.close()
        for line in lines:
            wrds0 = string.split(line)
            print '>>', wrds0
            use_command_wrds(self, wrds0)
    elif (wrds[0] == 'clear'):
        apb.wrqueue = []
    elif (wrds[0] == 'history'):
        for ind, X in enumerate(CommandsHistory):
            print ind, X
    elif (wrds[0] == 'reset'):
        veri.force('tb.rst_n', '0')
        apb.waiting = 20
    elif (wrds[0] == 'listing'):
        veri.listing('tb', '100', 'deep.list')
    elif (wrds[0] == 'force'):
        veri.force(wrds[1], wrds[2])
    elif (wrds[0] == 'peek'):
        Val = veri.peek(wrds[1])
        logs.log_info('peeking %s  0x%x    %s' %
                      (wrds[1], logs.intx(Val), Val))
    elif (wrds[0] == 'apb'):
        Addr = eval(wrds[1])
        Data = eval(wrds[2])
        apb.wrqueue.append((Addr, Data))
    else:
        print 'y ', HELP
Ejemplo n.º 3
0
def negedge():
    global cycles
    cycles += 1
    veri.force('tb.cycles',str(cycles))
    if (cycles>2000):
        veri.finish()
    rst_n = veri.peek('tb.rst_n')
    if (rst_n!='1'):
        return

    if (cycles==30):
        veri.listing('tb','100','deep.list')
    if (cycles>30):
        for Mon in Monitors: Mon.run()
Ejemplo n.º 4
0
def negedge():
    global cycles
    cycles += 1
    veri.force('tb.cycles',str(cycles))
    if (cycles>GIVEUP_TIMEOUT):
        logs.log_info('finishing on default guard of %d'%GIVEUP_TIMEOUT)
        veri.finish()
    rst_n = veri.peek('tb.rst_n')
    if (rst_n!='1'):
        return

    if (cycles==30):
        veri.listing('tb','100','deep.list')
    if (cycles>30):
        for Mon in Monitors: Mon.run()
Ejemplo n.º 5
0
def negedge():
    global cycles, idle, Ain, state, Max, Pause
    cycles += 1
    veri.force('tb.cycles', str(cycles))
    if (cycles > 1000000):
        veri.listing('tb', '1000', 'cucu.list')
        veri.finish()
        return
    veri.force('tb.en', '1')

    rst_n = veri.peek('tb.rst_n')
    if (rst_n != '1') and (cycles < 100):
        ain = veri.peek('tb.ain')
        Len = len(ain)
        Max = 1 << Len
        veri.force('tb.makeStuckList', '1')
        return

    if (cycles > 30):
        for Mon in Monitors:
            Mon.run()

    if state == 'reset':
        Pause -= 1
        if Pause == 0:
            state = 'idle'
            veri.force('tb.rst_n', '1')
    elif state == 'idle':
        Ain = random.randint(0, Max)
        veri.force('tb.ain', logs.make_str(Ain))
        veri.force('tb.vldin', '1')
        state = 'work0'
    elif state == 'work0':
        veri.force('tb.vldin', '0')
        state = 'wait0'
    elif state == 'wait0':
        vldout = logs.peek('tb.vldout')
        if vldout == 1:
            state = 'idle'
            return
            Out = logs.peek('tb.out')
            Exp = int(math.sqrt(Ain))
            if Out == Exp:
                logs.log_correct('in=%d out=%d' % (Ain, Out))
            else:
                logs.log_wrong('ain=%d max=%d expected=%d act=%d' %
                               (Ain, Max, int(math.sqrt(Ain)), Out))
            state = 'idle'
Ejemplo n.º 6
0
def negedge():
    global cycles
    cycles += 1
    veri.force('tb.cycles', str(cycles))
    if (cycles > 100000):
        veri.finish()
    rst_n = veri.peek('tb.rst_n')
    if (rst_n != '1'):
        return

    if (cycles == 30):
        veri.listing('tb', '100', 'deep.list')
    if (cycles > 30):
        for Mon in Monitors:
            Mon.run()
        Baud = logs.peek('tb.dut.uart_baudrate')
        uart.baudRate = Baud
Ejemplo n.º 7
0
def negedge():
    global cycles
    cycles += 1
    veri.force('tb.cycles', str(cycles))
    if (cycles > 1000):
        veri.finish()
    rst_n = veri.peek('tb.rst_n')
    if (rst_n != '1'):
        return

    if (cycles == 30):
        veri.listing('tb', '100', 'deep.list')
        veri.force('tb.clock_en_i', '1')
        veri.force('tb.boot_addr_i',
                   '0x0')  # if ==0x400 adds 0x100 to fetching rom
        veri.force('tb.fetch_enable_i', '1')
    if (cycles > 30):
        for Mon in Monitors:
            Mon.run()
Ejemplo n.º 8
0
def negedge():
    global cycles
    cycles += 1
    veri.force('tb.cycles', str(cycles))
    if (cycles > 1000):
        logs.log_info('finishing on timeout')
        veri.finish()
    rst_n = veri.peek('tb.rst_n')
    if (rst_n != '1'):
        return

    if (cycles == 30):
        veri.listing('tb', '100', 'deep.list')
        initial()

    if (cycles > 30):
        for Mon in Monitors:
            Mon.run()
        runQueue()
        monitorResp()