Skip to content

Commit 9dfc9dc

Browse files
author
Oron Port
committed
project constraints in dependencies
1 parent c1371ee commit 9dfc9dc

File tree

4 files changed

+10
-5
lines changed

4 files changed

+10
-5
lines changed

core/src/main/scala/dfhdl/platforms/resources/Resource.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ trait Resource extends ResourceContext:
99
private val connections = mutable.ListBuffer[Resource]()
1010
protected[resources] def connect(that: Resource): Unit =
1111
connections += that
12+
private val downstreamDeps = mutable.ListBuffer[ResourceDeps]()
13+
private[resources] def addDownstreamDep(that: ResourceDeps): Unit =
14+
downstreamDeps += that
1215
// will always return at least this resource
1316
private lazy val allConnections: List[Resource] =
1417
val visited = mutable.Set[Resource]()
@@ -24,7 +27,7 @@ trait Resource extends ResourceContext:
2427
if (res.isEmpty) List(this) else res
2528
end allConnections
2629
lazy val allSigConstraints: List[SigConstraint] =
27-
allConnections.flatMap(_.directAndOwnerSigConstraints).merge
30+
(allConnections ++ downstreamDeps).flatMap(_.directAndOwnerSigConstraints).merge
2831
owner.addResource(this)
2932
end Resource
3033

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package dfhdl.platforms.resources
22

33
trait ResourceDeps extends Resource:
4-
protected def deps: List[Resource]
4+
protected lazy val upstreamDeps: List[Resource]
55
override protected[resources] def connect(that: Resource): Unit =
6-
deps.lazyZip(that.asInstanceOf[ResourceDeps].deps).foreach {
6+
upstreamDeps.lazyZip(that.asInstanceOf[ResourceDeps].upstreamDeps).foreach {
77
case (r1, r2) => r1.connect(r2)
88
}
99
super.connect(that)
10+
for (dep <- upstreamDeps)
11+
dep.addDownstreamDep(this)

lib/src/main/scala/dfhdl/platforms/resources/DiffPair.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package dfhdl.platforms.resources
33
trait DiffPair extends ResourceDeps:
44
val pPin: IO
55
val nPin: IO
6-
protected def deps: List[Resource] = List(pPin, nPin)
6+
lazy val upstreamDeps: List[Resource] = List(pPin, nPin)

lib/src/main/scala/dfhdl/platforms/resources/IOBus.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ import dfhdl.compiler.ir.constraints
44

55
class IOBus[T <: IO](val ios: T*) extends ResourceDeps:
66
def apply(i: Int): T = ios(i)
7-
protected def deps: List[Resource] = ios.toList
7+
lazy val upstreamDeps: List[Resource] = ios.toList

0 commit comments

Comments
 (0)