diff --git a/iverilog.c b/iverilog.c index 0c42bb11d..1a4d8a0c7 100644 --- a/iverilog.c +++ b/iverilog.c @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: iverilog.c,v 1.19 2000/07/29 17:58:20 steve Exp $" +#ident "$Id: iverilog.c,v 1.20 2000/08/09 01:34:00 steve Exp $" #endif #include @@ -39,6 +39,7 @@ const char*base = IVL_ROOT; const char*mtm = 0; const char*opath = "a.out"; +const char*npath = 0; const char*targ = "vvm"; const char*start = 0; @@ -73,6 +74,14 @@ static int t_null(char*cmd, unsigned ncmd) ncmd += rc; } + if (npath) { + sprintf(tmp, " -N%s", npath); + rc = strlen(tmp); + cmd = realloc(cmd, ncmd+rc+1); + strcpy(cmd+ncmd, tmp); + ncmd += rc; + } + if (mtm) { sprintf(tmp, " -T%s", mtm); rc = strlen(tmp); @@ -150,6 +159,14 @@ static int t_vvm(char*cmd, unsigned ncmd) ncmd += rc; } + if (npath) { + sprintf(tmp, " -N%s", npath); + rc = strlen(tmp); + cmd = realloc(cmd, ncmd+rc+1); + strcpy(cmd+ncmd, tmp); + ncmd += rc; + } + if (start) { sprintf(tmp, " -s%s", start); rc = strlen(tmp); @@ -228,6 +245,14 @@ static int t_xnf(char*cmd, unsigned ncmd) ncmd += rc; } + if (npath) { + sprintf(tmp, " -N%s", npath); + rc = strlen(tmp); + cmd = realloc(cmd, ncmd+rc+1); + strcpy(cmd+ncmd, tmp); + ncmd += rc; + } + if (start) { sprintf(tmp, " -s%s", start); rc = strlen(tmp); @@ -280,7 +305,7 @@ int main(int argc, char **argv) int opt, idx; char*cp; - while ((opt = getopt(argc, argv, "B:D:Ef:I:m:o:Ss:T:t:vW:")) != EOF) { + while ((opt = getopt(argc, argv, "B:D:Ef:I:mN::o:Ss:T:t:vW:")) != EOF) { switch (opt) { case 'B': @@ -341,9 +366,15 @@ int main(int argc, char **argv) strcat(mod_list, optarg); } break; + + case 'N': + npath = optarg; + break; + case 'o': opath = optarg; break; + case 'S': synth_flag = 1; break; @@ -460,6 +491,9 @@ int main(int argc, char **argv) /* * $Log: iverilog.c,v $ + * Revision 1.20 2000/08/09 01:34:00 steve + * Add the -N switch to the iverilog command. + * * Revision 1.19 2000/07/29 17:58:20 steve * Introduce min:typ:max support. * diff --git a/iverilog.man b/iverilog.man index 48658dffd..dc619d6e5 100644 --- a/iverilog.man +++ b/iverilog.man @@ -1,10 +1,10 @@ -.TH iverilog 1 "$Date: 2000/07/29 17:58:20 $" Version "$Date: 2000/07/29 17:58:20 $" +.TH iverilog 1 "$Date: 2000/08/09 01:34:00 $" Version "$Date: 2000/08/09 01:34:00 $" .SH NAME iverilog - Icarus Verilog compiler .SH SYNOPSIS .B iverilog -[-ESv] [-Dmacro[=defn]] [-fflag=value] [-Iincludepath] [-mmodule] [-ooutputfilename] [-s topmodule] [-ttype] [-Tmin/typ/max] [-Wclass] sourcefile[s] +[-ESv] [-Dmacro[=defn]] [-fflag=value] [-Iincludepath] [-mmodule] [-Nfile] [-ooutputfilename] [-s topmodule] [-ttype] [-Tmin/typ/max] [-Wclass] sourcefile[s] .SH DESCRIPTION .PP @@ -56,6 +56,12 @@ Add this module to the list of VPI modules to be loaded by the simulation. Many modules can be specified, and all will be loaded, in the order specified. .TP 8 +.B -N\fIpath\fP +This is used for debugging the compiler proper. Dump the final netlist +form of the design to the specified file. It otherwise does not affect +operation of the compiler. The dump happens after the design is +elaborated and optimized. +.TP 8 .B -o \fIfilename\fP Place output in the file \fIfilename\fP. If no output file name is specified, \fIiverilog\fP uses the default name \fBa.out\fP.