OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [designs/] [leon3-clock-gate/] [lconfig.tk] - Rev 2

Compare with Previous | Blame | View Log

# FILE: header.tk
# This file is boilerplate TCL/TK function definitions for 'make xconfig'.
#
# CHANGES
# =======
#
# 8 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
# - Remove unused do_cmd function (part of the 2.0 sound support).
# - Arrange buttons in three columns for better screen fitting.
# - Add CONSTANT_Y, CONSTANT_M, CONSTANT_N for commands like:
#     dep_tristate 'foo' CONFIG_FOO m
#
# 23 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
# - Shut vfix the hell up.
#
# 24 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
# - Improve the exit message (Jeff Ronne).

#
# This is a handy replacement for ".widget cget" that requires neither tk4
# nor additional source code uglification.
#
proc cget { w option } {
        return "[lindex [$w configure $option] 4]"
}

#
# Function to compensate for broken config.in scripts like the sound driver,
# which make dependencies on variables that are never even conditionally
# defined.
#
proc vfix { var } {
        global $var
        if [ catch {eval concat $$var} ] {
                set $var 4
        }
}

#
# Constant values used by certain dep_tristate commands.
#
set CONSTANT_Y 1
set CONSTANT_M 2
set CONSTANT_N 0
set CONSTANT_E 4

#
# Create a "reference" object to steal colors from.
#
button .ref

#
# On monochrome displays, -disabledforeground is blank by default; that's
# bad.  Fill it with -foreground instead.
#
if { [cget .ref -disabledforeground] == "" } {
        .ref configure -disabledforeground [cget .ref -foreground]
}


#
# Define some macros we will need to parse the config.in file.
#

proc mainmenu_name { text } {
        wm title . "$text"
}

proc menu_option { w menu_num text } {
        global menus_per_column
        global processed_top_level
        set processed_top_level [expr $processed_top_level + 1]
        if { $processed_top_level <= $menus_per_column } then {
            set myframe left
        } elseif { $processed_top_level <= [expr 2 * $menus_per_column] } then {
            set myframe middle
        } else {
            set myframe right
        } 
        button .f0.x$menu_num -anchor w -text "$text" \
            -command "$w .$w \"$text\""
        pack .f0.x$menu_num -pady 0 -side top -fill x -in .f0.$myframe
}

proc load_configfile { w title func } {
        catch {destroy $w}
        toplevel $w -class Dialog
        global loadfile
        frame $w.x
        label $w.bm -bitmap questhead
        pack  $w.bm -pady 10 -side top -padx 10
        label $w.x.l -text "Enter filename:" -relief raised
        entry $w.x.x -width 35 -relief sunken -borderwidth 2 \
                -textvariable loadfile
        pack $w.x.l $w.x.x -anchor w -side left
        pack $w.x -side top -pady 10
        wm title $w "$title" 

        set oldFocus [focus]
        frame $w.f
        button $w.f.back -text "OK" -width 20 \
                -command "destroy $w; focus $oldFocus;$func .fileio"
        button $w.f.canc -text "Cancel" \
                -width 20 -command "destroy $w; focus $oldFocus"
        pack $w.f.back $w.f.canc -side left -pady 10 -padx 45
        pack $w.f -pady 10 -side bottom -padx 10 -anchor w
        focus $w
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        wm geometry $w +$winx+$winy
}

bind all <Alt-q> {maybe_exit .maybe}

proc maybe_exit { w } {
        catch {destroy $w}
        toplevel $w -class Dialog
        label $w.bm -bitmap questhead
        pack  $w.bm -pady 10 -side top -padx 10
        message $w.m -width 400 -aspect 300 \
                -text "Changes will be lost.  Are you sure?" -relief flat
        pack  $w.m -pady 10 -side top -padx 10
        wm title $w "Are you sure?" 

        set oldFocus [focus]
        frame $w.f
        button $w.f.back -text "OK" -width 20 \
                -command "exit 1"
        button $w.f.canc -text "Cancel" \
                -width 20 -command "destroy $w; focus $oldFocus"
        pack $w.f.back $w.f.canc -side left -pady 10 -padx 45
        pack $w.f -pady 10 -side bottom -padx 10 -anchor w
        bind $w <Return> "exit 1"
        bind $w <Escape> "destroy $w; focus $oldFocus"
        focus $w
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        wm geometry $w +$winx+$winy
}

proc read_config_file { w } {
        global loadfile
        if { [string length $loadfile] != 0 && [file readable $loadfile] == 1 } then {
                read_config $loadfile
        } else {
                catch {destroy $w}
                toplevel $w -class Dialog
                message $w.m -width 400 -aspect 300 -text \
                        "Unable to read file $loadfile" \
                         -relief raised 
                label $w.bm -bitmap error
                pack $w.bm $w.m -pady 10 -side top -padx 10
                wm title $w "Xconfig Internal Error" 

                set oldFocus [focus]
                frame $w.f
                button $w.f.back -text "Bummer" \
                        -width 10 -command "destroy $w; focus $oldFocus"
                pack $w.f.back -side bottom -pady 10 -anchor s
                pack $w.f -pady 10 -side top -padx 10 -anchor s
                focus $w
                global winx; global winy
                set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
                wm geometry $w +$winx+$winy
        }
}

proc write_config_file  { w } {
        global loadfile
        if { [string length $loadfile] != 0 
                && ([file writable $loadfile] == 1 || ([file exists $loadfile] == 0 && [file writable [file dirname $loadfile]] == 1)) } then {
                writeconfig $loadfile .null
        } else {
                catch {destroy $w}
                toplevel $w -class Dialog
                message $w.m -width 400 -aspect 300 -text \
                        "Unable to write file $loadfile" \
                         -relief raised 
                label $w.bm -bitmap error
                pack $w.bm $w.m -pady 10 -side top -padx 10
                wm title $w "Xconfig Internal Error" 

                set oldFocus [focus]
                frame $w.f
                button $w.f.back -text "OK" \
                        -width 10 -command "destroy $w; focus $oldFocus"
                pack $w.f.back -side bottom -pady 10 -anchor s
                pack $w.f -pady 10 -side top -padx 10 -anchor s
                focus $w
                global winx; global winy
                set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
                wm geometry $w +$winx+$winy
        }
}

proc read_config { filename } {
        set file1 [open $filename r]
        clear_choices
        while { [gets $file1 line] >= 0} {
                if [regexp {([0-9A-Za-z_]+)=([ynm])} $line foo var value] {
                        if { $value == "y" } then { set cmd "global $var; set $var 1" }
                        if { $value == "n" } then { set cmd "global $var; set $var 0" }
                        if { $value == "m" } then { set cmd "global $var; set $var 2" }
                        eval $cmd
                }
                if [regexp {# ([0-9A-Za-z_]+) is not set} $line foo var] {
                        set cmd "global $var; set $var 0"
                        eval $cmd
                }
                if [regexp {([0-9A-Za-z_]+)=([0-9A-Fa-f]+)} $line foo var value] {
                        set cmd "global $var; set $var $value"
                        eval $cmd
                }
                if [regexp {([0-9A-Za-z_]+)="([^"]*)"} $line foo var value] {
                        set cmd "global $var; set $var \"$value\""
                        eval $cmd
                }
        }
        close $file1
        update_choices
        update_mainmenu
}
proc write_comment { file1 file2 text } {
        puts $file1 ""
        puts $file1 "#"
        puts $file1 "# $text"
        puts $file1 "#"
        puts $file2 "/*"
        puts $file2 " * $text"
        puts $file2 " */"
}

proc effective_dep { deplist } {
        global CONFIG_MODULES
        set depend 1
        foreach i $deplist {
                if {$i == 0} then {set depend 0}
                if {$i == 2 && $depend == 1} then {set depend 2}
        }
        if {$depend == 2 && $CONFIG_MODULES == 0} then {set depend 0}
        return $depend
}

proc sync_tristate { var dep } {
        global CONFIG_MODULES
        if {$dep == 0 && ($var == 1 || $var == 2)} then {
                set var 0
        } elseif {$dep == 2 && $var == 1} then {
                set var 2
        } elseif {$var == 2 && $CONFIG_MODULES == 0} then {
                if {$dep == 1} then {set var 1} else {set var 0}
        }
        return $var
}

proc sync_bool { var dep modset } {
        set var [sync_tristate $var $dep]
        if {$dep == 2 && $var == 2} then {
                set var $modset
        }
        return $var
}

proc write_tristate { file1 file2 varname variable deplist modset } {
        set variable [sync_tristate $variable [effective_dep $deplist]]
        if { $variable == 2 } \
                then { set variable $modset }
        if { $variable == 1 } \
                then { puts $file1 "$varname=y"; \
                       puts $file2 "#define $varname 1" } \
        elseif { $variable == 2 } \
                then { puts $file1 "$varname=m"; \
                       puts $file2 "#undef  $varname"; \
                       puts $file2 "#define ${varname}_MODULE 1" } \
        elseif { $variable == 0 } \
                then { puts $file1 "# $varname is not set"; \
                       puts $file2 "#undef  $varname"} \
        else { \
            puts stdout "ERROR - Attempting to write value for unconfigured variable ($varname)." \
        }
}

proc write_int { file1 file2 varname variable dep } {
        if { $dep == 0 } \
                then { puts $file1 "# $varname is not set"; \
                       puts $file2 "#undef  $varname"} \
        else {
                puts $file1 "$varname=$variable"; \
                puts $file2 "#define $varname ($variable)"; \
        }
}

proc write_hex { file1 file2 varname variable dep } {
        if { $dep == 0 } \
                then { puts $file1 "# $varname is not set"; \
                       puts $file2 "#undef  $varname"} \
        else {
                puts $file1 "$varname=$variable"; \
                puts -nonewline $file2 "#define $varname "; \
                puts $file2 [exec echo $variable | sed s/^0\[xX\]//]; \
        }
}

proc write_string { file1 file2 varname variable dep } {
        if { $dep == 0 } \
                then { puts $file1 "# $varname is not set"; \
                       puts $file2 "#undef  $varname"} \
        else {
                puts $file1 "$varname=\"$variable\""; \
                puts $file2 "#define $varname \"$variable\""; \
        }
}

proc option_name {w mnum line text helpidx} {
        button $w.x$line.l -text "$text" -relief groove -anchor w
        $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \
                                -activeback [cget $w.x$line.l -bg]
        button $w.x$line.help -text "Help" -relief raised \
                -command "dohelp .dohelp $helpidx .menu$mnum"
        pack $w.x$line.help -side right -fill y
        pack $w.x$line.l -side right -fill both -expand on
}

proc toggle_switch2 {w mnum line text variable} {
        frame $w.x$line -relief sunken
        radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \
                -relief groove -width 2 -command "update_active"
#       radiobutton $w.x$line.m -text "-"  -variable $variable -value 2 \
#               -relief groove -width 2 -command "update_active"
        radiobutton $w.x$line.n -text "n"  -variable $variable -value 0 \
                -relief groove -width 2 -command "update_active"

        option_name $w $mnum $line $text $variable

        pack $w.x$line.n $w.x$line.y -side right -fill y
}

proc toggle_switch3 {w mnum line text variable} {
        frame $w.x$line -relief sunken
        radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \
                -relief groove -width 2 -command "update_active"
        radiobutton $w.x$line.m -text "m"  -variable $variable -value 2 \
                -relief groove -width 2 -command "update_active"
        radiobutton $w.x$line.n -text "n"  -variable $variable -value 0 \
                -relief groove -width 2 -command "update_active"

        option_name $w $mnum $line $text $variable

        global CONFIG_MODULES
        if {($CONFIG_MODULES == 0)} then {
                $w.x$line.m configure -state disabled
        }
        pack $w.x$line.n $w.x$line.m $w.x$line.y -side right -fill y
}

proc bool {w mnum line text variable} {
        toggle_switch2 $w $mnum $line $text $variable
#       $w.x$line.m configure -state disabled
        pack $w.x$line -anchor w -fill both -expand on
}

proc tristate {w mnum line text variable } {
        toggle_switch3 $w $mnum $line $text $variable
        pack $w.x$line -anchor w -fill both -expand on
}

proc dep_tristate {w mnum line text variable } {
        tristate $w $mnum $line $text $variable
}

proc dep_bool {w mnum line text variable } {
        bool $w $mnum $line $text $variable
}

proc int { w mnum line text variable } {
        frame $w.x$line
        entry $w.x$line.x -width 11 -relief sunken -borderwidth 2 \
                -textvariable $variable
        option_name $w $mnum $line $text $variable
        pack $w.x$line.x -anchor w -side right -fill y
        pack $w.x$line -anchor w -fill both -expand on
}

proc hex { w mnum line text variable } {
        int $w $mnum $line $text $variable
}

proc istring { w mnum line text variable } {
        frame $w.x$line
        entry $w.x$line.x -width 18 -relief sunken -borderwidth 2 \
                -textvariable $variable
        option_name $w $mnum $line $text $variable
        pack $w.x$line.x -anchor w -side right -fill y
        pack $w.x$line -anchor w -fill both -expand on
}

proc minimenu { w mnum line text variable helpidx } {
        frame $w.x$line
        menubutton $w.x$line.x -textvariable $variable -menu \
                $w.x$line.x.menu -relief raised \
                -anchor w
        option_name $w $mnum $line $text $helpidx
        pack $w.x$line.x -anchor w -side right -fill y
        pack $w.x$line -anchor w -fill both -expand on
}

proc menusplit {w m n} {
        if { $n > 2 } then {
                update idletasks
                set menuoptsize [expr [$m yposition 2] - [$m yposition 1]]   
                set maxsize [winfo screenheight $w]
                set splitpoint [expr $maxsize * 4 / 5 / $menuoptsize - 1]
                for {set i [expr $splitpoint + 1]} {$i <= $n} {incr i $splitpoint} {
                        $m entryconfigure $i -columnbreak 1
                }
        }
}

proc menutitle {text menu w} {
        wm title $w "$text"
}

proc submenu { w mnum line text subnum } {
        frame $w.x$line
        button $w.x$line.l -text "" -width 9 -relief groove
        $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \
                -activeback [cget $w.x$line.l -bg] -state disabled
        button $w.x$line.m -text "$text" -relief raised -anchor w \
                -command "catch {destroy .menu$subnum}; menu$subnum .menu$subnum \"$text\""
        pack $w.x$line.l -side left -fill both
        pack $w.x$line.m -anchor w -side right -fill both -expand on
        pack $w.x$line -anchor w -fill both -expand on
}

proc comment {w mnum line text } {
        frame $w.x$line
        button $w.x$line.l -text "" -width 15 -relief groove
        $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \
                -activeback [cget $w.x$line.l -bg] -state disabled
        button $w.x$line.m -text "$text" -relief groove -anchor w
        $w.x$line.m configure -activefore [cget $w.x$line.m -fg] \
                -activeback [cget $w.x$line.m -bg]
        pack $w.x$line.l -side left -fill both
        pack $w.x$line.m -anchor w -side right -fill both -expand on
        pack $w.x$line -anchor w -fill both -expand on
}

proc readhelp {tag fn}  {
        set message ""
        set b 0
        if { [file readable $fn] == 1} then {
                set fhandle [open $fn r]
                while {[gets $fhandle inline] >= 0} {
                        if { $b == 0 } {
                                if { [regexp $tag $inline ] } {
                                        set b 1
                                        set message "$inline:\n"
                                }
                        } else {
                                if { [regexp {^[^ \t]} $inline]} {
                                        break
                                }
                                set message "$message\n$inline"
                        }
                }
                close $fhandle
        }
        return $message
}

proc dohelp {w var parent}  {
        catch {destroy $w}
        toplevel $w -class Dialog

        set filefound 0
        set found 0
        set lineno 0

        if { [file readable config.help] == 1} then {
                set filefound 1
                # First escape sed regexp special characters in var:
                set var [exec echo "$var" | sed s/\[\]\[\/.^$*\]/\\\\&/g]
                # Now pick out right help text:
                set message [readhelp $var config.help]
                set found [expr [string length "$message"] > 0]
        }

        frame $w.f1
        pack $w.f1 -fill both -expand on

        # Do the OK button
        #
        set oldFocus [focus]
        frame $w.f2
        button $w.f2.ok -text "OK" \
                -width 10 -command "destroy $w; catch {focus $oldFocus}"
        pack $w.f2.ok -side bottom -pady 6 -anchor n
        pack $w.f2 -side bottom -padx 10 -anchor s

        scrollbar $w.f1.vscroll -command "$w.f1.canvas yview"
        pack $w.f1.vscroll -side right -fill y

        canvas $w.f1.canvas -relief flat -borderwidth 0 \
                -yscrollcommand "$w.f1.vscroll set"
        frame $w.f1.f
        pack $w.f1.canvas -side right -fill y -expand on

        if { $found == 0 } then {
                if { $filefound == 0 } then {
                message $w.f1.f.m -width 750 -aspect 300 -relief flat -text \
                        "No help available - unable to open file config.help."
                } else {
                message $w.f1.f.m -width 400 -aspect 300 -relief flat -text \
                        "No help available for $var"
                }
                label $w.f1.bm -bitmap error
                wm title $w "RTFM"
        } else {
                text $w.f1.f.m -width 73 -relief flat -wrap word
                $w.f1.f.m insert 0.0 $message
                $w.f1.f.m conf -state disabled -height [$w.f1.f.m index end]

                label $w.f1.bm -bitmap info
                wm title $w "Configuration help" 
        }
        pack $w.f1.f.m -side left
        pack $w.f1.bm $w.f1.f -side left -padx 10

        focus $w
        set winx [expr [winfo x $parent]+20]
        set winy [expr [winfo y $parent]+20]
        wm geometry $w +$winx+$winy
        set sizok [expr [winfo reqheight $w.f2.ok] + 12]
        set maxy [expr [winfo screenheight .] * 3 / 4]
        set canvtotal [winfo reqheight $w.f1.f.m]
        if [expr $sizok + $canvtotal < $maxy] {
                set sizy $canvtotal
        } else {
                set sizy [expr $maxy - $sizok]
        }
        $w.f1.canvas configure -height $sizy -width [winfo reqwidth $w.f1.f.m] \
                -scrollregion "0 0 [winfo reqwidth $w.f1.f.m] \
                        [winfo reqheight $w.f1.f.m]"
        $w.f1.canvas create window 0 0 -anchor nw -window $w.f1.f
        update idletasks

        set maxy [winfo screenheight .]
        if [expr $sizok + $canvtotal < $maxy] {
                set sizy [expr $sizok + $canvtotal]
        } else {
                set sizy $maxy
        }
        wm maxsize $w [winfo width $w] $sizy
}

bind all <Alt-s> { catch {exec cp -f .config .config.old}; \
                writeconfig .config config.h; wrapup .wrap }

proc wrapup {w }  {
        catch {destroy $w}
        toplevel $w -class Dialog

        global CONFIG_MODVERSIONS; vfix CONFIG_MODVERSIONS
        message $w.m -width 460 -aspect 300 -relief raised -text \
                "End of design configuration. "
        label $w.bm -bitmap info
        pack $w.bm $w.m -pady 10 -side top -padx 10
        wm title $w "LEON build instructions" 

        set oldFocus [focus]
        frame $w.f
        button $w.f.back -text "OK" \
                -width 10 -command "exit 2"
        pack $w.f.back -side bottom -pady 10 -anchor s
        pack $w.f -pady 10 -side top -padx 10 -anchor s
        focus $w
        bind $w <Return> "exit 2"
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        wm geometry $w +$winx+$winy

}

proc unregister_active {num} {
        global active_menus
        set index [lsearch -exact $active_menus $num]
        if {$index != -1} then {set active_menus [lreplace $active_menus $index $index]}
}

proc update_active {} {
        global active_menus total_menus
        set max 0
        if {[llength $active_menus] > 0} then {
                set max [lindex $active_menus end]
                update_define [toplevel_menu [lindex $active_menus 0]] $max 0
        }
        foreach i $active_menus {
                if {[winfo exists .menu$i] == 0} then {
                        unregister_active $i
                } else {
                        update_menu$i
                }
        }
        update_define [expr $max + 1] $total_menus 1
        update_mainmenu
}

proc configure_entry {w option items} {
        foreach i $items {
                $w.$i configure -state $option
        }
}

proc validate_int {name val default} {
        if {([exec echo $val | sed s/^-//g | tr -d \[:digit:\] ] != "")} then {
                global $name; set $name $default
        }
}

proc validate_hex {name val default} {
        if {([exec echo $val | tr -d \[:xdigit:\] ] != "")} then {
                global $name; set $name $default
        }
}

proc update_define {first last allow_update} {
        for {set i $first} {$i <= $last} {incr i} {
                update_define_menu$i
                if {$allow_update == 1} then update
        }
}

#
# Next set up the particulars for the top level menu, and define a few
# buttons which we will stick down at the bottom.
#

frame .f0 
frame .f0.left
frame .f0.middle
frame .f0.right

set active_menus [list]
set processed_top_level 0
set ARCH sparc
set menus_per_column 4
set total_menus 24

proc toplevel_menu {num} {
        if {$num == 4} then {return 3}
        if {$num == 5} then {return 3}
        if {$num == 6} then {return 3}
        if {$num == 7} then {return 3}
        if {$num == 8} then {return 3}
        if {$num == 9} then {return 3}
        if {$num == 10} then {return 3}
        if {$num == 14} then {return 13}
        if {$num == 15} then {return 14}
        if {$num == 16} then {return 14}
        if {$num == 17} then {return 14}
        if {$num == 18} then {return 13}
        if {$num == 19} then {return 13}
        if {$num == 20} then {return 13}
        if {$num == 21} then {return 13}
        if {$num == 22} then {return 13}
        if {$num == 23} then {return 13}
        return $num
}

mainmenu_name "LEON3MP Design Configuration"
menu_option menu1 1 "Synthesis      "
proc menu1 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 1}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 1]]
        message $w.m -width 400 -aspect 300 -text \
                "Synthesis      "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Synthesis      " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 1; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 1; menu2 .menu2 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 1"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 1; menu0 .menu0 \"$title\""
        $w.f.prev configure -state disabled
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        global tmpvar_0
        minimenu $w.config.f 1 0 "Target technology                           " tmpvar_0 CONFIG_SYN_INFERRED
        menu $w.config.f.x0.x.menu -tearoffcommand "menutitle \"Target technology                           \""
        $w.config.f.x0.x.menu add radiobutton -label "Inferred" -variable tmpvar_0 -value "Inferred" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Altera-Stratix" -variable tmpvar_0 -value "Altera-Stratix" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Altera-StratixII" -variable tmpvar_0 -value "Altera-StratixII" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Altera-StratixIII" -variable tmpvar_0 -value "Altera-StratixIII" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Altera-CycloneIII" -variable tmpvar_0 -value "Altera-CycloneIII" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Altera-Others" -variable tmpvar_0 -value "Altera-Others" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Actel-Axcelerator" -variable tmpvar_0 -value "Actel-Axcelerator" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Actel-Proasic" -variable tmpvar_0 -value "Actel-Proasic" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Actel-ProasicPlus" -variable tmpvar_0 -value "Actel-ProasicPlus" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Actel-Proasic3" -variable tmpvar_0 -value "Actel-Proasic3" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Aeroflex-UT025CRH" -variable tmpvar_0 -value "Aeroflex-UT025CRH" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Atmel-ATC18" -variable tmpvar_0 -value "Atmel-ATC18" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Custom1" -variable tmpvar_0 -value "Custom1" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "eASIC90" -variable tmpvar_0 -value "eASIC90" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "IHP25" -variable tmpvar_0 -value "IHP25" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "IHP25RH" -variable tmpvar_0 -value "IHP25RH" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Lattice-EC/ECP/XP" -variable tmpvar_0 -value "Lattice-EC/ECP/XP" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Quicklogic-Eclipse" -variable tmpvar_0 -value "Quicklogic-Eclipse" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Peregrine" -variable tmpvar_0 -value "Peregrine" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T" -variable tmpvar_0 -value "RH-LIB18T" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "RH-UMC" -variable tmpvar_0 -value "RH-UMC" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex" -variable tmpvar_0 -value "Xilinx-Virtex" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-VirtexE" -variable tmpvar_0 -value "Xilinx-VirtexE" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex2" -variable tmpvar_0 -value "Xilinx-Virtex2" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "UMC18" -variable tmpvar_0 -value "UMC18" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active"
        menusplit $w $w.config.f.x0.x.menu 31
        global tmpvar_1
        minimenu $w.config.f 1 1 "Memory Library                           " tmpvar_1 CONFIG_MEM_INFERRED
        menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library                           \""
        $w.config.f.x1.x.menu add radiobutton -label "Inferred" -variable tmpvar_1 -value "Inferred" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "UMC18" -variable tmpvar_1 -value "UMC18" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "RH-UMC" -variable tmpvar_1 -value "RH-UMC" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "Artisan" -variable tmpvar_1 -value "Artisan" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "Custom1" -variable tmpvar_1 -value "Custom1" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "Virage" -variable tmpvar_1 -value "Virage" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "Virage-TSMC90" -variable tmpvar_1 -value "Virage-TSMC90" -command "update_active"
        menusplit $w $w.config.f.x1.x.menu 7
        bool $w.config.f 1 2 "Infer RAM" CONFIG_SYN_INFER_RAM
        bool $w.config.f 1 3 "Infer pads" CONFIG_SYN_INFER_PADS
        bool $w.config.f 1 4 "Disable asynchronous reset" CONFIG_SYN_NO_ASYNC
        bool $w.config.f 1 5 "Enable scan support       " CONFIG_SYN_SCAN



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu1 {} {
        global CONFIG_SYN_INFERRED
        global CONFIG_SYN_CUSTOM1
        global CONFIG_SYN_ATC18
        global CONFIG_SYN_TSMC90
        global CONFIG_SYN_UMC
        global CONFIG_SYN_RHUMC
        global CONFIG_SYN_ARTISAN
        if {($CONFIG_SYN_INFERRED == 1 || $CONFIG_SYN_CUSTOM1 == 1 || $CONFIG_SYN_ATC18 == 1 || $CONFIG_SYN_TSMC90 == 1 || $CONFIG_SYN_UMC == 1 || $CONFIG_SYN_RHUMC == 1 || $CONFIG_SYN_ARTISAN == 1)} then {configure_entry .menu1.config.f.x1 normal {x l}} else {configure_entry .menu1.config.f.x1 disabled {x l}}
        global CONFIG_SYN_INFER_RAM
        if {($CONFIG_SYN_INFERRED != 1)} then {
        configure_entry .menu1.config.f.x2 normal {n l y}} else {configure_entry .menu1.config.f.x2 disabled {y n l}}
        global CONFIG_SYN_INFER_PADS
        if {($CONFIG_SYN_INFERRED != 1)} then {
        configure_entry .menu1.config.f.x3 normal {n l y}} else {configure_entry .menu1.config.f.x3 disabled {y n l}}
}


