|
|
@@ -122,12 +122,9 @@ class LinearSolver(Solver):
|
|
|
for i, block in enumerate(strongComponent):
|
|
|
indexdict[block] = i
|
|
|
|
|
|
- # Get low-level dependency
|
|
|
- resolveBlock = lambda possibleDep, output_port: possibleDep if not isinstance(possibleDep, CBD) else possibleDep.getBlockByName(output_port)
|
|
|
-
|
|
|
# Get list of low-level dependencies from n inputs
|
|
|
def getBlockDependencies2(block):
|
|
|
- return (resolveBlock(port.block, port.name) for port in [block.getBlockConnectedToInput(x) for x in block.getInputPortNames()])
|
|
|
+ return (port.block for port in [x.getPreviousPortClosure() for x in block.getInputPorts()])
|
|
|
|
|
|
for i, block in enumerate(strongComponent):
|
|
|
if block.getBlockType() == "AdderBlock":
|
|
|
@@ -162,28 +159,15 @@ class LinearSolver(Solver):
|
|
|
elif block.getBlockType() == "NegatorBlock":
|
|
|
# M2 can stay 0
|
|
|
M1[i, i] = -1
|
|
|
- possibleDep = block.getBlockConnectedToInput("IN1")
|
|
|
- M1[i, indexdict[resolveBlock(possibleDep.block, possibleDep.name)]] = - 1
|
|
|
- # elif block.getBlockType() == "InputPortBlock":
|
|
|
- # # M2 can stay 0
|
|
|
- # M1[i, i] = 1
|
|
|
- # possibleDep, output_port = block.parent.getBlockConnectedToInput(block.getBlockName())
|
|
|
- # M1[i, indexdict[resolveBlock(possibleDep, output_port)]] = - 1
|
|
|
- # elif block.getBlockType() == "OutputPortBlock" or block.getBlockType() == "WireBlock":
|
|
|
- # # M2 can stay 0
|
|
|
- # M1[i, i] = 1
|
|
|
- # dblock = block.getDependencies(0)[0]
|
|
|
- # if isinstance(dblock, CBD):
|
|
|
- # oport = block.getLinksIn()['IN1'].output_port
|
|
|
- # dblock = dblock.getBlockByName(oport).getLinksIn()['IN1'].block
|
|
|
- # M1[i, indexdict[dblock]] = - 1
|
|
|
+ possibleDep = block.getInputPortByName("IN1").getPreviousPortClosure()
|
|
|
+ M1[i, indexdict[possibleDep.block]] = - 1
|
|
|
elif block.getBlockType() == "DelayBlock":
|
|
|
# If a delay is in a strong component, this is the first iteration
|
|
|
# And so the dependency is the IC
|
|
|
# M2 can stay 0 because we have an equation of the type -x = -ic <=> -x + ic = 0
|
|
|
M1[i, i] = -1
|
|
|
possibleDep = block.getBlockConnectedToInput("IC")
|
|
|
- dependency = resolveBlock(possibleDep.block, possibleDep.name)
|
|
|
+ dependency = possibleDep.block
|
|
|
assert dependency in strongComponent
|
|
|
M1[i, indexdict[dependency]] = 1
|
|
|
else:
|