forked from M-Labs/artiq
transforms.interleaver: don't fail on degenerate parallel blocks.
This commit is contained in:
parent
4def561710
commit
69cdeaf706
@ -104,15 +104,17 @@ class Interleaver:
|
|||||||
target_terminator = target_block.terminator()
|
target_terminator = target_block.terminator()
|
||||||
if isinstance(target_terminator, ir.Parallel):
|
if isinstance(target_terminator, ir.Parallel):
|
||||||
target_terminator.replace_with(ir.Branch(source_block))
|
target_terminator.replace_with(ir.Branch(source_block))
|
||||||
else:
|
elif isinstance(target_terminator, (ir.Delay, ir.Branch)):
|
||||||
assert isinstance(target_terminator, (ir.Delay, ir.Branch))
|
|
||||||
target_terminator.set_target(source_block)
|
target_terminator.set_target(source_block)
|
||||||
|
else:
|
||||||
|
assert False
|
||||||
|
|
||||||
source_terminator = source_block.terminator()
|
source_terminator = source_block.terminator()
|
||||||
|
if isinstance(source_terminator, (ir.Parallel, ir.Branch)):
|
||||||
if not isinstance(source_terminator, ir.Delay):
|
|
||||||
source_terminator.replace_with(ir.Branch(source_terminator.target()))
|
source_terminator.replace_with(ir.Branch(source_terminator.target()))
|
||||||
else:
|
elif isinstance(source_terminator, ir.Return):
|
||||||
|
break
|
||||||
|
elif isinstance(source_terminator, ir.Delay):
|
||||||
old_decomp = source_terminator.decomposition()
|
old_decomp = source_terminator.decomposition()
|
||||||
if is_pure_delay(old_decomp):
|
if is_pure_delay(old_decomp):
|
||||||
if target_time_delta > 0:
|
if target_time_delta > 0:
|
||||||
@ -144,6 +146,8 @@ class Interleaver:
|
|||||||
source_terminator.interval = iodelay.Const(target_time_delta)
|
source_terminator.interval = iodelay.Const(target_time_delta)
|
||||||
else:
|
else:
|
||||||
source_terminator.replace_with(ir.Branch(source_terminator.target()))
|
source_terminator.replace_with(ir.Branch(source_terminator.target()))
|
||||||
|
else:
|
||||||
|
assert False
|
||||||
|
|
||||||
target_block = source_block
|
target_block = source_block
|
||||||
target_time = new_target_time
|
target_time = new_target_time
|
||||||
|
Loading…
Reference in New Issue
Block a user