diplomacy: add a CustomNode type that allows direct overload of methods
This commit is contained in:
parent
fed1f53afa
commit
5a2a6b0386
@ -271,6 +271,23 @@ abstract class MixedNode[DI, UI, EI, BI <: Data, DO, UO, EO, BO <: Data](
|
|||||||
protected[diplomacy] def inputs = iPorts.map(_._2) zip edgesIn .map(e => inner.labelI(e))
|
protected[diplomacy] def inputs = iPorts.map(_._2) zip edgesIn .map(e => inner.labelI(e))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract class MixedCustomNode[DI, UI, EI, BI <: Data, DO, UO, EO, BO <: Data](
|
||||||
|
inner: InwardNodeImp [DI, UI, EI, BI],
|
||||||
|
outer: OutwardNodeImp[DO, UO, EO, BO])(
|
||||||
|
numPO: Range.Inclusive,
|
||||||
|
numPI: Range.Inclusive)
|
||||||
|
extends MixedNode(inner, outer)(numPO, numPI)
|
||||||
|
{
|
||||||
|
def resolveStar(iKnown: Int, oKnown: Int, iStars: Int, oStars: Int): (Int, Int)
|
||||||
|
def mapParamsD(n: Int, p: Seq[DI]): Seq[DO]
|
||||||
|
def mapParamsU(n: Int, p: Seq[UO]): Seq[UI]
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class CustomNode[D, U, EO, EI, B <: Data](imp: NodeImp[D, U, EO, EI, B])(
|
||||||
|
numPO: Range.Inclusive,
|
||||||
|
numPI: Range.Inclusive)
|
||||||
|
extends MixedCustomNode(imp, imp)(numPO, numPI)
|
||||||
|
|
||||||
class MixedAdapterNode[DI, UI, EI, BI <: Data, DO, UO, EO, BO <: Data](
|
class MixedAdapterNode[DI, UI, EI, BI <: Data, DO, UO, EO, BO <: Data](
|
||||||
inner: InwardNodeImp [DI, UI, EI, BI],
|
inner: InwardNodeImp [DI, UI, EI, BI],
|
||||||
outer: OutwardNodeImp[DO, UO, EO, BO])(
|
outer: OutwardNodeImp[DO, UO, EO, BO])(
|
||||||
|
@ -99,6 +99,11 @@ case class TLSplitterNode(
|
|||||||
numManagerPorts: Range.Inclusive = 0 to 999)
|
numManagerPorts: Range.Inclusive = 0 to 999)
|
||||||
extends SplitterNode(TLImp)(clientFn, managerFn, numClientPorts, numManagerPorts)
|
extends SplitterNode(TLImp)(clientFn, managerFn, numClientPorts, numManagerPorts)
|
||||||
|
|
||||||
|
abstract class TLCustomNode(
|
||||||
|
numClientPorts: Range.Inclusive,
|
||||||
|
numManagerPorts: Range.Inclusive)
|
||||||
|
extends CustomNode(TLImp)(numClientPorts, numManagerPorts)
|
||||||
|
|
||||||
// Nodes passed from an inner module
|
// Nodes passed from an inner module
|
||||||
case class TLOutputNode() extends OutputNode(TLImp)
|
case class TLOutputNode() extends OutputNode(TLImp)
|
||||||
case class TLInputNode() extends InputNode(TLImp)
|
case class TLInputNode() extends InputNode(TLImp)
|
||||||
|
Loading…
Reference in New Issue
Block a user