proc update_define_menu1 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global tmpvar_0
        global CONFIG_SYN_INFERRED
        if {$tmpvar_0 == "Inferred"} then {set CONFIG_SYN_INFERRED 1} else {set CONFIG_SYN_INFERRED 0}
        global CONFIG_SYN_STRATIX
        if {$tmpvar_0 == "Altera-Stratix"} then {set CONFIG_SYN_STRATIX 1} else {set CONFIG_SYN_STRATIX 0}
        global CONFIG_SYN_STRATIXII
        if {$tmpvar_0 == "Altera-StratixII"} then {set CONFIG_SYN_STRATIXII 1} else {set CONFIG_SYN_STRATIXII 0}
        global CONFIG_SYN_STRATIXIII
        if {$tmpvar_0 == "Altera-StratixIII"} then {set CONFIG_SYN_STRATIXIII 1} else {set CONFIG_SYN_STRATIXIII 0}
        global CONFIG_SYN_CYCLONEIII
        if {$tmpvar_0 == "Altera-CycloneIII"} then {set CONFIG_SYN_CYCLONEIII 1} else {set CONFIG_SYN_CYCLONEIII 0}
        global CONFIG_SYN_ALTERA
        if {$tmpvar_0 == "Altera-Others"} then {set CONFIG_SYN_ALTERA 1} else {set CONFIG_SYN_ALTERA 0}
        global CONFIG_SYN_AXCEL
        if {$tmpvar_0 == "Actel-Axcelerator"} then {set CONFIG_SYN_AXCEL 1} else {set CONFIG_SYN_AXCEL 0}
        global CONFIG_SYN_PROASIC
        if {$tmpvar_0 == "Actel-Proasic"} then {set CONFIG_SYN_PROASIC 1} else {set CONFIG_SYN_PROASIC 0}
        global CONFIG_SYN_PROASICPLUS
        if {$tmpvar_0 == "Actel-ProasicPlus"} then {set CONFIG_SYN_PROASICPLUS 1} else {set CONFIG_SYN_PROASICPLUS 0}
        global CONFIG_SYN_PROASIC3
        if {$tmpvar_0 == "Actel-Proasic3"} then {set CONFIG_SYN_PROASIC3 1} else {set CONFIG_SYN_PROASIC3 0}
        global CONFIG_SYN_UT025CRH
        if {$tmpvar_0 == "Aeroflex-UT025CRH"} then {set CONFIG_SYN_UT025CRH 1} else {set CONFIG_SYN_UT025CRH 0}
        global CONFIG_SYN_ATC18
        if {$tmpvar_0 == "Atmel-ATC18"} then {set CONFIG_SYN_ATC18 1} else {set CONFIG_SYN_ATC18 0}
        global CONFIG_SYN_CUSTOM1
        if {$tmpvar_0 == "Custom1"} then {set CONFIG_SYN_CUSTOM1 1} else {set CONFIG_SYN_CUSTOM1 0}
        global CONFIG_SYN_EASIC90
        if {$tmpvar_0 == "eASIC90"} then {set CONFIG_SYN_EASIC90 1} else {set CONFIG_SYN_EASIC90 0}
        global CONFIG_SYN_IHP25
        if {$tmpvar_0 == "IHP25"} then {set CONFIG_SYN_IHP25 1} else {set CONFIG_SYN_IHP25 0}
        global CONFIG_SYN_IHP25RH
        if {$tmpvar_0 == "IHP25RH"} then {set CONFIG_SYN_IHP25RH 1} else {set CONFIG_SYN_IHP25RH 0}
        global CONFIG_SYN_LATTICE
        if {$tmpvar_0 == "Lattice-EC/ECP/XP"} then {set CONFIG_SYN_LATTICE 1} else {set CONFIG_SYN_LATTICE 0}
        global CONFIG_SYN_ECLIPSE
        if {$tmpvar_0 == "Quicklogic-Eclipse"} then {set CONFIG_SYN_ECLIPSE 1} else {set CONFIG_SYN_ECLIPSE 0}
        global CONFIG_SYN_PEREGRINE
        if {$tmpvar_0 == "Peregrine"} then {set CONFIG_SYN_PEREGRINE 1} else {set CONFIG_SYN_PEREGRINE 0}
        global CONFIG_SYN_RH_LIB18T
        if {$tmpvar_0 == "RH-LIB18T"} then {set CONFIG_SYN_RH_LIB18T 1} else {set CONFIG_SYN_RH_LIB18T 0}
        global CONFIG_SYN_RHUMC
        if {$tmpvar_0 == "RH-UMC"} then {set CONFIG_SYN_RHUMC 1} else {set CONFIG_SYN_RHUMC 0}
        global CONFIG_SYN_SPARTAN2
        if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0}
        global CONFIG_SYN_SPARTAN3
        if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0}
        global CONFIG_SYN_SPARTAN3E
        if {$tmpvar_0 == "Xilinx-Spartan3E"} then {set CONFIG_SYN_SPARTAN3E 1} else {set CONFIG_SYN_SPARTAN3E 0}
        global CONFIG_SYN_VIRTEX
        if {$tmpvar_0 == "Xilinx-Virtex"} then {set CONFIG_SYN_VIRTEX 1} else {set CONFIG_SYN_VIRTEX 0}
        global CONFIG_SYN_VIRTEXE
        if {$tmpvar_0 == "Xilinx-VirtexE"} then {set CONFIG_SYN_VIRTEXE 1} else {set CONFIG_SYN_VIRTEXE 0}
        global CONFIG_SYN_VIRTEX2
        if {$tmpvar_0 == "Xilinx-Virtex2"} then {set CONFIG_SYN_VIRTEX2 1} else {set CONFIG_SYN_VIRTEX2 0}
        global CONFIG_SYN_VIRTEX4
        if {$tmpvar_0 == "Xilinx-Virtex4"} then {set CONFIG_SYN_VIRTEX4 1} else {set CONFIG_SYN_VIRTEX4 0}
        global CONFIG_SYN_VIRTEX5
        if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0}
        global CONFIG_SYN_UMC
        if {$tmpvar_0 == "UMC18"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0}
        global CONFIG_SYN_TSMC90
        if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0}
        global tmpvar_1
        global CONFIG_MEM_INFERRED
        if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0}
        global CONFIG_MEM_UMC
        if {$tmpvar_1 == "UMC18"} then {set CONFIG_MEM_UMC 1} else {set CONFIG_MEM_UMC 0}
        global CONFIG_MEM_RHUMC
        if {$tmpvar_1 == "RH-UMC"} then {set CONFIG_MEM_RHUMC 1} else {set CONFIG_MEM_RHUMC 0}
        global CONFIG_MEM_ARTISAN
        if {$tmpvar_1 == "Artisan"} then {set CONFIG_MEM_ARTISAN 1} else {set CONFIG_MEM_ARTISAN 0}
        global CONFIG_MEM_CUSTOM1
        if {$tmpvar_1 == "Custom1"} then {set CONFIG_MEM_CUSTOM1 1} else {set CONFIG_MEM_CUSTOM1 0}
        global CONFIG_MEM_VIRAGE
        if {$tmpvar_1 == "Virage"} then {set CONFIG_MEM_VIRAGE 1} else {set CONFIG_MEM_VIRAGE 0}
        global CONFIG_MEM_VIRAGE90
        if {$tmpvar_1 == "Virage-TSMC90"} then {set CONFIG_MEM_VIRAGE90 1} else {set CONFIG_MEM_VIRAGE90 0}
        global CONFIG_SYN_INFER_RAM
        if {($CONFIG_SYN_INFERRED != 1)} then {
        set CONFIG_SYN_INFER_RAM [expr $CONFIG_SYN_INFER_RAM&15]} else {set CONFIG_SYN_INFER_RAM [expr $CONFIG_SYN_INFER_RAM|16]}
        global CONFIG_SYN_INFER_PADS
        if {($CONFIG_SYN_INFERRED != 1)} then {
        set CONFIG_SYN_INFER_PADS [expr $CONFIG_SYN_INFER_PADS&15]} else {set CONFIG_SYN_INFER_PADS [expr $CONFIG_SYN_INFER_PADS|16]}
}


menu_option menu2 2 "Clock generation"
proc menu2 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 2}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 2]]
        message $w.m -width 400 -aspect 300 -text \
                "Clock generation"  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Clock generation" 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 2; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu3 .menu3 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 2"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu1 .menu1 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu1 .menu1 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        global tmpvar_2
        minimenu $w.config.f 2 0 "Clock generator                     " tmpvar_2 CONFIG_CLK_INFERRED
        menu $w.config.f.x0.x.menu -tearoffcommand "menutitle \"Clock generator                     \""
        $w.config.f.x0.x.menu add radiobutton -label "Inferred" -variable tmpvar_2 -value "Inferred" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Actel-HCLKBUF" -variable tmpvar_2 -value "Actel-HCLKBUF" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Altera-ALTPLL" -variable tmpvar_2 -value "Altera-ALTPLL" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Lattice-EXPLL" -variable tmpvar_2 -value "Lattice-EXPLL" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Proasic3-PLLL" -variable tmpvar_2 -value "Proasic3-PLLL" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active"
        $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active"
        menusplit $w $w.config.f.x0.x.menu 9
        int $w.config.f 2 1 "Clock multiplication factor (2 - 32)" CONFIG_CLK_MUL
        int $w.config.f 2 2 "Clock division factor (2 - 32)" CONFIG_CLK_DIV
        int $w.config.f 2 3 "Outout division factor (2 - 32)" CONFIG_OCLK_DIV
        bool $w.config.f 2 4 "Enable Xilinx CLKDLL for PCI clock" CONFIG_PCI_CLKDLL
        bool $w.config.f 2 5 "Disable external feedback for SDRAM clock" CONFIG_CLK_NOFB
        bool $w.config.f 2 6 "Use PCI clock as system clock" CONFIG_PCI_SYSCLK



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu2 {} {
        global CONFIG_CLK_DCM
        global CONFIG_CLK_ALTDLL
        global CONFIG_CLK_LATDLL
        global CONFIG_CLK_PRO3PLL
        global CONFIG_CLK_CLKDLL
        global CONFIG_CLK_LIB18T
        global CONFIG_CLK_MUL
        if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled}
        global CONFIG_CLK_DIV
        if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled}
        global CONFIG_OCLK_DIV
        if {($CONFIG_CLK_PRO3PLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled}
        global CONFIG_PCI_CLKDLL
        if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then {
        configure_entry .menu2.config.f.x4 normal {n l y}} else {configure_entry .menu2.config.f.x4 disabled {y n l}}
        global CONFIG_CLK_NOFB
        if {($CONFIG_CLK_DCM == 1)} then {
        configure_entry .menu2.config.f.x5 normal {n l y}} else {configure_entry .menu2.config.f.x5 disabled {y n l}}
        global CONFIG_PCI_ENABLE
        global CONFIG_PCI_SYSCLK
        if {($CONFIG_PCI_ENABLE != 1)} then {
        configure_entry .menu2.config.f.x6 normal {n l y}} else {configure_entry .menu2.config.f.x6 disabled {y n l}}
}


proc update_define_menu2 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global tmpvar_2
        global CONFIG_CLK_INFERRED
        if {$tmpvar_2 == "Inferred"} then {set CONFIG_CLK_INFERRED 1} else {set CONFIG_CLK_INFERRED 0}
        global CONFIG_CLK_HCLKBUF
        if {$tmpvar_2 == "Actel-HCLKBUF"} then {set CONFIG_CLK_HCLKBUF 1} else {set CONFIG_CLK_HCLKBUF 0}
        global CONFIG_CLK_ALTDLL
        if {$tmpvar_2 == "Altera-ALTPLL"} then {set CONFIG_CLK_ALTDLL 1} else {set CONFIG_CLK_ALTDLL 0}
        global CONFIG_CLK_LATDLL
        if {$tmpvar_2 == "Lattice-EXPLL"} then {set CONFIG_CLK_LATDLL 1} else {set CONFIG_CLK_LATDLL 0}
        global CONFIG_CLK_PRO3PLL
        if {$tmpvar_2 == "Proasic3-PLLL"} then {set CONFIG_CLK_PRO3PLL 1} else {set CONFIG_CLK_PRO3PLL 0}
        global CONFIG_CLK_LIB18T
        if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0}
        global CONFIG_CLK_RHUMC
        if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0}
        global CONFIG_CLK_CLKDLL
        if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0}
        global CONFIG_CLK_DCM
        if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0}
        global CONFIG_CLK_MUL
        if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2}
        global CONFIG_CLK_DIV
        if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2}
        global CONFIG_OCLK_DIV
        if {($CONFIG_CLK_PRO3PLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 2}
        global CONFIG_PCI_CLKDLL
        if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then {
        set CONFIG_PCI_CLKDLL [expr $CONFIG_PCI_CLKDLL&15]} else {set CONFIG_PCI_CLKDLL [expr $CONFIG_PCI_CLKDLL|16]}
        global CONFIG_CLK_NOFB
        if {($CONFIG_CLK_DCM == 1)} then {
        set CONFIG_CLK_NOFB [expr $CONFIG_CLK_NOFB&15]} else {set CONFIG_CLK_NOFB [expr $CONFIG_CLK_NOFB|16]}
        global CONFIG_PCI_ENABLE
        global CONFIG_PCI_SYSCLK
        if {($CONFIG_PCI_ENABLE != 1)} then {
        set CONFIG_PCI_SYSCLK [expr $CONFIG_PCI_SYSCLK&15]} else {set CONFIG_PCI_SYSCLK [expr $CONFIG_PCI_SYSCLK|16]}
}


menu_option menu3 3 "Processor            "
proc menu3 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 3}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 3]]
        message $w.m -width 400 -aspect 300 -text \
                "Processor            "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Processor            " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 3; break"
        set nextscript "catch {focus $oldFocus}; menu4 .menu4 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 3"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu2 .menu2 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu2 .menu2 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3
        int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM
        submenu $w.config.f 3 2 "Integer unit                                           " 4
        submenu $w.config.f 3 3 "Floating-point unit" 5
        submenu $w.config.f 3 4 "Cache system" 6
        submenu $w.config.f 3 5 "MMU" 7
        submenu $w.config.f 3 6 "Debug Support Unit        " 8
        submenu $w.config.f 3 7 "Fault-tolerance  " 9
        submenu $w.config.f 3 8 "VHDL debug settings       " 10



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu3 {} {
        global CONFIG_LEON3
        global CONFIG_PROC_NUM
        if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}}
        if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}}
}


proc update_define_menu3 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_PROC_NUM
        if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1}
}


proc menu4 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 4}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 4]]
        message $w.m -width 400 -aspect 300 -text \
                "Integer unit                                           "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Integer unit                                           " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 4; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu5 .menu5 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 4"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu3 .menu3 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu3 .menu3 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS
        bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV
        global tmpvar_3
        minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_4
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\""
        $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 2
        bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions     " CONFIG_IU_MUL_MAC
        bool $w.config.f 4 4 "Single-vector trapping" CONFIG_IU_SVT
        int $w.config.f 4 5 "Load delay" CONFIG_IU_LDELAY
        int $w.config.f 4 6 "Hardware watchpoints" CONFIG_IU_WATCHPOINTS
        bool $w.config.f 4 7 "Enable power-down mode " CONFIG_PWD
        hex $w.config.f 4 8 " Reset start address (addr\[31:12\]) " CONFIG_IU_RSTADDR



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu4 {} {
        global CONFIG_LEON3
        global CONFIG_IU_NWINDOWS
        if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled}
        global CONFIG_IU_V8MULDIV
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}}
        global CONFIG_IU_MUL_MAC
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {
        configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}}
        global CONFIG_IU_SVT
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu4.config.f.x4 normal {n l y}} else {configure_entry .menu4.config.f.x4 disabled {y n l}}
        global CONFIG_IU_LDELAY
        if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x5.l configure -state normal; } else {.menu4.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x5.l configure -state disabled}
        global CONFIG_IU_WATCHPOINTS
        if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x6.l configure -state normal; } else {.menu4.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x6.l configure -state disabled}
        global CONFIG_PWD
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}}
        global CONFIG_IU_RSTADDR
        if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled}
}


proc update_define_menu4 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_IU_NWINDOWS
        if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8}
        global CONFIG_IU_V8MULDIV
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]}
        global tmpvar_3
        global CONFIG_IU_MUL_LATENCY_4
        if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0}
        global CONFIG_IU_MUL_LATENCY_5
        if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0}
        global CONFIG_IU_MUL_MAC
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {
        set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]}
        global CONFIG_IU_SVT
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]}
        global CONFIG_IU_LDELAY
        if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1}
        global CONFIG_IU_WATCHPOINTS
        if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0}
        global CONFIG_PWD
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]}
        global CONFIG_IU_RSTADDR
        if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000}
}


proc menu5 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 5}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 5]]
        message $w.m -width 400 -aspect 300 -text \
                "Floating-point unit"  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Floating-point unit" 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 5; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu6 .menu6 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 5"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu4 .menu4 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu4 .menu4 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 5 0 "Enable FPU                             " CONFIG_FPU_ENABLE
        global tmpvar_4
        minimenu $w.config.f 5 1 "FPU core" tmpvar_4 CONFIG_FPU_GRFPU
        menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\""
        $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_4 -value "GRFPU" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_4 -value "GRFPU-LITE" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_4 -value "Meiko" -command "update_active"
        menusplit $w $w.config.f.x1.x.menu 3
        global tmpvar_5
        minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_5 CONFIG_FPU_GRFPU_INFMUL
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\""
        $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_5 -value "DW" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 2
        global tmpvar_6
        minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_6 CONFIG_FPU_GRFPC0
        menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\""
        $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_6 -value "Simple" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_6 -value "Data-forwarding" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_6 -value "Non-blocking" -command "update_active"
        menusplit $w $w.config.f.x3.x.menu 3
        bool $w.config.f 5 4 "Use VHDL netlist          " CONFIG_FPU_NETLIST



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu5 {} {
        global CONFIG_LEON3
        global CONFIG_FPU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}}
        global CONFIG_FPU_GRFPU
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}}
        global CONFIG_FPU_GRFPULITE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}}
        global CONFIG_FPU_NETLIST
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {
        configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}}
}


proc update_define_menu5 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_FPU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]}
        global tmpvar_4
        global CONFIG_FPU_GRFPU
        if {$tmpvar_4 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0}
        global CONFIG_FPU_GRFPULITE
        if {$tmpvar_4 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0}
        global CONFIG_FPU_MEIKO
        if {$tmpvar_4 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0}
        global tmpvar_5
        global CONFIG_FPU_GRFPU_INFMUL
        if {$tmpvar_5 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0}
        global CONFIG_FPU_GRFPU_DWMUL
        if {$tmpvar_5 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0}
        global tmpvar_6
        global CONFIG_FPU_GRFPC0
        if {$tmpvar_6 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0}
        global CONFIG_FPU_GRFPC1
        if {$tmpvar_6 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0}
        global CONFIG_FPU_GRFPC2
        if {$tmpvar_6 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0}
        global CONFIG_FPU_NETLIST
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {
        set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]}
}


proc menu6 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 6}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 6]]
        message $w.m -width 400 -aspect 300 -text \
                "Cache system"  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Cache system" 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 6; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu7 .menu7 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 6"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu5 .menu5 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu5 .menu5 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 6 0 "Enable instruction cache       " CONFIG_ICACHE_ENABLE
        global tmpvar_7
        minimenu $w.config.f 6 1 "Associativity (sets)            " tmpvar_7 CONFIG_ICACHE_ASSO1
        menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets)            \""
        $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_7 -value "1" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_7 -value "2" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_7 -value "3" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_7 -value "4" -command "update_active"
        menusplit $w $w.config.f.x1.x.menu 4
        global tmpvar_8
        minimenu $w.config.f 6 2 "Set size (kbytes/set)" tmpvar_8 CONFIG_ICACHE_SZ1
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\""
        $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_8 -value "8" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_8 -value "16" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_8 -value "32" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_8 -value "64" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_8 -value "128" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_8 -value "256" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 9
        global tmpvar_9
        minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_9 CONFIG_ICACHE_LZ16
        menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\""
        $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active"
        menusplit $w $w.config.f.x3.x.menu 2
        global tmpvar_10
        minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_10 CONFIG_ICACHE_ALGORND
        menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\""
        $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_10 -value "Random" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_10 -value "LRR" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_10 -value "LRU" -command "update_active"
        menusplit $w $w.config.f.x4.x.menu 3
        bool $w.config.f 6 5 "Cache locking      " CONFIG_ICACHE_LOCK
        bool $w.config.f 6 6 "Enable local instruction RAM            " CONFIG_ICACHE_LRAM
        global tmpvar_11
        minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_11 CONFIG_ICACHE_LRAM_SZ1
        menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\""
        $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active"
        menusplit $w $w.config.f.x7.x.menu 9
        hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART
        bool $w.config.f 6 9 "Enable data cache       " CONFIG_DCACHE_ENABLE
        global tmpvar_12
        minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_12 CONFIG_DCACHE_ASSO1
        menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\""
        $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active"
        $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active"
        $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_12 -value "3" -command "update_active"
        $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active"
        menusplit $w $w.config.f.x10.x.menu 4
        global tmpvar_13
        minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_13 CONFIG_DCACHE_SZ1
        menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\""
        $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active"
        menusplit $w $w.config.f.x11.x.menu 9
        global tmpvar_14
        minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_14 CONFIG_DCACHE_LZ16
        menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\""
        $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active"
        $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active"
        menusplit $w $w.config.f.x12.x.menu 2
        global tmpvar_15
        minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_15 CONFIG_DCACHE_ALGORND
        menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\""
        $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_15 -value "Random" -command "update_active"
        $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_15 -value "LRR" -command "update_active"
        $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_15 -value "LRU" -command "update_active"
        menusplit $w $w.config.f.x13.x.menu 3
        bool $w.config.f 6 14 "Cache locking      " CONFIG_DCACHE_LOCK
        bool $w.config.f 6 15 "AHB snooping       " CONFIG_DCACHE_SNOOP
        bool $w.config.f 6 16 "Fast snooping       " CONFIG_DCACHE_SNOOP_FAST
        bool $w.config.f 6 17 "Separate snoop tags  " CONFIG_DCACHE_SNOOP_SEPTAG
        hex $w.config.f 6 18 "Fixed cacheability map  " CONFIG_CACHE_FIXED
        bool $w.config.f 6 19 "Enable local data RAM            " CONFIG_DCACHE_LRAM
        global tmpvar_16
        minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_16 CONFIG_DCACHE_LRAM_SZ1
        menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\""
        $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active"
        $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active"
        menusplit $w $w.config.f.x20.x.menu 9
        hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu6 {} {
        global CONFIG_LEON3
        global CONFIG_ICACHE_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}}
        global CONFIG_ICACHE_ASSO1
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}}
        global CONFIG_ICACHE_LOCK
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {
        configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}}
        global CONFIG_MMU_ENABLE
        global CONFIG_ICACHE_LRAM
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {
        configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}}
        global CONFIG_ICACHE_LRSTART
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled}
        global CONFIG_DCACHE_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}}
        global CONFIG_DCACHE_ASSO1
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}}
        global CONFIG_DCACHE_LOCK
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {
        configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}}
        global CONFIG_DCACHE_SNOOP
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {
        configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}}
        global CONFIG_DCACHE_SNOOP_FAST
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {
        configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}}
        global CONFIG_DCACHE_SNOOP_SEPTAG
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {
        configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}}
        global CONFIG_CACHE_FIXED
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled}
        global CONFIG_DCACHE_LRAM
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {
        configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}}
        global CONFIG_DCACHE_LRSTART
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled}
}


