From 52168a5f3edee6c427a2bf4e1fd033259b46ac9e Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 14 Mar 2019 02:04:34 -0700 Subject: Fix PopCount width --- chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'chiselFrontend') diff --git a/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala b/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala index e87fb045..f15fb178 100644 --- a/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala +++ b/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala @@ -37,7 +37,9 @@ private[chisel3] object SeqUtils { def do_count(in: Seq[Bool])(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = in.size match { case 0 => 0.U case 1 => in.head - case n => count(in take n/2) +& count(in drop n/2) + case n => + val sum = count(in take n/2) +& count(in drop n/2) + sum(BigInt(n).bitLength - 1, 0) } /** Returns the data value corresponding to the first true predicate. -- cgit v1.2.3