From d611d8c5e1e9844564b66d4e7e3f8be0bfcb95f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Nguyen?= Date: Mon, 19 Sep 2022 17:31:24 +0200 Subject: [PATCH] cores/dinofly: add initial support. --- cores/dinofly/checks.pfv | 13 ++++++++++ cores/dinofly/dinofly_cli/__init__.py | 0 cores/dinofly/dinofly_cli/__main__.py | 13 ++++++++++ cores/dinofly/dinofly_cli/core.py | 35 +++++++++++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 cores/dinofly/checks.pfv create mode 100644 cores/dinofly/dinofly_cli/__init__.py create mode 100644 cores/dinofly/dinofly_cli/__main__.py create mode 100644 cores/dinofly/dinofly_cli/core.py diff --git a/cores/dinofly/checks.pfv b/cores/dinofly/checks.pfv new file mode 100644 index 0000000..a388b94 --- /dev/null +++ b/cores/dinofly/checks.pfv @@ -0,0 +1,13 @@ +check unique --depth=15 --skip=10 +check cia --depth=15 +check gpr --depth=15 +check causal --depth=15 + +check insn:addi --depth=15 +check insn:addis --depth=15 +check insn:ori --depth=15 +check insn:oris --depth=15 +check insn:xori --depth=15 +check insn:xoris --depth=15 + +build --build-dir=./build diff --git a/cores/dinofly/dinofly_cli/__init__.py b/cores/dinofly/dinofly_cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cores/dinofly/dinofly_cli/__main__.py b/cores/dinofly/dinofly_cli/__main__.py new file mode 100644 index 0000000..596d2f3 --- /dev/null +++ b/cores/dinofly/dinofly_cli/__main__.py @@ -0,0 +1,13 @@ +from pathlib import PurePath +from power_fv.session import PowerFVSession + +from .core import DinoflyCore + + +class DinoflySession(PowerFVSession, core_cls=DinoflyCore): + pass + + +if __name__ == "__main__": + PROG = "python -m {}".format(PurePath(__file__).parent.name) + DinoflySession().main(prog=PROG) diff --git a/cores/dinofly/dinofly_cli/core.py b/cores/dinofly/dinofly_cli/core.py new file mode 100644 index 0000000..36151fb --- /dev/null +++ b/cores/dinofly/dinofly_cli/core.py @@ -0,0 +1,35 @@ +from amaranth import * +from amaranth.asserts import * + +from dinofly.core import DinoflyCPU + +from power_fv.core import PowerFVCore + + +__all__ = ["DinoflyWrapper"] + + +class DinoflyWrapper(Elaboratable): + def __init__(self, **kwargs): + self._cpu = DinoflyCPU(with_pfv=True) + self.pfv = self._cpu.pfv + self.ibus = self._cpu.ibus + + def elaborate(self, platform): + m = Module() + + m.submodules.cpu = self._cpu + + m.d.comb += [ + self.ibus.dat_r.eq(AnySeq(self.ibus.data_width)), + self.ibus.ack .eq(AnySeq(1)), + self.ibus.err .eq(AnySeq(1)), + ] + + return m + + +class DinoflyCore(PowerFVCore): + @classmethod + def wrapper(cls, **kwargs): + return DinoflyWrapper(**kwargs)