proc update_define_menu6 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_ICACHE_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]}
        global tmpvar_7
        global CONFIG_ICACHE_ASSO1
        if {$tmpvar_7 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0}
        global CONFIG_ICACHE_ASSO2
        if {$tmpvar_7 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0}
        global CONFIG_ICACHE_ASSO3
        if {$tmpvar_7 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0}
        global CONFIG_ICACHE_ASSO4
        if {$tmpvar_7 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0}
        global tmpvar_8
        global CONFIG_ICACHE_SZ1
        if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0}
        global CONFIG_ICACHE_SZ2
        if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0}
        global CONFIG_ICACHE_SZ4
        if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0}
        global CONFIG_ICACHE_SZ8
        if {$tmpvar_8 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0}
        global CONFIG_ICACHE_SZ16
        if {$tmpvar_8 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0}
        global CONFIG_ICACHE_SZ32
        if {$tmpvar_8 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0}
        global CONFIG_ICACHE_SZ64
        if {$tmpvar_8 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0}
        global CONFIG_ICACHE_SZ128
        if {$tmpvar_8 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0}
        global CONFIG_ICACHE_SZ256
        if {$tmpvar_8 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0}
        global tmpvar_9
        global CONFIG_ICACHE_LZ16
        if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0}
        global CONFIG_ICACHE_LZ32
        if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0}
        global tmpvar_10
        global CONFIG_ICACHE_ALGORND
        if {$tmpvar_10 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0}
        global CONFIG_ICACHE_ALGOLRR
        if {$tmpvar_10 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0}
        global CONFIG_ICACHE_ALGOLRU
        if {$tmpvar_10 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0}
        global CONFIG_ICACHE_LOCK
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {
        set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]}
        global CONFIG_MMU_ENABLE
        global CONFIG_ICACHE_LRAM
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {
        set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]}
        global tmpvar_11
        global CONFIG_ICACHE_LRAM_SZ1
        if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0}
        global CONFIG_ICACHE_LRAM_SZ2
        if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0}
        global CONFIG_ICACHE_LRAM_SZ4
        if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0}
        global CONFIG_ICACHE_LRAM_SZ8
        if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0}
        global CONFIG_ICACHE_LRAM_SZ16
        if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0}
        global CONFIG_ICACHE_LRAM_SZ32
        if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0}
        global CONFIG_ICACHE_LRAM_SZ64
        if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0}
        global CONFIG_ICACHE_LRAM_SZ128
        if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0}
        global CONFIG_ICACHE_LRAM_SZ256
        if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0}
        global CONFIG_ICACHE_LRSTART
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e}
        global CONFIG_DCACHE_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]}
        global tmpvar_12
        global CONFIG_DCACHE_ASSO1
        if {$tmpvar_12 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0}
        global CONFIG_DCACHE_ASSO2
        if {$tmpvar_12 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0}
        global CONFIG_DCACHE_ASSO3
        if {$tmpvar_12 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0}
        global CONFIG_DCACHE_ASSO4
        if {$tmpvar_12 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0}
        global tmpvar_13
        global CONFIG_DCACHE_SZ1
        if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0}
        global CONFIG_DCACHE_SZ2
        if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0}
        global CONFIG_DCACHE_SZ4
        if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0}
        global CONFIG_DCACHE_SZ8
        if {$tmpvar_13 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0}
        global CONFIG_DCACHE_SZ16
        if {$tmpvar_13 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0}
        global CONFIG_DCACHE_SZ32
        if {$tmpvar_13 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0}
        global CONFIG_DCACHE_SZ64
        if {$tmpvar_13 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0}
        global CONFIG_DCACHE_SZ128
        if {$tmpvar_13 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0}
        global CONFIG_DCACHE_SZ256
        if {$tmpvar_13 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0}
        global tmpvar_14
        global CONFIG_DCACHE_LZ16
        if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0}
        global CONFIG_DCACHE_LZ32
        if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0}
        global tmpvar_15
        global CONFIG_DCACHE_ALGORND
        if {$tmpvar_15 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0}
        global CONFIG_DCACHE_ALGOLRR
        if {$tmpvar_15 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0}
        global CONFIG_DCACHE_ALGOLRU
        if {$tmpvar_15 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0}
        global CONFIG_DCACHE_LOCK
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {
        set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]}
        global CONFIG_DCACHE_SNOOP
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {
        set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]}
        global CONFIG_DCACHE_SNOOP_FAST
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {
        set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]}
        global CONFIG_DCACHE_SNOOP_SEPTAG
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {
        set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]}
        global CONFIG_CACHE_FIXED
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0}
        global CONFIG_DCACHE_LRAM
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {
        set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]}
        global tmpvar_16
        global CONFIG_DCACHE_LRAM_SZ1
        if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0}
        global CONFIG_DCACHE_LRAM_SZ2
        if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0}
        global CONFIG_DCACHE_LRAM_SZ4
        if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0}
        global CONFIG_DCACHE_LRAM_SZ8
        if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0}
        global CONFIG_DCACHE_LRAM_SZ16
        if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0}
        global CONFIG_DCACHE_LRAM_SZ32
        if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0}
        global CONFIG_DCACHE_LRAM_SZ64
        if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0}
        global CONFIG_DCACHE_LRAM_SZ128
        if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0}
        global CONFIG_DCACHE_LRAM_SZ256
        if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0}
        global CONFIG_DCACHE_LRSTART
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f}
}


proc menu7 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 7}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 7]]
        message $w.m -width 400 -aspect 300 -text \
                "MMU"  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "MMU" 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 7; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu8 .menu8 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 7"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu6 .menu6 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu6 .menu6 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 7 0 "Enable MMU       " CONFIG_MMU_ENABLE
        global tmpvar_17
        minimenu $w.config.f 7 1 "MMU type              " tmpvar_17 CONFIG_MMU_COMBINED
        menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type              \""
        $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_17 -value "combined" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_17 -value "split" -command "update_active"
        menusplit $w $w.config.f.x1.x.menu 2
        global tmpvar_18
        minimenu $w.config.f 7 2 "TLB replacement sheme              " tmpvar_18 CONFIG_MMU_REPARRAY
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme              \""
        $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_18 -value "Increment" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 2
        global tmpvar_19
        minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_19 CONFIG_MMU_I2
        menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\""
        $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active"
        menusplit $w $w.config.f.x3.x.menu 5
        global tmpvar_20
        minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_20 CONFIG_MMU_D2
        menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\""
        $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active"
        menusplit $w $w.config.f.x4.x.menu 5
        bool $w.config.f 7 5 "Fast writebuffer       " CONFIG_MMU_FASTWB



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu7 {} {
        global CONFIG_LEON3
        global CONFIG_MMU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}}
        global CONFIG_MMU_SPLIT
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}}
        global CONFIG_MMU_FASTWB
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {
        configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}}
}


proc update_define_menu7 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_MMU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]}
        global tmpvar_17
        global CONFIG_MMU_COMBINED
        if {$tmpvar_17 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0}
        global CONFIG_MMU_SPLIT
        if {$tmpvar_17 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0}
        global tmpvar_18
        global CONFIG_MMU_REPARRAY
        if {$tmpvar_18 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0}
        global CONFIG_MMU_REPINCREMENT
        if {$tmpvar_18 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0}
        global tmpvar_19
        global CONFIG_MMU_I2
        if {$tmpvar_19 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0}
        global CONFIG_MMU_I4
        if {$tmpvar_19 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0}
        global CONFIG_MMU_I8
        if {$tmpvar_19 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0}
        global CONFIG_MMU_I16
        if {$tmpvar_19 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0}
        global CONFIG_MMU_I32
        if {$tmpvar_19 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0}
        global tmpvar_20
        global CONFIG_MMU_D2
        if {$tmpvar_20 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0}
        global CONFIG_MMU_D4
        if {$tmpvar_20 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0}
        global CONFIG_MMU_D8
        if {$tmpvar_20 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0}
        global CONFIG_MMU_D16
        if {$tmpvar_20 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0}
        global CONFIG_MMU_D32
        if {$tmpvar_20 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0}
        global CONFIG_MMU_FASTWB
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {
        set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]}
}


proc menu8 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 8}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 8]]
        message $w.m -width 400 -aspect 300 -text \
                "Debug Support Unit        "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Debug Support Unit        " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 8; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu9 .menu9 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 8"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu7 .menu7 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu7 .menu7 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 8 0 "Enable LEON3 Debug support unit    " CONFIG_DSU_ENABLE
        bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE
        global tmpvar_21
        minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_21 CONFIG_DSU_ITRACESZ1
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\""
        $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_21 -value "1" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 5
        bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE
        global tmpvar_22
        minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_22 CONFIG_DSU_ATRACESZ1
        menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\""
        $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_22 -value "1" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active"
        menusplit $w $w.config.f.x4.x.menu 5



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu8 {} {
        global CONFIG_LEON3
        global CONFIG_DSU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}}
        global CONFIG_DSU_ITRACE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {
        configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}}
        global CONFIG_DSU_ATRACE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {
        configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}}
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}}
}


proc update_define_menu8 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_DSU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]}
        global CONFIG_DSU_ITRACE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {
        set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]}
        global tmpvar_21
        global CONFIG_DSU_ITRACESZ1
        if {$tmpvar_21 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0}
        global CONFIG_DSU_ITRACESZ2
        if {$tmpvar_21 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0}
        global CONFIG_DSU_ITRACESZ4
        if {$tmpvar_21 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0}
        global CONFIG_DSU_ITRACESZ8
        if {$tmpvar_21 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0}
        global CONFIG_DSU_ITRACESZ16
        if {$tmpvar_21 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0}
        global CONFIG_DSU_ATRACE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {
        set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]}
        global tmpvar_22
        global CONFIG_DSU_ATRACESZ1
        if {$tmpvar_22 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0}
        global CONFIG_DSU_ATRACESZ2
        if {$tmpvar_22 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0}
        global CONFIG_DSU_ATRACESZ4
        if {$tmpvar_22 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0}
        global CONFIG_DSU_ATRACESZ8
        if {$tmpvar_22 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0}
        global CONFIG_DSU_ATRACESZ16
        if {$tmpvar_22 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0}
}


proc menu9 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 9}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 9]]
        message $w.m -width 400 -aspect 300 -text \
                "Fault-tolerance  "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Fault-tolerance  " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 9; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu10 .menu10 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 9"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu8 .menu8 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu8 .menu8 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y





        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu9 {} {
}


proc update_define_menu9 {} {
        update_define_mainmenu
        global CONFIG_MODULES
}


proc menu10 {w title} {
        set oldFocus [focus]
        catch {focus .menu3}
        catch {destroy $w; unregister_active 10}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 10]]
        message $w.m -width 400 -aspect 300 -text \
                "VHDL debug settings       "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "VHDL debug settings       " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 10; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 10; catch {destroy .menu3}; unregister_active 3; menu11 .menu11 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 10"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 10; menu9 .menu9 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 10; menu9 .menu9 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 10 0 "Processor disassembly to console         " CONFIG_IU_DISAS
        bool $w.config.f 10 1 "Processor disassembly in netlist         " CONFIG_IU_DISAS_NET
        bool $w.config.f 10 2 "32-bit program counters       " CONFIG_DEBUG_PC32



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor            "}
        set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu10 {} {
        global CONFIG_LEON3
        global CONFIG_IU_DISAS
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu10.config.f.x0 normal {n l y}} else {configure_entry .menu10.config.f.x0 disabled {y n l}}
        global CONFIG_IU_DISAS_NET
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then {
        configure_entry .menu10.config.f.x1 normal {n l y}} else {configure_entry .menu10.config.f.x1 disabled {y n l}}
        global CONFIG_DEBUG_PC32
        if {($CONFIG_LEON3 == 1)} then {
        configure_entry .menu10.config.f.x2 normal {n l y}} else {configure_entry .menu10.config.f.x2 disabled {y n l}}
}


proc update_define_menu10 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_LEON3
        global CONFIG_IU_DISAS
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_IU_DISAS [expr $CONFIG_IU_DISAS&15]} else {set CONFIG_IU_DISAS [expr $CONFIG_IU_DISAS|16]}
        global CONFIG_IU_DISAS_NET
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then {
        set CONFIG_IU_DISAS_NET [expr $CONFIG_IU_DISAS_NET&15]} else {set CONFIG_IU_DISAS_NET [expr $CONFIG_IU_DISAS_NET|16]}
        global CONFIG_DEBUG_PC32
        if {($CONFIG_LEON3 == 1)} then {
        set CONFIG_DEBUG_PC32 [expr $CONFIG_DEBUG_PC32&15]} else {set CONFIG_DEBUG_PC32 [expr $CONFIG_DEBUG_PC32|16]}
}


menu_option menu11 11 "AMBA configuration"
proc menu11 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 11}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 11]]
        message $w.m -width 400 -aspect 300 -text \
                "AMBA configuration"  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "AMBA configuration" 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 11; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 11; menu12 .menu12 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 11"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 11; menu10 .menu10 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 11; menu10 .menu10 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        int $w.config.f 11 0 "Default AHB master" CONFIG_AHB_DEFMST
        bool $w.config.f 11 1 "Round-robin arbiter                       " CONFIG_AHB_RROBIN
        bool $w.config.f 11 2 "AHB split-transaction support             " CONFIG_AHB_SPLIT
        hex $w.config.f 11 3 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR
        hex $w.config.f 11 4 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR
        bool $w.config.f 11 5 "Enable AMBA AHB monitor              " CONFIG_AHB_MON
        bool $w.config.f 11 6 "Report AHB errors                  " CONFIG_AHB_MONERR
        bool $w.config.f 11 7 "Report AHB warings                 " CONFIG_AHB_MONWAR



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu11 {} {
        global CONFIG_AHB_MON
        global CONFIG_AHB_MONERR
        if {($CONFIG_AHB_MON == 1)} then {
        configure_entry .menu11.config.f.x6 normal {n l y}} else {configure_entry .menu11.config.f.x6 disabled {y n l}}
        global CONFIG_AHB_MONWAR
        if {($CONFIG_AHB_MON == 1)} then {
        configure_entry .menu11.config.f.x7 normal {n l y}} else {configure_entry .menu11.config.f.x7 disabled {y n l}}
}


proc update_define_menu11 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_AHB_MON
        global CONFIG_AHB_MONERR
        if {($CONFIG_AHB_MON == 1)} then {
        set CONFIG_AHB_MONERR [expr $CONFIG_AHB_MONERR&15]} else {set CONFIG_AHB_MONERR [expr $CONFIG_AHB_MONERR|16]}
        global CONFIG_AHB_MONWAR
        if {($CONFIG_AHB_MON == 1)} then {
        set CONFIG_AHB_MONWAR [expr $CONFIG_AHB_MONWAR&15]} else {set CONFIG_AHB_MONWAR [expr $CONFIG_AHB_MONWAR|16]}
}


menu_option menu12 12 "Debug Link           "
proc menu12 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 12}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 12]]
        message $w.m -width 400 -aspect 300 -text \
                "Debug Link           "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Debug Link           " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 12; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 12; menu13 .menu13 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 12"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 12; menu11 .menu11 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 12; menu11 .menu11 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 12 0 "Serial Debug Link (RS232)                " CONFIG_DSU_UART
        bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG
        bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH
        global tmpvar_24
        minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ETHSZ1
        menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\""
        $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active"
        menusplit $w $w.config.f.x3.x.menu 5
        hex $w.config.f 12 4 "MSB 16 bits of IP address (hex)       " CONFIG_DSU_IPMSB
        hex $w.config.f 12 5 "LSB 16 bits of IP address (hex)       " CONFIG_DSU_IPLSB
        hex $w.config.f 12 6 "MSB 24 bits of ethern number (hex)    " CONFIG_DSU_ETHMSB
        hex $w.config.f 12 7 "LSB 24 bits of ethern number (hex)    " CONFIG_DSU_ETHLSB
        bool $w.config.f 12 8 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu12 {} {
        global CONFIG_GRETH_ENABLE
        global CONFIG_DSU_ETH
        if {($CONFIG_GRETH_ENABLE == 1)} then {
        configure_entry .menu12.config.f.x2 normal {n l y}} else {configure_entry .menu12.config.f.x2 disabled {y n l}}
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x3 normal {x l}} else {configure_entry .menu12.config.f.x3 disabled {x l}}
        global CONFIG_DSU_IPMSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x4.l configure -state normal; } else {.menu12.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x4.l configure -state disabled}
        global CONFIG_DSU_IPLSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x5.l configure -state normal; } else {.menu12.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x5.l configure -state disabled}
        global CONFIG_DSU_ETHMSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x6.l configure -state normal; } else {.menu12.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x6.l configure -state disabled}
        global CONFIG_DSU_ETHLSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x7.l configure -state normal; } else {.menu12.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x7.l configure -state disabled}
        global CONFIG_GRETH_GIGA
        global CONFIG_DSU_ETH_PROG
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {
        configure_entry .menu12.config.f.x8 normal {n l y}} else {configure_entry .menu12.config.f.x8 disabled {y n l}}
}


proc update_define_menu12 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_GRETH_ENABLE
        global CONFIG_DSU_ETH
        if {($CONFIG_GRETH_ENABLE == 1)} then {
        set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]}
        global tmpvar_24
        global CONFIG_DSU_ETHSZ1
        if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0}
        global CONFIG_DSU_ETHSZ2
        if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0}
        global CONFIG_DSU_ETHSZ4
        if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0}
        global CONFIG_DSU_ETHSZ8
        if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0}
        global CONFIG_DSU_ETHSZ16
        if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0}
        global CONFIG_DSU_IPMSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8}
        global CONFIG_DSU_IPLSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPLSB "$CONFIG_DSU_IPLSB" 0033}
        global CONFIG_DSU_ETHMSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_ETHMSB "$CONFIG_DSU_ETHMSB" 00007A}
        global CONFIG_DSU_ETHLSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_ETHLSB "$CONFIG_DSU_ETHLSB" CC0001}
        global CONFIG_GRETH_GIGA
        global CONFIG_DSU_ETH_PROG
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {
        set CONFIG_DSU_ETH_PROG [expr $CONFIG_DSU_ETH_PROG&15]} else {set CONFIG_DSU_ETH_PROG [expr $CONFIG_DSU_ETH_PROG|16]}
}


menu_option menu13 13 "Peripherals             "
proc menu13 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 13}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 13]]
        message $w.m -width 400 -aspect 300 -text \
                "Peripherals             "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Peripherals             " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 13; break"
        set nextscript "catch {focus $oldFocus}; menu14 .menu14 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 13"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 13; menu12 .menu12 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 13; menu12 .menu12 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        submenu $w.config.f 13 0 "Memory controllers             " 14
        submenu $w.config.f 13 1 "On-chip RAM/ROM                 " 18
        submenu $w.config.f 13 2 "Ethernet             " 19
        submenu $w.config.f 13 3 "CAN                     " 20
        submenu $w.config.f 13 4 "PCI              " 21
        submenu $w.config.f 13 5 "Spacewire " 22
        submenu $w.config.f 13 6 "UARTs, timers and irq control         " 23



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu13 {} {
}


proc update_define_menu13 {} {
        update_define_mainmenu
        global CONFIG_MODULES
}


proc menu14 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 14}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 14]]
        message $w.m -width 400 -aspect 300 -text \
                "Memory controllers             "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Memory controllers             " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 14; break"
        set nextscript "catch {focus $oldFocus}; menu15 .menu15 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 14"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 14; menu13 .menu13 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 14; menu13 .menu13 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        submenu $w.config.f 14 0 "8/32-bit PROM/SRAM controller " 15
        submenu $w.config.f 14 1 "Leon2 memory controller        " 16
        submenu $w.config.f 14 2 "PC133 SDRAM controller             " 17



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu14 {} {
}


proc update_define_menu14 {} {
        update_define_mainmenu
        global CONFIG_MODULES
}


proc menu15 {w title} {
        set oldFocus [focus]
        catch {focus .menu14}
        catch {destroy $w; unregister_active 15}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 15]]
        message $w.m -width 400 -aspect 300 -text \
                "8/32-bit PROM/SRAM controller "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "8/32-bit PROM/SRAM controller " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 15; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu16 .menu16 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 15"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu14 .menu14 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu14 .menu14 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 15 0 "Enable 8/32-bit PROM/SRAM controller    " CONFIG_SRCTRL
        bool $w.config.f 15 1 "8-bit PROM interface " CONFIG_SRCTRL_8BIT
        int $w.config.f 15 2 "PROM waitstates" CONFIG_SRCTRL_PROMWS
        int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS
        int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS
        bool $w.config.f 15 5 "Use read-modify-write for sub-word writes  " CONFIG_SRCTRL_RMW
        global tmpvar_25
        minimenu $w.config.f 15 6 "SRAM banks" tmpvar_25 CONFIG_SRCTRL_SRBANKS1
        menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\""
        $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active"
        $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active"
        $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_25 -value "3" -command "update_active"
        $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active"
        $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_25 -value "5" -command "update_active"
        menusplit $w $w.config.f.x6.x.menu 5
        global tmpvar_26
        minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_26 CONFIG_SRCTRL_BANKSZ0
        menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\""
        $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_26 -value "32" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_26 -value "64" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_26 -value "128" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_26 -value "256" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_26 -value "512" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_26 -value "1024" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_26 -value "2048" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_26 -value "4096" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_26 -value "8192" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_26 -value "16384" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_26 -value "32768" -command "update_active"
        $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_26 -value "65536" -command "update_active"
        menusplit $w $w.config.f.x7.x.menu 14
        int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers             "}
        set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu15 {} {
        global CONFIG_SRCTRL
        global CONFIG_SRCTRL_8BIT
        if {($CONFIG_SRCTRL == 1)} then {
        configure_entry .menu15.config.f.x1 normal {n l y}} else {configure_entry .menu15.config.f.x1 disabled {y n l}}
        global CONFIG_SRCTRL_PROMWS
        if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x2.l configure -state normal; } else {.menu15.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x2.l configure -state disabled}
        global CONFIG_SRCTRL_RAMWS
        if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x3.l configure -state normal; } else {.menu15.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x3.l configure -state disabled}
        global CONFIG_SRCTRL_IOWS
        if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x4.l configure -state normal; } else {.menu15.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x4.l configure -state disabled}
        global CONFIG_SRCTRL_RMW
        if {($CONFIG_SRCTRL == 1)} then {
        configure_entry .menu15.config.f.x5 normal {n l y}} else {configure_entry .menu15.config.f.x5 disabled {y n l}}
        if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x6 normal {x l}} else {configure_entry .menu15.config.f.x6 disabled {x l}}
        if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x7 normal {x l}} else {configure_entry .menu15.config.f.x7 disabled {x l}}
        global CONFIG_SRCTRL_ROMASEL
        if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x8.l configure -state normal; } else {.menu15.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x8.l configure -state disabled}
}


proc update_define_menu15 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_SRCTRL
        global CONFIG_SRCTRL_8BIT
        if {($CONFIG_SRCTRL == 1)} then {
        set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT&15]} else {set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT|16]}
        global CONFIG_SRCTRL_PROMWS
        if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_PROMWS "$CONFIG_SRCTRL_PROMWS" 3}
        global CONFIG_SRCTRL_RAMWS
        if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_RAMWS "$CONFIG_SRCTRL_RAMWS" 0}
        global CONFIG_SRCTRL_IOWS
        if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_IOWS "$CONFIG_SRCTRL_IOWS" 0}
        global CONFIG_SRCTRL_RMW
        if {($CONFIG_SRCTRL == 1)} then {
        set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]}
        global tmpvar_25
        global CONFIG_SRCTRL_SRBANKS1
        if {$tmpvar_25 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0}
        global CONFIG_SRCTRL_SRBANKS2
        if {$tmpvar_25 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0}
        global CONFIG_SRCTRL_SRBANKS3
        if {$tmpvar_25 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0}
        global CONFIG_SRCTRL_SRBANKS4
        if {$tmpvar_25 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0}
        global CONFIG_SRCTRL_SRBANKS5
        if {$tmpvar_25 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0}
        global tmpvar_26
        global CONFIG_SRCTRL_BANKSZ0
        if {$tmpvar_26 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0}
        global CONFIG_SRCTRL_BANKSZ1
        if {$tmpvar_26 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0}
        global CONFIG_SRCTRL_BANKSZ2
        if {$tmpvar_26 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0}
        global CONFIG_SRCTRL_BANKSZ3
        if {$tmpvar_26 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0}
        global CONFIG_SRCTRL_BANKSZ4
        if {$tmpvar_26 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0}
        global CONFIG_SRCTRL_BANKSZ5
        if {$tmpvar_26 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0}
        global CONFIG_SRCTRL_BANKSZ6
        if {$tmpvar_26 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0}
        global CONFIG_SRCTRL_BANKSZ7
        if {$tmpvar_26 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0}
        global CONFIG_SRCTRL_BANKSZ8
        if {$tmpvar_26 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0}
        global CONFIG_SRCTRL_BANKSZ9
        if {$tmpvar_26 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0}
        global CONFIG_SRCTRL_BANKSZ10
        if {$tmpvar_26 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0}
        global CONFIG_SRCTRL_BANKSZ11
        if {$tmpvar_26 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0}
        global CONFIG_SRCTRL_BANKSZ12
        if {$tmpvar_26 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0}
        global CONFIG_SRCTRL_BANKSZ13
        if {$tmpvar_26 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0}
        global CONFIG_SRCTRL_ROMASEL
        if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19}
}


proc menu16 {w title} {
        set oldFocus [focus]
        catch {focus .menu14}
        catch {destroy $w; unregister_active 16}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 16]]
        message $w.m -width 400 -aspect 300 -text \
                "Leon2 memory controller        "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Leon2 memory controller        " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 16; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu17 .menu17 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 16"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu15 .menu15 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu15 .menu15 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 16 0 "Enable Leon2 memory controller  " CONFIG_MCTRL_LEON2
        bool $w.config.f 16 1 "8-bit PROM/SRAM bus support    " CONFIG_MCTRL_8BIT
        bool $w.config.f 16 2 "16-bit PROM/SRAM bus support    " CONFIG_MCTRL_16BIT
        bool $w.config.f 16 3 "5th SRAM chip-select  " CONFIG_MCTRL_5CS
        bool $w.config.f 16 4 "SDRAM controller       " CONFIG_MCTRL_SDRAM
        bool $w.config.f 16 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS
        bool $w.config.f 16 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64
        bool $w.config.f 16 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK
        bool $w.config.f 16 8 "Enable page burst operation     " CONFIG_MCTRL_PAGE
        bool $w.config.f 16 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers             "}
        set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu16 {} {
        global CONFIG_MCTRL_LEON2
        global CONFIG_MCTRL_8BIT
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        configure_entry .menu16.config.f.x1 normal {n l y}} else {configure_entry .menu16.config.f.x1 disabled {y n l}}
        global CONFIG_MCTRL_16BIT
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        configure_entry .menu16.config.f.x2 normal {n l y}} else {configure_entry .menu16.config.f.x2 disabled {y n l}}
        global CONFIG_MCTRL_5CS
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        configure_entry .menu16.config.f.x3 normal {n l y}} else {configure_entry .menu16.config.f.x3 disabled {y n l}}
        global CONFIG_MCTRL_SDRAM
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        configure_entry .menu16.config.f.x4 normal {n l y}} else {configure_entry .menu16.config.f.x4 disabled {y n l}}
        global CONFIG_MCTRL_SDRAM_SEPBUS
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {
        configure_entry .menu16.config.f.x5 normal {n l y}} else {configure_entry .menu16.config.f.x5 disabled {y n l}}
        global CONFIG_MCTRL_SDRAM_BUS64
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {
        configure_entry .menu16.config.f.x6 normal {n l y}} else {configure_entry .menu16.config.f.x6 disabled {y n l}}
        global CONFIG_MCTRL_SDRAM_INVCLK
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {
        configure_entry .menu16.config.f.x7 normal {n l y}} else {configure_entry .menu16.config.f.x7 disabled {y n l}}
        global CONFIG_MCTRL_PAGE
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {
        configure_entry .menu16.config.f.x8 normal {n l y}} else {configure_entry .menu16.config.f.x8 disabled {y n l}}
        global CONFIG_MCTRL_PROGPAGE
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {
        configure_entry .menu16.config.f.x9 normal {n l y}} else {configure_entry .menu16.config.f.x9 disabled {y n l}}
}


proc update_define_menu16 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_MCTRL_LEON2
        global CONFIG_MCTRL_8BIT
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]}
        global CONFIG_MCTRL_16BIT
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]}
        global CONFIG_MCTRL_5CS
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]}
        global CONFIG_MCTRL_SDRAM
        if {($CONFIG_MCTRL_LEON2 == 1)} then {
        set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]}
        global CONFIG_MCTRL_SDRAM_SEPBUS
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {
        set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]}
        global CONFIG_MCTRL_SDRAM_BUS64
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {
        set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]}
        global CONFIG_MCTRL_SDRAM_INVCLK
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {
        set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]}
        global CONFIG_MCTRL_PAGE
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {
        set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]}
        global CONFIG_MCTRL_PROGPAGE
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {
        set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]}
}


proc menu17 {w title} {
        set oldFocus [focus]
        catch {focus .menu14}
        catch {destroy $w; unregister_active 17}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 17]]
        message $w.m -width 400 -aspect 300 -text \
                "PC133 SDRAM controller             "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "PC133 SDRAM controller             " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 17; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; catch {destroy .menu14}; unregister_active 14; menu18 .menu18 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 17 0 "Enable PC133 SDRAM controller       " CONFIG_SDCTRL
        bool $w.config.f 17 1 "64-bit SDRAM data bus" CONFIG_SDCTRL_BUS64
        bool $w.config.f 17 2 "Unsynchronized sdclock" CONFIG_SDCTRL_INVCLK
        bool $w.config.f 17 3 "Enable page burst operation     " CONFIG_SDCTRL_PAGE
        bool $w.config.f 17 4 "Enable programmable page burst " CONFIG_SDCTRL_PROGPAGE



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers             "}
        set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu17 {} {
        global CONFIG_SDCTRL
        global CONFIG_SDCTRL_BUS64
        if {($CONFIG_SDCTRL == 1)} then {
        configure_entry .menu17.config.f.x1 normal {n l y}} else {configure_entry .menu17.config.f.x1 disabled {y n l}}
        global CONFIG_SDCTRL_INVCLK
        if {($CONFIG_SDCTRL == 1)} then {
        configure_entry .menu17.config.f.x2 normal {n l y}} else {configure_entry .menu17.config.f.x2 disabled {y n l}}
        global CONFIG_SDCTRL_PAGE
        if {($CONFIG_SDCTRL == 1)} then {
        configure_entry .menu17.config.f.x3 normal {n l y}} else {configure_entry .menu17.config.f.x3 disabled {y n l}}
        global CONFIG_SDCTRL_PROGPAGE
        if {($CONFIG_SDCTRL == 1) && ($CONFIG_SDCTRL_PAGE == 1)} then {
        configure_entry .menu17.config.f.x4 normal {n l y}} else {configure_entry .menu17.config.f.x4 disabled {y n l}}
}


proc update_define_menu17 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_SDCTRL
        global CONFIG_SDCTRL_BUS64
        if {($CONFIG_SDCTRL == 1)} then {
        set CONFIG_SDCTRL_BUS64 [expr $CONFIG_SDCTRL_BUS64&15]} else {set CONFIG_SDCTRL_BUS64 [expr $CONFIG_SDCTRL_BUS64|16]}
        global CONFIG_SDCTRL_INVCLK
        if {($CONFIG_SDCTRL == 1)} then {
        set CONFIG_SDCTRL_INVCLK [expr $CONFIG_SDCTRL_INVCLK&15]} else {set CONFIG_SDCTRL_INVCLK [expr $CONFIG_SDCTRL_INVCLK|16]}
        global CONFIG_SDCTRL_PAGE
        if {($CONFIG_SDCTRL == 1)} then {
        set CONFIG_SDCTRL_PAGE [expr $CONFIG_SDCTRL_PAGE&15]} else {set CONFIG_SDCTRL_PAGE [expr $CONFIG_SDCTRL_PAGE|16]}
        global CONFIG_SDCTRL_PROGPAGE
        if {($CONFIG_SDCTRL == 1) && ($CONFIG_SDCTRL_PAGE == 1)} then {
        set CONFIG_SDCTRL_PROGPAGE [expr $CONFIG_SDCTRL_PROGPAGE&15]} else {set CONFIG_SDCTRL_PROGPAGE [expr $CONFIG_SDCTRL_PROGPAGE|16]}
}


proc menu18 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 18}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 18]]
        message $w.m -width 400 -aspect 300 -text \
                "On-chip RAM/ROM                 "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "On-chip RAM/ROM                 " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 18; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 18 0 "On-chip AHB ROM                   " CONFIG_AHBROM_ENABLE
        hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START
        bool $w.config.f 18 2 "Pipelined ROM access              " CONFIG_AHBROM_PIPE
        bool $w.config.f 18 3 "On-chip AHB RAM                   " CONFIG_AHBRAM_ENABLE
        global tmpvar_27
        minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1
        menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\""
        $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active"
        $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active"
        menusplit $w $w.config.f.x4.x.menu 7
        hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu18 {} {
        global CONFIG_AHBROM_ENABLE
        global CONFIG_AHBROM_START
        if {($CONFIG_AHBROM_ENABLE == 1)} then {.menu18.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x1.l configure -state normal; } else {.menu18.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x1.l configure -state disabled}
        global CONFIG_AHBROM_PIPE
        if {($CONFIG_AHBROM_ENABLE == 1)} then {
        configure_entry .menu18.config.f.x2 normal {n l y}} else {configure_entry .menu18.config.f.x2 disabled {y n l}}
        global CONFIG_AHBRAM_ENABLE
        if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu18.config.f.x4 normal {x l}} else {configure_entry .menu18.config.f.x4 disabled {x l}}
        global CONFIG_AHBRAM_START
        if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu18.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x5.l configure -state normal; } else {.menu18.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x5.l configure -state disabled}
}


proc update_define_menu18 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_AHBROM_ENABLE
        global CONFIG_AHBROM_START
        if {($CONFIG_AHBROM_ENABLE == 1)} then {validate_hex CONFIG_AHBROM_START "$CONFIG_AHBROM_START" 000}
        global CONFIG_AHBROM_PIPE
        if {($CONFIG_AHBROM_ENABLE == 1)} then {
        set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]}
        global tmpvar_27
        global CONFIG_AHBRAM_SZ1
        if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0}
        global CONFIG_AHBRAM_SZ2
        if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0}
        global CONFIG_AHBRAM_SZ4
        if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0}
        global CONFIG_AHBRAM_SZ8
        if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0}
        global CONFIG_AHBRAM_SZ16
        if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0}
        global CONFIG_AHBRAM_SZ32
        if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0}
        global CONFIG_AHBRAM_SZ64
        if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0}
        global CONFIG_AHBRAM_ENABLE
        global CONFIG_AHBRAM_START
        if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00}
}


proc menu19 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 19}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 19]]
        message $w.m -width 400 -aspect 300 -text \
                "Ethernet             "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Ethernet             " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 19; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu20 .menu20 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE
        bool $w.config.f 19 1 "Enable 1000 Mbit support    " CONFIG_GRETH_GIGA
        global tmpvar_28
        minimenu $w.config.f 19 2 "AHB FIFO size (words)            " tmpvar_28 CONFIG_GRETH_FIFO4
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words)            \""
        $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 5



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu19 {} {
        global CONFIG_GRETH_ENABLE
        global CONFIG_GRETH_GIGA
        if {($CONFIG_GRETH_ENABLE == 1)} then {
        configure_entry .menu19.config.f.x1 normal {n l y}} else {configure_entry .menu19.config.f.x1 disabled {y n l}}
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then {configure_entry .menu19.config.f.x2 normal {x l}} else {configure_entry .menu19.config.f.x2 disabled {x l}}
}


proc update_define_menu19 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_GRETH_ENABLE
        global CONFIG_GRETH_GIGA
        if {($CONFIG_GRETH_ENABLE == 1)} then {
        set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]}
        global tmpvar_28
        global CONFIG_GRETH_FIFO4
        if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0}
        global CONFIG_GRETH_FIFO8
        if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0}
        global CONFIG_GRETH_FIFO16
        if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0}
        global CONFIG_GRETH_FIFO32
        if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0}
        global CONFIG_GRETH_FIFO64
        if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0}
}


proc menu20 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 20}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 20]]
        message $w.m -width 400 -aspect 300 -text \
                "CAN                     "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "CAN                     " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 20; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 20 0 "Enable CAN interface                 " CONFIG_CAN_ENABLE
        hex $w.config.f 20 1 "CAN I/O area start address (haddr\[19:8\]) " CONFIG_CANIO
        int $w.config.f 20 2 "Interrupt number                      " CONFIG_CANIRQ
        bool $w.config.f 20 3 "Enable loop-back testing             " CONFIG_CANLOOP
        bool $w.config.f 20 4 "Enable synchronous reset             " CONFIG_CAN_SYNCRST
        bool $w.config.f 20 5 "Enable FT FIFO memory                " CONFIG_CAN_FT



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu20 {} {
        global CONFIG_CAN_ENABLE
        global CONFIG_CANIO
        if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x1.l configure -state normal; } else {.menu20.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x1.l configure -state disabled}
        global CONFIG_CANIRQ
        if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x2.l configure -state normal; } else {.menu20.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x2.l configure -state disabled}
        global CONFIG_CANLOOP
        if {($CONFIG_CAN_ENABLE == 1)} then {
        configure_entry .menu20.config.f.x3 normal {n l y}} else {configure_entry .menu20.config.f.x3 disabled {y n l}}
        global CONFIG_CAN_SYNCRST
        if {($CONFIG_CAN_ENABLE == 1)} then {
        configure_entry .menu20.config.f.x4 normal {n l y}} else {configure_entry .menu20.config.f.x4 disabled {y n l}}
        global CONFIG_CAN_FT
        if {($CONFIG_CAN_ENABLE == 1)} then {
        configure_entry .menu20.config.f.x5 normal {n l y}} else {configure_entry .menu20.config.f.x5 disabled {y n l}}
}


proc update_define_menu20 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_CAN_ENABLE
        global CONFIG_CANIO
        if {($CONFIG_CAN_ENABLE == 1)} then {validate_hex CONFIG_CANIO "$CONFIG_CANIO" C00}
        global CONFIG_CANIRQ
        if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CANIRQ "$CONFIG_CANIRQ" 13}
        global CONFIG_CANLOOP
        if {($CONFIG_CAN_ENABLE == 1)} then {
        set CONFIG_CANLOOP [expr $CONFIG_CANLOOP&15]} else {set CONFIG_CANLOOP [expr $CONFIG_CANLOOP|16]}
        global CONFIG_CAN_SYNCRST
        if {($CONFIG_CAN_ENABLE == 1)} then {
        set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST&15]} else {set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST|16]}
        global CONFIG_CAN_FT
        if {($CONFIG_CAN_ENABLE == 1)} then {
        set CONFIG_CAN_FT [expr $CONFIG_CAN_FT&15]} else {set CONFIG_CAN_FT [expr $CONFIG_CAN_FT|16]}
}


proc menu21 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 21}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 21]]
        message $w.m -width 400 -aspect 300 -text \
                "PCI              "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "PCI              " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 21; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu22 .menu22 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 21 0 "PCI interface, target-only     " CONFIG_PCI_SIMPLE_TARGET
        bool $w.config.f 21 1 "PCI interface, master-target     " CONFIG_PCI_MASTER_TARGET
        bool $w.config.f 21 2 "PCI DMA controller               " CONFIG_PCI_MASTER_TARGET_DMA
        hex $w.config.f 21 3 "PCI vendor ID" CONFIG_PCI_VENDORID
        hex $w.config.f 21 4 "PCI device ID" CONFIG_PCI_DEVICEID
        global tmpvar_29
        minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_29 CONFIG_PCI_FIFO0
        menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\""
        $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active"
        menusplit $w $w.config.f.x5.x.menu 6
        hex $w.config.f 21 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR
        bool $w.config.f 21 7 "PCI arbiter  " CONFIG_PCI_ARBITER
        bool $w.config.f 21 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB
        int $w.config.f 21 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ
        bool $w.config.f 21 10 "Enable PCI trace buffer              " CONFIG_PCI_TRACE
        global tmpvar_30
        minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_30 CONFIG_PCI_TRACE256
        menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\""
        $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active"
        $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active"
        menusplit $w $w.config.f.x11.x.menu 5



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu21 {} {
        global CONFIG_PCI_ACTEL
        global CONFIG_PCI_SIMPLE_TARGET
        if {($CONFIG_PCI_ACTEL != 1)} then {
        configure_entry .menu21.config.f.x0 normal {n l y}} else {configure_entry .menu21.config.f.x0 disabled {y n l}}
        global CONFIG_PCI_MASTER_TARGET
        if {($CONFIG_PCI_SIMPLE_TARGET != 1 && $CONFIG_PCI_ACTEL != 1)} then {
        configure_entry .menu21.config.f.x1 normal {n l y}} else {configure_entry .menu21.config.f.x1 disabled {y n l}}
        global CONFIG_PCI_MASTER_TARGET_DMA
        if {($CONFIG_PCI_MASTER_TARGET == 1)} then {
        configure_entry .menu21.config.f.x2 normal {n l y}} else {configure_entry .menu21.config.f.x2 disabled {y n l}}
        global CONFIG_PCI_VENDORID
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu21.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x3.l configure -state normal; } else {.menu21.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x3.l configure -state disabled}
        global CONFIG_PCI_DEVICEID
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu21.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x4.l configure -state normal; } else {.menu21.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x4.l configure -state disabled}
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {configure_entry .menu21.config.f.x5 normal {x l}} else {configure_entry .menu21.config.f.x5 disabled {x l}}
        global CONFIG_PCI_HADDR
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu21.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x6.l configure -state normal; } else {.menu21.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x6.l configure -state disabled}
        global CONFIG_PCI_ARBITER
        global CONFIG_PCI_ARBITER_APB
        if {($CONFIG_PCI_ARBITER == 1)} then {
        configure_entry .menu21.config.f.x8 normal {n l y}} else {configure_entry .menu21.config.f.x8 disabled {y n l}}
        global CONFIG_PCI_ARBITER_NREQ
        if {($CONFIG_PCI_ARBITER == 1)} then {.menu21.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x9.l configure -state normal; } else {.menu21.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x9.l configure -state disabled}
        global CONFIG_PCI_TRACE
        if {($CONFIG_PCI_TRACE == 1)} then {configure_entry .menu21.config.f.x11 normal {x l}} else {configure_entry .menu21.config.f.x11 disabled {x l}}
}


proc update_define_menu21 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_PCI_ACTEL
        global CONFIG_PCI_SIMPLE_TARGET
        if {($CONFIG_PCI_ACTEL != 1)} then {
        set CONFIG_PCI_SIMPLE_TARGET [expr $CONFIG_PCI_SIMPLE_TARGET&15]} else {set CONFIG_PCI_SIMPLE_TARGET [expr $CONFIG_PCI_SIMPLE_TARGET|16]}
        global CONFIG_PCI_MASTER_TARGET
        if {($CONFIG_PCI_SIMPLE_TARGET != 1 && $CONFIG_PCI_ACTEL != 1)} then {
        set CONFIG_PCI_MASTER_TARGET [expr $CONFIG_PCI_MASTER_TARGET&15]} else {set CONFIG_PCI_MASTER_TARGET [expr $CONFIG_PCI_MASTER_TARGET|16]}
        global CONFIG_PCI_MASTER_TARGET_DMA
        if {($CONFIG_PCI_MASTER_TARGET == 1)} then {
        set CONFIG_PCI_MASTER_TARGET_DMA [expr $CONFIG_PCI_MASTER_TARGET_DMA&15]} else {set CONFIG_PCI_MASTER_TARGET_DMA [expr $CONFIG_PCI_MASTER_TARGET_DMA|16]}
        global CONFIG_PCI_VENDORID
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 16E3}
        global CONFIG_PCI_DEVICEID
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0210}
        global tmpvar_29
        global CONFIG_PCI_FIFO0
        if {$tmpvar_29 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0}
        global CONFIG_PCI_FIFO8
        if {$tmpvar_29 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0}
        global CONFIG_PCI_FIFO16
        if {$tmpvar_29 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0}
        global CONFIG_PCI_FIFO32
        if {$tmpvar_29 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0}
        global CONFIG_PCI_FIFO64
        if {$tmpvar_29 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0}
        global CONFIG_PCI_FIFO128
        if {$tmpvar_29 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0}
        global CONFIG_PCI_HADDR
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00}
        global CONFIG_PCI_ARBITER
        global CONFIG_PCI_ARBITER_APB
        if {($CONFIG_PCI_ARBITER == 1)} then {
        set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]}
        global CONFIG_PCI_ARBITER_NREQ
        if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4}
        global tmpvar_30
        global CONFIG_PCI_TRACE256
        if {$tmpvar_30 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0}
        global CONFIG_PCI_TRACE512
        if {$tmpvar_30 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0}
        global CONFIG_PCI_TRACE1024
        if {$tmpvar_30 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0}
        global CONFIG_PCI_TRACE2048
        if {$tmpvar_30 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0}
        global CONFIG_PCI_TRACE4096
        if {$tmpvar_30 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0}
}


proc menu22 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 22}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 22]]
        message $w.m -width 400 -aspect 300 -text \
                "Spacewire "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "Spacewire " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 22; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu23 .menu23 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 22 0 "Enable Spacewire links              " CONFIG_SPW_ENABLE
        int $w.config.f 22 1 "Number of links (1 - 3)" CONFIG_SPW_NUM
        global tmpvar_31
        minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words)     " tmpvar_31 CONFIG_SPW_AHBFIFO4
        menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words)     \""
        $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active"
        $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active"
        menusplit $w $w.config.f.x2.x.menu 4
        global tmpvar_32
        minimenu $w.config.f 22 3 "Receiver FIFO size (bytes)        " tmpvar_32 CONFIG_SPW_RXFIFO16
        menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes)        \""
        $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active"
        menusplit $w $w.config.f.x3.x.menu 3
        bool $w.config.f 22 4 "Enable RMAP protocol   " CONFIG_SPW_RMAP
        global tmpvar_33
        minimenu $w.config.f 22 5 "RMAP buffer size (bytes)    " tmpvar_33 CONFIG_SPW_RMAPBUF2
        menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes)    \""
        $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_33 -value "192" -command "update_active"
        $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_33 -value "256" -command "update_active"
        menusplit $w $w.config.f.x5.x.menu 4
        bool $w.config.f 22 6 "Enable RMAP CRC check  " CONFIG_SPW_RMAPCRC
        bool $w.config.f 22 7 "Spacewire FIFO protection           " CONFIG_SPW_FT
        bool $w.config.f 22 8 "Use GRSPWC netlist     " CONFIG_SPW_NETLIST
        global tmpvar_34
        minimenu $w.config.f 22 9 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_34 CONFIG_SPW_GRSPW1
        menu $w.config.f.x9.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \""
        $w.config.f.x9.x.menu add radiobutton -label "1" -variable tmpvar_34 -value "1" -command "update_active"
        $w.config.f.x9.x.menu add radiobutton -label "2" -variable tmpvar_34 -value "2" -command "update_active"
        menusplit $w $w.config.f.x9.x.menu 2



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu22 {} {
        global CONFIG_SPW_ENABLE
        global CONFIG_SPW_NUM
        if {($CONFIG_SPW_ENABLE == 1)} then {.menu22.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x1.l configure -state normal; } else {.menu22.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x1.l configure -state disabled}
        if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu22.config.f.x2 normal {x l}} else {configure_entry .menu22.config.f.x2 disabled {x l}}
        if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu22.config.f.x3 normal {x l}} else {configure_entry .menu22.config.f.x3 disabled {x l}}
        global CONFIG_SPW_RMAP
        if {($CONFIG_SPW_ENABLE == 1)} then {
        configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}}
        if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then {configure_entry .menu22.config.f.x5 normal {x l}} else {configure_entry .menu22.config.f.x5 disabled {x l}}
        global CONFIG_SPW_RMAPCRC
        if {($CONFIG_SPW_ENABLE == 1)} then {
        configure_entry .menu22.config.f.x6 normal {n l y}} else {configure_entry .menu22.config.f.x6 disabled {y n l}}
        global CONFIG_SPW_FT
        if {($CONFIG_SPW_ENABLE == 1)} then {
        configure_entry .menu22.config.f.x7 normal {n l y}} else {configure_entry .menu22.config.f.x7 disabled {y n l}}
        global CONFIG_SPW_NETLIST
        if {($CONFIG_SPW_ENABLE == 1)} then {
        configure_entry .menu22.config.f.x8 normal {n l y}} else {configure_entry .menu22.config.f.x8 disabled {y n l}}
        if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu22.config.f.x9 normal {x l}} else {configure_entry .menu22.config.f.x9 disabled {x l}}
}


proc update_define_menu22 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global CONFIG_SPW_ENABLE
        global CONFIG_SPW_NUM
        if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1}
        global tmpvar_31
        global CONFIG_SPW_AHBFIFO4
        if {$tmpvar_31 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0}
        global CONFIG_SPW_AHBFIFO8
        if {$tmpvar_31 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0}
        global CONFIG_SPW_AHBFIFO16
        if {$tmpvar_31 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0}
        global CONFIG_SPW_AHBFIFO32
        if {$tmpvar_31 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0}
        global tmpvar_32
        global CONFIG_SPW_RXFIFO16
        if {$tmpvar_32 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0}
        global CONFIG_SPW_RXFIFO32
        if {$tmpvar_32 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0}
        global CONFIG_SPW_RXFIFO64
        if {$tmpvar_32 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0}
        global CONFIG_SPW_RMAP
        if {($CONFIG_SPW_ENABLE == 1)} then {
        set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]}
        global tmpvar_33
        global CONFIG_SPW_RMAPBUF2
        if {$tmpvar_33 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0}
        global CONFIG_SPW_RMAPBUF4
        if {$tmpvar_33 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0}
        global CONFIG_SPW_RMAPBUF6
        if {$tmpvar_33 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0}
        global CONFIG_SPW_RMAPBUF8
        if {$tmpvar_33 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0}
        global CONFIG_SPW_RMAPCRC
        if {($CONFIG_SPW_ENABLE == 1)} then {
        set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]}
        global CONFIG_SPW_FT
        if {($CONFIG_SPW_ENABLE == 1)} then {
        set CONFIG_SPW_FT [expr $CONFIG_SPW_FT&15]} else {set CONFIG_SPW_FT [expr $CONFIG_SPW_FT|16]}
        global CONFIG_SPW_NETLIST
        if {($CONFIG_SPW_ENABLE == 1)} then {
        set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]}
        global tmpvar_34
        global CONFIG_SPW_GRSPW1
        if {$tmpvar_34 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0}
        global CONFIG_SPW_GRSPW2
        if {$tmpvar_34 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0}
}


proc menu23 {w title} {
        set oldFocus [focus]
        catch {focus .menu13}
        catch {destroy $w; unregister_active 23}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 23]]
        message $w.m -width 400 -aspect 300 -text \
                "UARTs, timers and irq control         "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "UARTs, timers and irq control         " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 23; break"
        set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; catch {destroy .menu13}; unregister_active 13; menu24 .menu24 \"$title\""
        frame $w.f
        button $w.f.back -text "OK" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        bind all <Alt-n> $nextscript
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 23 0 "Enable console UART                  " CONFIG_UART1_ENABLE
        global tmpvar_35
        minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_35 CONFIG_UA1_FIFO1
        menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\""
        $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_35 -value "1" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_35 -value "2" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_35 -value "4" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_35 -value "8" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active"
        $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active"
        menusplit $w $w.config.f.x1.x.menu 6
        bool $w.config.f 23 2 "Enable secondary UART                " CONFIG_UART2_ENABLE
        global tmpvar_36
        minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_36 CONFIG_UA2_FIFO1
        menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\""
        $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_36 -value "4" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_36 -value "8" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_36 -value "16" -command "update_active"
        $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_36 -value "32" -command "update_active"
        menusplit $w $w.config.f.x3.x.menu 6
        bool $w.config.f 23 4 "Enable LEON3 interrupt controller    " CONFIG_IRQ3_ENABLE
        bool $w.config.f 23 5 "Enable Timer Unit                    " CONFIG_GPT_ENABLE
        int $w.config.f 23 6 "Number of timers (1 - 7)              " CONFIG_GPT_NTIM
        int $w.config.f 23 7 "Scaler width (2 - 16)                 " CONFIG_GPT_SW
        int $w.config.f 23 8 "Timer width (2 - 32)                  " CONFIG_GPT_TW
        int $w.config.f 23 9 "Timer unit interrupt                  " CONFIG_GPT_IRQ
        bool $w.config.f 23 10 "Separate interrupts                  " CONFIG_GPT_SEPIRQ
        bool $w.config.f 23 11 "Watchdog enable                      " CONFIG_GPT_WDOGEN
        hex $w.config.f 23 12 "Initial watchdog time-out value       " CONFIG_GPT_WDOG
        bool $w.config.f 23 13 "Enable generic GPIO port              " CONFIG_GRGPIO_ENABLE
        int $w.config.f 23 14 "GPIO width            " CONFIG_GRGPIO_WIDTH
        hex $w.config.f 23 15 "GPIO interrupt mask   " CONFIG_GRGPIO_IMASK



        focus $w
        update_active
        global winx; global winy
        if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals             "}
        set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu23 {} {
        global CONFIG_UART1_ENABLE
        if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu23.config.f.x1 normal {x l}} else {configure_entry .menu23.config.f.x1 disabled {x l}}
        global CONFIG_UART2_ENABLE
        if {($CONFIG_UART2_ENABLE == 1)} then {configure_entry .menu23.config.f.x3 normal {x l}} else {configure_entry .menu23.config.f.x3 disabled {x l}}
        global CONFIG_GPT_ENABLE
        global CONFIG_GPT_NTIM
        if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x6.l configure -state normal; } else {.menu23.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x6.l configure -state disabled}
        global CONFIG_GPT_SW
        if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x7.l configure -state normal; } else {.menu23.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x7.l configure -state disabled}
        global CONFIG_GPT_TW
        if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x8.l configure -state normal; } else {.menu23.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x8.l configure -state disabled}
        global CONFIG_GPT_IRQ
        if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x9.l configure -state normal; } else {.menu23.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x9.l configure -state disabled}
        global CONFIG_GPT_SEPIRQ
        if {($CONFIG_GPT_ENABLE == 1)} then {
        configure_entry .menu23.config.f.x10 normal {n l y}} else {configure_entry .menu23.config.f.x10 disabled {y n l}}
        global CONFIG_GPT_WDOGEN
        if {($CONFIG_GPT_ENABLE == 1)} then {
        configure_entry .menu23.config.f.x11 normal {n l y}} else {configure_entry .menu23.config.f.x11 disabled {y n l}}
        global CONFIG_GPT_WDOG
        if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu23.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x12.l configure -state normal; } else {.menu23.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x12.l configure -state disabled}
        global CONFIG_GRGPIO_ENABLE
        global CONFIG_GRGPIO_WIDTH
        if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu23.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x14.l configure -state normal; } else {.menu23.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x14.l configure -state disabled}
        global CONFIG_GRGPIO_IMASK
        if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu23.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x15.l configure -state normal; } else {.menu23.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x15.l configure -state disabled}
}


proc update_define_menu23 {} {
        update_define_mainmenu
        global CONFIG_MODULES
        global tmpvar_35
        global CONFIG_UA1_FIFO1
        if {$tmpvar_35 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0}
        global CONFIG_UA1_FIFO2
        if {$tmpvar_35 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0}
        global CONFIG_UA1_FIFO4
        if {$tmpvar_35 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0}
        global CONFIG_UA1_FIFO8
        if {$tmpvar_35 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0}
        global CONFIG_UA1_FIFO16
        if {$tmpvar_35 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0}
        global CONFIG_UA1_FIFO32
        if {$tmpvar_35 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0}
        global tmpvar_36
        global CONFIG_UA2_FIFO1
        if {$tmpvar_36 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0}
        global CONFIG_UA2_FIFO2
        if {$tmpvar_36 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0}
        global CONFIG_UA2_FIFO4
        if {$tmpvar_36 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0}
        global CONFIG_UA2_FIFO8
        if {$tmpvar_36 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0}
        global CONFIG_UA2_FIFO16
        if {$tmpvar_36 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0}
        global CONFIG_UA2_FIFO32
        if {$tmpvar_36 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0}
        global CONFIG_GPT_ENABLE
        global CONFIG_GPT_NTIM
        if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2}
        global CONFIG_GPT_SW
        if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8}
        global CONFIG_GPT_TW
        if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32}
        global CONFIG_GPT_IRQ
        if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8}
        global CONFIG_GPT_SEPIRQ
        if {($CONFIG_GPT_ENABLE == 1)} then {
        set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]}
        global CONFIG_GPT_WDOGEN
        if {($CONFIG_GPT_ENABLE == 1)} then {
        set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]}
        global CONFIG_GPT_WDOG
        if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF}
        global CONFIG_GRGPIO_ENABLE
        global CONFIG_GRGPIO_WIDTH
        if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_int CONFIG_GRGPIO_WIDTH "$CONFIG_GRGPIO_WIDTH" 8}
        global CONFIG_GRGPIO_IMASK
        if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_hex CONFIG_GRGPIO_IMASK "$CONFIG_GRGPIO_IMASK" 0000}
}


menu_option menu24 24 "VHDL Debugging        "
proc menu24 {w title} {
        set oldFocus [focus]
        catch {destroy $w; unregister_active 24}
        toplevel $w -class Dialog
        wm withdraw $w
        global active_menus
        set active_menus [lsort -integer [linsert $active_menus end 24]]
        message $w.m -width 400 -aspect 300 -text \
                "VHDL Debugging        "  -relief raised
        pack $w.m -pady 10 -side top -padx 10
        wm title $w "VHDL Debugging        " 

        bind $w <Escape> "catch {focus $oldFocus}; destroy $w; unregister_active 24; break"
        set nextscript "catch {focus $oldFocus}; menu25 .menu25 \"$title\""
        frame $w.f
        button $w.f.back -text "Main Menu" \
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24"
        button $w.f.next -text "Next" -underline 0\
                -width 15 -command $nextscript
        $w.f.next configure -state disabled
        bind all <Alt-n> "puts \"no more menus\" "
        button $w.f.prev -text "Prev" -underline 0\
                -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\""
        bind $w <Alt-p> "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break"
        pack $w.f.back $w.f.next $w.f.prev -side left -expand on
        pack $w.f -pady 10 -side bottom -anchor w -fill x
        frame $w.topline -relief ridge -borderwidth 2 -height 2
        pack $w.topline -side top -fill x

        frame $w.botline -relief ridge -borderwidth 2 -height 2
        pack $w.botline -side bottom -fill x

        frame $w.config
        pack $w.config -fill y -expand on

        scrollbar $w.config.vscroll -command "$w.config.canvas yview"
        pack $w.config.vscroll -side right -fill y

        canvas $w.config.canvas -height 1\
                -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \
                -width [expr [winfo screenwidth .] * 1 / 2] 
        frame $w.config.f
        bind $w <Key-Down> "$w.config.canvas yview scroll  1 unit;break;"
        bind $w <Key-Up> "$w.config.canvas yview scroll  -1 unit;break;"
        bind $w <Key-Next> "$w.config.canvas yview scroll  1 page;break;"
        bind $w <Key-Prior> "$w.config.canvas yview scroll  -1 page;break;"
        bind $w <Key-Home> "$w.config.canvas yview moveto 0;break;"
        bind $w <Key-End> "$w.config.canvas yview moveto 1 ;break;"
        pack $w.config.canvas -side right -fill y


        bool $w.config.f 24 0 "Accelerated UART tracing       " CONFIG_DEBUG_UART



        focus $w
        update_active
        global winx; global winy
        set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30]
        if {[winfo exists $w]} then {wm geometry $w +$winx+$winy}
        update idletasks
        if {[winfo exists $w]} then  {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f

        $w.config.canvas configure \
                -width [expr [winfo reqwidth $w.config.f] + 1]\
                -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \
                         [expr [winfo reqheight $w.config.f] + 1]"

        set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]]
        set scry [expr [winfo screenh $w] / 2]
        set maxy [expr [winfo screenh $w] * 3 / 4]
        set canvtotal [expr [winfo reqh $w.config.f] + 2]
        if [expr $winy + $canvtotal < $maxy] {
                $w.config.canvas configure -height $canvtotal
        } else {
                $w.config.canvas configure -height [expr $scry - $winy]
                }
        }
        update idletasks
        if {[winfo exists $w]} then {
        wm maxsize $w [winfo width $w] [winfo screenheight $w]
        wm minsize $w [winfo width $w] 100

        wm deiconify $w
}
}

proc update_menu24 {} {
}


proc update_define_menu24 {} {
        update_define_mainmenu
        global CONFIG_MODULES
}


proc update_mainmenu {}  {
}


set tmpvar_0 "(not set)"
set CONFIG_SYN_INFERRED 0
set CONFIG_SYN_STRATIX 0
set CONFIG_SYN_STRATIXII 0
set CONFIG_SYN_STRATIXIII 0
set CONFIG_SYN_CYCLONEIII 0
set CONFIG_SYN_ALTERA 0
set CONFIG_SYN_AXCEL 0
set CONFIG_SYN_PROASIC 0
set CONFIG_SYN_PROASICPLUS 0
set CONFIG_SYN_PROASIC3 0
set CONFIG_SYN_UT025CRH 0
set CONFIG_SYN_ATC18 0
set CONFIG_SYN_CUSTOM1 0
set CONFIG_SYN_EASIC90 0
set CONFIG_SYN_IHP25 0
set CONFIG_SYN_IHP25RH 0
set CONFIG_SYN_LATTICE 0
set CONFIG_SYN_ECLIPSE 0
set CONFIG_SYN_PEREGRINE 0
set CONFIG_SYN_RH_LIB18T 0
set CONFIG_SYN_RHUMC 0
set CONFIG_SYN_SPARTAN2 0
set CONFIG_SYN_SPARTAN3 0
set CONFIG_SYN_SPARTAN3E 0
set CONFIG_SYN_VIRTEX 0
set CONFIG_SYN_VIRTEXE 0
set CONFIG_SYN_VIRTEX2 0
set CONFIG_SYN_VIRTEX4 0
set CONFIG_SYN_VIRTEX5 0
set CONFIG_SYN_UMC 0
set CONFIG_SYN_TSMC90 0
set tmpvar_1 "(not set)"
set CONFIG_MEM_INFERRED 0
set CONFIG_MEM_UMC 0
set CONFIG_MEM_RHUMC 0
set CONFIG_MEM_ARTISAN 0
set CONFIG_MEM_CUSTOM1 0
set CONFIG_MEM_VIRAGE 0
set CONFIG_MEM_VIRAGE90 0
set CONFIG_SYN_INFER_RAM 0
set CONFIG_SYN_INFER_PADS 0
set CONFIG_SYN_NO_ASYNC 0
set CONFIG_SYN_SCAN 0
set tmpvar_2 "(not set)"
set CONFIG_CLK_INFERRED 0
set CONFIG_CLK_HCLKBUF 0
set CONFIG_CLK_ALTDLL 0
set CONFIG_CLK_LATDLL 0
set CONFIG_CLK_PRO3PLL 0
set CONFIG_CLK_LIB18T 0
set CONFIG_CLK_RHUMC 0
set CONFIG_CLK_CLKDLL 0
set CONFIG_CLK_DCM 0
set CONFIG_CLK_MUL 2
set CONFIG_CLK_DIV 2
set CONFIG_OCLK_DIV 2
set CONFIG_PCI_CLKDLL 0
set CONFIG_CLK_NOFB 0
set CONFIG_PCI_SYSCLK 0
set CONFIG_LEON3 0
set CONFIG_PROC_NUM 1
set CONFIG_IU_NWINDOWS 8
set CONFIG_IU_V8MULDIV 0
set tmpvar_3 "(not set)"
set CONFIG_IU_MUL_LATENCY_4 0
set CONFIG_IU_MUL_LATENCY_5 0
set CONFIG_IU_MUL_MAC 0
set CONFIG_IU_SVT 0
set CONFIG_IU_LDELAY 1
set CONFIG_IU_WATCHPOINTS 0
set CONFIG_PWD 0
set CONFIG_IU_RSTADDR 00000
set CONFIG_FPU_ENABLE 0
set tmpvar_4 "(not set)"
set CONFIG_FPU_GRFPU 0
set CONFIG_FPU_GRFPULITE 0
set CONFIG_FPU_MEIKO 0
set tmpvar_5 "(not set)"
set CONFIG_FPU_GRFPU_INFMUL 0
set CONFIG_FPU_GRFPU_DWMUL 0
set tmpvar_6 "(not set)"
set CONFIG_FPU_GRFPC0 0
set CONFIG_FPU_GRFPC1 0
set CONFIG_FPU_GRFPC2 0
set CONFIG_FPU_NETLIST 0
set CONFIG_ICACHE_ENABLE 0
set tmpvar_7 "(not set)"
set CONFIG_ICACHE_ASSO1 0
set CONFIG_ICACHE_ASSO2 0
set CONFIG_ICACHE_ASSO3 0
set CONFIG_ICACHE_ASSO4 0
set tmpvar_8 "(not set)"
set CONFIG_ICACHE_SZ1 0
set CONFIG_ICACHE_SZ2 0
set CONFIG_ICACHE_SZ4 0
set CONFIG_ICACHE_SZ8 0
set CONFIG_ICACHE_SZ16 0
set CONFIG_ICACHE_SZ32 0
set CONFIG_ICACHE_SZ64 0
set CONFIG_ICACHE_SZ128 0
set CONFIG_ICACHE_SZ256 0
set tmpvar_9 "(not set)"
set CONFIG_ICACHE_LZ16 0
set CONFIG_ICACHE_LZ32 0
set tmpvar_10 "(not set)"
set CONFIG_ICACHE_ALGORND 0
set CONFIG_ICACHE_ALGOLRR 0
set CONFIG_ICACHE_ALGOLRU 0
set CONFIG_ICACHE_LOCK 0
set CONFIG_ICACHE_LRAM 0
set tmpvar_11 "(not set)"
set CONFIG_ICACHE_LRAM_SZ1 0
set CONFIG_ICACHE_LRAM_SZ2 0
set CONFIG_ICACHE_LRAM_SZ4 0
set CONFIG_ICACHE_LRAM_SZ8 0
set CONFIG_ICACHE_LRAM_SZ16 0
set CONFIG_ICACHE_LRAM_SZ32 0
set CONFIG_ICACHE_LRAM_SZ64 0
set CONFIG_ICACHE_LRAM_SZ128 0
set CONFIG_ICACHE_LRAM_SZ256 0
set CONFIG_ICACHE_LRSTART 8e
set CONFIG_DCACHE_ENABLE 0
set tmpvar_12 "(not set)"
set CONFIG_DCACHE_ASSO1 0
set CONFIG_DCACHE_ASSO2 0
set CONFIG_DCACHE_ASSO3 0
set CONFIG_DCACHE_ASSO4 0
set tmpvar_13 "(not set)"
set CONFIG_DCACHE_SZ1 0
set CONFIG_DCACHE_SZ2 0
set CONFIG_DCACHE_SZ4 0
set CONFIG_DCACHE_SZ8 0
set CONFIG_DCACHE_SZ16 0
set CONFIG_DCACHE_SZ32 0
set CONFIG_DCACHE_SZ64 0
set CONFIG_DCACHE_SZ128 0
set CONFIG_DCACHE_SZ256 0
set tmpvar_14 "(not set)"
set CONFIG_DCACHE_LZ16 0
set CONFIG_DCACHE_LZ32 0
set tmpvar_15 "(not set)"
set CONFIG_DCACHE_ALGORND 0
set CONFIG_DCACHE_ALGOLRR 0
set CONFIG_DCACHE_ALGOLRU 0
set CONFIG_DCACHE_LOCK 0
set CONFIG_DCACHE_SNOOP 0
set CONFIG_DCACHE_SNOOP_FAST 0
set CONFIG_DCACHE_SNOOP_SEPTAG 0
set CONFIG_CACHE_FIXED 0
set CONFIG_DCACHE_LRAM 0
set tmpvar_16 "(not set)"
set CONFIG_DCACHE_LRAM_SZ1 0
set CONFIG_DCACHE_LRAM_SZ2 0
set CONFIG_DCACHE_LRAM_SZ4 0
set CONFIG_DCACHE_LRAM_SZ8 0
set CONFIG_DCACHE_LRAM_SZ16 0
set CONFIG_DCACHE_LRAM_SZ32 0
set CONFIG_DCACHE_LRAM_SZ64 0
set CONFIG_DCACHE_LRAM_SZ128 0
set CONFIG_DCACHE_LRAM_SZ256 0
set CONFIG_DCACHE_LRSTART 8f
set CONFIG_MMU_ENABLE 0
set tmpvar_17 "(not set)"
set CONFIG_MMU_COMBINED 0
set CONFIG_MMU_SPLIT 0
set tmpvar_18 "(not set)"
set CONFIG_MMU_REPARRAY 0
set CONFIG_MMU_REPINCREMENT 0
set tmpvar_19 "(not set)"
set CONFIG_MMU_I2 0
set CONFIG_MMU_I4 0
set CONFIG_MMU_I8 0
set CONFIG_MMU_I16 0
set CONFIG_MMU_I32 0
set tmpvar_20 "(not set)"
set CONFIG_MMU_D2 0
set CONFIG_MMU_D4 0
set CONFIG_MMU_D8 0
set CONFIG_MMU_D16 0
set CONFIG_MMU_D32 0
set CONFIG_MMU_FASTWB 0
set CONFIG_DSU_ENABLE 0
set CONFIG_DSU_ITRACE 0
set tmpvar_21 "(not set)"
set CONFIG_DSU_ITRACESZ1 0
set CONFIG_DSU_ITRACESZ2 0
set CONFIG_DSU_ITRACESZ4 0
set CONFIG_DSU_ITRACESZ8 0
set CONFIG_DSU_ITRACESZ16 0
set CONFIG_DSU_ATRACE 0
set tmpvar_22 "(not set)"
set CONFIG_DSU_ATRACESZ1 0
set CONFIG_DSU_ATRACESZ2 0
set CONFIG_DSU_ATRACESZ4 0
set CONFIG_DSU_ATRACESZ8 0
set CONFIG_DSU_ATRACESZ16 0
set CONFIG_IU_DISAS 0
set CONFIG_IU_DISAS_NET 0
set CONFIG_DEBUG_PC32 0
set CONFIG_AHB_DEFMST 0
set CONFIG_AHB_RROBIN 0
set CONFIG_AHB_SPLIT 0
set CONFIG_AHB_IOADDR FFF
set CONFIG_APB_HADDR 800
set CONFIG_AHB_MON 0
set CONFIG_AHB_MONERR 0
set CONFIG_AHB_MONWAR 0
set CONFIG_DSU_UART 0
set CONFIG_DSU_JTAG 0
set CONFIG_DSU_ETH 0
set tmpvar_24 "(not set)"
set CONFIG_DSU_ETHSZ1 0
set CONFIG_DSU_ETHSZ2 0
set CONFIG_DSU_ETHSZ4 0
set CONFIG_DSU_ETHSZ8 0
set CONFIG_DSU_ETHSZ16 0
set CONFIG_DSU_IPMSB C0A8
set CONFIG_DSU_IPLSB 0033
set CONFIG_DSU_ETHMSB 00007A
set CONFIG_DSU_ETHLSB CC0001
set CONFIG_DSU_ETH_PROG 0
set CONFIG_SRCTRL 0
set CONFIG_SRCTRL_8BIT 0
set CONFIG_SRCTRL_PROMWS 3
set CONFIG_SRCTRL_RAMWS 0
set CONFIG_SRCTRL_IOWS 0
set CONFIG_SRCTRL_RMW 0
set tmpvar_25 "(not set)"
set CONFIG_SRCTRL_SRBANKS1 0
set CONFIG_SRCTRL_SRBANKS2 0
set CONFIG_SRCTRL_SRBANKS3 0
set CONFIG_SRCTRL_SRBANKS4 0
set CONFIG_SRCTRL_SRBANKS5 0
set tmpvar_26 "(not set)"
set CONFIG_SRCTRL_BANKSZ0 0
set CONFIG_SRCTRL_BANKSZ1 0
set CONFIG_SRCTRL_BANKSZ2 0
set CONFIG_SRCTRL_BANKSZ3 0
set CONFIG_SRCTRL_BANKSZ4 0
set CONFIG_SRCTRL_BANKSZ5 0
set CONFIG_SRCTRL_BANKSZ6 0
set CONFIG_SRCTRL_BANKSZ7 0
set CONFIG_SRCTRL_BANKSZ8 0
set CONFIG_SRCTRL_BANKSZ9 0
set CONFIG_SRCTRL_BANKSZ10 0
set CONFIG_SRCTRL_BANKSZ11 0
set CONFIG_SRCTRL_BANKSZ12 0
set CONFIG_SRCTRL_BANKSZ13 0
set CONFIG_SRCTRL_ROMASEL 19
set CONFIG_MCTRL_LEON2 0
set CONFIG_MCTRL_8BIT 0
set CONFIG_MCTRL_16BIT 0
set CONFIG_MCTRL_5CS 0
set CONFIG_MCTRL_SDRAM 0
set CONFIG_MCTRL_SDRAM_SEPBUS 0
set CONFIG_MCTRL_SDRAM_BUS64 0
set CONFIG_MCTRL_SDRAM_INVCLK 0
set CONFIG_MCTRL_PAGE 0
set CONFIG_MCTRL_PROGPAGE 0
set CONFIG_SDCTRL 0
set CONFIG_SDCTRL_BUS64 0
set CONFIG_SDCTRL_INVCLK 0
set CONFIG_SDCTRL_PAGE 0
set CONFIG_SDCTRL_PROGPAGE 0
set CONFIG_AHBROM_ENABLE 0
set CONFIG_AHBROM_START 000
set CONFIG_AHBROM_PIPE 0
set CONFIG_AHBRAM_ENABLE 0
set tmpvar_27 "(not set)"
set CONFIG_AHBRAM_SZ1 0
set CONFIG_AHBRAM_SZ2 0
set CONFIG_AHBRAM_SZ4 0
set CONFIG_AHBRAM_SZ8 0
set CONFIG_AHBRAM_SZ16 0
set CONFIG_AHBRAM_SZ32 0
set CONFIG_AHBRAM_SZ64 0
set CONFIG_AHBRAM_START A00
set CONFIG_GRETH_ENABLE 0
set CONFIG_GRETH_GIGA 0
set tmpvar_28 "(not set)"
set CONFIG_GRETH_FIFO4 0
set CONFIG_GRETH_FIFO8 0
set CONFIG_GRETH_FIFO16 0
set CONFIG_GRETH_FIFO32 0
set CONFIG_GRETH_FIFO64 0
set CONFIG_CAN_ENABLE 0
set CONFIG_CANIO C00
set CONFIG_CANIRQ 13
set CONFIG_CANLOOP 0
set CONFIG_CAN_SYNCRST 0
set CONFIG_CAN_FT 0
set CONFIG_PCI_SIMPLE_TARGET 0
set CONFIG_PCI_MASTER_TARGET 0
set CONFIG_PCI_MASTER_TARGET_DMA 0
set CONFIG_PCI_VENDORID 16E3
set CONFIG_PCI_DEVICEID 0210
set tmpvar_29 "(not set)"
set CONFIG_PCI_FIFO0 0
set CONFIG_PCI_FIFO8 0
set CONFIG_PCI_FIFO16 0
set CONFIG_PCI_FIFO32 0
set CONFIG_PCI_FIFO64 0
set CONFIG_PCI_FIFO128 0
set CONFIG_PCI_HADDR E00
set CONFIG_PCI_ARBITER 0
set CONFIG_PCI_ARBITER_APB 0
set CONFIG_PCI_ARBITER_NREQ 4
set CONFIG_PCI_TRACE 0
set tmpvar_30 "(not set)"
set CONFIG_PCI_TRACE256 0
set CONFIG_PCI_TRACE512 0
set CONFIG_PCI_TRACE1024 0
set CONFIG_PCI_TRACE2048 0
set CONFIG_PCI_TRACE4096 0
set CONFIG_SPW_ENABLE 0
set CONFIG_SPW_NUM 1
set tmpvar_31 "(not set)"
set CONFIG_SPW_AHBFIFO4 0
set CONFIG_SPW_AHBFIFO8 0
set CONFIG_SPW_AHBFIFO16 0
set CONFIG_SPW_AHBFIFO32 0
set tmpvar_32 "(not set)"
set CONFIG_SPW_RXFIFO16 0
set CONFIG_SPW_RXFIFO32 0
set CONFIG_SPW_RXFIFO64 0
set CONFIG_SPW_RMAP 0
set tmpvar_33 "(not set)"
set CONFIG_SPW_RMAPBUF2 0
set CONFIG_SPW_RMAPBUF4 0
set CONFIG_SPW_RMAPBUF6 0
set CONFIG_SPW_RMAPBUF8 0
set CONFIG_SPW_RMAPCRC 0
set CONFIG_SPW_FT 0
set CONFIG_SPW_NETLIST 0
set tmpvar_34 "(not set)"
set CONFIG_SPW_GRSPW1 0
set CONFIG_SPW_GRSPW2 0
set CONFIG_UART1_ENABLE 0
set tmpvar_35 "(not set)"
set CONFIG_UA1_FIFO1 0
set CONFIG_UA1_FIFO2 0
set CONFIG_UA1_FIFO4 0
set CONFIG_UA1_FIFO8 0
set CONFIG_UA1_FIFO16 0
set CONFIG_UA1_FIFO32 0
set CONFIG_UART2_ENABLE 0
set tmpvar_36 "(not set)"
set CONFIG_UA2_FIFO1 0
set CONFIG_UA2_FIFO2 0
set CONFIG_UA2_FIFO4 0
set CONFIG_UA2_FIFO8 0
set CONFIG_UA2_FIFO16 0
set CONFIG_UA2_FIFO32 0
set CONFIG_IRQ3_ENABLE 0
set CONFIG_GPT_ENABLE 0
set CONFIG_GPT_NTIM 2
set CONFIG_GPT_SW 8
set CONFIG_GPT_TW 32
set CONFIG_GPT_IRQ 8
set CONFIG_GPT_SEPIRQ 0
set CONFIG_GPT_WDOGEN 0
set CONFIG_GPT_WDOG FFFF
set CONFIG_GRGPIO_ENABLE 0
set CONFIG_GRGPIO_WIDTH 8
set CONFIG_GRGPIO_IMASK 0000
set CONFIG_DEBUG_UART 0
set CONFIG_SYN_ARTISAN 4
set CONFIG_PCI_ENABLE 4
set CONFIG_HAS_SHARED_GRFPU 4
set CONFIG_FPU_GRFPU_SH 4
set CONFIG_LEON3FT_PRESENT 4
set CONFIG_LEON3FT_EN 4
set CONFIG_IUFT_NONE 4
set CONFIG_IUFT_PAR 4
set CONFIG_IUFT_DMR 4
set CONFIG_IUFT_BCH 4
set CONFIG_IUFT_TMR 4
set CONFIG_FPUFT_EN 4
set CONFIG_RF_ERRINJ 4
set CONFIG_CACHE_FT_EN 4
set CONFIG_CACHE_ERRINJ 4
set CONFIG_LEON3_NETLIST 4
set CONFIG_PCI_ACTEL 4
set CONFIG_MODULES 4
proc writeconfig {file1 file2} {
        set cfg [open $file1 w]
        set autocfg [open $file2 w]
        set notmod 1
        set notset 0
        puts $cfg "#"
        puts $cfg "# Automatically generated make config: don't edit"
        puts $cfg "#"
        puts $autocfg "/*"
        puts $autocfg " * Automatically generated C config: don't edit"
        puts $autocfg " */"
        puts $autocfg "#define AUTOCONF_INCLUDED"
        write_comment $cfg $autocfg "Synthesis      "
        global tmpvar_0
        
        if { $tmpvar_0 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_SYN_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_INFERRED 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Altera-Stratix" } then { write_tristate $cfg $autocfg CONFIG_SYN_STRATIX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_STRATIX 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Altera-StratixII" } then { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXII 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Altera-StratixIII" } then { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXIII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXIII 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Altera-CycloneIII" } then { write_tristate $cfg $autocfg CONFIG_SYN_CYCLONEIII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_CYCLONEIII 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Altera-Others" } then { write_tristate $cfg $autocfg CONFIG_SYN_ALTERA 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ALTERA 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Actel-Axcelerator" } then { write_tristate $cfg $autocfg CONFIG_SYN_AXCEL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_AXCEL 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Actel-Proasic" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Actel-ProasicPlus" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASICPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASICPLUS 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Actel-Proasic3" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Aeroflex-UT025CRH" } then { write_tristate $cfg $autocfg CONFIG_SYN_UT025CRH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UT025CRH 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Atmel-ATC18" } then { write_tristate $cfg $autocfg CONFIG_SYN_ATC18 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ATC18 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Custom1" } then { write_tristate $cfg $autocfg CONFIG_SYN_CUSTOM1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_CUSTOM1 0 [list $notmod] 2 }
        if { $tmpvar_0 == "eASIC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_EASIC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_EASIC90 0 [list $notmod] 2 }
        if { $tmpvar_0 == "IHP25" } then { write_tristate $cfg $autocfg CONFIG_SYN_IHP25 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_IHP25 0 [list $notmod] 2 }
        if { $tmpvar_0 == "IHP25RH" } then { write_tristate $cfg $autocfg CONFIG_SYN_IHP25RH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_IHP25RH 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Lattice-EC/ECP/XP" } then { write_tristate $cfg $autocfg CONFIG_SYN_LATTICE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_LATTICE 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Quicklogic-Eclipse" } then { write_tristate $cfg $autocfg CONFIG_SYN_ECLIPSE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ECLIPSE 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Peregrine" } then { write_tristate $cfg $autocfg CONFIG_SYN_PEREGRINE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PEREGRINE 0 [list $notmod] 2 }
        if { $tmpvar_0 == "RH-LIB18T" } then { write_tristate $cfg $autocfg CONFIG_SYN_RH_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_RH_LIB18T 0 [list $notmod] 2 }
        if { $tmpvar_0 == "RH-UMC" } then { write_tristate $cfg $autocfg CONFIG_SYN_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_RHUMC 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Virtex" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-VirtexE" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEXE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEXE 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Virtex2" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX2 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 }
        if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 }
        if { $tmpvar_0 == "UMC18" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 }
        if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 }
        global tmpvar_1
        global CONFIG_SYN_INFERRED
        global CONFIG_SYN_CUSTOM1
        global CONFIG_SYN_ATC18
        global CONFIG_SYN_TSMC90
        global CONFIG_SYN_UMC
        global CONFIG_SYN_RHUMC
        global CONFIG_SYN_ARTISAN
        if {($CONFIG_SYN_INFERRED == 1 || $CONFIG_SYN_CUSTOM1 == 1 || $CONFIG_SYN_ATC18 == 1 || $CONFIG_SYN_TSMC90 == 1 || $CONFIG_SYN_UMC == 1 || $CONFIG_SYN_RHUMC == 1 || $CONFIG_SYN_ARTISAN == 1)} then {
        if { $tmpvar_1 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_MEM_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_INFERRED 0 [list $notmod] 2 }
        if { $tmpvar_1 == "UMC18" } then { write_tristate $cfg $autocfg CONFIG_MEM_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_UMC 0 [list $notmod] 2 }
        if { $tmpvar_1 == "RH-UMC" } then { write_tristate $cfg $autocfg CONFIG_MEM_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_RHUMC 0 [list $notmod] 2 }
        if { $tmpvar_1 == "Artisan" } then { write_tristate $cfg $autocfg CONFIG_MEM_ARTISAN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_ARTISAN 0 [list $notmod] 2 }
        if { $tmpvar_1 == "Custom1" } then { write_tristate $cfg $autocfg CONFIG_MEM_CUSTOM1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_CUSTOM1 0 [list $notmod] 2 }
        if { $tmpvar_1 == "Virage" } then { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE 0 [list $notmod] 2 }
        if { $tmpvar_1 == "Virage-TSMC90" } then { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE90 0 [list $notmod] 2 }}
        global CONFIG_SYN_INFER_RAM
        if {($CONFIG_SYN_INFERRED != 1)} then {write_tristate $cfg $autocfg CONFIG_SYN_INFER_RAM $CONFIG_SYN_INFER_RAM [list $notmod] 2 }
        global CONFIG_SYN_INFER_PADS
        if {($CONFIG_SYN_INFERRED != 1)} then {write_tristate $cfg $autocfg CONFIG_SYN_INFER_PADS $CONFIG_SYN_INFER_PADS [list $notmod] 2 }
        global CONFIG_SYN_NO_ASYNC
        write_tristate $cfg $autocfg CONFIG_SYN_NO_ASYNC $CONFIG_SYN_NO_ASYNC [list $notmod] 2
        global CONFIG_SYN_SCAN
        write_tristate $cfg $autocfg CONFIG_SYN_SCAN $CONFIG_SYN_SCAN [list $notmod] 2
        write_comment $cfg $autocfg "Clock generation"
        global tmpvar_2
        
        if { $tmpvar_2 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_CLK_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_INFERRED 0 [list $notmod] 2 }
        if { $tmpvar_2 == "Actel-HCLKBUF" } then { write_tristate $cfg $autocfg CONFIG_CLK_HCLKBUF 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_HCLKBUF 0 [list $notmod] 2 }
        if { $tmpvar_2 == "Altera-ALTPLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_ALTDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_ALTDLL 0 [list $notmod] 2 }
        if { $tmpvar_2 == "Lattice-EXPLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LATDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LATDLL 0 [list $notmod] 2 }
        if { $tmpvar_2 == "Proasic3-PLLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 0 [list $notmod] 2 }
        if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 }
        if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 }
        if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 }
        if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 }
        global CONFIG_CLK_MUL
        global CONFIG_CLK_DCM
        global CONFIG_CLK_ALTDLL
        global CONFIG_CLK_LATDLL
        global CONFIG_CLK_PRO3PLL
        global CONFIG_CLK_CLKDLL
        global CONFIG_CLK_LIB18T
        if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod }
        global CONFIG_CLK_DIV
        if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod }
        global CONFIG_OCLK_DIV
        if {($CONFIG_CLK_PRO3PLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod }
        global CONFIG_PCI_CLKDLL
        if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_CLKDLL $CONFIG_PCI_CLKDLL [list $notmod] 2 }
        global CONFIG_CLK_NOFB
        if {($CONFIG_CLK_DCM == 1)} then {write_tristate $cfg $autocfg CONFIG_CLK_NOFB $CONFIG_CLK_NOFB [list $notmod] 2 }
        global CONFIG_PCI_SYSCLK
        global CONFIG_PCI_ENABLE
        if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 }
        global CONFIG_LEON3
        write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2
        global CONFIG_PROC_NUM
        if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod }
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor            "}
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit                                           "}
        global CONFIG_IU_NWINDOWS
        if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod }
        global CONFIG_IU_V8MULDIV
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 }
        global tmpvar_3
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {
        if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 }
        if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }}
        global CONFIG_IU_MUL_MAC
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 }
        global CONFIG_IU_SVT
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 }
        global CONFIG_IU_LDELAY
        if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod }
        global CONFIG_IU_WATCHPOINTS
        if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod }
        global CONFIG_PWD
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 }
        global CONFIG_IU_RSTADDR
        if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod }
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"}
        global CONFIG_FPU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 }
        global tmpvar_4
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {
        if { $tmpvar_4 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 }
        if { $tmpvar_4 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 }
        if { $tmpvar_4 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }}
        global tmpvar_5
        global CONFIG_FPU_GRFPU
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {
        if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 }
        if { $tmpvar_5 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 }}
        global tmpvar_6
        global CONFIG_FPU_GRFPULITE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {
        if { $tmpvar_6 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 }
        if { $tmpvar_6 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 }
        if { $tmpvar_6 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }}
        global CONFIG_FPU_NETLIST
        if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 }
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"}
        global CONFIG_ICACHE_ENABLE
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 }
        global tmpvar_7
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {
        if { $tmpvar_7 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 }
        if { $tmpvar_7 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 }
        if { $tmpvar_7 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 }
        if { $tmpvar_7 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }}
        global tmpvar_8
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {
        if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 }
        if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 }
        if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 }
        if { $tmpvar_8 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 }
        if { $tmpvar_8 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 }
        if { $tmpvar_8 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 }
        if { $tmpvar_8 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 }
        if { $tmpvar_8 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 }
        if { $tmpvar_8 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }}
        global tmpvar_9
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {
        if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 }
        if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }}
        global tmpvar_10
        global CONFIG_ICACHE_ASSO1
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {
        if { $tmpvar_10 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 }
        if { $tmpvar_10 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 }
        if { $tmpvar_10 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }}
        global CONFIG_ICACHE_LOCK
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 }
        global CONFIG_ICACHE_LRAM
        global CONFIG_MMU_ENABLE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 }
        global tmpvar_11
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {
        if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 }
        if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 }
        if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 }
        if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 }
        if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 }
        if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 }
        if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 }
        if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 }
        if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }}
        global CONFIG_ICACHE_LRSTART
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod }
        global CONFIG_DCACHE_ENABLE
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 }
        global tmpvar_12
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {
        if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 }
        if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 }
        if { $tmpvar_12 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 }
        if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }}
        global tmpvar_13
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {
        if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 }
        if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 }
        if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 }
        if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 }
        if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 }
        if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 }
        if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 }
        if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 }
        if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }}
        global tmpvar_14
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {
        if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 }
        if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }}
        global tmpvar_15
        global CONFIG_DCACHE_ASSO1
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {
        if { $tmpvar_15 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 }
        if { $tmpvar_15 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 }
        if { $tmpvar_15 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }}
        global CONFIG_DCACHE_LOCK
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 }
        global CONFIG_DCACHE_SNOOP
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 }
        global CONFIG_DCACHE_SNOOP_FAST
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 }
        global CONFIG_DCACHE_SNOOP_SEPTAG
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 }
        global CONFIG_CACHE_FIXED
        if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod }
        global CONFIG_DCACHE_LRAM
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 }
        global tmpvar_16
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {
        if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 }
        if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 }
        if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 }
        if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 }
        if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 }
        if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 }
        if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 }
        if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 }
        if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }}
        global CONFIG_DCACHE_LRSTART
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod }
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"}
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 }
        global tmpvar_17
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {
        if { $tmpvar_17 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 }
        if { $tmpvar_17 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }}
        global tmpvar_18
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {
        if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 }
        if { $tmpvar_18 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }}
        global tmpvar_19
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {
        if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 }
        if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 }
        if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 }
        if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 }
        if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }}
        global tmpvar_20
        global CONFIG_MMU_SPLIT
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {
        if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 }
        if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 }
        if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 }
        if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 }
        if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }}
        global CONFIG_MMU_FASTWB
        if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 }
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit        "}
        global CONFIG_DSU_ENABLE
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 }
        global CONFIG_DSU_ITRACE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 }
        global tmpvar_21
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {
        if { $tmpvar_21 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 }
        if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 }
        if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 }
        if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 }
        if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }}
        global CONFIG_DSU_ATRACE
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 }
        global tmpvar_22
        if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {
        if { $tmpvar_22 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 }
        if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 }
        if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 }
        if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 }
        if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }}
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance  "}
        if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "VHDL debug settings       "}
        global CONFIG_IU_DISAS
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS $CONFIG_IU_DISAS [list $notmod] 2 }
        global CONFIG_IU_DISAS_NET
        if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS_NET $CONFIG_IU_DISAS_NET [list $notmod] 2 }
        global CONFIG_DEBUG_PC32
        if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DEBUG_PC32 $CONFIG_DEBUG_PC32 [list $notmod] 2 }
        write_comment $cfg $autocfg "AMBA configuration"
        global CONFIG_AHB_DEFMST
        write_int $cfg $autocfg CONFIG_AHB_DEFMST $CONFIG_AHB_DEFMST $notmod
        global CONFIG_AHB_RROBIN
        write_tristate $cfg $autocfg CONFIG_AHB_RROBIN $CONFIG_AHB_RROBIN [list $notmod] 2
        global CONFIG_AHB_SPLIT
        write_tristate $cfg $autocfg CONFIG_AHB_SPLIT $CONFIG_AHB_SPLIT [list $notmod] 2
        global CONFIG_AHB_IOADDR
        write_hex $cfg $autocfg CONFIG_AHB_IOADDR $CONFIG_AHB_IOADDR $notmod
        global CONFIG_APB_HADDR
        write_hex $cfg $autocfg CONFIG_APB_HADDR $CONFIG_APB_HADDR $notmod
        global CONFIG_AHB_MON
        write_tristate $cfg $autocfg CONFIG_AHB_MON $CONFIG_AHB_MON [list $notmod] 2
        global CONFIG_AHB_MONERR
        if {($CONFIG_AHB_MON == 1)} then {write_tristate $cfg $autocfg CONFIG_AHB_MONERR $CONFIG_AHB_MONERR [list $notmod] 2 }
        global CONFIG_AHB_MONWAR
        if {($CONFIG_AHB_MON == 1)} then {write_tristate $cfg $autocfg CONFIG_AHB_MONWAR $CONFIG_AHB_MONWAR [list $notmod] 2 }
        write_comment $cfg $autocfg "Debug Link           "
        global CONFIG_DSU_UART
        write_tristate $cfg $autocfg CONFIG_DSU_UART $CONFIG_DSU_UART [list $notmod] 2
        global CONFIG_DSU_JTAG
        write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2
        global CONFIG_DSU_ETH
        global CONFIG_GRETH_ENABLE
        if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 }
        global tmpvar_24
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {
        if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 }
        if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 }
        if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 }
        if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 }
        if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }}
        global CONFIG_DSU_IPMSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod }
        global CONFIG_DSU_IPLSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPLSB $CONFIG_DSU_IPLSB $notmod }
        global CONFIG_DSU_ETHMSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_ETHMSB $CONFIG_DSU_ETHMSB $notmod }
        global CONFIG_DSU_ETHLSB
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_ETHLSB $CONFIG_DSU_ETHLSB $notmod }
        global CONFIG_DSU_ETH_PROG
        global CONFIG_GRETH_GIGA
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_PROG $CONFIG_DSU_ETH_PROG [list $notmod] 2 }
        write_comment $cfg $autocfg "Peripherals             "
        write_comment $cfg $autocfg "Memory controllers             "
        write_comment $cfg $autocfg "8/32-bit PROM/SRAM controller "
        global CONFIG_SRCTRL
        write_tristate $cfg $autocfg CONFIG_SRCTRL $CONFIG_SRCTRL [list $notmod] 2
        global CONFIG_SRCTRL_8BIT
        if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_8BIT $CONFIG_SRCTRL_8BIT [list $notmod] 2 }
        global CONFIG_SRCTRL_PROMWS
        if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_PROMWS $CONFIG_SRCTRL_PROMWS $notmod }
        global CONFIG_SRCTRL_RAMWS
        if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_RAMWS $CONFIG_SRCTRL_RAMWS $notmod }
        global CONFIG_SRCTRL_IOWS
        if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod }
        global CONFIG_SRCTRL_RMW
        if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 }
        global tmpvar_25
        if {($CONFIG_SRCTRL == 1)} then {
        if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 }
        if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 }
        if { $tmpvar_25 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 }
        if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 }
        if { $tmpvar_25 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }}
        global tmpvar_26
        if {($CONFIG_SRCTRL == 1)} then {
        if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 }
        if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 }
        if { $tmpvar_26 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 }
        if { $tmpvar_26 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 }
        if { $tmpvar_26 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 }
        if { $tmpvar_26 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 }
        if { $tmpvar_26 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 }
        if { $tmpvar_26 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 }
        if { $tmpvar_26 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 }
        if { $tmpvar_26 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 }
        if { $tmpvar_26 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 }
        if { $tmpvar_26 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 }
        if { $tmpvar_26 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 }
        if { $tmpvar_26 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }}
        global CONFIG_SRCTRL_ROMASEL
        if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod }
        write_comment $cfg $autocfg "Leon2 memory controller        "
        global CONFIG_MCTRL_LEON2
        write_tristate $cfg $autocfg CONFIG_MCTRL_LEON2 $CONFIG_MCTRL_LEON2 [list $notmod] 2
        global CONFIG_MCTRL_8BIT
        if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_8BIT $CONFIG_MCTRL_8BIT [list $notmod] 2 }
        global CONFIG_MCTRL_16BIT
        if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_16BIT $CONFIG_MCTRL_16BIT [list $notmod] 2 }
        global CONFIG_MCTRL_5CS
        if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_5CS $CONFIG_MCTRL_5CS [list $notmod] 2 }
        global CONFIG_MCTRL_SDRAM
        if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM $CONFIG_MCTRL_SDRAM [list $notmod] 2 }
        global CONFIG_MCTRL_SDRAM_SEPBUS
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_SEPBUS $CONFIG_MCTRL_SDRAM_SEPBUS [list $notmod] 2 }
        global CONFIG_MCTRL_SDRAM_BUS64
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_BUS64 $CONFIG_MCTRL_SDRAM_BUS64 [list $notmod] 2 }
        global CONFIG_MCTRL_SDRAM_INVCLK
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_INVCLK $CONFIG_MCTRL_SDRAM_INVCLK [list $notmod] 2 }
        global CONFIG_MCTRL_PAGE
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PAGE $CONFIG_MCTRL_PAGE [list $notmod] 2 }
        global CONFIG_MCTRL_PROGPAGE
        if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PROGPAGE $CONFIG_MCTRL_PROGPAGE [list $notmod] 2 }
        write_comment $cfg $autocfg "PC133 SDRAM controller             "
        global CONFIG_SDCTRL
        write_tristate $cfg $autocfg CONFIG_SDCTRL $CONFIG_SDCTRL [list $notmod] 2
        global CONFIG_SDCTRL_BUS64
        if {($CONFIG_SDCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_BUS64 $CONFIG_SDCTRL_BUS64 [list $notmod] 2 }
        global CONFIG_SDCTRL_INVCLK
        if {($CONFIG_SDCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_INVCLK $CONFIG_SDCTRL_INVCLK [list $notmod] 2 }
        global CONFIG_SDCTRL_PAGE
        if {($CONFIG_SDCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_PAGE $CONFIG_SDCTRL_PAGE [list $notmod] 2 }
        global CONFIG_SDCTRL_PROGPAGE
        if {($CONFIG_SDCTRL == 1) && ($CONFIG_SDCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_PROGPAGE $CONFIG_SDCTRL_PROGPAGE [list $notmod] 2 }
        write_comment $cfg $autocfg "On-chip RAM/ROM                 "
        global CONFIG_AHBROM_ENABLE
        write_tristate $cfg $autocfg CONFIG_AHBROM_ENABLE $CONFIG_AHBROM_ENABLE [list $notmod] 2
        global CONFIG_AHBROM_START
        if {($CONFIG_AHBROM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBROM_START $CONFIG_AHBROM_START $notmod }
        global CONFIG_AHBROM_PIPE
        if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 }
        global CONFIG_AHBRAM_ENABLE
        write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2
        global tmpvar_27
        if {($CONFIG_AHBRAM_ENABLE == 1)} then {
        if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 }
        if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 }
        if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 }
        if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 }
        if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 }
        if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 }
        if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }}
        global CONFIG_AHBRAM_START
        if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod }
        write_comment $cfg $autocfg "Ethernet             "
        write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2
        if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 }
        global tmpvar_28
        if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then {
        if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 }
        if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 }
        if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 }
        if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 }
        if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }}
        write_comment $cfg $autocfg "CAN                     "
        global CONFIG_CAN_ENABLE
        write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2
        global CONFIG_CANIO
        if {($CONFIG_CAN_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CANIO $CONFIG_CANIO $notmod }
        global CONFIG_CANIRQ
        if {($CONFIG_CAN_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_CANIRQ $CONFIG_CANIRQ $notmod }
        global CONFIG_CANLOOP
        if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CANLOOP $CONFIG_CANLOOP [list $notmod] 2 }
        global CONFIG_CAN_SYNCRST
        if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CAN_SYNCRST $CONFIG_CAN_SYNCRST [list $notmod] 2 }
        global CONFIG_CAN_FT
        if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CAN_FT $CONFIG_CAN_FT [list $notmod] 2 }
        write_comment $cfg $autocfg "PCI              "
        global CONFIG_PCI_SIMPLE_TARGET
        global CONFIG_PCI_ACTEL
        if {($CONFIG_PCI_ACTEL != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SIMPLE_TARGET $CONFIG_PCI_SIMPLE_TARGET [list $notmod] 2 }
        global CONFIG_PCI_MASTER_TARGET
        if {($CONFIG_PCI_SIMPLE_TARGET != 1 && $CONFIG_PCI_ACTEL != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_MASTER_TARGET $CONFIG_PCI_MASTER_TARGET [list $notmod] 2 }
        global CONFIG_PCI_MASTER_TARGET_DMA
        if {($CONFIG_PCI_MASTER_TARGET == 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_MASTER_TARGET_DMA $CONFIG_PCI_MASTER_TARGET_DMA [list $notmod] 2 }
        global CONFIG_PCI_VENDORID
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod }
        global CONFIG_PCI_DEVICEID
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod }
        global tmpvar_29
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {
        if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 }
        if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 }
        if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 }
        if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 }
        if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 }
        if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }}
        global CONFIG_PCI_HADDR
        if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod }
        global CONFIG_PCI_ARBITER
        write_tristate $cfg $autocfg CONFIG_PCI_ARBITER $CONFIG_PCI_ARBITER [list $notmod] 2
        global CONFIG_PCI_ARBITER_APB
        if {($CONFIG_PCI_ARBITER == 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_ARBITER_APB $CONFIG_PCI_ARBITER_APB [list $notmod] 2 }
        global CONFIG_PCI_ARBITER_NREQ
        if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod }
        global CONFIG_PCI_TRACE
        write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2
        global tmpvar_30
        if {($CONFIG_PCI_TRACE == 1)} then {
        if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 }
        if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 }
        if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 }
        if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 }
        if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }}
        write_comment $cfg $autocfg "Spacewire "
        global CONFIG_SPW_ENABLE
        write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2
        global CONFIG_SPW_NUM
        if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod }
        global tmpvar_31
        if {($CONFIG_SPW_ENABLE == 1)} then {
        if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 }
        if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 }
        if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 }
        if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }}
        global tmpvar_32
        if {($CONFIG_SPW_ENABLE == 1)} then {
        if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 }
        if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 }
        if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }}
        global CONFIG_SPW_RMAP
        if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 }
        global tmpvar_33
        if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then {
        if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 }
        if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 }
        if { $tmpvar_33 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 }
        if { $tmpvar_33 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }}
        global CONFIG_SPW_RMAPCRC
        if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 }
        global CONFIG_SPW_FT
        if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_FT $CONFIG_SPW_FT [list $notmod] 2 }
        global CONFIG_SPW_NETLIST
        if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 }
        global tmpvar_34
        if {($CONFIG_SPW_ENABLE == 1)} then {
        if { $tmpvar_34 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 }
        if { $tmpvar_34 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }}
        write_comment $cfg $autocfg "UARTs, timers and irq control         "
        global CONFIG_UART1_ENABLE
        write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2
        global tmpvar_35
        if {($CONFIG_UART1_ENABLE == 1)} then {
        if { $tmpvar_35 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 }
        if { $tmpvar_35 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 }
        if { $tmpvar_35 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 }
        if { $tmpvar_35 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 }
        if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 }
        if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }}
        global CONFIG_UART2_ENABLE
        write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2
        global tmpvar_36
        if {($CONFIG_UART2_ENABLE == 1)} then {
        if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 }
        if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 }
        if { $tmpvar_36 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 }
        if { $tmpvar_36 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 }
        if { $tmpvar_36 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 }
        if { $tmpvar_36 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }}
        global CONFIG_IRQ3_ENABLE
        write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2
        global CONFIG_GPT_ENABLE
        write_tristate $cfg $autocfg CONFIG_GPT_ENABLE $CONFIG_GPT_ENABLE [list $notmod] 2
        global CONFIG_GPT_NTIM
        if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_NTIM $CONFIG_GPT_NTIM $notmod }
        global CONFIG_GPT_SW
        if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_SW $CONFIG_GPT_SW $notmod }
        global CONFIG_GPT_TW
        if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_TW $CONFIG_GPT_TW $notmod }
        global CONFIG_GPT_IRQ
        if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_IRQ $CONFIG_GPT_IRQ $notmod }
        global CONFIG_GPT_SEPIRQ
        if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_SEPIRQ $CONFIG_GPT_SEPIRQ [list $notmod] 2 }
        global CONFIG_GPT_WDOGEN
        if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_WDOGEN $CONFIG_GPT_WDOGEN [list $notmod] 2 }
        global CONFIG_GPT_WDOG
        if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {write_hex $cfg $autocfg CONFIG_GPT_WDOG $CONFIG_GPT_WDOG $notmod }
        global CONFIG_GRGPIO_ENABLE
        write_tristate $cfg $autocfg CONFIG_GRGPIO_ENABLE $CONFIG_GRGPIO_ENABLE [list $notmod] 2
        global CONFIG_GRGPIO_WIDTH
        if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod }
        global CONFIG_GRGPIO_IMASK
        if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod }
        write_comment $cfg $autocfg "VHDL Debugging        "
        global CONFIG_DEBUG_UART
        write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2
        close $cfg
        close $autocfg
}


