OpenCores
URL https://opencores.org/ocsvn/myblaze/myblaze/trunk

Subversion Repositories myblaze

[/] [myblaze/] [trunk/] [model/] [emulator.py] - Diff between revs 3 and 6

Show entire file | Details | Blame | View Log

Rev 3 Rev 6
Line 7... Line 7...
    An Emulator for MicroBlaze INA
    An Emulator for MicroBlaze INA
 
 
    :copyright: Copyright (c) 2010 Jian Luo
    :copyright: Copyright (c) 2010 Jian Luo
    :author-email: jian.luo.cn(at_)gmail.com
    :author-email: jian.luo.cn(at_)gmail.com
    :license: LGPL, see LICENSE for details
    :license: LGPL, see LICENSE for details
    :revision: $Id: emulator.py 3 2010-11-21 07:17:00Z rockee $
    :revision: $Id: emulator.py 6 2010-11-21 23:18:44Z rockee $
"""
"""
 
 
from random import randrange
from random import randrange
from myhdl import *
from myhdl import *
 
 
Line 314... Line 314...
_max = _signed32(__max)
_max = _signed32(__max)
_min = _signed32(__min)
_min = _signed32(__min)
 
 
class MyBlazeEmulator(object):
class MyBlazeEmulator(object):
 
 
    def __init__(self, filename='rom.vmem'):
    def __init__(self, filename='rom.vmem', max_steps=1000):
        ram = read_vmem(filename)
        ram = read_vmem(filename)
        print 'size=%d' % len(ram)
        print 'size=%d' % len(ram)
        fetch(ram, max_steps=1000)
        fetch(ram, max_steps=max_steps)
 
 
def addi(d, a, i, k, c, r, m, **kw):
def addi(d, a, i, k, c, r, m, **kw):
    x = _signed32(r[a]) + _signed32(i) + (bool(c) & m[0])
    x = _signed32(r[a]) + _signed32(i) + (bool(c) & m[0])
    r[d] = _signed32(x)
    r[d] = _signed32(x)
    m[0] = m[0] if k else not (_min <= x <= _max)
    m[0] = m[0] if k else not (_min <= x <= _max)
Line 418... Line 418...
    loadi(i=r[b], r=r, **kw)
    loadi(i=r[b], r=r, **kw)
 
 
def storei(d, a, i, op, r, ram, **kw):
def storei(d, a, i, op, r, ram, **kw):
    addr = r[a] + i
    addr = r[a] + i
    if addr<0:
    if addr<0:
 
        # UART Emulation
        if addr == -64:
        if addr == -64:
            sys.stdout.write(chr(r[d] & 0xff))
            sys.stdout.write(chr(r[d] & 0xff))
            sys.stdout.flush()
            sys.stdout.flush()
        #else:
        #else:
            #print 'store@%#x <- r[%d]=%d' % (addr&_umax, d, r[d])
            #print 'store@%#x <- r[%d]=%d' % (addr&_umax, d, r[d])
Line 688... Line 689...
 
 
 
 
 
 
import sys
import sys
if __name__ == '__main__':
if __name__ == '__main__':
    MyBlazeEmulator(sys.argv[1])
    MyBlazeEmulator(sys.argv[1], max_steps=2000)
 
 
### EOF ###
### EOF ###
# vim:smarttab:sts=4:ts=4:sw=4:et:ai:tw=80:
# vim:smarttab:sts=4:ts=4:sw=4:et:ai:tw=80:
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.