summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala
diff options
context:
space:
mode:
authorJim Lawson2017-02-03 13:56:32 -0800
committerGitHub2017-02-03 13:56:32 -0800
commit8974f749eea1a452ba732dd833376ef4283173a8 (patch)
tree038e0e673b5b212622c46d2afb359faf3b2cdb89 /chiselFrontend/src/main/scala
parent41ed27574cf871f48d4c4ddfed5285b9853b41d3 (diff)
Added vec IO tests for #104 (#480)
* Added vec IO tests for #104 * Added Vec test case for Reg of vecs * Change Vec creation to check if gen is lit (and hence needs to be declared) Fixes #104 * Fix tests (add IO())), Vec.fill() * Fix deprecated usage. * Add Binding IO() NPE fix so tests pass. * Fix style - use space consistently. * Fix style - use space consistently.
Diffstat (limited to 'chiselFrontend/src/main/scala')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala17
1 files changed, 12 insertions, 5 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
index efb30326..5f64b079 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
@@ -43,12 +43,19 @@ object Vec {
*
* @note elements are NOT assigned by default and have no value
*/
- def apply[T <: Data](n: Int, gen: T)(implicit compileOptions: CompileOptions): Vec[T] =
- new Vec(gen.chiselCloneType, n)
+ def apply[T <: Data](n: Int, gen: T): Vec[T] = macro VecTransform.apply_ngen;
+
+ def do_apply[T <: Data](n: Int, gen: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] = {
+ if ( gen.isLit ) {
+ Vec(Seq.fill(n)(gen))
+ } else {
+ new Vec(gen.chiselCloneType, n)
+ }
+ }
@deprecated("Vec argument order should be size, t; this will be removed by the official release", "chisel3")
- def apply[T <: Data](gen: T, n: Int)(implicit compileOptions: CompileOptions): Vec[T] =
- apply(n, gen)
+ def apply[T <: Data](gen: T, n: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
+ do_apply(n, gen)
/** Creates a new [[Vec]] composed of elements of the input Seq of [[Data]]
* nodes.
@@ -233,7 +240,7 @@ sealed class Vec[T <: Data] private (gen: => T, val length: Int)
}
override def cloneType: this.type = {
- new Vec(gen, length).asInstanceOf[this.type]
+ new Vec(gen.cloneType, length).asInstanceOf[this.type]
}
private[chisel3] def toType: String = s"${sample_element.toType}[$length]"