diff --git a/src/globals.c b/src/globals.c index 5fee5b83..05d92b97 100644 --- a/src/globals.c +++ b/src/globals.c @@ -116,6 +116,7 @@ xcb_visualtype_t *visual_xcb; /* these variables are mirrored in tcl code */ int fullscreen=0; char *netlist_dir=NULL; /* user set netlist directory via cmd-option or menu or xschemrc */ +char initial_netlist_name[PATH_MAX]={0}; int top_subckt = 0; int spiceprefix = 1; int unzoom_nodrift=1; diff --git a/src/options.c b/src/options.c index d7a94b08..e34dc441 100644 --- a/src/options.c +++ b/src/options.c @@ -106,7 +106,7 @@ void check_opt(char *opt, char *optval, int type) } else if( (type == SHORT && *opt == 'N') || (type == LONG && !strcmp("netlist_filename", opt)) ) { dbg(1, "process_options(): set netlist name to %s\n", optval); - if(optval) my_strncpy(xctx->netlist_name, optval, S(xctx->netlist_name)); + if(optval) my_strncpy(initial_netlist_name, optval, S(initial_netlist_name)); } else if( (type == SHORT && *opt == 's') || (type == LONG && !strcmp("spice", opt)) ) { dbg(1, "process_options(): set netlist type to spice\n"); diff --git a/src/spice_netlist.c b/src/spice_netlist.c index 6540f4d6..fb6bc42e 100644 --- a/src/spice_netlist.c +++ b/src/spice_netlist.c @@ -66,7 +66,7 @@ void global_spice_netlist(int global) /* netlister driver */ fd=fopen(netl_filename, "w"); if(xctx->netlist_name[0]) { - my_snprintf(cellname, S(cellname), "%s", get_cell(xctx->netlist_name, 0)); + my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { my_snprintf(cellname, S(cellname), "%s.spice", skip_dir(xctx->sch[xctx->currsch])); } diff --git a/src/tedax_netlist.c b/src/tedax_netlist.c index a5d28c4a..306463e0 100644 --- a/src/tedax_netlist.c +++ b/src/tedax_netlist.c @@ -51,7 +51,7 @@ void global_tedax_netlist(int global) /* netlister driver */ fd=fopen(netl_filename, "w"); if(xctx->netlist_name[0]) { - my_snprintf(cellname, S(cellname), "%s", get_cell(xctx->netlist_name, 0)); + my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { my_snprintf(cellname, S(cellname), "%s.tdx", skip_dir(xctx->sch[xctx->currsch])); } diff --git a/src/verilog_netlist.c b/src/verilog_netlist.c index cf7591d3..8ae900db 100644 --- a/src/verilog_netlist.c +++ b/src/verilog_netlist.c @@ -55,7 +55,7 @@ void global_verilog_netlist(int global) /* netlister driver */ fd=fopen(netl_filename, "w"); if(xctx->netlist_name[0]) { - my_snprintf(cellname, S(cellname), "%s", get_cell(xctx->netlist_name, 0)); + my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { my_snprintf(cellname, S(cellname), "%s.v", skip_dir(xctx->sch[xctx->currsch])); } diff --git a/src/vhdl_netlist.c b/src/vhdl_netlist.c index ef616e77..afba621d 100644 --- a/src/vhdl_netlist.c +++ b/src/vhdl_netlist.c @@ -56,7 +56,7 @@ void global_vhdl_netlist(int global) /* netlister driver */ if(xctx->netlist_name[0]) { - my_snprintf(cellname, S(cellname), "%s", get_cell(xctx->netlist_name, 0)); + my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { my_snprintf(cellname, S(cellname), "%s.vhdl", skip_dir(xctx->sch[xctx->currsch])); } diff --git a/src/xinit.c b/src/xinit.c index d0f4415f..45e7bf06 100644 --- a/src/xinit.c +++ b/src/xinit.c @@ -1567,6 +1567,7 @@ int Tcl_AppInit(Tcl_Interp *inter) if(!set_netlist_dir(0, NULL)) { fprintf(errfp, "problems creating netlist directory %s\n", netlist_dir ? netlist_dir : ""); } + if(initial_netlist_name[0]) my_strncpy(xctx->netlist_name, initial_netlist_name, S(initial_netlist_name)); enable_layers(); diff --git a/src/xschem.h b/src/xschem.h index cc74378d..8a525d95 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -754,6 +754,7 @@ extern int currentsch; extern char *xschem_version_string; extern int split_files; extern char *netlist_dir; +extern char initial_netlist_name[PATH_MAX]; extern char bus_char[]; extern int max_undo; extern int draw_dots;