proc clear_choices { } {
        global CONFIG_SYN_INFERRED; set CONFIG_SYN_INFERRED 0
        global CONFIG_SYN_STRATIX; set CONFIG_SYN_STRATIX 0
        global CONFIG_SYN_STRATIXII; set CONFIG_SYN_STRATIXII 0
        global CONFIG_SYN_STRATIXIII; set CONFIG_SYN_STRATIXIII 0
        global CONFIG_SYN_CYCLONEIII; set CONFIG_SYN_CYCLONEIII 0
        global CONFIG_SYN_ALTERA; set CONFIG_SYN_ALTERA 0
        global CONFIG_SYN_AXCEL; set CONFIG_SYN_AXCEL 0
        global CONFIG_SYN_PROASIC; set CONFIG_SYN_PROASIC 0
        global CONFIG_SYN_PROASICPLUS; set CONFIG_SYN_PROASICPLUS 0
        global CONFIG_SYN_PROASIC3; set CONFIG_SYN_PROASIC3 0
        global CONFIG_SYN_UT025CRH; set CONFIG_SYN_UT025CRH 0
        global CONFIG_SYN_ATC18; set CONFIG_SYN_ATC18 0
        global CONFIG_SYN_CUSTOM1; set CONFIG_SYN_CUSTOM1 0
        global CONFIG_SYN_EASIC90; set CONFIG_SYN_EASIC90 0
        global CONFIG_SYN_IHP25; set CONFIG_SYN_IHP25 0
        global CONFIG_SYN_IHP25RH; set CONFIG_SYN_IHP25RH 0
        global CONFIG_SYN_LATTICE; set CONFIG_SYN_LATTICE 0
        global CONFIG_SYN_ECLIPSE; set CONFIG_SYN_ECLIPSE 0
        global CONFIG_SYN_PEREGRINE; set CONFIG_SYN_PEREGRINE 0
        global CONFIG_SYN_RH_LIB18T; set CONFIG_SYN_RH_LIB18T 0
        global CONFIG_SYN_RHUMC; set CONFIG_SYN_RHUMC 0
        global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0
        global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0
        global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0
        global CONFIG_SYN_VIRTEX; set CONFIG_SYN_VIRTEX 0
        global CONFIG_SYN_VIRTEXE; set CONFIG_SYN_VIRTEXE 0
        global CONFIG_SYN_VIRTEX2; set CONFIG_SYN_VIRTEX2 0
        global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0
        global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0
        global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0
        global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0
        global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0
        global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0
        global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0
        global CONFIG_MEM_ARTISAN; set CONFIG_MEM_ARTISAN 0
        global CONFIG_MEM_CUSTOM1; set CONFIG_MEM_CUSTOM1 0
        global CONFIG_MEM_VIRAGE; set CONFIG_MEM_VIRAGE 0
        global CONFIG_MEM_VIRAGE90; set CONFIG_MEM_VIRAGE90 0
        global CONFIG_CLK_INFERRED; set CONFIG_CLK_INFERRED 0
        global CONFIG_CLK_HCLKBUF; set CONFIG_CLK_HCLKBUF 0
        global CONFIG_CLK_ALTDLL; set CONFIG_CLK_ALTDLL 0
        global CONFIG_CLK_LATDLL; set CONFIG_CLK_LATDLL 0
        global CONFIG_CLK_PRO3PLL; set CONFIG_CLK_PRO3PLL 0
        global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0
        global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0
        global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0
        global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0
        global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0
        global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0
        global CONFIG_FPU_GRFPU; set CONFIG_FPU_GRFPU 0
        global CONFIG_FPU_GRFPULITE; set CONFIG_FPU_GRFPULITE 0
        global CONFIG_FPU_MEIKO; set CONFIG_FPU_MEIKO 0
        global CONFIG_FPU_GRFPU_INFMUL; set CONFIG_FPU_GRFPU_INFMUL 0
        global CONFIG_FPU_GRFPU_DWMUL; set CONFIG_FPU_GRFPU_DWMUL 0
        global CONFIG_FPU_GRFPC0; set CONFIG_FPU_GRFPC0 0
        global CONFIG_FPU_GRFPC1; set CONFIG_FPU_GRFPC1 0
        global CONFIG_FPU_GRFPC2; set CONFIG_FPU_GRFPC2 0
        global CONFIG_ICACHE_ASSO1; set CONFIG_ICACHE_ASSO1 0
        global CONFIG_ICACHE_ASSO2; set CONFIG_ICACHE_ASSO2 0
        global CONFIG_ICACHE_ASSO3; set CONFIG_ICACHE_ASSO3 0
        global CONFIG_ICACHE_ASSO4; set CONFIG_ICACHE_ASSO4 0
        global CONFIG_ICACHE_SZ1; set CONFIG_ICACHE_SZ1 0
        global CONFIG_ICACHE_SZ2; set CONFIG_ICACHE_SZ2 0
        global CONFIG_ICACHE_SZ4; set CONFIG_ICACHE_SZ4 0
        global CONFIG_ICACHE_SZ8; set CONFIG_ICACHE_SZ8 0
        global CONFIG_ICACHE_SZ16; set CONFIG_ICACHE_SZ16 0
        global CONFIG_ICACHE_SZ32; set CONFIG_ICACHE_SZ32 0
        global CONFIG_ICACHE_SZ64; set CONFIG_ICACHE_SZ64 0
        global CONFIG_ICACHE_SZ128; set CONFIG_ICACHE_SZ128 0
        global CONFIG_ICACHE_SZ256; set CONFIG_ICACHE_SZ256 0
        global CONFIG_ICACHE_LZ16; set CONFIG_ICACHE_LZ16 0
        global CONFIG_ICACHE_LZ32; set CONFIG_ICACHE_LZ32 0
        global CONFIG_ICACHE_ALGORND; set CONFIG_ICACHE_ALGORND 0
        global CONFIG_ICACHE_ALGOLRR; set CONFIG_ICACHE_ALGOLRR 0
        global CONFIG_ICACHE_ALGOLRU; set CONFIG_ICACHE_ALGOLRU 0
        global CONFIG_ICACHE_LRAM_SZ1; set CONFIG_ICACHE_LRAM_SZ1 0
        global CONFIG_ICACHE_LRAM_SZ2; set CONFIG_ICACHE_LRAM_SZ2 0
        global CONFIG_ICACHE_LRAM_SZ4; set CONFIG_ICACHE_LRAM_SZ4 0
        global CONFIG_ICACHE_LRAM_SZ8; set CONFIG_ICACHE_LRAM_SZ8 0
        global CONFIG_ICACHE_LRAM_SZ16; set CONFIG_ICACHE_LRAM_SZ16 0
        global CONFIG_ICACHE_LRAM_SZ32; set CONFIG_ICACHE_LRAM_SZ32 0
        global CONFIG_ICACHE_LRAM_SZ64; set CONFIG_ICACHE_LRAM_SZ64 0
        global CONFIG_ICACHE_LRAM_SZ128; set CONFIG_ICACHE_LRAM_SZ128 0
        global CONFIG_ICACHE_LRAM_SZ256; set CONFIG_ICACHE_LRAM_SZ256 0
        global CONFIG_DCACHE_ASSO1; set CONFIG_DCACHE_ASSO1 0
        global CONFIG_DCACHE_ASSO2; set CONFIG_DCACHE_ASSO2 0
        global CONFIG_DCACHE_ASSO3; set CONFIG_DCACHE_ASSO3 0
        global CONFIG_DCACHE_ASSO4; set CONFIG_DCACHE_ASSO4 0
        global CONFIG_DCACHE_SZ1; set CONFIG_DCACHE_SZ1 0
        global CONFIG_DCACHE_SZ2; set CONFIG_DCACHE_SZ2 0
        global CONFIG_DCACHE_SZ4; set CONFIG_DCACHE_SZ4 0
        global CONFIG_DCACHE_SZ8; set CONFIG_DCACHE_SZ8 0
        global CONFIG_DCACHE_SZ16; set CONFIG_DCACHE_SZ16 0
        global CONFIG_DCACHE_SZ32; set CONFIG_DCACHE_SZ32 0
        global CONFIG_DCACHE_SZ64; set CONFIG_DCACHE_SZ64 0
        global CONFIG_DCACHE_SZ128; set CONFIG_DCACHE_SZ128 0
        global CONFIG_DCACHE_SZ256; set CONFIG_DCACHE_SZ256 0
        global CONFIG_DCACHE_LZ16; set CONFIG_DCACHE_LZ16 0
        global CONFIG_DCACHE_LZ32; set CONFIG_DCACHE_LZ32 0
        global CONFIG_DCACHE_ALGORND; set CONFIG_DCACHE_ALGORND 0
        global CONFIG_DCACHE_ALGOLRR; set CONFIG_DCACHE_ALGOLRR 0
        global CONFIG_DCACHE_ALGOLRU; set CONFIG_DCACHE_ALGOLRU 0
        global CONFIG_DCACHE_LRAM_SZ1; set CONFIG_DCACHE_LRAM_SZ1 0
        global CONFIG_DCACHE_LRAM_SZ2; set CONFIG_DCACHE_LRAM_SZ2 0
        global CONFIG_DCACHE_LRAM_SZ4; set CONFIG_DCACHE_LRAM_SZ4 0
        global CONFIG_DCACHE_LRAM_SZ8; set CONFIG_DCACHE_LRAM_SZ8 0
        global CONFIG_DCACHE_LRAM_SZ16; set CONFIG_DCACHE_LRAM_SZ16 0
        global CONFIG_DCACHE_LRAM_SZ32; set CONFIG_DCACHE_LRAM_SZ32 0
        global CONFIG_DCACHE_LRAM_SZ64; set CONFIG_DCACHE_LRAM_SZ64 0
        global CONFIG_DCACHE_LRAM_SZ128; set CONFIG_DCACHE_LRAM_SZ128 0
        global CONFIG_DCACHE_LRAM_SZ256; set CONFIG_DCACHE_LRAM_SZ256 0
        global CONFIG_MMU_COMBINED; set CONFIG_MMU_COMBINED 0
        global CONFIG_MMU_SPLIT; set CONFIG_MMU_SPLIT 0
        global CONFIG_MMU_REPARRAY; set CONFIG_MMU_REPARRAY 0
        global CONFIG_MMU_REPINCREMENT; set CONFIG_MMU_REPINCREMENT 0
        global CONFIG_MMU_I2; set CONFIG_MMU_I2 0
        global CONFIG_MMU_I4; set CONFIG_MMU_I4 0
        global CONFIG_MMU_I8; set CONFIG_MMU_I8 0
        global CONFIG_MMU_I16; set CONFIG_MMU_I16 0
        global CONFIG_MMU_I32; set CONFIG_MMU_I32 0
        global CONFIG_MMU_D2; set CONFIG_MMU_D2 0
        global CONFIG_MMU_D4; set CONFIG_MMU_D4 0
        global CONFIG_MMU_D8; set CONFIG_MMU_D8 0
        global CONFIG_MMU_D16; set CONFIG_MMU_D16 0
        global CONFIG_MMU_D32; set CONFIG_MMU_D32 0
        global CONFIG_DSU_ITRACESZ1; set CONFIG_DSU_ITRACESZ1 0
        global CONFIG_DSU_ITRACESZ2; set CONFIG_DSU_ITRACESZ2 0
        global CONFIG_DSU_ITRACESZ4; set CONFIG_DSU_ITRACESZ4 0
        global CONFIG_DSU_ITRACESZ8; set CONFIG_DSU_ITRACESZ8 0
        global CONFIG_DSU_ITRACESZ16; set CONFIG_DSU_ITRACESZ16 0
        global CONFIG_DSU_ATRACESZ1; set CONFIG_DSU_ATRACESZ1 0
        global CONFIG_DSU_ATRACESZ2; set CONFIG_DSU_ATRACESZ2 0
        global CONFIG_DSU_ATRACESZ4; set CONFIG_DSU_ATRACESZ4 0
        global CONFIG_DSU_ATRACESZ8; set CONFIG_DSU_ATRACESZ8 0
        global CONFIG_DSU_ATRACESZ16; set CONFIG_DSU_ATRACESZ16 0
        global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0
        global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0
        global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0
        global CONFIG_DSU_ETHSZ8; set CONFIG_DSU_ETHSZ8 0
        global CONFIG_DSU_ETHSZ16; set CONFIG_DSU_ETHSZ16 0
        global CONFIG_SRCTRL_SRBANKS1; set CONFIG_SRCTRL_SRBANKS1 0
        global CONFIG_SRCTRL_SRBANKS2; set CONFIG_SRCTRL_SRBANKS2 0
        global CONFIG_SRCTRL_SRBANKS3; set CONFIG_SRCTRL_SRBANKS3 0
        global CONFIG_SRCTRL_SRBANKS4; set CONFIG_SRCTRL_SRBANKS4 0
        global CONFIG_SRCTRL_SRBANKS5; set CONFIG_SRCTRL_SRBANKS5 0
        global CONFIG_SRCTRL_BANKSZ0; set CONFIG_SRCTRL_BANKSZ0 0
        global CONFIG_SRCTRL_BANKSZ1; set CONFIG_SRCTRL_BANKSZ1 0
        global CONFIG_SRCTRL_BANKSZ2; set CONFIG_SRCTRL_BANKSZ2 0
        global CONFIG_SRCTRL_BANKSZ3; set CONFIG_SRCTRL_BANKSZ3 0
        global CONFIG_SRCTRL_BANKSZ4; set CONFIG_SRCTRL_BANKSZ4 0
        global CONFIG_SRCTRL_BANKSZ5; set CONFIG_SRCTRL_BANKSZ5 0
        global CONFIG_SRCTRL_BANKSZ6; set CONFIG_SRCTRL_BANKSZ6 0
        global CONFIG_SRCTRL_BANKSZ7; set CONFIG_SRCTRL_BANKSZ7 0
        global CONFIG_SRCTRL_BANKSZ8; set CONFIG_SRCTRL_BANKSZ8 0
        global CONFIG_SRCTRL_BANKSZ9; set CONFIG_SRCTRL_BANKSZ9 0
        global CONFIG_SRCTRL_BANKSZ10; set CONFIG_SRCTRL_BANKSZ10 0
        global CONFIG_SRCTRL_BANKSZ11; set CONFIG_SRCTRL_BANKSZ11 0
        global CONFIG_SRCTRL_BANKSZ12; set CONFIG_SRCTRL_BANKSZ12 0
        global CONFIG_SRCTRL_BANKSZ13; set CONFIG_SRCTRL_BANKSZ13 0
        global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0
        global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0
        global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0
        global CONFIG_AHBRAM_SZ8; set CONFIG_AHBRAM_SZ8 0
        global CONFIG_AHBRAM_SZ16; set CONFIG_AHBRAM_SZ16 0
        global CONFIG_AHBRAM_SZ32; set CONFIG_AHBRAM_SZ32 0
        global CONFIG_AHBRAM_SZ64; set CONFIG_AHBRAM_SZ64 0
        global CONFIG_GRETH_FIFO4; set CONFIG_GRETH_FIFO4 0
        global CONFIG_GRETH_FIFO8; set CONFIG_GRETH_FIFO8 0
        global CONFIG_GRETH_FIFO16; set CONFIG_GRETH_FIFO16 0
        global CONFIG_GRETH_FIFO32; set CONFIG_GRETH_FIFO32 0
        global CONFIG_GRETH_FIFO64; set CONFIG_GRETH_FIFO64 0
        global CONFIG_PCI_FIFO0; set CONFIG_PCI_FIFO0 0
        global CONFIG_PCI_FIFO8; set CONFIG_PCI_FIFO8 0
        global CONFIG_PCI_FIFO16; set CONFIG_PCI_FIFO16 0
        global CONFIG_PCI_FIFO32; set CONFIG_PCI_FIFO32 0
        global CONFIG_PCI_FIFO64; set CONFIG_PCI_FIFO64 0
        global CONFIG_PCI_FIFO128; set CONFIG_PCI_FIFO128 0
        global CONFIG_PCI_TRACE256; set CONFIG_PCI_TRACE256 0
        global CONFIG_PCI_TRACE512; set CONFIG_PCI_TRACE512 0
        global CONFIG_PCI_TRACE1024; set CONFIG_PCI_TRACE1024 0
        global CONFIG_PCI_TRACE2048; set CONFIG_PCI_TRACE2048 0
        global CONFIG_PCI_TRACE4096; set CONFIG_PCI_TRACE4096 0
        global CONFIG_SPW_AHBFIFO4; set CONFIG_SPW_AHBFIFO4 0
        global CONFIG_SPW_AHBFIFO8; set CONFIG_SPW_AHBFIFO8 0
        global CONFIG_SPW_AHBFIFO16; set CONFIG_SPW_AHBFIFO16 0
        global CONFIG_SPW_AHBFIFO32; set CONFIG_SPW_AHBFIFO32 0
        global CONFIG_SPW_RXFIFO16; set CONFIG_SPW_RXFIFO16 0
        global CONFIG_SPW_RXFIFO32; set CONFIG_SPW_RXFIFO32 0
        global CONFIG_SPW_RXFIFO64; set CONFIG_SPW_RXFIFO64 0
        global CONFIG_SPW_RMAPBUF2; set CONFIG_SPW_RMAPBUF2 0
        global CONFIG_SPW_RMAPBUF4; set CONFIG_SPW_RMAPBUF4 0
        global CONFIG_SPW_RMAPBUF6; set CONFIG_SPW_RMAPBUF6 0
        global CONFIG_SPW_RMAPBUF8; set CONFIG_SPW_RMAPBUF8 0
        global CONFIG_SPW_GRSPW1; set CONFIG_SPW_GRSPW1 0
        global CONFIG_SPW_GRSPW2; set CONFIG_SPW_GRSPW2 0
        global CONFIG_UA1_FIFO1; set CONFIG_UA1_FIFO1 0
        global CONFIG_UA1_FIFO2; set CONFIG_UA1_FIFO2 0
        global CONFIG_UA1_FIFO4; set CONFIG_UA1_FIFO4 0
        global CONFIG_UA1_FIFO8; set CONFIG_UA1_FIFO8 0
        global CONFIG_UA1_FIFO16; set CONFIG_UA1_FIFO16 0
        global CONFIG_UA1_FIFO32; set CONFIG_UA1_FIFO32 0
        global CONFIG_UA2_FIFO1; set CONFIG_UA2_FIFO1 0
        global CONFIG_UA2_FIFO2; set CONFIG_UA2_FIFO2 0
        global CONFIG_UA2_FIFO4; set CONFIG_UA2_FIFO4 0
        global CONFIG_UA2_FIFO8; set CONFIG_UA2_FIFO8 0
        global CONFIG_UA2_FIFO16; set CONFIG_UA2_FIFO16 0
        global CONFIG_UA2_FIFO32; set CONFIG_UA2_FIFO32 0
}


