summaryrefslogtreecommitdiff
path: root/chiselFrontend
diff options
context:
space:
mode:
authorLeway Colin2019-08-20 00:09:07 +0800
committerSchuyler Eldridge2019-08-19 12:09:07 -0400
commiteccacc3d7a07208ff31e592b13c0dece1012dca2 (patch)
tree936adca048d3b5fd843fcb48738ecd89632dfa0e /chiselFrontend
parent8407cbafe37406301fe7437a7a0cb8bf283ada09 (diff)
Refactor: remove redundant code (#1152)
* Refactor: remove redundant code * Change to protected API * Remove type hierarchy
Diffstat (limited to 'chiselFrontend')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/Data.scala32
1 files changed, 14 insertions, 18 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/Data.scala b/chiselFrontend/src/main/scala/chisel3/Data.scala
index c6d98b9c..1a931135 100644
--- a/chiselFrontend/src/main/scala/chisel3/Data.scala
+++ b/chiselFrontend/src/main/scala/chisel3/Data.scala
@@ -44,6 +44,16 @@ object SpecifiedDirection {
case (SpecifiedDirection.Unspecified, thisDirection) => thisDirection
case (SpecifiedDirection.Flip, thisDirection) => SpecifiedDirection.flip(thisDirection)
}
+
+ private[chisel3] def specifiedDirection[T<:Data](source: T)(dir: SpecifiedDirection)(implicit compileOptions: CompileOptions): T = {
+ if (compileOptions.checkSynthesizable) {
+ requireIsChiselType(source)
+ }
+ val out = source.cloneType.asInstanceOf[T]
+ out.specifiedDirection = dir
+ out
+ }
+
}
/** Resolved directions for both leaf and container nodes, only visible after
@@ -221,32 +231,18 @@ object chiselTypeOf {
*/
object Input {
def apply[T<:Data](source: T)(implicit compileOptions: CompileOptions): T = {
- if (compileOptions.checkSynthesizable) {
- requireIsChiselType(source)
- }
- val out = source.cloneType.asInstanceOf[T]
- out.specifiedDirection = SpecifiedDirection.Input
- out
+ SpecifiedDirection.specifiedDirection(source)(SpecifiedDirection.Input)
}
}
object Output {
def apply[T<:Data](source: T)(implicit compileOptions: CompileOptions): T = {
- if (compileOptions.checkSynthesizable) {
- requireIsChiselType(source)
- }
- val out = source.cloneType.asInstanceOf[T]
- out.specifiedDirection = SpecifiedDirection.Output
- out
+ SpecifiedDirection.specifiedDirection(source)(SpecifiedDirection.Output)
}
}
+
object Flipped {
def apply[T<:Data](source: T)(implicit compileOptions: CompileOptions): T = {
- if (compileOptions.checkSynthesizable) {
- requireIsChiselType(source)
- }
- val out = source.cloneType.asInstanceOf[T]
- out.specifiedDirection = SpecifiedDirection.flip(source.specifiedDirection)
- out
+ SpecifiedDirection.specifiedDirection(source)(SpecifiedDirection.flip(source.specifiedDirection))
}
}