blob: 96d2bc68070f958cda29595d28ae2fcfc8954f68 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package vexriscv.plugin
import vexriscv.{Pipeline, Stage}
import spinal.core.{Area, Nameable}
/**
* Created by PIC32F_USER on 03/03/2017.
*/
trait Plugin[T <: Pipeline] extends Nameable{
var pipeline : T = null.asInstanceOf[T]
setName(this.getClass.getSimpleName.replace("$",""))
// Used to setup things with other plugins
def setup(pipeline: T) : Unit = {}
//Used to flush out the required hardware (called after setup)
def build(pipeline: T) : Unit
implicit class implicitsStage(stage: Stage){
def plug[T <: Area](area : T) : T = {area.setCompositeName(stage,getName()).reflectNames();area}
}
implicit class implicitsPipeline(stage: Pipeline){
def plug[T <: Area](area : T) = {area.setName(getName()).reflectNames();area}
}
}
|