proc update_choices { } {
        global tmpvar_0
        set tmpvar_0 "Inferred"
        global CONFIG_SYN_INFERRED
        if { $CONFIG_SYN_INFERRED == 1 } then { set tmpvar_0 "Inferred" }
        global CONFIG_SYN_STRATIX
        if { $CONFIG_SYN_STRATIX == 1 } then { set tmpvar_0 "Altera-Stratix" }
        global CONFIG_SYN_STRATIXII
        if { $CONFIG_SYN_STRATIXII == 1 } then { set tmpvar_0 "Altera-StratixII" }
        global CONFIG_SYN_STRATIXIII
        if { $CONFIG_SYN_STRATIXIII == 1 } then { set tmpvar_0 "Altera-StratixIII" }
        global CONFIG_SYN_CYCLONEIII
        if { $CONFIG_SYN_CYCLONEIII == 1 } then { set tmpvar_0 "Altera-CycloneIII" }
        global CONFIG_SYN_ALTERA
        if { $CONFIG_SYN_ALTERA == 1 } then { set tmpvar_0 "Altera-Others" }
        global CONFIG_SYN_AXCEL
        if { $CONFIG_SYN_AXCEL == 1 } then { set tmpvar_0 "Actel-Axcelerator" }
        global CONFIG_SYN_PROASIC
        if { $CONFIG_SYN_PROASIC == 1 } then { set tmpvar_0 "Actel-Proasic" }
        global CONFIG_SYN_PROASICPLUS
        if { $CONFIG_SYN_PROASICPLUS == 1 } then { set tmpvar_0 "Actel-ProasicPlus" }
        global CONFIG_SYN_PROASIC3
        if { $CONFIG_SYN_PROASIC3 == 1 } then { set tmpvar_0 "Actel-Proasic3" }
        global CONFIG_SYN_UT025CRH
        if { $CONFIG_SYN_UT025CRH == 1 } then { set tmpvar_0 "Aeroflex-UT025CRH" }
        global CONFIG_SYN_ATC18
        if { $CONFIG_SYN_ATC18 == 1 } then { set tmpvar_0 "Atmel-ATC18" }
        global CONFIG_SYN_CUSTOM1
        if { $CONFIG_SYN_CUSTOM1 == 1 } then { set tmpvar_0 "Custom1" }
        global CONFIG_SYN_EASIC90
        if { $CONFIG_SYN_EASIC90 == 1 } then { set tmpvar_0 "eASIC90" }
        global CONFIG_SYN_IHP25
        if { $CONFIG_SYN_IHP25 == 1 } then { set tmpvar_0 "IHP25" }
        global CONFIG_SYN_IHP25RH
        if { $CONFIG_SYN_IHP25RH == 1 } then { set tmpvar_0 "IHP25RH" }
        global CONFIG_SYN_LATTICE
        if { $CONFIG_SYN_LATTICE == 1 } then { set tmpvar_0 "Lattice-EC/ECP/XP" }
        global CONFIG_SYN_ECLIPSE
        if { $CONFIG_SYN_ECLIPSE == 1 } then { set tmpvar_0 "Quicklogic-Eclipse" }
        global CONFIG_SYN_PEREGRINE
        if { $CONFIG_SYN_PEREGRINE == 1 } then { set tmpvar_0 "Peregrine" }
        global CONFIG_SYN_RH_LIB18T
        if { $CONFIG_SYN_RH_LIB18T == 1 } then { set tmpvar_0 "RH-LIB18T" }
        global CONFIG_SYN_RHUMC
        if { $CONFIG_SYN_RHUMC == 1 } then { set tmpvar_0 "RH-UMC" }
        global CONFIG_SYN_SPARTAN2
        if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" }
        global CONFIG_SYN_SPARTAN3
        if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" }
        global CONFIG_SYN_SPARTAN3E
        if { $CONFIG_SYN_SPARTAN3E == 1 } then { set tmpvar_0 "Xilinx-Spartan3E" }
        global CONFIG_SYN_VIRTEX
        if { $CONFIG_SYN_VIRTEX == 1 } then { set tmpvar_0 "Xilinx-Virtex" }
        global CONFIG_SYN_VIRTEXE
        if { $CONFIG_SYN_VIRTEXE == 1 } then { set tmpvar_0 "Xilinx-VirtexE" }
        global CONFIG_SYN_VIRTEX2
        if { $CONFIG_SYN_VIRTEX2 == 1 } then { set tmpvar_0 "Xilinx-Virtex2" }
        global CONFIG_SYN_VIRTEX4
        if { $CONFIG_SYN_VIRTEX4 == 1 } then { set tmpvar_0 "Xilinx-Virtex4" }
        global CONFIG_SYN_VIRTEX5
        if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" }
        global CONFIG_SYN_UMC
        if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC18" }
        global CONFIG_SYN_TSMC90
        if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" }
        global tmpvar_1
        set tmpvar_1 "Inferred"
        global CONFIG_MEM_INFERRED
        if { $CONFIG_MEM_INFERRED == 1 } then { set tmpvar_1 "Inferred" }
        global CONFIG_MEM_UMC
        if { $CONFIG_MEM_UMC == 1 } then { set tmpvar_1 "UMC18" }
        global CONFIG_MEM_RHUMC
        if { $CONFIG_MEM_RHUMC == 1 } then { set tmpvar_1 "RH-UMC" }
        global CONFIG_MEM_ARTISAN
        if { $CONFIG_MEM_ARTISAN == 1 } then { set tmpvar_1 "Artisan" }
        global CONFIG_MEM_CUSTOM1
        if { $CONFIG_MEM_CUSTOM1 == 1 } then { set tmpvar_1 "Custom1" }
        global CONFIG_MEM_VIRAGE
        if { $CONFIG_MEM_VIRAGE == 1 } then { set tmpvar_1 "Virage" }
        global CONFIG_MEM_VIRAGE90
        if { $CONFIG_MEM_VIRAGE90 == 1 } then { set tmpvar_1 "Virage-TSMC90" }
        global tmpvar_2
        set tmpvar_2 "Inferred"
        global CONFIG_CLK_INFERRED
        if { $CONFIG_CLK_INFERRED == 1 } then { set tmpvar_2 "Inferred" }
        global CONFIG_CLK_HCLKBUF
        if { $CONFIG_CLK_HCLKBUF == 1 } then { set tmpvar_2 "Actel-HCLKBUF" }
        global CONFIG_CLK_ALTDLL
        if { $CONFIG_CLK_ALTDLL == 1 } then { set tmpvar_2 "Altera-ALTPLL" }
        global CONFIG_CLK_LATDLL
        if { $CONFIG_CLK_LATDLL == 1 } then { set tmpvar_2 "Lattice-EXPLL" }
        global CONFIG_CLK_PRO3PLL
        if { $CONFIG_CLK_PRO3PLL == 1 } then { set tmpvar_2 "Proasic3-PLLL" }
        global CONFIG_CLK_LIB18T
        if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" }
        global CONFIG_CLK_RHUMC
        if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" }
        global CONFIG_CLK_CLKDLL
        if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" }
        global CONFIG_CLK_DCM
        if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" }
        global tmpvar_3
        set tmpvar_3 "5-cycles"
        global CONFIG_IU_MUL_LATENCY_4
        if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" }
        global CONFIG_IU_MUL_LATENCY_5
        if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" }
        global tmpvar_4
        set tmpvar_4 "GRFPU"
        global CONFIG_FPU_GRFPU
        if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_4 "GRFPU" }
        global CONFIG_FPU_GRFPULITE
        if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_4 "GRFPU-LITE" }
        global CONFIG_FPU_MEIKO
        if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_4 "Meiko" }
        global tmpvar_5
        set tmpvar_5 "Inferred"
        global CONFIG_FPU_GRFPU_INFMUL
        if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_5 "Inferred" }
        global CONFIG_FPU_GRFPU_DWMUL
        if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_5 "DW" }
        global tmpvar_6
        set tmpvar_6 "Simple"
        global CONFIG_FPU_GRFPC0
        if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_6 "Simple" }
        global CONFIG_FPU_GRFPC1
        if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_6 "Data-forwarding" }
        global CONFIG_FPU_GRFPC2
        if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_6 "Non-blocking" }
        global tmpvar_7
        set tmpvar_7 "1"
        global CONFIG_ICACHE_ASSO1
        if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_7 "1" }
        global CONFIG_ICACHE_ASSO2
        if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_7 "2" }
        global CONFIG_ICACHE_ASSO3
        if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_7 "3" }
        global CONFIG_ICACHE_ASSO4
        if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_7 "4" }
        global tmpvar_8
        set tmpvar_8 "4"
        global CONFIG_ICACHE_SZ1
        if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_8 "1" }
        global CONFIG_ICACHE_SZ2
        if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_8 "2" }
        global CONFIG_ICACHE_SZ4
        if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_8 "4" }
        global CONFIG_ICACHE_SZ8
        if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_8 "8" }
        global CONFIG_ICACHE_SZ16
        if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_8 "16" }
        global CONFIG_ICACHE_SZ32
        if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_8 "32" }
        global CONFIG_ICACHE_SZ64
        if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_8 "64" }
        global CONFIG_ICACHE_SZ128
        if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_8 "128" }
        global CONFIG_ICACHE_SZ256
        if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_8 "256" }
        global tmpvar_9
        set tmpvar_9 "32"
        global CONFIG_ICACHE_LZ16
        if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_9 "16" }
        global CONFIG_ICACHE_LZ32
        if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_9 "32" }
        global tmpvar_10
        set tmpvar_10 "Random"
        global CONFIG_ICACHE_ALGORND
        if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_10 "Random" }
        global CONFIG_ICACHE_ALGOLRR
        if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_10 "LRR" }
        global CONFIG_ICACHE_ALGOLRU
        if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_10 "LRU" }
        global tmpvar_11
        set tmpvar_11 "4"
        global CONFIG_ICACHE_LRAM_SZ1
        if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_11 "1" }
        global CONFIG_ICACHE_LRAM_SZ2
        if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_11 "2" }
        global CONFIG_ICACHE_LRAM_SZ4
        if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_11 "4" }
        global CONFIG_ICACHE_LRAM_SZ8
        if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_11 "8" }
        global CONFIG_ICACHE_LRAM_SZ16
        if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_11 "16" }
        global CONFIG_ICACHE_LRAM_SZ32
        if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_11 "32" }
        global CONFIG_ICACHE_LRAM_SZ64
        if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_11 "64" }
        global CONFIG_ICACHE_LRAM_SZ128
        if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_11 "128" }
        global CONFIG_ICACHE_LRAM_SZ256
        if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_11 "256" }
        global tmpvar_12
        set tmpvar_12 "1"
        global CONFIG_DCACHE_ASSO1
        if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_12 "1" }
        global CONFIG_DCACHE_ASSO2
        if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_12 "2" }
        global CONFIG_DCACHE_ASSO3
        if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_12 "3" }
        global CONFIG_DCACHE_ASSO4
        if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_12 "4" }
        global tmpvar_13
        set tmpvar_13 "4"
        global CONFIG_DCACHE_SZ1
        if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_13 "1" }
        global CONFIG_DCACHE_SZ2
        if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_13 "2" }
        global CONFIG_DCACHE_SZ4
        if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_13 "4" }
        global CONFIG_DCACHE_SZ8
        if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_13 "8" }
        global CONFIG_DCACHE_SZ16
        if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_13 "16" }
        global CONFIG_DCACHE_SZ32
        if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_13 "32" }
        global CONFIG_DCACHE_SZ64
        if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_13 "64" }
        global CONFIG_DCACHE_SZ128
        if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_13 "128" }
        global CONFIG_DCACHE_SZ256
        if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_13 "256" }
        global tmpvar_14
        set tmpvar_14 "32"
        global CONFIG_DCACHE_LZ16
        if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_14 "16" }
        global CONFIG_DCACHE_LZ32
        if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_14 "32" }
        global tmpvar_15
        set tmpvar_15 "Random"
        global CONFIG_DCACHE_ALGORND
        if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_15 "Random" }
        global CONFIG_DCACHE_ALGOLRR
        if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_15 "LRR" }
        global CONFIG_DCACHE_ALGOLRU
        if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_15 "LRU" }
        global tmpvar_16
        set tmpvar_16 "4"
        global CONFIG_DCACHE_LRAM_SZ1
        if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_16 "1" }
        global CONFIG_DCACHE_LRAM_SZ2
        if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_16 "2" }
        global CONFIG_DCACHE_LRAM_SZ4
        if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_16 "4" }
        global CONFIG_DCACHE_LRAM_SZ8
        if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_16 "8" }
        global CONFIG_DCACHE_LRAM_SZ16
        if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_16 "16" }
        global CONFIG_DCACHE_LRAM_SZ32
        if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_16 "32" }
        global CONFIG_DCACHE_LRAM_SZ64
        if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_16 "64" }
        global CONFIG_DCACHE_LRAM_SZ128
        if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_16 "128" }
        global CONFIG_DCACHE_LRAM_SZ256
        if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_16 "256" }
        global tmpvar_17
        set tmpvar_17 "combined"
        global CONFIG_MMU_COMBINED
        if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_17 "combined" }
        global CONFIG_MMU_SPLIT
        if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_17 "split" }
        global tmpvar_18
        set tmpvar_18 "Increment"
        global CONFIG_MMU_REPARRAY
        if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_18 "LRU" }
        global CONFIG_MMU_REPINCREMENT
        if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_18 "Increment" }
        global tmpvar_19
        set tmpvar_19 "8"
        global CONFIG_MMU_I2
        if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_19 "2" }
        global CONFIG_MMU_I4
        if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_19 "4" }
        global CONFIG_MMU_I8
        if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_19 "8" }
        global CONFIG_MMU_I16
        if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_19 "16" }
        global CONFIG_MMU_I32
        if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_19 "32" }
        global tmpvar_20
        set tmpvar_20 "8"
        global CONFIG_MMU_D2
        if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_20 "2" }
        global CONFIG_MMU_D4
        if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_20 "4" }
        global CONFIG_MMU_D8
        if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_20 "8" }
        global CONFIG_MMU_D16
        if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_20 "16" }
        global CONFIG_MMU_D32
        if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_20 "32" }
        global tmpvar_21
        set tmpvar_21 "1"
        global CONFIG_DSU_ITRACESZ1
        if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_21 "1" }
        global CONFIG_DSU_ITRACESZ2
        if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_21 "2" }
        global CONFIG_DSU_ITRACESZ4
        if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_21 "4" }
        global CONFIG_DSU_ITRACESZ8
        if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_21 "8" }
        global CONFIG_DSU_ITRACESZ16
        if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_21 "16" }
        global tmpvar_22
        set tmpvar_22 "1"
        global CONFIG_DSU_ATRACESZ1
        if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_22 "1" }
        global CONFIG_DSU_ATRACESZ2
        if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_22 "2" }
        global CONFIG_DSU_ATRACESZ4
        if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_22 "4" }
        global CONFIG_DSU_ATRACESZ8
        if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_22 "8" }
        global CONFIG_DSU_ATRACESZ16
        if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_22 "16" }
        global tmpvar_24
        set tmpvar_24 "2"
        global CONFIG_DSU_ETHSZ1
        if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_24 "1" }
        global CONFIG_DSU_ETHSZ2
        if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_24 "2" }
        global CONFIG_DSU_ETHSZ4
        if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_24 "4" }
        global CONFIG_DSU_ETHSZ8
        if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_24 "8" }
        global CONFIG_DSU_ETHSZ16
        if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_24 "16" }
        global tmpvar_25
        set tmpvar_25 "1"
        global CONFIG_SRCTRL_SRBANKS1
        if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_25 "1" }
        global CONFIG_SRCTRL_SRBANKS2
        if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_25 "2" }
        global CONFIG_SRCTRL_SRBANKS3
        if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_25 "3" }
        global CONFIG_SRCTRL_SRBANKS4
        if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_25 "4" }
        global CONFIG_SRCTRL_SRBANKS5
        if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_25 "5" }
        global tmpvar_26
        set tmpvar_26 "0"
        global CONFIG_SRCTRL_BANKSZ0
        if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_26 "8" }
        global CONFIG_SRCTRL_BANKSZ1
        if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_26 "16" }
        global CONFIG_SRCTRL_BANKSZ2
        if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_26 "32" }
        global CONFIG_SRCTRL_BANKSZ3
        if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_26 "64" }
        global CONFIG_SRCTRL_BANKSZ4
        if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_26 "128" }
        global CONFIG_SRCTRL_BANKSZ5
        if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_26 "256" }
        global CONFIG_SRCTRL_BANKSZ6
        if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_26 "512" }
        global CONFIG_SRCTRL_BANKSZ7
        if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_26 "1024" }
        global CONFIG_SRCTRL_BANKSZ8
        if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_26 "2048" }
        global CONFIG_SRCTRL_BANKSZ9
        if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_26 "4096" }
        global CONFIG_SRCTRL_BANKSZ10
        if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_26 "8192" }
        global CONFIG_SRCTRL_BANKSZ11
        if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_26 "16384" }
        global CONFIG_SRCTRL_BANKSZ12
        if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_26 "32768" }
        global CONFIG_SRCTRL_BANKSZ13
        if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_26 "65536" }
        global tmpvar_27
        set tmpvar_27 "4"
        global CONFIG_AHBRAM_SZ1
        if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" }
        global CONFIG_AHBRAM_SZ2
        if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" }
        global CONFIG_AHBRAM_SZ4
        if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" }
        global CONFIG_AHBRAM_SZ8
        if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" }
        global CONFIG_AHBRAM_SZ16
        if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" }
        global CONFIG_AHBRAM_SZ32
        if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" }
        global CONFIG_AHBRAM_SZ64
        if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" }
        global tmpvar_28
        set tmpvar_28 "8"
        global CONFIG_GRETH_FIFO4
        if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" }
        global CONFIG_GRETH_FIFO8
        if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" }
        global CONFIG_GRETH_FIFO16
        if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" }
        global CONFIG_GRETH_FIFO32
        if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" }
        global CONFIG_GRETH_FIFO64
        if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" }
        global tmpvar_29
        set tmpvar_29 "8"
        global CONFIG_PCI_FIFO0
        if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_29 "None" }
        global CONFIG_PCI_FIFO8
        if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_29 "8" }
        global CONFIG_PCI_FIFO16
        if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_29 "16" }
        global CONFIG_PCI_FIFO32
        if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_29 "32" }
        global CONFIG_PCI_FIFO64
        if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_29 "64" }
        global CONFIG_PCI_FIFO128
        if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_29 "128" }
        global tmpvar_30
        set tmpvar_30 "256"
        global CONFIG_PCI_TRACE256
        if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_30 "256" }
        global CONFIG_PCI_TRACE512
        if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_30 "512" }
        global CONFIG_PCI_TRACE1024
        if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_30 "1024" }
        global CONFIG_PCI_TRACE2048
        if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_30 "2048" }
        global CONFIG_PCI_TRACE4096
        if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_30 "4096" }
        global tmpvar_31
        set tmpvar_31 "16"
        global CONFIG_SPW_AHBFIFO4
        if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_31 "4" }
        global CONFIG_SPW_AHBFIFO8
        if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_31 "8" }
        global CONFIG_SPW_AHBFIFO16
        if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_31 "16" }
        global CONFIG_SPW_AHBFIFO32
        if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_31 "32" }
        global tmpvar_32
        set tmpvar_32 "16"
        global CONFIG_SPW_RXFIFO16
        if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_32 "16" }
        global CONFIG_SPW_RXFIFO32
        if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_32 "32" }
        global CONFIG_SPW_RXFIFO64
        if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_32 "64" }
        global tmpvar_33
        set tmpvar_33 "64"
        global CONFIG_SPW_RMAPBUF2
        if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_33 "64" }
        global CONFIG_SPW_RMAPBUF4
        if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_33 "128" }
        global CONFIG_SPW_RMAPBUF6
        if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_33 "192" }
        global CONFIG_SPW_RMAPBUF8
        if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_33 "256" }
        global tmpvar_34
        set tmpvar_34 "2"
        global CONFIG_SPW_GRSPW1
        if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_34 "1" }
        global CONFIG_SPW_GRSPW2
        if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_34 "2" }
        global tmpvar_35
        set tmpvar_35 "1"
        global CONFIG_UA1_FIFO1
        if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_35 "1" }
        global CONFIG_UA1_FIFO2
        if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_35 "2" }
        global CONFIG_UA1_FIFO4
        if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_35 "4" }
        global CONFIG_UA1_FIFO8
        if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_35 "8" }
        global CONFIG_UA1_FIFO16
        if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_35 "16" }
        global CONFIG_UA1_FIFO32
        if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_35 "32" }
        global tmpvar_36
        set tmpvar_36 "1"
        global CONFIG_UA2_FIFO1
        if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_36 "1" }
        global CONFIG_UA2_FIFO2
        if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_36 "2" }
        global CONFIG_UA2_FIFO4
        if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_36 "4" }
        global CONFIG_UA2_FIFO8
        if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_36 "8" }
        global CONFIG_UA2_FIFO16
        if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_36 "16" }
        global CONFIG_UA2_FIFO32
        if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_36 "32" }
}


proc update_define_mainmenu {} {
        global CONFIG_MODULES
}


# FILE: tail.tk
# This file is boilerplate TCL/TK function definitions for 'make xconfig'.
#
# CHANGES
# =======
#
# 8 January 1998, Michael Elizabeth Chastain, <mec@shout.net>
# Arrange buttons in three columns for better screen fitting.
#

#
# Read the user's settings from .config.  These will override whatever is
# in config.in.  Don't do this if the user specified a -D to force
# the defaults.
#

set defaults defconfig

if { [file readable .config] == 1} then {
        if { $argc > 0 } then {
                if { [lindex $argv 0] != "-D" } then {
                        read_config .config
                }
                else
                {
                        read_config $defaults
                }
        } else {
                read_config .config
        }
} else {
        read_config $defaults
}

update_define 1 $total_menus 0
update_mainmenu

button .f0.right.save -anchor w -text "Save and Exit" -underline 0\
    -command { catch {exec cp -f .config .config.old}; \
                writeconfig .config config.h; wrapup .wrap }

button .f0.right.quit -anchor w -text "Quit Without Saving" -underline 0\
    -command { maybe_exit .maybe }

button .f0.right.load -anchor w -text "Load Configuration from File" \
    -command { load_configfile .load "Load Configuration from file" read_config_file
}

button .f0.right.store -anchor w -text "Store Configuration to File" \
    -command { load_configfile .load "Store Configuration to file" write_config_file }

#
# Now pack everything.
#

pack .f0.right.store .f0.right.load .f0.right.quit .f0.right.save \
    -padx 0 -pady 0 -side bottom -fill x
pack .f0.left .f0.middle .f0.right -side left -padx 5 -pady 0 -fill y
pack .f0 -padx 5 -pady 5

update idletasks
set winy [expr 10 + [winfo reqheight .f0]]
set scry [lindex [wm maxsize .] 1]
set winx [expr 10 + [winfo reqwidth .f0]]
set scrx [lindex [wm maxsize .] 0]
if {$winx < $scrx} then {set maxx -1} else {set maxx $winx}
if {$winy < $scry} then {set maxy -1} else {set maxy $winy}
.f0 configure -width $winx -height $winy 
wm maxsize . $maxx $maxy

#
# If we cannot write our config files, disable the write button.
#
if { [file exists .config] == 1 } then {
                if { [file writable .config] == 0 } then {
                        .f0.right.save configure -state disabled
                }
        } else {
                if { [file writable .] == 0 } then {
                        .f0.right.save configure -state disabled
                }
        }

#if { [file exists include/linux/autoconf.h] == 1 } then {
#               if { [file writable include/linux/autoconf.h] == 0 } then {
#                       .f0.right.save configure -state disabled
#               }
#       } else {
#               if { [file writable include/linux/] == 0 } then {
#                       .f0.right.save configure -state disabled
#               }
#       }

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.