diff --git a/src/xinit.c b/src/xinit.c index 99b79841..bba4046f 100644 --- a/src/xinit.c +++ b/src/xinit.c @@ -2794,14 +2794,17 @@ int Tcl_AppInit(Tcl_Interp *inter) zoom_full(0, 0, 1 + 2 * tclgetboolvar("zoom_full_center"), 0.97); xctx->pending_fullzoom=1; if(cli_opt_do_netlist) { - if(debug_var>=1) { - if(tclgetboolvar("flat_netlist")) - fprintf(errfp, "xschem: flat netlist requested\n"); - } if(!cli_opt_filename[0]) { fprintf(errfp, "xschem: cant do a netlist without a filename\n"); tcleval("exit"); } + if(tclgetintvar("local_netlist_dir")) { + set_netlist_dir(1, NULL); + } + if(debug_var>=1) { + if(tclgetboolvar("flat_netlist")) + fprintf(errfp, "xschem: flat netlist requested\n"); + } if(tclgetvar("netlist_dir")[0]) { if(xctx->netlist_type == CAD_SPICE_NETLIST) global_spice_netlist(1); /* 1 means global netlist */ diff --git a/src/xschem.tcl b/src/xschem.tcl index e441d771..de13d452 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -3846,6 +3846,11 @@ proc simuldir {} { set netlist_dir $simdir return $netlist_dir } + if { $local_netlist_dir == 2 } { + set simdir [xschem get current_dirname]/simulation/[xschem get current_name] + set netlist_dir $simdir + return $netlist_dir + } return {} } @@ -3859,7 +3864,7 @@ proc simuldir {} { # Return current netlist directory # proc set_netlist_dir { change {dir {} }} { - global netlist_dir env OS has_x local_netlist_dir + global netlist_dir env OS has_x local_netlist_dir USER_CONF_DIR #### set local-to-schematic-dir if local_netlist_dir tcl var is set simuldir @@ -3878,11 +3883,15 @@ proc set_netlist_dir { change {dir {} }} { } #### change == 1 } else { - if {$local_netlist_dir == 1} { + # if local_netlist_dir is set can not provide a dir, set dir to netlist_dir as set by proc simuldir + if {$local_netlist_dir != 0} { set dir $netlist_dir } if { $dir eq {} } { - if { $netlist_dir ne {} } { + # set to default simulations/ directory. + if {$local_netlist_dir == 0 } { + set initdir "$USER_CONF_DIR/simulations" + } elseif { $netlist_dir ne {} } { set initdir $netlist_dir } else { if {$OS == "Windows"} { @@ -7323,8 +7332,14 @@ proc build_widgets { {topwin {} } } { } $topwin.menubar.simulation.menu add checkbutton -label "Show netlist after netlist command" \ -variable netlist_show -accelerator {Shift+A} - $topwin.menubar.simulation.menu add checkbutton -label "Use 'simulation' dir under current schematic dir" \ - -variable local_netlist_dir \ + $topwin.menubar.simulation.menu add radiobutton -label "set netlisting directory" \ + -variable local_netlist_dir -value 0 \ + -command {set_netlist_dir 1 } + $topwin.menubar.simulation.menu add radiobutton -label "Use 'simulation' dir in schematic dir" \ + -variable local_netlist_dir -value 1 \ + -command {set_netlist_dir 1 } + $topwin.menubar.simulation.menu add radiobutton -label "Use 'simulation/\[schname\]' dir in schematic dir" \ + -variable local_netlist_dir -value 2 \ -command {set_netlist_dir 1 } $topwin.menubar.simulation.menu add command -label {Configure simulators and tools} -command {simconf} if {$OS == {Windows}} {