Skip to content

Commit e73874c

Browse files
committed
Added ALU module reordering for SYNTH_WRAPPED_OPERATROS.
- New envars: SYNTH_WRAPPED_REORDER_ADDER, SYNTH_WRAPPED_REORDER_MULTIPLIER Signed-off-by: Jaehyun Kim <[email protected]>
1 parent 1f4e76e commit e73874c

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

flow/scripts/synth_wrap_operators.tcl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
2+
# Set arithmetic operator modules. Default is the first module in the list.
13
set deferred_cells {
24
{
35
\$alu
@@ -15,6 +17,40 @@ set deferred_cells {
1517
}
1618
}
1719

20+
# Reorder the modules based on envar
21+
proc reorder_deferred_cells {deferred_cells_var index env_var} {
22+
upvar $deferred_cells_var deferred_cells
23+
24+
if {![info exists ::env($env_var)]} {
25+
return
26+
}
27+
28+
set cell_def [lindex $deferred_cells $index]
29+
30+
# Build lookup dict
31+
set choice_map {}
32+
foreach choice [lrange $cell_def 2 end] {
33+
dict set choice_map [lindex $choice 0] $choice
34+
}
35+
36+
# Build new choices
37+
set new_choices {}
38+
foreach name [split $::env($env_var)] {
39+
if {[dict exists $choice_map $name]} {
40+
lappend new_choices [dict get $choice_map $name]
41+
} else {
42+
puts "Warning: Unknown choice '$name' ignored for $env_var"
43+
}
44+
}
45+
46+
# Replace cell
47+
lset deferred_cells $index [linsert $new_choices 0 {*}[lrange $cell_def 0 1]]
48+
}
49+
50+
# Apply custom orders
51+
reorder_deferred_cells deferred_cells 0 SYNTH_WRAPPED_REORDER_ADDER
52+
reorder_deferred_cells deferred_cells 1 SYNTH_WRAPPED_REORDER_MULTIPLIER
53+
1854
techmap {*}[join [lmap cell $deferred_cells { string cat "-dont_map [lindex $cell 0]" }] " "]
1955

2056
foreach info $deferred_cells {

0 commit comments

Comments
 (0)