diff --git a/qiskit/transpiler/passes/basis/basis_translator.py b/qiskit/transpiler/passes/basis/basis_translator.py index b7112e2f01a4..9fdce5eeead0 100644 --- a/qiskit/transpiler/passes/basis/basis_translator.py +++ b/qiskit/transpiler/passes/basis/basis_translator.py @@ -134,16 +134,19 @@ def run(self, dag): node.op.params, node.op.name, target_params, target_dag)) - # Convert target to circ and back to assign_parameters, since - # DAGCircuits won't have a ParameterTable. - from qiskit.converters import dag_to_circuit, circuit_to_dag - target_circuit = dag_to_circuit(target_dag) + if node.op.params: + # Convert target to circ and back to assign_parameters, since + # DAGCircuits won't have a ParameterTable. + from qiskit.converters import dag_to_circuit, circuit_to_dag + target_circuit = dag_to_circuit(target_dag) - target_circuit.assign_parameters( - dict(zip_longest(target_params, node.op.params)), - inplace=True) + target_circuit.assign_parameters( + dict(zip_longest(target_params, node.op.params)), + inplace=True) - bound_target_dag = circuit_to_dag(target_circuit) + bound_target_dag = circuit_to_dag(target_circuit) + else: + bound_target_dag = target_dag if (len(bound_target_dag.op_nodes()) == 1 and len(bound_target_dag.op_nodes()[0].qargs) == len(node.qargs)):