diff options
| author | Jack Koenig | 2021-06-29 16:39:45 -0700 |
|---|---|---|
| committer | Jack Koenig | 2021-06-29 16:55:15 -0700 |
| commit | 25a84b5667614ea3f437b656f1939caba57e6f66 (patch) | |
| tree | d5dbd592ceed3040209bb74dfe1928b983052c08 /src/main/scala/chisel3 | |
| parent | 0531cb53d3cedaff33c2a280e34418f6af5bc6a1 (diff) | |
Change behavior of aop.Select to not include CloneModuleAsRecord
Previously, CloneModuleAsRecord clones would result in the same
BaseModule object coming up multiple times when using APIs like
.instances, .collectDeep, and .getDeep. This was not the intended
behavior and can lead to very subtle bugs.
Diffstat (limited to 'src/main/scala/chisel3')
| -rw-r--r-- | src/main/scala/chisel3/aop/Select.scala | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/main/scala/chisel3/aop/Select.scala b/src/main/scala/chisel3/aop/Select.scala index 08cf40ff..a16c415c 100644 --- a/src/main/scala/chisel3/aop/Select.scala +++ b/src/main/scala/chisel3/aop/Select.scala @@ -82,11 +82,12 @@ object Select { def instances(module: BaseModule): Seq[BaseModule] = { check(module) module._component.get match { - case d: DefModule => d.commands.collect { + case d: DefModule => d.commands.flatMap { case i: DefInstance => i.id match { - case clone: ModuleClone => clone._proto - case other => other + case _: ModuleClone => None + case other => Some(other) } + case _ => None } case other => Nil } |
