From 3fff6023602822531efdae30bc8ebf862967f1ef Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Mon, 25 Jul 2022 17:55:39 +0200 Subject: Initial Commit --- .../plugin/SingleInstructionLimiterPlugin.scala | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 VexRiscv/src/main/scala/vexriscv/plugin/SingleInstructionLimiterPlugin.scala (limited to 'VexRiscv/src/main/scala/vexriscv/plugin/SingleInstructionLimiterPlugin.scala') diff --git a/VexRiscv/src/main/scala/vexriscv/plugin/SingleInstructionLimiterPlugin.scala b/VexRiscv/src/main/scala/vexriscv/plugin/SingleInstructionLimiterPlugin.scala new file mode 100644 index 0000000..c6c9706 --- /dev/null +++ b/VexRiscv/src/main/scala/vexriscv/plugin/SingleInstructionLimiterPlugin.scala @@ -0,0 +1,17 @@ +package vexriscv.plugin + +import vexriscv._ +import spinal.core._ +import spinal.lib._ + + +class SingleInstructionLimiterPlugin() extends Plugin[VexRiscv] { + override def build(pipeline: VexRiscv): Unit = { + import pipeline._ + import pipeline.config._ + val fetcher = pipeline.service(classOf[IBusFetcher]) + when(fetcher.incoming() || List(decode,execute,memory,writeBack).map(_.arbitration.isValid).orR) { + fetcher.haltIt() + } + } +} -- cgit v1.2.3