File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -140,4 +140,20 @@ void CircuitTopology::print_gates_with_prevs() {
140140 }
141141}
142142
143+ /* *
144+ * @brief HOTFIX map<old, new>
145+ *
146+ * @param map
147+ */
148+ void Gate::set_prevs (std::unordered_map<size_t , size_t > const & map) {
149+ for (size_t i = 0 ; i < _prevs.size (); i++) {
150+ _prevs[i] = map.at (_prevs[i]);
151+ }
152+ }
153+ void Gate::set_nexts (std::unordered_map<size_t , size_t > const & map) {
154+ for (size_t i = 0 ; i < _nexts.size (); i++) {
155+ _nexts[i] = map.at (_nexts[i]);
156+ }
157+ }
158+
143159} // namespace qsyn::duostra
Original file line number Diff line number Diff line change @@ -38,10 +38,13 @@ class Gate {
3838 qcir::GateRotationCategory get_type () const { return _type; }
3939 dvlab::Phase get_phase () const { return _phase; }
4040
41+ void set_id (size_t id) { _id = id; }
4142 void set_type (qcir::GateRotationCategory t) { _type = t; }
4243 void set_phase (dvlab::Phase p) { _phase = p; }
4344 void add_prev (size_t prev_gate_id);
4445 void add_next (size_t next_gate_id);
46+ void set_prevs (std::unordered_map<size_t , size_t > const &);
47+ void set_nexts (std::unordered_map<size_t , size_t > const &);
4548
4649 bool is_available (std::unordered_map<size_t , size_t > const &) const ;
4750 bool is_swapped () const { return _swap; }
Original file line number Diff line number Diff line change @@ -79,6 +79,15 @@ void Duostra::make_dependency() {
7979 }
8080 all_gates.emplace_back (std::move (temp_gate));
8181 }
82+ std::unordered_map<size_t , size_t > reordered_map;
83+ for (size_t i = 0 ; i < all_gates.size (); i++) {
84+ reordered_map[all_gates[i].get_id ()] = i;
85+ }
86+ for (size_t i = 0 ; i < all_gates.size (); i++) {
87+ all_gates[i].set_id (reordered_map[all_gates[i].get_id ()]);
88+ all_gates[i].set_prevs (reordered_map);
89+ all_gates[i].set_nexts (reordered_map);
90+ }
8291 _dependency = make_shared<DependencyGraph>(_logical_circuit->get_num_qubits (), std::move (all_gates));
8392}
8493
Original file line number Diff line number Diff line change 1+ device read benchmark/topology/casablanca.layout
2+ qcir qubit add 3
3+ qcir gate add h 0
4+ qcir gate add h 1 --prepend
5+ qcir gate add cz 0 2 --prepend
6+ qcir gate add cz 1 2 --prepend
7+ qcir gate add h 0 --prepend
8+ qcir gate add h 1 --prepend
9+ qcir gate add h 2 --prepend
10+ qcir gate add h 2 --prepend
11+ qcir print -d
12+ duostra -c
13+ qcir new
14+ qcir qubit add 3
15+ qcir gate add cx 2 1
16+ qcir gate add cx 2 0
17+ qc2zx
18+ zxopt
19+ zx2qc
20+ qcir print -d
21+ duostra -c
22+
23+ quit -f
Original file line number Diff line number Diff line change 1+ qsyn> device read benchmark/topology/casablanca.layout
2+
3+ qsyn> qcir qubit add 3
4+
5+ qsyn> qcir gate add h 0
6+
7+ qsyn> qcir gate add h 1 --prepend
8+
9+ qsyn> qcir gate add cz 0 2 --prepend
10+
11+ qsyn> qcir gate add cz 1 2 --prepend
12+
13+ qsyn> qcir gate add h 0 --prepend
14+
15+ qsyn> qcir gate add h 1 --prepend
16+
17+ qsyn> qcir gate add h 2 --prepend
18+
19+ qsyn> qcir gate add h 2 --prepend
20+
21+ qsyn> qcir print -d
22+ Q 0 - h( 4)----------------------------------cz( 2)-- h( 0)-
23+ Q 1 - h( 5)------------------cz( 3)-- h( 1)-
24+ Q 2 - h( 7)-- h( 6)----------cz( 3)----------cz( 2)-
25+
26+ qsyn> duostra -c
27+ Routing...
28+
29+ Checking...
30+
31+ Duostra Result:
32+
33+ Scheduler: search
34+ Router: duostra
35+ Placer: dfs
36+
37+ Mapping Depth: 13
38+ Total Time: 16
39+ #SWAP: 1
40+
41+
42+ qsyn> qcir new
43+
44+ qsyn> qcir qubit add 3
45+
46+ qsyn> qcir gate add cx 2 1
47+
48+ qsyn> qcir gate add cx 2 0
49+
50+ qsyn> qc2zx
51+
52+ qsyn> zxopt
53+ [error] Unknown command!! (zxopt)
54+
55+ qsyn> zx2qc
56+ [error] ZXGraph 0 is not extractable because it is not graph-like!!
57+
58+ qsyn> qcir print -d
59+ Q 0 -------------------------cx( 1)-
60+ Q 1 ---------cx( 0)-
61+ Q 2 ---------cx( 0)----------cx( 1)-
62+
63+ qsyn> duostra -c
64+ Routing...
65+
66+ Checking...
67+
68+ Duostra Result:
69+
70+ Scheduler: search
71+ Router: duostra
72+ Placer: dfs
73+
74+ Mapping Depth: 10
75+ Total Time: 10
76+ #SWAP: 1
77+
78+
79+ qsyn>
80+ qsyn> quit -f
81+
You can’t perform that action at this time.
0 commit comments