Skip to content

Commit 0fc6fbf

Browse files
committed
feat: add param [dr_random_init_order].
Signed-off-by: zarkin404 <[email protected]>
1 parent 05d9621 commit 0fc6fbf

File tree

6 files changed

+24
-4
lines changed

6 files changed

+24
-4
lines changed

src/drt/include/triton_route/TritonRoute.h

+1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ class TritonRoute
135135
void setCustomSize(int customSize);
136136
void setCustomOffset(int customOffset);
137137
void setParallelWorkers(int parallelWorkers);
138+
void setDrRandomInitOrder(bool on = true);
138139
void setSkipReroute(bool on = true);
139140
void setRerouteNetsSortMode(int mode);
140141
void setApiHost(const std::string& apiHost);

src/drt/src/TritonRoute.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ void TritonRoute::setParallelWorkers(int parallelWorkers)
176176
debug_->parallelWorkers = parallelWorkers;
177177
}
178178

179+
void TritonRoute::setDrRandomInitOrder(bool on)
180+
{
181+
debug_->drRandomInitOrder = on;
182+
}
183+
179184
void TritonRoute::setSkipReroute(bool on)
180185
{
181186
debug_->skipReroute = on;

src/drt/src/TritonRoute.i

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ set_detailed_route_debug_cmd(const char* net_name,
168168
bool pa_commit,
169169
const char* dumpDir,
170170
bool ta,
171+
bool dr_random_init_order,
171172
bool skip_reroute,
172173
int reroute_nets_sort_mode,
173174
const char* api_host,
@@ -194,6 +195,7 @@ set_detailed_route_debug_cmd(const char* net_name,
194195
router->setDebugPaEdge(pa_edge);
195196
router->setDebugPaCommit(pa_commit);
196197
router->setDebugTA(ta);
198+
router->setDrRandomInitOrder(dr_random_init_order);
197199
router->setSkipReroute(skip_reroute);
198200
router->setRerouteNetsSortMode(reroute_nets_sort_mode);
199201
router->setApiHost(api_host);

src/drt/src/TritonRoute.tcl

+6-4
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,8 @@ proc detailed_route_debug { args } {
226226
-parallel_workers -reroute_nets_sort_mode \
227227
-api_host -api_timeout -net_ordering_evaluation} \
228228
flags {-dr -maze -pa -pa_markers -pa_edge -pa_commit -dump_dr -ta \
229-
-custom_strategies -skip_reroute -net_ordering_training}
229+
-dr_random_init_order -skip_reroute -custom_strategies\
230+
-net_ordering_training}
230231

231232
sta::check_argc_eq0 "detailed_route_debug" $args
232233

@@ -238,9 +239,10 @@ proc detailed_route_debug { args } {
238239
set pa_edge [info exists flags(-pa_edge)]
239240
set pa_commit [info exists flags(-pa_commit)]
240241
set ta [info exists flags(-ta)]
241-
set custom_strategies [info exists flags(-custom_strategies)]
242+
set dr_random_init_order [info exists flags(-dr_random_init_order)]
242243
set skip_reroute [info exists flags(-skip_reroute)]
243244
set skip_sort_reroute_nets [info exists flags(-skip_sort_reroute_nets)]
245+
set custom_strategies [info exists flags(-custom_strategies)]
244246
set net_ordering_training [info exists flags(-net_ordering_training)]
245247

246248
if { [info exists keys(-net)] } {
@@ -322,8 +324,8 @@ proc detailed_route_debug { args } {
322324
drt::set_detailed_route_debug_cmd $net_name $pin_name $dr $dump_dr $pa $maze \
323325
$worker_x $worker_y $iter $custom_strategies $custom_size $custom_offset \
324326
$parallel_workers $pa_markers $pa_edge $pa_commit $dump_dir \
325-
$ta $skip_reroute $reroute_nets_sort_mode $api_host $api_timeout \
326-
$net_ordering_training $net_ordering_evaluation
327+
$ta $dr_random_init_order $skip_reroute $reroute_nets_sort_mode \
328+
$api_host $api_timeout $net_ordering_training $net_ordering_evaluation
327329
}
328330

329331
sta::define_cmd_args "pin_access" {

src/drt/src/dr/FlexDR_init.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*/
2828

2929
#include <algorithm>
30+
#include <random>
3031

3132
#include "dr/FlexDR.h"
3233
#include "frRTree.h"
@@ -2633,6 +2634,13 @@ void FlexDRWorker::route_queue_init_queue(queue<RouteQueueEntry>& rerouteQueue)
26332634
routes = customOrderRoutes;
26342635
}
26352636

2637+
if (debugSettings_->drRandomInitOrder) {
2638+
// 打乱 routes 元素顺序
2639+
std::random_device rd;
2640+
std::mt19937 g(rd());
2641+
std::shuffle(routes.begin(), routes.end(), g);
2642+
}
2643+
26362644
// 依次将 route 和 check 中的元素压入队列
26372645
route_queue_update_queue(checks, routes, rerouteQueue);
26382646
}

src/drt/src/frBaseTypes.h

+2
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ struct frDebugSettings
312312
customSize(0),
313313
customOffset(0),
314314
parallelWorkers(0),
315+
drRandomInitOrder(false),
315316
skipReroute(false),
316317
rerouteNetsSortMode(0),
317318
apiTimeout(30000),
@@ -349,6 +350,7 @@ struct frDebugSettings
349350
int customSize;
350351
int customOffset;
351352
int parallelWorkers;
353+
bool drRandomInitOrder;
352354
bool skipReroute;
353355
int rerouteNetsSortMode;
354356
std::string apiHost;

0 commit comments

Comments
 (0)