Fix QuantumCircuit.decompose
for high-level objects
#13311
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixed some problems with
QuantumCircuit.decompose
when dealing with high-level objects (i.e. that can get synthesized byHighLevelSynthesis
).Blocks #13295 and #13301.
Details and comments
Previously, running
decompose
would first runHighLevelSynthesis
(in case no specific gates to decompose are set) and theDecompose
. This would end up decomposing high-level objects twice instead of once. In addition, specifying high-level objects by name, could end up not decomposing them at all.For example
This is now fixed by pulling HLS into
Decompose
, which iterates over each node and only applies HLS if an operation does not have a definition.