Skip to content

Commit

Permalink
Change variants and extensions to namedtuple
Browse files Browse the repository at this point in the history
  • Loading branch information
wallento committed Oct 28, 2018
1 parent 9ceb7e9 commit bf45f39
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 30 deletions.
3 changes: 2 additions & 1 deletion riscvmodel/model.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from random import randrange

from .variant import Variant
from .variant import *
from .types import Register, RegisterFile
from .program import Program

Expand Down Expand Up @@ -125,3 +125,4 @@ def randomize(self):

def reset(self, pc: int = 0):
self.state.reset(pc)

4 changes: 2 additions & 2 deletions riscvmodel/random.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from .isa import *
from .insn import get_insns
from .variant import Variant, BaseRV32I
from .variant import Variant, RV32I
from .code import read_from_binary
from .model import Model
from . import __version__
Expand All @@ -24,7 +24,7 @@ def random_instruction(variant: Variant, pool = None):


def random_asm(N, pool=None):
v = BaseRV32I()
v = RV32I
for i in range(N):
yield next(random_instruction(v, pool=pool))

Expand Down
32 changes: 9 additions & 23 deletions riscvmodel/variant.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,13 @@
from collections import namedtuple

class Variant(object):
def __init__(self):
self.intregs = None
self.xlen = None
Extensions = namedtuple("Extensions",
["M", "A", "F", "D", "Q", "C"],
defaults = [False] * 6)

Variant = namedtuple("Variant",
["intregs", "xlen", "extensions"])

class BaseRV32I(Variant):
def __init__(self):
super(BaseRV32I, self).__init__()
self.intregs = 32
self.xlen = 32


class BaseRV32E(Variant):
def __init__(self):
super().__init__()
self.intregs = 16
self.xlen = 32


class BaseRV64I(Variant):
def __init__(self):
super().__init__()
self.intregs = 32
self.xlen = 64
RV32I = Variant(intregs=32, xlen=32, extensions = Extensions())
RV32E = Variant(intregs=16, xlen=32, extensions = Extensions())
RV32IC = Variant(intregs=32, xlen=32, extensions = Extensions(C=True))

6 changes: 2 additions & 4 deletions tests/test_model.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from riscvmodel.program.tests import *
from riscvmodel.model import Model
from riscvmodel.variant import BaseRV32I
from riscvmodel.variant import RV32I

import pytest

Expand All @@ -18,8 +18,6 @@ def check_model(model: Model, check: dict):

def test_model_addi():
pgm = ADDITest()
m = Model(BaseRV32I())
m = Model(RV32I)
m.execute(pgm)
print(pgm.expects())
check_model(m, pgm.expects())

0 comments on commit bf45f39

Please sign in to comment.