File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+
2+ # Set arithmetic operator modules. Default is the first module in the list.
13set 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+
1854techmap {*}[join [lmap cell $deferred_cells { string cat " -dont_map [ lindex $cell 0] " }] " " ]
1955
2056foreach info $deferred_cells {
You can’t perform that action at this time.
0 commit comments