diplomacy: add a CustomNode type that allows direct overload of methods
This commit is contained in:
		| @@ -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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user