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'
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
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()
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()
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'
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
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()
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()