Skip to content

Commit 03bb293

Browse files
authored
Merge pull request #1795 from verilog-to-routing/manual_moves
Manual Moves Timing
2 parents eea0df0 + 16d4c5b commit 03bb293

16 files changed

+1804
-698
lines changed

doc/src/vpr/graphics.rst

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,30 @@ Button Description Table
213213
| | | | FPGA |
214214
+-------------------+-------------------+------------------------------+------------------------------+
215215

216+
Manual Moves
217+
------------
218+
219+
The manual moves feature allows the user to specify the next move in placement. If the move is legal, blocks are swapped and the new move is shown on the architecture.
220+
221+
.. figure:: https://www.verilogtorouting.org/img/manual_move_toggle_button.png
222+
:align: center
223+
224+
To enable the feature, activate the Manual Move toggle button and press Proceed. Alternatively, the user can active the Manual Move toggle button and click on the block to be moved.
225+
226+
.. figure:: https://www.verilogtorouting.org/img/draw_manual_moves_window.png
227+
:align: center
228+
229+
On the manual move window, the user can specify the Block ID/Block name of the block to move and the To location, with the x position, y position and subtile position. For the manual move to be valid:
230+
231+
- The To location requested by the user should be within the grid's dimensions.
232+
- The block to be moved is found, valid and not fixed.
233+
- The blocks to be swapped are compatible.
234+
- The location choosen by the user is different from the block's current location.
235+
236+
If the manual move is legal, the cost summary window will display the delta cost, delta timing, delta bounding box cost and the placer's annealing decision that would result from this move.
237+
238+
.. figure:: https://www.verilogtorouting.org/img/manual_move_cost_dialog.png
239+
:align: center
240+
241+
The user can Accept or Reject the manual move based on the values provided. If accepted the block's new location is shown.
216242

vpr/main.ui

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@
192192
<property name="height">1</property>
193193
</packing>
194194
</child>
195-
<child>
195+
<child>
196196
<object class="GtkGrid" id="checkboxes">
197197
<property name="visible">True</property>
198198
<property name="can_focus">False</property>
@@ -229,8 +229,8 @@
229229
<property name="width">1</property>
230230
<property name="height">1</property>
231231
</packing>
232-
</child>
233-
<child>
232+
</child>
233+
<child>
234234
<object class="GtkCheckButton" id="clipRoutingUtil">
235235
<property name="label" translatable="yes">Clip Routing Util</property>
236236
<property name="visible">True</property>
@@ -247,14 +247,31 @@
247247
<property name="height">1</property>
248248
</packing>
249249
</child>
250+
<child>
251+
<object class="GtkCheckButton" id="manualMove">
252+
<property name="label" translatable="yes">Manual Move</property>
253+
<property name="visible">True</property>
254+
<property name="can_focus">True</property>
255+
<property name="receives_default">True</property>
256+
<property name="xalign">0</property>
257+
<property name="draw_indicator">True</property>
258+
</object>
259+
<packing>
260+
<property name="left_attach">0</property>
261+
<property name="top_attach">3</property>
262+
<property name="width">1</property>
263+
<property name="height">1</property>
264+
</packing>
265+
</child>
266+
250267
</object>
251268
<packing>
252269
<property name="left_attach">4</property>
253270
<property name="top_attach">2</property>
254271
<property name="width">1</property>
255272
<property name="height">1</property>
256273
</packing>
257-
</child>
274+
</child>
258275
<child>
259276
<placeholder/>
260277
</child>

vpr/src/draw/draw.cpp

Lines changed: 623 additions & 291 deletions
Large diffs are not rendered by default.

vpr/src/draw/draw.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# include "draw_color.h"
1515
# include "search_bar.h"
1616
# include "draw_debug.h"
17+
# include "manual_moves.h"
1718

1819
extern ezgl::application::settings settings;
1920
extern ezgl::application application;

vpr/src/draw/draw_debug.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
/** This file contains all functions reagrding the graphics related to the setting of place and route breakpoints **/
2+
#ifndef DRAW_DEBUG_H
3+
#define DRAW_DEBUG_H
4+
25
#ifndef NO_GRAPHICS
36

47
# include "breakpoint.h"
@@ -35,4 +38,6 @@ void invalid_breakpoint_entry_window(std::string error);
3538
bool valid_expression(std::string exp);
3639
void breakpoint_info_window(std::string bpDescription, BreakpointState draw_breakpoint_state, bool in_placer);
3740

38-
#endif
41+
#endif /*NO_GRAPHICS*/
42+
43+
#endif /*DRAW_DEBUG_H*/

vpr/src/draw/draw_types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
# include "vtr_color_map.h"
2828
# include "vtr_vector.h"
2929
# include "breakpoint.h"
30+
# include "manual_moves.h"
3031

3132
# include "ezgl/point.hpp"
3233
# include "ezgl/rectangle.hpp"
@@ -196,6 +197,7 @@ struct t_draw_state {
196197
int sequence_number = 0;
197198
float net_alpha = 0.1;
198199
float pres_fac = 1.;
200+
ManualMovesState manual_moves_state;
199201

200202
std::vector<Breakpoint> list_of_breakpoints;
201203

0 commit comments

Comments
 (0)