Compare commits
16 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
6d0ab9978f | |
|
|
e25cdf86ac | |
|
|
13bff8c50d | |
|
|
b1b017251a | |
|
|
e13a52637a | |
|
|
4803f0d12b | |
|
|
be44289fc0 | |
|
|
e682166253 | |
|
|
e2a1f21896 | |
|
|
cb73accd84 | |
|
|
a66361a4f2 | |
|
|
1159de0482 | |
|
|
ac5d4114ad | |
|
|
85f796fda2 | |
|
|
8612ec5452 | |
|
|
870a351944 |
|
|
@ -86,7 +86,7 @@ config.h: $(srcdir)/config.h.in Makefile
|
||||||
|
|
||||||
# Windows specific...
|
# Windows specific...
|
||||||
res.rc: $(srcdir)/res.rc.in ../version.exe
|
res.rc: $(srcdir)/res.rc.in ../version.exe
|
||||||
sed -e 's;@PRODUCTVERSION@;'`../version.exe '%M,%m,%n,0'`';' \
|
sed -e 's;@PRODUCTVERSION@;'`../version.exe '%M,%n,0,0'`';' \
|
||||||
$(srcdir)/res.rc.in > $@
|
$(srcdir)/res.rc.in > $@
|
||||||
|
|
||||||
res.o: res.rc
|
res.o: res.rc
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.TH iverilog 1 "Aug 7th, 2015" "" "Version %M.%m.%n %E"
|
.TH iverilog 1 "Aug 7th, 2015" "" "Version %M.%n%E"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
iverilog - Icarus Verilog compiler
|
iverilog - Icarus Verilog compiler
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ different set of programs. The path given is used to locate
|
||||||
\fIivlpp\fP, \fIivl\fP, code generators and the VPI modules.
|
\fIivlpp\fP, \fIivl\fP, code generators and the VPI modules.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B -c\fIfile\fP -f\fIfile\fP
|
.B -c\fIfile\fP -f\fIfile\fP
|
||||||
These flags specifies an input file that contains a list of Verilog
|
These flags specify an input file that contains a list of Verilog
|
||||||
source files. This is similar to the \fIcommand file\fP of other
|
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.
|
||||||
|
|
|
||||||
|
|
@ -1047,19 +1047,10 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
if (version_flag || verbose_flag) {
|
if (version_flag || verbose_flag) {
|
||||||
printf("Icarus Verilog version " VERSION " (" VERSION_TAG ")\n\n");
|
printf("Icarus Verilog version " VERSION " (" VERSION_TAG ")\n\n");
|
||||||
printf("Copyright 1998-2013 Stephen Williams\n\n");
|
printf("Copyright 1998-2015 Stephen Williams\n\n");
|
||||||
puts(NOTICE);
|
puts(NOTICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (synth_flag) {
|
|
||||||
fprintf(stderr, "Warning: Synthesis is not currently being "
|
|
||||||
"maintained and may not\n");
|
|
||||||
fprintf(stderr, " function correctly. V0.8 was the "
|
|
||||||
"last release branch to\n");
|
|
||||||
fprintf(stderr, " have active synthesis development "
|
|
||||||
"and support!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make a common conf file path to reflect the target. */
|
/* Make a common conf file path to reflect the target. */
|
||||||
snprintf(iconfig_common_path, sizeof iconfig_common_path, "%s%c%s%s.conf",
|
snprintf(iconfig_common_path, sizeof iconfig_common_path, "%s%c%s%s.conf",
|
||||||
base, sep, targ, synth_flag? "-s" : "");
|
base, sep, targ, synth_flag? "-s" : "");
|
||||||
|
|
|
||||||
|
|
@ -2842,9 +2842,9 @@ NetExpr* PEConcat::elaborate_expr(Design*des, NetScope*scope,
|
||||||
concat->set(idx, parms[off+idx]);
|
concat->set(idx, parms[off+idx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wid_sum == 0 && concat_depth < 2) {
|
if (wid_sum == 0) {
|
||||||
cerr << get_fileline() << ": error: Concatenation may not "
|
cerr << get_fileline() << ": error: Concatenation/replication "
|
||||||
<< "have zero width in this context." << endl;
|
<< "may not have zero width in this context." << endl;
|
||||||
des->errors += 1;
|
des->errors += 1;
|
||||||
concat_depth -= 1;
|
concat_depth -= 1;
|
||||||
delete concat;
|
delete concat;
|
||||||
|
|
|
||||||
|
|
@ -793,7 +793,7 @@ void elaborate_rootscope_tasks(Design*des)
|
||||||
}
|
}
|
||||||
|
|
||||||
cerr << cur->second->get_fileline() << ": internal error: "
|
cerr << cur->second->get_fileline() << ": internal error: "
|
||||||
<< "elabortae_rootscope_tasks does not understand "
|
<< "elaborate_rootscope_tasks does not understand "
|
||||||
<< "this object," << endl;
|
<< "this object," << endl;
|
||||||
des->errors += 1;
|
des->errors += 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
51
elaborate.cc
51
elaborate.cc
|
|
@ -4039,9 +4039,18 @@ NetProc* PDisable::elaborate(Design*des, NetScope*scope) const
|
||||||
*/
|
*/
|
||||||
NetProc* PDoWhile::elaborate(Design*des, NetScope*scope) const
|
NetProc* PDoWhile::elaborate(Design*des, NetScope*scope) const
|
||||||
{
|
{
|
||||||
NetExpr*tmp = elab_and_eval(des, scope, cond_, -1);
|
NetExpr*ce = elab_and_eval(des, scope, cond_, -1);
|
||||||
tmp->set_line(*this);
|
NetProc*sub;
|
||||||
NetDoWhile*loop = new NetDoWhile(tmp, statement_->elaborate(des, scope));
|
if (statement_)
|
||||||
|
sub = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
sub = new NetBlock(NetBlock::SEQU, 0);
|
||||||
|
if (ce == 0 || sub == 0) {
|
||||||
|
delete ce;
|
||||||
|
delete sub;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
NetDoWhile*loop = new NetDoWhile(ce, sub);
|
||||||
loop->set_line(*this);
|
loop->set_line(*this);
|
||||||
return loop;
|
return loop;
|
||||||
}
|
}
|
||||||
|
|
@ -4572,7 +4581,11 @@ NetProc* PEventStatement::elaborate(Design*des, NetScope*scope) const
|
||||||
*/
|
*/
|
||||||
NetProc* PForever::elaborate(Design*des, NetScope*scope) const
|
NetProc* PForever::elaborate(Design*des, NetScope*scope) const
|
||||||
{
|
{
|
||||||
NetProc*stat = statement_->elaborate(des, scope);
|
NetProc*stat;
|
||||||
|
if (statement_)
|
||||||
|
stat = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
stat = new NetBlock(NetBlock::SEQU, 0);
|
||||||
if (stat == 0) return 0;
|
if (stat == 0) return 0;
|
||||||
|
|
||||||
NetForever*proc = new NetForever(stat);
|
NetForever*proc = new NetForever(stat);
|
||||||
|
|
@ -4778,7 +4791,11 @@ NetProc* PForeach::elaborate(Design*des, NetScope*scope) const
|
||||||
|
|
||||||
/* Elaborate the statement that is contained in the foreach
|
/* Elaborate the statement that is contained in the foreach
|
||||||
loop. */
|
loop. */
|
||||||
NetProc*sub = statement_->elaborate(des, scope);
|
NetProc*sub;
|
||||||
|
if (statement_)
|
||||||
|
sub = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
sub = new NetBlock(NetBlock::SEQU, 0);
|
||||||
|
|
||||||
/* Make a step statement: idx += 1 */
|
/* Make a step statement: idx += 1 */
|
||||||
NetAssign_*idx_lv = new NetAssign_(idx_sig);
|
NetAssign_*idx_lv = new NetAssign_(idx_sig);
|
||||||
|
|
@ -4809,7 +4826,11 @@ NetProc* PForeach::elaborate_static_array_(Design*des, NetScope*scope,
|
||||||
ivl_assert(*this, index_vars_.size() > 0);
|
ivl_assert(*this, index_vars_.size() > 0);
|
||||||
ivl_assert(*this, dims.size() == index_vars_.size());
|
ivl_assert(*this, dims.size() == index_vars_.size());
|
||||||
|
|
||||||
NetProc*sub = statement_->elaborate(des, scope);
|
NetProc*sub;
|
||||||
|
if (statement_)
|
||||||
|
sub = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
sub = new NetBlock(NetBlock::SEQU, 0);
|
||||||
NetForLoop*stmt = 0;
|
NetForLoop*stmt = 0;
|
||||||
|
|
||||||
for (int idx_idx = index_vars_.size()-1 ; idx_idx >= 0 ; idx_idx -= 1) {
|
for (int idx_idx = index_vars_.size()-1 ; idx_idx >= 0 ; idx_idx -= 1) {
|
||||||
|
|
@ -4903,7 +4924,11 @@ NetProc* PForStatement::elaborate(Design*des, NetScope*scope) const
|
||||||
loop. If there is an error, this will return 0 and I should
|
loop. If there is an error, this will return 0 and I should
|
||||||
skip the append. No need to worry, the error has been
|
skip the append. No need to worry, the error has been
|
||||||
reported so it's OK that the netlist is bogus. */
|
reported so it's OK that the netlist is bogus. */
|
||||||
NetProc*sub = statement_->elaborate(des, scope);
|
NetProc*sub;
|
||||||
|
if (statement_)
|
||||||
|
sub = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
sub = new NetBlock(NetBlock::SEQU, 0);
|
||||||
|
|
||||||
/* Now elaborate the for_step statement. I really should do
|
/* Now elaborate the for_step statement. I really should do
|
||||||
some error checking here to make sure the step statement
|
some error checking here to make sure the step statement
|
||||||
|
|
@ -5025,7 +5050,11 @@ NetProc* PRepeat::elaborate(Design*des, NetScope*scope) const
|
||||||
if (expr->expr_type() == IVL_VT_REAL)
|
if (expr->expr_type() == IVL_VT_REAL)
|
||||||
expr = cast_to_int4(expr, 64);
|
expr = cast_to_int4(expr, 64);
|
||||||
|
|
||||||
NetProc*stat = statement_->elaborate(des, scope);
|
NetProc*stat;
|
||||||
|
if (statement_)
|
||||||
|
stat = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
stat = new NetBlock(NetBlock::SEQU, 0);
|
||||||
if (stat == 0) return 0;
|
if (stat == 0) return 0;
|
||||||
|
|
||||||
// If the expression is a constant, handle certain special
|
// If the expression is a constant, handle certain special
|
||||||
|
|
@ -5205,7 +5234,11 @@ NetProc* PTrigger::elaborate(Design*des, NetScope*scope) const
|
||||||
NetProc* PWhile::elaborate(Design*des, NetScope*scope) const
|
NetProc* PWhile::elaborate(Design*des, NetScope*scope) const
|
||||||
{
|
{
|
||||||
NetExpr*ce = elab_and_eval(des, scope, cond_, -1);
|
NetExpr*ce = elab_and_eval(des, scope, cond_, -1);
|
||||||
NetProc*sub = statement_->elaborate(des, scope);
|
NetProc*sub;
|
||||||
|
if (statement_)
|
||||||
|
sub = statement_->elaborate(des, scope);
|
||||||
|
else
|
||||||
|
sub = new NetBlock(NetBlock::SEQU, 0);
|
||||||
if (ce == 0 || sub == 0) {
|
if (ce == 0 || sub == 0) {
|
||||||
delete ce;
|
delete ce;
|
||||||
delete sub;
|
delete sub;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.TH iverilog-vpi 1 "May 10th, 2015" "" "Version %M.%m.%n %E"
|
.TH iverilog-vpi 1 "May 10th, 2015" "" "Version %M.%n%E"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
iverilog-vpi - Compile front end for VPI modules
|
iverilog-vpi - Compile front end for VPI modules
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
const char COPYRIGHT[] =
|
const char COPYRIGHT[] =
|
||||||
"Copyright (c) 1999-2011 Stephen Williams (steve@icarus.com)";
|
"Copyright (c) 1999-2011,2015 Stephen Williams (steve@icarus.com)";
|
||||||
/*
|
/*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
|
||||||
2
main.cc
2
main.cc
|
|
@ -1,5 +1,5 @@
|
||||||
const char COPYRIGHT[] =
|
const char COPYRIGHT[] =
|
||||||
"Copyright (c) 1998-2014 Stephen Williams (steve@icarus.com)";
|
"Copyright (c) 1998-2015 Stephen Williams (steve@icarus.com)";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
|
|
|
||||||
10
netlist.cc
10
netlist.cc
|
|
@ -2743,10 +2743,11 @@ DelayType NetCase::delay_type() const
|
||||||
|
|
||||||
for (unsigned idx = 0; idx < nstmts; idx += 1) {
|
for (unsigned idx = 0; idx < nstmts; idx += 1) {
|
||||||
if (!expr(idx)) def_stmt = true;
|
if (!expr(idx)) def_stmt = true;
|
||||||
|
DelayType dt = stat(idx) ? stat(idx)->delay_type() : NO_DELAY;
|
||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
result = stat(idx)->delay_type();
|
result = dt;
|
||||||
} else {
|
} else {
|
||||||
result = combine_delays(result, stat(idx)->delay_type());
|
result = combine_delays(result, dt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2769,6 +2770,7 @@ DelayType NetCondit::delay_type() const
|
||||||
*/
|
*/
|
||||||
DelayType NetDoWhile::delay_type() const
|
DelayType NetDoWhile::delay_type() const
|
||||||
{
|
{
|
||||||
|
ivl_assert(*this, proc_);
|
||||||
return proc_->delay_type();
|
return proc_->delay_type();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2779,11 +2781,13 @@ DelayType NetEvWait::delay_type() const
|
||||||
|
|
||||||
DelayType NetForever::delay_type() const
|
DelayType NetForever::delay_type() const
|
||||||
{
|
{
|
||||||
|
ivl_assert(*this, statement_);
|
||||||
return statement_->delay_type();
|
return statement_->delay_type();
|
||||||
}
|
}
|
||||||
|
|
||||||
DelayType NetForLoop::delay_type() const
|
DelayType NetForLoop::delay_type() const
|
||||||
{
|
{
|
||||||
|
ivl_assert(*this, statement_);
|
||||||
return get_loop_delay_type(condition_, statement_);
|
return get_loop_delay_type(condition_, statement_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2806,6 +2810,7 @@ DelayType NetPDelay::delay_type() const
|
||||||
|
|
||||||
DelayType NetRepeat::delay_type() const
|
DelayType NetRepeat::delay_type() const
|
||||||
{
|
{
|
||||||
|
ivl_assert(*this, statement_);
|
||||||
return get_loop_delay_type(expr_, statement_);
|
return get_loop_delay_type(expr_, statement_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2821,5 +2826,6 @@ DelayType NetUTask::delay_type() const
|
||||||
|
|
||||||
DelayType NetWhile::delay_type() const
|
DelayType NetWhile::delay_type() const
|
||||||
{
|
{
|
||||||
|
ivl_assert(*this, proc_);
|
||||||
return get_loop_delay_type(cond_, proc_);
|
return get_loop_delay_type(cond_, proc_);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
26
pform.cc
26
pform.cc
|
|
@ -2591,6 +2591,15 @@ void pform_makewire(const struct vlltype&li,
|
||||||
NetNet::Type type,
|
NetNet::Type type,
|
||||||
data_type_t*data_type)
|
data_type_t*data_type)
|
||||||
{
|
{
|
||||||
|
if ((lexical_scope == 0) && (generation_flag < GN_VER2005_SV)) {
|
||||||
|
VLerror(li, "error: variable declarations must be contained within a module.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (lexical_scope == 0) {
|
||||||
|
VLerror(li, "sorry: variable declarations in the $root scope are not yet supported.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
list<perm_string>*names = new list<perm_string>;
|
list<perm_string>*names = new list<perm_string>;
|
||||||
|
|
||||||
for (list<decl_assignment_t*>::iterator cur = assign_list->begin()
|
for (list<decl_assignment_t*>::iterator cur = assign_list->begin()
|
||||||
|
|
@ -2887,6 +2896,14 @@ void pform_set_parameter(const struct vlltype&loc,
|
||||||
LexicalScope::range_t*value_range)
|
LexicalScope::range_t*value_range)
|
||||||
{
|
{
|
||||||
LexicalScope*scope = lexical_scope;
|
LexicalScope*scope = lexical_scope;
|
||||||
|
if ((scope == 0) && (generation_flag < GN_VER2005_SV)) {
|
||||||
|
VLerror(loc, "error: parameter declarations must be contained within a module.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (scope == 0) {
|
||||||
|
VLerror(loc, "sorry: parameter declarations in the $root scope are not yet supported.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (scope == pform_cur_generate) {
|
if (scope == pform_cur_generate) {
|
||||||
VLerror("parameter declarations are not permitted in generate blocks");
|
VLerror("parameter declarations are not permitted in generate blocks");
|
||||||
return;
|
return;
|
||||||
|
|
@ -2954,7 +2971,14 @@ void pform_set_localparam(const struct vlltype&loc,
|
||||||
bool signed_flag, list<pform_range_t>*range, PExpr*expr)
|
bool signed_flag, list<pform_range_t>*range, PExpr*expr)
|
||||||
{
|
{
|
||||||
LexicalScope*scope = lexical_scope;
|
LexicalScope*scope = lexical_scope;
|
||||||
ivl_assert(loc, scope);
|
if ((scope == 0) && (generation_flag < GN_VER2005_SV)) {
|
||||||
|
VLerror(loc, "error: localparam declarations must be contained within a module.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (scope == 0) {
|
||||||
|
VLerror(loc, "sorry: localparam declarations in the $root scope are not yet supported.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the localparam name is already in the dictionary.
|
// Check if the localparam name is already in the dictionary.
|
||||||
if (scope->localparams.find(name) != scope->localparams.end()) {
|
if (scope->localparams.find(name) != scope->localparams.end()) {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
# the number for a snapshot and the path to a temporary directory.
|
# the number for a snapshot and the path to a temporary directory.
|
||||||
# for example:
|
# for example:
|
||||||
#
|
#
|
||||||
# sh scripts/MAKE_RELEASE.sh 0.9.1 ~/tmp
|
# sh scripts/MAKE_RELEASE.sh 10.1 ~/tmp
|
||||||
#
|
#
|
||||||
# The above assumes that there is a tag "v0_9_1" at the point
|
# The above assumes that there is a tag "v0_9_1" at the point
|
||||||
# to be released. (The tag has the "v", but the argument to this
|
# to be released. (The tag has the "v", but the argument to this
|
||||||
|
|
@ -13,13 +13,17 @@
|
||||||
# and finally creates a file called verilog-0.9.1.tar.gz that
|
# and finally creates a file called verilog-0.9.1.tar.gz that
|
||||||
# contains the release ready to go.
|
# contains the release ready to go.
|
||||||
#
|
#
|
||||||
# The complete steps to make a release x.y.z generally are:
|
# The complete steps to make a release x.y generally are:
|
||||||
#
|
#
|
||||||
# git tag -a v0_9_1
|
# Edit version_base.h to suit.
|
||||||
|
#
|
||||||
|
# Edit verilog.spec to suit.
|
||||||
|
#
|
||||||
|
# git tag -a v10_1
|
||||||
# (Make the tag in the local git repository.)
|
# (Make the tag in the local git repository.)
|
||||||
#
|
#
|
||||||
# sh scripts/MAKE_RELEASE.sh 0.9.1 ~/tmp
|
# sh scripts/MAKE_RELEASE.sh 10.1 ~/tmp
|
||||||
# (Make the snapshot bundle verilog-0.9.1.tar.gz)
|
# (Make the snapshot bundle verilog-10.1.tar.gz)
|
||||||
#
|
#
|
||||||
# git push --tags
|
# git push --tags
|
||||||
# (Publish the tag to the repository.)
|
# (Publish the tag to the repository.)
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ using namespace std;
|
||||||
|
|
||||||
static const char*version_string =
|
static const char*version_string =
|
||||||
"Icarus Verilog BLIF Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
"Icarus Verilog BLIF Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
||||||
"Copyright (c) 2013 Stephen Williams (steve@icarus.com)\n\n"
|
"Copyright (c) 2013,2015 Stephen Williams (steve@icarus.com)\n\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
" the Free Software Foundation; either version 2 of the License, or\n"
|
" the Free Software Foundation; either version 2 of the License, or\n"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000-2014 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
static const char*version_string =
|
static const char*version_string =
|
||||||
"Icarus Verilog NULL Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
"Icarus Verilog NULL Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
||||||
"Copyright (c) 2000-2014 Stephen Williams (steve@icarus.com)\n\n"
|
"Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com)\n\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
" the Free Software Foundation; either version 2 of the License, or\n"
|
" the Free Software Foundation; either version 2 of the License, or\n"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2014,2015 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -34,7 +34,7 @@ using namespace std;
|
||||||
|
|
||||||
static const char*version_string =
|
static const char*version_string =
|
||||||
"Icarus Verilog SIZER Statistics Generator " VERSION " (" VERSION_TAG ")\n\n"
|
"Icarus Verilog SIZER Statistics Generator " VERSION " (" VERSION_TAG ")\n\n"
|
||||||
"Copyright (c) 2014 Stephen Williams (steve@icarus.com)\n\n"
|
"Copyright (c) 2014,2015 Stephen Williams (steve@icarus.com)\n\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
" the Free Software Foundation; either version 2 of the License, or\n"
|
" the Free Software Foundation; either version 2 of the License, or\n"
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
static const char*version_string =
|
static const char*version_string =
|
||||||
"Icarus Verilog STUB Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
"Icarus Verilog STUB Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
||||||
"Copyright (c) 2000-2014 Stephen Williams (steve@icarus.com)\n\n"
|
"Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com)\n\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
" the Free Software Foundation; either version 2 of the License, or\n"
|
" the Free Software Foundation; either version 2 of the License, or\n"
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
static const char*version_string =
|
static const char*version_string =
|
||||||
"Icarus Verilog VLOG95 Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
"Icarus Verilog VLOG95 Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
||||||
"Copyright (C) 2010-2013 Cary R. (cygcary@yahoo.com)\n\n"
|
"Copyright (C) 2010-2015 Cary R. (cygcary@yahoo.com)\n\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
" the Free Software Foundation; either version 2 of the License, or\n"
|
" the Free Software Foundation; either version 2 of the License, or\n"
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
static const char*version_string =
|
static const char*version_string =
|
||||||
"Icarus Verilog VVP Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
"Icarus Verilog VVP Code Generator " VERSION " (" VERSION_TAG ")\n\n"
|
||||||
"Copyright (c) 2001-2011 Stephen Williams (steve@icarus.com)\n\n"
|
"Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)\n\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
" the Free Software Foundation; either version 2 of the License, or\n"
|
" the Free Software Foundation; either version 2 of the License, or\n"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#norootforbuild
|
#norootforbuild
|
||||||
#
|
#
|
||||||
%define rev_date 20150603
|
%define rev_date 20150815
|
||||||
# Normally, the suff-ix is %nil, meaning the suffix is to not be used.
|
# Normally, the suff-ix is %nil, meaning the suffix is to not be used.
|
||||||
# But if the builder wants to make a suffixed package, he may set this
|
# But if the builder wants to make a suffixed package, he may set this
|
||||||
# to a value (i.e. -test) to cause suffixes to be put in all the right
|
# to a value (i.e. -test) to cause suffixes to be put in all the right
|
||||||
|
|
@ -10,11 +10,11 @@
|
||||||
#
|
#
|
||||||
Summary: Icarus Verilog
|
Summary: Icarus Verilog
|
||||||
Name: verilog%{suff}
|
Name: verilog%{suff}
|
||||||
Version: 0.10.0.%{rev_date}
|
Version: 10.0
|
||||||
Release: 0
|
Release: 0
|
||||||
License: GPL
|
License: GPL
|
||||||
Group: Productivity/Scientific/Electronics
|
Group: Productivity/Scientific/Electronics
|
||||||
Source: verilog%{suff}-%{rev_date}.tar.gz
|
Source: verilog%{suff}-%{version}.tar.gz
|
||||||
URL: http://www.icarus.com/eda/verilog/index.html
|
URL: http://www.icarus.com/eda/verilog/index.html
|
||||||
Packager: Stephen Williams <steve@icarus.com>
|
Packager: Stephen Williams <steve@icarus.com>
|
||||||
|
|
||||||
|
|
@ -32,7 +32,7 @@ engineering formats, including simulation. It strives to be true
|
||||||
to the IEEE-1364 standard.
|
to the IEEE-1364 standard.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -n verilog%{suff}-%{rev_date}
|
%setup -n verilog-%{version}
|
||||||
|
|
||||||
%build
|
%build
|
||||||
if test X%{suff} != X
|
if test X%{suff} != X
|
||||||
|
|
|
||||||
|
|
@ -29,10 +29,7 @@ static void run_string(const char*txt)
|
||||||
if (cp[0] == '%' && cp[1] != 0) {
|
if (cp[0] == '%' && cp[1] != 0) {
|
||||||
switch (cp[1]) {
|
switch (cp[1]) {
|
||||||
case 'M':
|
case 'M':
|
||||||
fprintf(stdout, "%u", VERSION_MAJOR1);
|
fprintf(stdout, "%u", VERSION_MAJOR);
|
||||||
break;
|
|
||||||
case 'm':
|
|
||||||
fprintf(stdout, "%u", VERSION_MAJOR2);
|
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
fprintf(stdout, "%u", VERSION_MINOR);
|
fprintf(stdout, "%u", VERSION_MINOR);
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,16 @@
|
||||||
* number for the compiled result.
|
* number for the compiled result.
|
||||||
*/
|
*/
|
||||||
# define VERSION_MAJOR 10
|
# define VERSION_MAJOR 10
|
||||||
# define VERSION_MAJOR2 10
|
|
||||||
# define VERSION_MINOR 0
|
# define VERSION_MINOR 0
|
||||||
# define VERSION_EXTRA "(devel)"
|
|
||||||
|
|
||||||
/* This is a concatenation of MAJOR1.MAJOR2 that is used by
|
/*
|
||||||
vams_simparam.c to make a double value. */
|
* This will be appended to the version. Use this to mark development
|
||||||
# define VERSION_MAJOR 0.10
|
* versions and the like.
|
||||||
|
*/
|
||||||
|
# define VERSION_EXTRA " (stable)"
|
||||||
|
|
||||||
# define VERSION_STRINGIFY(x) #x
|
# define VERSION_STRINGIFY(x) #x
|
||||||
# define VERSION_STR(a,b,extra) VERSION_STRINGIFY(a.b) " " extra
|
# define VERSION_STR(a,b,extra) VERSION_STRINGIFY(a.b) extra
|
||||||
|
|
||||||
#define VERSION VERSION_STR(VERSION_MAJOR,VERSION_MINOR,VERSION_EXTRA)
|
#define VERSION VERSION_STR(VERSION_MAJOR,VERSION_MINOR,VERSION_EXTRA)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -874,7 +874,7 @@ const VType* ExpName::probe_prefix_type_(Entity*ent, ScopeBase*scope) const
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This method is the probe_type() imlementation for ExpName objects
|
* This method is the probe_type() implementation for ExpName objects
|
||||||
* that have prefix parts. In this case we try to get the type of the
|
* that have prefix parts. In this case we try to get the type of the
|
||||||
* prefix and interpret the name in that context.
|
* prefix and interpret the name in that context.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ const char COPYRIGHT[] =
|
||||||
* information to the file named <path>.
|
* information to the file named <path>.
|
||||||
*
|
*
|
||||||
* elaboration=<path>
|
* elaboration=<path>
|
||||||
* Enable debugging of elaboratin by dumping elaboration
|
* Enable debugging of elaboration by dumping elaboration
|
||||||
* process information to the file named <path>.
|
* process information to the file named <path>.
|
||||||
*
|
*
|
||||||
* entities=<path>
|
* entities=<path>
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ class ActiveScope : public ScopeBase {
|
||||||
bool is_vector_name(perm_string name) const;
|
bool is_vector_name(perm_string name) const;
|
||||||
|
|
||||||
// Locate the subprogram by name. The subprogram body uses
|
// Locate the subprogram by name. The subprogram body uses
|
||||||
// this to locate the sobprogram declaration. Note that the
|
// this to locate the subprogram declaration. Note that the
|
||||||
// subprogram may be in a package header.
|
// subprogram may be in a package header.
|
||||||
SubprogramHeader* recall_subprogram(perm_string name) const;
|
SubprogramHeader* recall_subprogram(perm_string name) const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,7 @@ static PLI_INT32 ivlh_attribute_event_calltf(ICARUS_VPI_CONST PLI_BYTE8*data)
|
||||||
|
|
||||||
rval.value.scalar = vpi1;
|
rval.value.scalar = vpi1;
|
||||||
|
|
||||||
// Detect if change occured in this moment
|
// Detect if change occurred in this moment
|
||||||
if (mon->last_event.high != tnow.high)
|
if (mon->last_event.high != tnow.high)
|
||||||
rval.value.scalar = vpi0;
|
rval.value.scalar = vpi0;
|
||||||
if (mon->last_event.low != tnow.low)
|
if (mon->last_event.low != tnow.low)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
* port-2: Clock Enable input
|
* port-2: Clock Enable input
|
||||||
* port-3: Asynchronous Set/Clear input.
|
* port-3: Asynchronous Set/Clear input.
|
||||||
*
|
*
|
||||||
* The base vvp_dff does not implement an asychronous set/clear.
|
* The base vvp_dff does not implement an asynchronous set/clear.
|
||||||
*/
|
*/
|
||||||
class vvp_dff : public vvp_net_fun_t {
|
class vvp_dff : public vvp_net_fun_t {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
; Copyright (c) 2001 Stephan Boettcher <stephan@nevis.columbia.edu>
|
; Copyright (c) 2001 Stephan Boettcher <stephan@nevis.columbia.edu>
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
; Copyright (c) 2001-2015 Stephen Williams (steve@icarus.com)
|
||||||
;
|
;
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
:ivl_version "0.10.0" "vec4-stack";
|
:ivl_version "10.0" "vec4-stack";
|
||||||
:vpi_module "system";
|
:vpi_module "system";
|
||||||
|
|
||||||
; This program is free software; you can redistribute it and/or modify
|
; This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
||||||
70
vvp/main.cc
70
vvp/main.cc
|
|
@ -141,46 +141,44 @@ void verify_version(char*ivl_ver, char*commit)
|
||||||
}
|
}
|
||||||
delete[] commit;
|
delete[] commit;
|
||||||
|
|
||||||
char*vvp_ver = strdup(VERSION);
|
int file_major, file_minor, file_minor2;
|
||||||
char *vp, *ip;
|
char file_extra[128];
|
||||||
|
|
||||||
/* Check the major/minor version. */
|
// Old style format: 0.<major>.<minor> <extra>
|
||||||
ip = strrchr(ivl_ver, '.');
|
// This also catches a potential new-new format that has
|
||||||
*ip = '\0';
|
// another sub-minor number.
|
||||||
vp = strrchr(vvp_ver, '.');
|
file_extra[0] = 0;
|
||||||
*vp = '\0';
|
int rc = sscanf(ivl_ver, "%d.%d.%d %128s", &file_major, &file_minor, &file_minor2, file_extra);
|
||||||
if (strcmp(ivl_ver, vvp_ver) != 0) {
|
|
||||||
vpi_mcd_printf(1, "Error: VVP input file version %s can not "
|
// If it wasn't the old style format, try the new format:
|
||||||
"be run with run time version %s!\n",
|
// <major>.<minor> <extra>
|
||||||
ivl_ver, vvp_ver);
|
if (rc == 2) {
|
||||||
|
file_extra[0] = 0;
|
||||||
|
rc = sscanf(ivl_ver, "%d.%d %128s", &file_major, &file_minor, file_extra);
|
||||||
|
file_minor2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If this was the old format, the file_major will be 0. In
|
||||||
|
// this case it is not really what we meant, so convert to the
|
||||||
|
// new format.
|
||||||
|
if (file_major == 0) {
|
||||||
|
file_major = file_minor;
|
||||||
|
file_minor = file_minor2;
|
||||||
|
file_minor2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (VERSION_MAJOR != file_major) {
|
||||||
|
vpi_mcd_printf(1, "Error: VVP input file %d.%d can not "
|
||||||
|
"be run with run time version %s\n",
|
||||||
|
file_major, file_minor, VERSION);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check that the sub-version is compatible. */
|
if (VERSION_MINOR < file_minor) {
|
||||||
ip += 1;
|
vpi_mcd_printf(1, "Warning: VVP input file sub version %d.%d"
|
||||||
vp += 1;
|
" is greater than the run time version %s.\n",
|
||||||
int ivl_sv, vvp_sv;
|
file_major, file_minor, VERSION);
|
||||||
if (strcmp(ip, "devel") == 0) {
|
|
||||||
ivl_sv = -1;
|
|
||||||
} else {
|
|
||||||
int res = sscanf(ip, "%d", &ivl_sv);
|
|
||||||
assert(res == 1);
|
|
||||||
}
|
}
|
||||||
if (strcmp(vp, "devel") == 0) {
|
|
||||||
vvp_sv = -1;
|
|
||||||
} else {
|
|
||||||
int res = sscanf(vp, "%d", &vvp_sv);
|
|
||||||
assert(res == 1);
|
|
||||||
}
|
|
||||||
if (ivl_sv > vvp_sv) {
|
|
||||||
if (verbose_flag) vpi_mcd_printf(1, " ... ");
|
|
||||||
vpi_mcd_printf(1, "Warning: VVP input file sub-version %s is "
|
|
||||||
"greater than the run time sub-version %s!\n",
|
|
||||||
ip, vp);
|
|
||||||
}
|
|
||||||
|
|
||||||
delete[] ivl_ver;
|
|
||||||
free(vvp_ver);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int vpip_delay_selection = _vpiDelaySelTypical;
|
int vpip_delay_selection = _vpiDelaySelTypical;
|
||||||
|
|
@ -376,7 +374,7 @@ int main(int argc, char*argv[])
|
||||||
if (version_flag) {
|
if (version_flag) {
|
||||||
fprintf(stderr, "Icarus Verilog runtime version " VERSION " ("
|
fprintf(stderr, "Icarus Verilog runtime version " VERSION " ("
|
||||||
VERSION_TAG ")\n\n");
|
VERSION_TAG ")\n\n");
|
||||||
fprintf(stderr, "Copyright 1998-2012 Stephen Williams\n\n");
|
fprintf(stderr, "Copyright 1998-2015 Stephen Williams\n\n");
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.TH vvp 1 "May 10th, 2015" "" "Version %M.%m.%n %E"
|
.TH vvp 1 "May 10th, 2015" "" "Version %M.%n %E"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
vvp - Icarus Verilog vvp runtime engine
|
vvp - Icarus Verilog vvp runtime engine
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue