aboutsummaryrefslogtreecommitdiff
path: root/VexRiscv/src/main/scala/vexriscv/plugin/SingleInstructionLimiterPlugin.scala
blob: c6c970619d37abdd5739c2a2b312b670c47b985a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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()
    }
  }
}