Remove the iverilog.conf file.
This commit is contained in:
parent
12033d7bd4
commit
cceb2bd2c5
14
Makefile.in
14
Makefile.in
|
|
@ -16,7 +16,7 @@
|
||||||
# 59 Temple Place - Suite 330
|
# 59 Temple Place - Suite 330
|
||||||
# Boston, MA 02111-1307, USA
|
# Boston, MA 02111-1307, USA
|
||||||
#
|
#
|
||||||
#ident "$Id: Makefile.in,v 1.158 2003/11/13 03:10:37 steve Exp $"
|
#ident "$Id: Makefile.in,v 1.159 2003/11/18 06:31:45 steve Exp $"
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
@ -215,11 +215,9 @@ else
|
||||||
WIN32_INSTALL = $(bindir)/iverilog-vpi
|
WIN32_INSTALL = $(bindir)/iverilog-vpi
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CONF_INSTALL = $(libdir)/ivl/iverilog.conf
|
|
||||||
|
|
||||||
XNF_INSTALL = $(libdir)/ivl/xnf.conf $(libdir)/ivl/xnf-s.conf
|
XNF_INSTALL = $(libdir)/ivl/xnf.conf $(libdir)/ivl/xnf-s.conf
|
||||||
|
|
||||||
install: all installdirs $(libdir)/ivl/ivl@EXEEXT@ $(CONF_INSTALL) $(includedir)/ivl_target.h $(includedir)/_pli_types.h $(includedir)/vpi_user.h $(includedir)/acc_user.h $(includedir)/veriuser.h $(WIN32_INSTALL) $(INSTALL_DOC) $(XNF_INSTALL)
|
install: all installdirs $(libdir)/ivl/ivl@EXEEXT@ $(includedir)/ivl_target.h $(includedir)/_pli_types.h $(includedir)/vpi_user.h $(includedir)/acc_user.h $(includedir)/veriuser.h $(WIN32_INSTALL) $(INSTALL_DOC) $(XNF_INSTALL)
|
||||||
for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) $@); done
|
for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) $@); done
|
||||||
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) $@); done
|
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) $@); done
|
||||||
for dir in vpi ivlpp driver; \
|
for dir in vpi ivlpp driver; \
|
||||||
|
|
@ -232,12 +230,6 @@ $(libdir)/ivl/ivl@EXEEXT@: ./ivl@EXEEXT@
|
||||||
$(INSTALL_PROGRAM) ./ivl@EXEEXT@ $(libdir)/ivl/ivl@EXEEXT@
|
$(INSTALL_PROGRAM) ./ivl@EXEEXT@ $(libdir)/ivl/ivl@EXEEXT@
|
||||||
$(STRIP) $(strip_dynamic) $(libdir)/ivl/ivl@EXEEXT@
|
$(STRIP) $(strip_dynamic) $(libdir)/ivl/ivl@EXEEXT@
|
||||||
|
|
||||||
# Install iverilog.conf whenever ivl.exe is installed. This
|
|
||||||
# forces iverilog.conf to be treated similarly, in spite of
|
|
||||||
# dates in the source bundle.
|
|
||||||
$(libdir)/ivl/iverilog.conf: $(srcdir)/iverilog.conf
|
|
||||||
$(INSTALL_DATA) $(srcdir)/iverilog.conf $(libdir)/ivl/iverilog.conf
|
|
||||||
|
|
||||||
$(libdir)/ivl/xnf-s.conf: $(srcdir)/xnf-s.conf
|
$(libdir)/ivl/xnf-s.conf: $(srcdir)/xnf-s.conf
|
||||||
$(INSTALL_DATA) $(srcdir)/xnf-s.conf $(libdir)/ivl/xnf-s.conf
|
$(INSTALL_DATA) $(srcdir)/xnf-s.conf $(libdir)/ivl/xnf-s.conf
|
||||||
|
|
||||||
|
|
@ -294,7 +286,7 @@ uninstall:
|
||||||
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) $@); done
|
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) $@); done
|
||||||
for dir in vpi ivlpp driver; \
|
for dir in vpi ivlpp driver; \
|
||||||
do (cd $$dir ; $(MAKE) $@); done
|
do (cd $$dir ; $(MAKE) $@); done
|
||||||
for f in iverilog.conf ivl; \
|
for f in xnf.conf xnf-s.conf ivl; \
|
||||||
do rm -f $(libdir)/ivl/$$f; done
|
do rm -f $(libdir)/ivl/$$f; done
|
||||||
-rmdir $(libdir)/ivl
|
-rmdir $(libdir)/ivl
|
||||||
for f in verilog iverilog-vpi gverilog@EXEEXT@; \
|
for f in verilog iverilog-vpi gverilog@EXEEXT@; \
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
# 59 Temple Place - Suite 330
|
# 59 Temple Place - Suite 330
|
||||||
# Boston, MA 02111-1307, USA
|
# Boston, MA 02111-1307, USA
|
||||||
#
|
#
|
||||||
#ident "$Id: Makefile.in,v 1.21 2003/09/26 21:25:58 steve Exp $"
|
#ident "$Id: Makefile.in,v 1.22 2003/11/18 06:31:46 steve Exp $"
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
@ -57,17 +57,11 @@ clean:
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f Makefile
|
rm -f Makefile
|
||||||
|
|
||||||
O = main.o build_string.o lexor.o parse.o substit.o cflexor.o cfparse.o
|
O = main.o substit.o cflexor.o cfparse.o
|
||||||
|
|
||||||
iverilog@EXEEXT@: $O
|
iverilog@EXEEXT@: $O
|
||||||
$(CC) $(LDFLAGS) $O -o iverilog@EXEEXT@ @EXTRALIBS@
|
$(CC) $(LDFLAGS) $O -o iverilog@EXEEXT@ @EXTRALIBS@
|
||||||
|
|
||||||
lexor.c: lexor.lex
|
|
||||||
flex -s -olexor.c $(srcdir)/lexor.lex
|
|
||||||
|
|
||||||
parse.h parse.c: parse.y
|
|
||||||
bison --verbose -t -d -o parse.c $(srcdir)/parse.y
|
|
||||||
|
|
||||||
cflexor.c: cflexor.lex
|
cflexor.c: cflexor.lex
|
||||||
flex -s -Pcf -ocflexor.c $(srcdir)/cflexor.lex
|
flex -s -Pcf -ocflexor.c $(srcdir)/cflexor.lex
|
||||||
|
|
||||||
|
|
@ -79,8 +73,6 @@ main.o: main.c globals.h
|
||||||
$(CC) $(CFLAGS) -c -DCXX='"@CXX@"' -DIVL_ROOT='"@libdir@/ivl"' -DIVL_INC='"@includedir@"' -DIVL_LIB='"@libdir@"' -DDLLIB='"@DLLIB@"' $(srcdir)/main.c
|
$(CC) $(CFLAGS) -c -DCXX='"@CXX@"' -DIVL_ROOT='"@libdir@/ivl"' -DIVL_INC='"@includedir@"' -DIVL_LIB='"@libdir@"' -DDLLIB='"@DLLIB@"' $(srcdir)/main.c
|
||||||
|
|
||||||
build_string.o: build_string.c globals.h
|
build_string.o: build_string.c globals.h
|
||||||
lexor.o: lexor.c parse.h globals.h
|
|
||||||
parse.o: parse.c globals.h
|
|
||||||
cflexor.o: cflexor.c cfparse.h cfparse_misc.h globals.h
|
cflexor.o: cflexor.c cfparse.h cfparse_misc.h globals.h
|
||||||
cfparse.o: cfparse.c globals.h cfparse_misc.h
|
cfparse.o: cfparse.c globals.h cfparse_misc.h
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,122 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2000 Stephen Williams (steve@picturel.com)
|
|
||||||
*
|
|
||||||
* This source code is free software; you can redistribute it
|
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
|
||||||
* General Public License as published by the Free Software
|
|
||||||
* Foundation; either version 2 of the License, or (at your option)
|
|
||||||
* any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
#ifdef HAVE_CVS_IDENT
|
|
||||||
#ident "$Id: build_string.c,v 1.15 2003/11/13 04:09:49 steve Exp $"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
# include "config.h"
|
|
||||||
|
|
||||||
# include "globals.h"
|
|
||||||
# include <string.h>
|
|
||||||
# include <assert.h>
|
|
||||||
|
|
||||||
int build_string(char*output, size_t olen, const char*pattern)
|
|
||||||
{
|
|
||||||
char tmp_buf[1024];
|
|
||||||
|
|
||||||
char*output_save = output;
|
|
||||||
while (*pattern) {
|
|
||||||
|
|
||||||
if (*pattern == '%') {
|
|
||||||
pattern += 1;
|
|
||||||
switch (*pattern) {
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '%':
|
|
||||||
*output++ = '%';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '[': {
|
|
||||||
const char*tail;
|
|
||||||
pattern += 1;
|
|
||||||
assert(*pattern);
|
|
||||||
tail = strchr(pattern+1, ']');
|
|
||||||
assert(tail);
|
|
||||||
strncpy(tmp_buf, pattern+1, tail-pattern-1);
|
|
||||||
tmp_buf[tail-pattern-1] = 0;
|
|
||||||
|
|
||||||
if (((*pattern == 'v') && verbose_flag)
|
|
||||||
|| ((*pattern == 'N') && npath)) {
|
|
||||||
int rc = build_string(output, olen,
|
|
||||||
tmp_buf);
|
|
||||||
output += rc;
|
|
||||||
olen -= rc;
|
|
||||||
}
|
|
||||||
pattern = tail;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'B':
|
|
||||||
strcpy(output, base);
|
|
||||||
output += strlen(base);
|
|
||||||
olen -= strlen(base);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'C':
|
|
||||||
strcpy(output, iconfig_path);
|
|
||||||
output += strlen(iconfig_path);
|
|
||||||
olen -= strlen(iconfig_path);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'c':
|
|
||||||
strcpy(output, iconfig_common_path);
|
|
||||||
output += strlen(iconfig_common_path);
|
|
||||||
olen -= strlen(iconfig_common_path);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'N':
|
|
||||||
if (npath) {
|
|
||||||
strcpy(output, npath);
|
|
||||||
output += strlen(npath);
|
|
||||||
olen -= strlen(npath);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
pattern += 1;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
*output++ = *pattern++;
|
|
||||||
olen -= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*output = 0;
|
|
||||||
return output-output_save;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* $Log: build_string.c,v $
|
|
||||||
* Revision 1.15 2003/11/13 04:09:49 steve
|
|
||||||
* Pass flags through the temporary config file.
|
|
||||||
*
|
|
||||||
* Revision 1.14 2003/11/01 04:21:57 steve
|
|
||||||
* Add support for a target static config file.
|
|
||||||
*
|
|
||||||
* Revision 1.13 2003/09/23 05:57:15 steve
|
|
||||||
* Pass -m flag from driver via iconfig file.
|
|
||||||
*
|
|
||||||
* Revision 1.12 2003/09/22 01:12:09 steve
|
|
||||||
* Pass more ivl arguments through the iconfig file.
|
|
||||||
*
|
|
||||||
* Revision 1.11 2002/08/12 01:35:01 steve
|
|
||||||
* conditional ident string using autoconfig.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: globals.h,v 1.18 2003/11/13 04:09:49 steve Exp $"
|
#ident "$Id: globals.h,v 1.19 2003/11/18 06:31:46 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <stddef.h>
|
# include <stddef.h>
|
||||||
|
|
@ -75,12 +75,11 @@ extern char warning_flags[];
|
||||||
extern char* library_flags;
|
extern char* library_flags;
|
||||||
extern char* library_flags2;
|
extern char* library_flags2;
|
||||||
|
|
||||||
extern const char*lookup_pattern(const char*key);
|
|
||||||
|
|
||||||
extern int build_string(char*out, size_t olen, const char*pattern);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: globals.h,v $
|
* $Log: globals.h,v $
|
||||||
|
* Revision 1.19 2003/11/18 06:31:46 steve
|
||||||
|
* Remove the iverilog.conf file.
|
||||||
|
*
|
||||||
* Revision 1.18 2003/11/13 04:09:49 steve
|
* Revision 1.18 2003/11/13 04:09:49 steve
|
||||||
* Pass flags through the temporary config file.
|
* Pass flags through the temporary config file.
|
||||||
*
|
*
|
||||||
|
|
@ -101,44 +100,5 @@ extern int build_string(char*out, size_t olen, const char*pattern);
|
||||||
* Add the ivl -C flag for bulk configuration
|
* Add the ivl -C flag for bulk configuration
|
||||||
* from the driver, and use that to run library
|
* from the driver, and use that to run library
|
||||||
* modules through the preprocessor.
|
* modules through the preprocessor.
|
||||||
*
|
|
||||||
* Revision 1.12 2002/05/24 01:13:00 steve
|
|
||||||
* Support language generation flag -g.
|
|
||||||
*
|
|
||||||
* Revision 1.11 2002/04/04 05:26:13 steve
|
|
||||||
* Add dependency generation.
|
|
||||||
*
|
|
||||||
* Revision 1.10 2001/11/16 05:07:19 steve
|
|
||||||
* Add support for +libext+ in command files.
|
|
||||||
*
|
|
||||||
* Revision 1.9 2001/11/13 03:30:26 steve
|
|
||||||
* The +incdir+ plusarg can take multiple directores,
|
|
||||||
* and add initial support for +define+ in the command file.
|
|
||||||
*
|
|
||||||
* Revision 1.8 2001/11/12 18:47:32 steve
|
|
||||||
* Support +incdir in command files, and ignore other
|
|
||||||
* +args flags. Also ignore -a and -v flags.
|
|
||||||
*
|
|
||||||
* Revision 1.7 2001/11/12 01:26:36 steve
|
|
||||||
* More sophisticated command file parser.
|
|
||||||
*
|
|
||||||
* Revision 1.6 2001/10/23 00:37:30 steve
|
|
||||||
* The -s flag can now be repeated on the iverilog command.
|
|
||||||
*
|
|
||||||
* Revision 1.5 2001/10/20 23:02:40 steve
|
|
||||||
* Add automatic module libraries.
|
|
||||||
*
|
|
||||||
* Revision 1.4 2001/07/03 04:09:25 steve
|
|
||||||
* Generate verbuse status messages (Stephan Boettcher)
|
|
||||||
*
|
|
||||||
* Revision 1.3 2000/11/09 21:58:00 steve
|
|
||||||
* Remember to include the -S condition.
|
|
||||||
*
|
|
||||||
* Revision 1.2 2000/10/28 03:45:47 steve
|
|
||||||
* Use the conf file to generate the vvm ivl string.
|
|
||||||
*
|
|
||||||
* Revision 1.1 2000/10/08 22:36:56 steve
|
|
||||||
* iverilog with an iverilog.conf configuration file.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
.TH iverilog 1 "$Date: 2003/08/09 04:31:44 $" Version "$Date: 2003/08/09 04:31:44 $"
|
.TH iverilog 1 "$Date: 2003/11/18 06:31:46 $" Version "$Date: 2003/11/18 06:31:46 $"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
iverilog - Icarus Verilog compiler
|
iverilog - Icarus Verilog compiler
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B iverilog
|
.B iverilog
|
||||||
[-ESVv] [-Cpath] [-ccmdfile] [-g1|-g2|-g3.0] [-Dmacro[=defn]] [-pflag=value]
|
[-ESVv] [-Bpath] [-ccmdfile] [-g1|-g2|-g3.0] [-Dmacro[=defn]] [-pflag=value]
|
||||||
[-Iincludedir] [-mmodule] [-Mfile] [-Nfile] [-ooutputfilename]
|
[-Iincludedir] [-mmodule] [-Mfile] [-Nfile] [-ooutputfilename]
|
||||||
[-stopmodule] [-ttype] [-Tmin/typ/max] [-Wclass] [-ypath] sourcefile
|
[-stopmodule] [-ttype] [-Tmin/typ/max] [-Wclass] [-ypath] sourcefile
|
||||||
|
|
||||||
|
|
@ -21,11 +21,12 @@ types are added as code generators are implemented.
|
||||||
\fIiverilog\fP accepts the following options:
|
\fIiverilog\fP accepts the following options:
|
||||||
.TP 8
|
.TP 8
|
||||||
.B -B\fIbase\fP
|
.B -B\fIbase\fP
|
||||||
The \fIiverilog\fP program uses external programs to preprocess and
|
The \fIiverilog\fP program uses external programs and configuration
|
||||||
compile the Verilog source. Normally, the path used to locate these
|
files to preprocess and compile the Verilog source. Normally, the path
|
||||||
tools is built into the \fIiverilog\fP program. However, the \fB-B\fP
|
used to locate these tools is built into the \fIiverilog\fP
|
||||||
switch allows the user to select a different set of programs. The path
|
program. However, the \fB-B\fP switch allows the user to select a
|
||||||
given is used to locate \fIivlpp\fP, \fIivl\fP and the VPI modules.
|
different set of programs. The path given is used to locate
|
||||||
|
\fIivlpp\fP, \fIivl\fP, code generators and the VPI modules.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B -c\fIfile\fP
|
.B -c\fIfile\fP
|
||||||
This flag specifies an input file that contains a list of Verilog
|
This flag specifies an input file that contains a list of Verilog
|
||||||
|
|
@ -33,14 +34,6 @@ source files. This is similar to the \fIcommand file\fP of other
|
||||||
Verilog simulators, in that it is a file that contains the file names
|
Verilog simulators, in that it is a file that contains the file names
|
||||||
instead of taking them on the command line. See \fBCommand Files\fP below.
|
instead of taking them on the command line. See \fBCommand Files\fP below.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B -C\fIpath\fP
|
|
||||||
This flag selects the driver configuration file to use. Normally, the
|
|
||||||
iverilog program will read its configuration file from
|
|
||||||
/usr/lib/ivl/iverilog.conf (or the install path configured at compile
|
|
||||||
time) but the user can specify the path to a different configuration
|
|
||||||
file. This is useful when testing new configuration files. See the
|
|
||||||
installed configuration file for a summary of the file format.
|
|
||||||
.TP 8
|
|
||||||
.B -D\fImacro\fP
|
.B -D\fImacro\fP
|
||||||
Defines macro \fImacro\fP with the string `1' as its definition. This
|
Defines macro \fImacro\fP with the string `1' as its definition. This
|
||||||
form is normally only used to trigger ifdef conditionals in the
|
form is normally only used to trigger ifdef conditionals in the
|
||||||
|
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
|
|
||||||
%{
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2000 Stephen Williams (steve@icarus.com)
|
|
||||||
*
|
|
||||||
* This source code is free software; you can redistribute it
|
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
|
||||||
* General Public License as published by the Free Software
|
|
||||||
* Foundation; either version 2 of the License, or (at your option)
|
|
||||||
* any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
#ifdef HAVE_CVS_IDENT
|
|
||||||
#ident "$Id: lexor.lex,v 1.6 2003/08/26 16:26:02 steve Exp $"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
# include "config.h"
|
|
||||||
|
|
||||||
# include <string.h>
|
|
||||||
# include "parse.h"
|
|
||||||
|
|
||||||
%}
|
|
||||||
|
|
||||||
%x CTOKENS
|
|
||||||
%x PATTERN
|
|
||||||
|
|
||||||
%%
|
|
||||||
|
|
||||||
"#".* { /* eat comments */; }
|
|
||||||
|
|
||||||
"\n" { /* eat line-ends */; }
|
|
||||||
"\r" { /* eat line-ends */; }
|
|
||||||
|
|
||||||
"[" { BEGIN(CTOKENS); return '['; }
|
|
||||||
|
|
||||||
<CTOKENS>"]" { BEGIN(0); return ']'; }
|
|
||||||
|
|
||||||
<CTOKENS>[ \t\b]+ { /* skip white space */; }
|
|
||||||
|
|
||||||
<CTOKENS>"-S" { return CT_S; }
|
|
||||||
|
|
||||||
<CTOKENS>"-t"[a-zA-Z0-9\-_]+ {
|
|
||||||
yylval.text = strdup(yytext+2);
|
|
||||||
return CT_t; }
|
|
||||||
|
|
||||||
"<"[^>]*">" {
|
|
||||||
BEGIN(PATTERN);
|
|
||||||
yylval.text = strdup(yytext);
|
|
||||||
return PATTERN_NAME; }
|
|
||||||
|
|
||||||
<PATTERN>.* {
|
|
||||||
BEGIN(0);
|
|
||||||
/* Trim off a trailing \r. This is an issue in the DOS world. */
|
|
||||||
if (yytext[strlen(yytext)-1] == '\r')
|
|
||||||
yytext[strlen(yytext)-1] = 0;
|
|
||||||
|
|
||||||
yylval.text = strdup(yytext);
|
|
||||||
return PATTERN_TEXT; }
|
|
||||||
|
|
||||||
. { fprintf(stderr, "driver lexor: Unmatched character: %c\n", yytext[0]); }
|
|
||||||
|
|
||||||
%%
|
|
||||||
|
|
||||||
void reset_lexor(FILE*fd)
|
|
||||||
{
|
|
||||||
yyrestart(fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
int yywrap()
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: main.c,v 1.60 2003/11/13 05:55:33 steve Exp $"
|
#ident "$Id: main.c,v 1.61 2003/11/18 06:31:46 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -39,7 +39,7 @@ const char NOTICE[] =
|
||||||
;
|
;
|
||||||
|
|
||||||
const char HELP[] =
|
const char HELP[] =
|
||||||
"Usage: iverilog [-ESvV] [-B base] [-C path] [-c cmdfile] [-g1|-g2|-g3.0]\n"
|
"Usage: iverilog [-ESvV] [-B base] [-c cmdfile] [-g1|-g2|-g3.0]\n"
|
||||||
" [-D macro[=defn]] [-I includedir] [-M depfile] [-m module]\n"
|
" [-D macro[=defn]] [-I includedir] [-M depfile] [-m module]\n"
|
||||||
" [-N file] [-o filename] [-p flag=value]\n"
|
" [-N file] [-o filename] [-p flag=value]\n"
|
||||||
" [-s topmodule] [-t target] [-T min|typ|max]\n"
|
" [-s topmodule] [-t target] [-T min|typ|max]\n"
|
||||||
|
|
@ -211,32 +211,53 @@ static const char*my_tempfile(const char*str, FILE**fout)
|
||||||
*/
|
*/
|
||||||
static int t_default(char*cmd, unsigned ncmd)
|
static int t_default(char*cmd, unsigned ncmd)
|
||||||
{
|
{
|
||||||
int rc;
|
unsigned rc;
|
||||||
const char*pattern;
|
unsigned ncmd_start = ncmd;
|
||||||
|
|
||||||
pattern = lookup_pattern("<ivl>");
|
snprintf(tmp, sizeof tmp, " | %s/ivl", base);
|
||||||
if (pattern == 0) {
|
rc = strlen(tmp);
|
||||||
fprintf(stderr, "No such target: %s\n", targ);
|
cmd = realloc(cmd, ncmd+rc+1);
|
||||||
return -1;
|
strcpy(cmd+ncmd, tmp);
|
||||||
|
ncmd += rc;
|
||||||
|
|
||||||
|
if (verbose_flag) {
|
||||||
|
const char*vv = " -v";
|
||||||
|
rc = strlen(vv);
|
||||||
|
cmd = realloc(cmd, ncmd+rc+1);
|
||||||
|
strcpy(cmd+ncmd, vv);
|
||||||
|
ncmd += rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp[0] = ' ';
|
if (npath != 0) {
|
||||||
tmp[1] = '|';
|
snprintf(tmp, sizeof tmp, " -N%s", npath);
|
||||||
tmp[2] = ' ';
|
rc = strlen(tmp);
|
||||||
rc = build_string(tmp+3, sizeof tmp - 3, pattern);
|
cmd = realloc(cmd, ncmd+rc+1);
|
||||||
cmd = realloc(cmd, ncmd+3+rc+1);
|
strcpy(cmd+ncmd, tmp);
|
||||||
|
ncmd += rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(tmp, sizeof tmp, " -C%s", iconfig_path);
|
||||||
|
rc = strlen(tmp);
|
||||||
|
cmd = realloc(cmd, ncmd+rc+1);
|
||||||
|
strcpy(cmd+ncmd, tmp);
|
||||||
|
ncmd += rc;
|
||||||
|
|
||||||
|
snprintf(tmp, sizeof tmp, " -C%s -- -", iconfig_common_path);
|
||||||
|
rc = strlen(tmp);
|
||||||
|
cmd = realloc(cmd, ncmd+rc+1);
|
||||||
|
strcpy(cmd+ncmd, tmp);
|
||||||
|
ncmd += rc;
|
||||||
|
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
{
|
{
|
||||||
char *t;
|
char *t;
|
||||||
for (t = tmp; *t; t++)
|
for (t = cmd+ncmd_start; *t; t++)
|
||||||
{
|
{
|
||||||
if (*t == '/') *t = '\\';
|
if (*t == '/') *t = '\\';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
strcpy(cmd+ncmd, tmp);
|
|
||||||
|
|
||||||
|
|
||||||
if (verbose_flag)
|
if (verbose_flag)
|
||||||
printf("translate: %s\n", cmd);
|
printf("translate: %s\n", cmd);
|
||||||
|
|
@ -375,7 +396,6 @@ int process_generation(const char*name)
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
const char*config_path = 0;
|
|
||||||
char*cmd;
|
char*cmd;
|
||||||
unsigned ncmd;
|
unsigned ncmd;
|
||||||
int e_flag = 0;
|
int e_flag = 0;
|
||||||
|
|
@ -453,15 +473,12 @@ int main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "B:C:c:D:Ef:g:hI:M:m:N::o:p:Ss:T:t:vVW:y:Y:")) != EOF) {
|
while ((opt = getopt(argc, argv, "B:c:D:Ef:g:hI:M:m:N::o:p:Ss:T:t:vVW:y:Y:")) != EOF) {
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'B':
|
case 'B':
|
||||||
base = optarg;
|
base = optarg;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
|
||||||
config_path = optarg;
|
|
||||||
break;
|
|
||||||
case 'c':
|
case 'c':
|
||||||
command_filename = malloc(strlen(optarg)+1);
|
command_filename = malloc(strlen(optarg)+1);
|
||||||
strcpy(command_filename, optarg);
|
strcpy(command_filename, optarg);
|
||||||
|
|
@ -604,24 +621,6 @@ int main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the iverilog.conf file to get our substitution
|
|
||||||
strings. */
|
|
||||||
|
|
||||||
{ char path[1024];
|
|
||||||
FILE*fd;
|
|
||||||
if (config_path) {
|
|
||||||
strcpy(path, config_path);
|
|
||||||
} else {
|
|
||||||
sprintf(path, "%s%civerilog.conf", base,sep);
|
|
||||||
}
|
|
||||||
fd = fopen(path, "r");
|
|
||||||
if (fd == 0) {
|
|
||||||
fprintf(stderr, "Config file \"%s\" not found\n",path);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
reset_lexor(fd);
|
|
||||||
yyparse();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start building the preprocess command line. */
|
/* Start building the preprocess command line. */
|
||||||
|
|
||||||
|
|
@ -704,6 +703,9 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: main.c,v $
|
* $Log: main.c,v $
|
||||||
|
* Revision 1.61 2003/11/18 06:31:46 steve
|
||||||
|
* Remove the iverilog.conf file.
|
||||||
|
*
|
||||||
* Revision 1.60 2003/11/13 05:55:33 steve
|
* Revision 1.60 2003/11/13 05:55:33 steve
|
||||||
* Move the DLL= flag to target config files.
|
* Move the DLL= flag to target config files.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
168
driver/parse.y
168
driver/parse.y
|
|
@ -1,168 +0,0 @@
|
||||||
%{
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2000 Stephen Williams (steve@icarus.com)
|
|
||||||
*
|
|
||||||
* This source code is free software; you can redistribute it
|
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
|
||||||
* General Public License as published by the Free Software
|
|
||||||
* Foundation; either version 2 of the License, or (at your option)
|
|
||||||
* any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
#ifdef HAVE_CVS_IDENT
|
|
||||||
#ident "$Id: parse.y,v 1.7 2003/09/26 21:25:58 steve Exp $"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
# include "config.h"
|
|
||||||
|
|
||||||
# include <stdio.h>
|
|
||||||
#ifdef HAVE_MALLOC_H
|
|
||||||
# include <malloc.h>
|
|
||||||
#endif
|
|
||||||
# include <stdlib.h>
|
|
||||||
# include <string.h>
|
|
||||||
# include "globals.h"
|
|
||||||
|
|
||||||
|
|
||||||
void yyerror(const char*);
|
|
||||||
|
|
||||||
enum drive_code_t {
|
|
||||||
CODE_S,
|
|
||||||
CODE_t,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct drive_cond {
|
|
||||||
struct drive_cond*next;
|
|
||||||
enum drive_code_t code;
|
|
||||||
char* text;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct drive_cond *cur_cond = 0;
|
|
||||||
|
|
||||||
static void add_cond(enum drive_code_t code, char*text)
|
|
||||||
{
|
|
||||||
struct drive_cond*tmp;
|
|
||||||
tmp = calloc(1, sizeof(struct drive_cond));
|
|
||||||
tmp->code = code;
|
|
||||||
tmp->text = text;
|
|
||||||
|
|
||||||
tmp->next = cur_cond;
|
|
||||||
cur_cond = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct drive_pattern {
|
|
||||||
struct drive_pattern*next;
|
|
||||||
char*name;
|
|
||||||
char*text;
|
|
||||||
struct drive_cond*cond;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct drive_pattern *patterns = 0;
|
|
||||||
static struct drive_pattern *plast = 0;
|
|
||||||
|
|
||||||
static void add_pattern(char*name, char*text)
|
|
||||||
{
|
|
||||||
struct drive_pattern*tmp;
|
|
||||||
tmp = calloc(1, sizeof(struct drive_pattern));
|
|
||||||
tmp->name = name;
|
|
||||||
tmp->text = text;
|
|
||||||
tmp->cond = cur_cond;
|
|
||||||
tmp->next = 0;
|
|
||||||
|
|
||||||
|
|
||||||
if (plast) {
|
|
||||||
plast->next = tmp;
|
|
||||||
plast = tmp;
|
|
||||||
} else {
|
|
||||||
patterns = tmp;
|
|
||||||
plast = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char*lookup_pattern(const char*key)
|
|
||||||
{
|
|
||||||
struct drive_pattern*cur;
|
|
||||||
struct drive_cond*cc;
|
|
||||||
|
|
||||||
for (cur = patterns ; cur ; cur = cur->next) {
|
|
||||||
|
|
||||||
if (strcmp(key, cur->name) != 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
for (cc = cur->cond ; cc ; cc = cc->next) {
|
|
||||||
|
|
||||||
switch (cc->code) {
|
|
||||||
case CODE_S:
|
|
||||||
if (synth_flag)
|
|
||||||
continue;
|
|
||||||
break;
|
|
||||||
case CODE_t:
|
|
||||||
if (strcmp(targ, cc->text) == 0)
|
|
||||||
continue;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cc) continue;
|
|
||||||
|
|
||||||
return cur->text;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
%}
|
|
||||||
|
|
||||||
%union {
|
|
||||||
char*text;
|
|
||||||
};
|
|
||||||
|
|
||||||
%token <text> PATTERN_NAME PATTERN_TEXT
|
|
||||||
%token <text> CT_t
|
|
||||||
%token CT_S
|
|
||||||
|
|
||||||
%%
|
|
||||||
|
|
||||||
start: section_list ;
|
|
||||||
|
|
||||||
section_list
|
|
||||||
: section
|
|
||||||
| section_list section
|
|
||||||
;
|
|
||||||
|
|
||||||
section : '[' ctoken_list ']' pattern_list { cur_cond = 0; } ;
|
|
||||||
|
|
||||||
ctoken_list
|
|
||||||
: ctoken
|
|
||||||
| ctoken_list ctoken
|
|
||||||
;
|
|
||||||
|
|
||||||
ctoken : CT_S { add_cond(CODE_S, 0); }
|
|
||||||
| CT_t { add_cond(CODE_t, $1); }
|
|
||||||
;
|
|
||||||
|
|
||||||
pattern_list
|
|
||||||
: pattern
|
|
||||||
| pattern_list pattern
|
|
||||||
;
|
|
||||||
|
|
||||||
pattern : PATTERN_NAME PATTERN_TEXT
|
|
||||||
{ add_pattern($1, $2); }
|
|
||||||
;
|
|
||||||
|
|
||||||
%%
|
|
||||||
|
|
||||||
void yyerror(const char*msg)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s\n", msg);
|
|
||||||
}
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
|
|
||||||
# The iverilog.conf configuration file provides to the iverilog driver
|
|
||||||
# strings based on switches that are passed by the user on the command
|
|
||||||
# line.
|
|
||||||
#
|
|
||||||
# Comments start from the hash (#) character and run to the end of the
|
|
||||||
# line.
|
|
||||||
#
|
|
||||||
# Conditions are a list of requirements between [] characters. For the
|
|
||||||
# set of patterns following a string to b activated, all the
|
|
||||||
# conditions must be true. Valid conditions are:
|
|
||||||
#
|
|
||||||
# -S -- The -S flag is passed to iverilog
|
|
||||||
# -t<string> -- The -t<string> parameters is passed to iverilog
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Patterns have a name and text. The name has the form <key> where the
|
|
||||||
# key is some key value that is required by iverilog. The commonly
|
|
||||||
# used keys are:
|
|
||||||
#
|
|
||||||
# <ivl>
|
|
||||||
# The string here is the command line needed to take the
|
|
||||||
# preprocessor output (ivlpp) and compile it with the
|
|
||||||
# target. All target types use this key.
|
|
||||||
#
|
|
||||||
# The pattern text includes %<code> substitutions. iverilog
|
|
||||||
# substitutes values for the %<code> sequences within the text.
|
|
||||||
#
|
|
||||||
# %B Substitute the base libdir, -B flag of iverilog.
|
|
||||||
#
|
|
||||||
# %c Substitute the path to the installed config file.
|
|
||||||
# %C Substitute the path to the temporary config file.
|
|
||||||
#
|
|
||||||
# %N Substitute the value of the -N<path> flag.
|
|
||||||
#
|
|
||||||
# %[<c><text>]
|
|
||||||
# This substitution pattern is magical, and is the only
|
|
||||||
# multicharacter pattern. This tests the code <c>, and
|
|
||||||
# substitutes <text> into the output only if <c> is true.
|
|
||||||
# The <text> may include further substitution strings, and is
|
|
||||||
# terminated by a ``]'' character.
|
|
||||||
|
|
||||||
|
|
||||||
# This is the null (no op) target. There is a synthesis version and a
|
|
||||||
# non-synthesis version. Normally, this does not matter, but this can
|
|
||||||
# be useful and interesting if the -N flag is included.
|
|
||||||
|
|
||||||
[-tnull -S]
|
|
||||||
<ivl>%B/ivl %[v-v] -C%c -C%C %[N-N%N] -- -
|
|
||||||
|
|
||||||
[-tnull]
|
|
||||||
<ivl>%B/ivl %[v-v] -C%c -C%C %[N-N%N] -- -
|
|
||||||
|
|
||||||
# --
|
|
||||||
# The vvp target generates code that the vvp simulation engine can execute.
|
|
||||||
# These rules support synthesized and non-synthesized variants.
|
|
||||||
|
|
||||||
[-tvvp -S]
|
|
||||||
<ivl>%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fVVP_EXECUTABLE=%B/../../bin/vvp -- -
|
|
||||||
|
|
||||||
[-tvvp]
|
|
||||||
<ivl>%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fVVP_EXECUTABLE=%B/../../bin/vvp -- -
|
|
||||||
|
|
||||||
# This is the XNF code generator.
|
|
||||||
|
|
||||||
[-txnf]
|
|
||||||
<ivl>%B/ivl %[v-v] -C%c -C%C %[N-N%N] -- -
|
|
||||||
|
|
||||||
# And this is the FPGA synthesizer.
|
|
||||||
[-tfpga]
|
|
||||||
<ivl>%B/ivl %[v-v] -C%c -C%C %[N-N%N] -- -
|
|
||||||
|
|
@ -61,7 +61,6 @@ make prefix=$RPM_BUILD_ROOT/usr install
|
||||||
%attr(-,root,root) /usr/lib/ivl/fpga-s.conf
|
%attr(-,root,root) /usr/lib/ivl/fpga-s.conf
|
||||||
%attr(-,root,root) /usr/lib/ivl/xnf.conf
|
%attr(-,root,root) /usr/lib/ivl/xnf.conf
|
||||||
%attr(-,root,root) /usr/lib/ivl/xnf-s.conf
|
%attr(-,root,root) /usr/lib/ivl/xnf-s.conf
|
||||||
%attr(-,root,root) /usr/lib/ivl/iverilog.conf
|
|
||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
%attr(-,root,root) /usr/bin/vvp32
|
%attr(-,root,root) /usr/bin/vvp32
|
||||||
%attr(-,root,root) /usr/lib/ivl/vpi64/system.vpi
|
%attr(-,root,root) /usr/lib/ivl/vpi64/system.vpi
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue