mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #820 from YosysHQ/clifford/fix810
Fix #810 and fix #814
This commit is contained in:
commit
25a3a96107
|
@ -36,6 +36,8 @@ echo
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
./yosys tests/simple/fiedler-cooley.v
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo 'Testing...' && echo -en 'travis_fold:start:script.test\\r'
|
echo 'Testing...' && echo -en 'travis_fold:start:script.test\\r'
|
||||||
echo
|
echo
|
||||||
|
|
|
@ -6,48 +6,15 @@ source .travis/common.sh
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
# Fixing Travis's git clone
|
|
||||||
echo
|
|
||||||
echo 'Fixing git setup...' && echo -en 'travis_fold:start:before_install.git\\r'
|
|
||||||
echo
|
|
||||||
git fetch --unshallow && git fetch --tags
|
|
||||||
|
|
||||||
# For pull requests, we get more info about the git source.
|
|
||||||
if [ z"$TRAVIS_PULL_REQUEST_SLUG" != z ]; then
|
|
||||||
echo "- Fetching from pull request source"
|
|
||||||
git remote add source https://github.com/$TRAVIS_PULL_REQUEST_SLUG.git
|
|
||||||
git fetch source && git fetch --tags
|
|
||||||
|
|
||||||
echo "- Fetching the actual pull request"
|
|
||||||
git fetch origin pull/$TRAVIS_PULL_REQUEST/head:pull-$TRAVIS_PULL_REQUEST-head
|
|
||||||
git fetch origin pull/$TRAVIS_PULL_REQUEST/merge:pull-$TRAVIS_PULL_REQUEST-merge
|
|
||||||
|
|
||||||
git log -n 5 --graph pull-$TRAVIS_PULL_REQUEST-merge
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For building branches we need to fix the "detached head" state.
|
|
||||||
if [ z"$TRAVIS_BRANCH" != z ]; then
|
|
||||||
TRAVIS_COMMIT_ACTUAL=$(git log --pretty=format:'%H' -n 1)
|
|
||||||
echo "- Fixing detached head (current $TRAVIS_COMMIT_ACTUAL -> $TRAVIS_COMMIT)"
|
|
||||||
git remote -v
|
|
||||||
git branch -v
|
|
||||||
if [ x"$(git show-ref -s HEAD)" = x"$TRAVIS_COMMIT" ]; then
|
|
||||||
echo "Checked out at $TRAVIS_COMMIT"
|
|
||||||
else
|
|
||||||
if [ z"$TRAVIS_PULL_REQUEST_SLUG" != z ]; then
|
|
||||||
git fetch source $TRAVIS_COMMIT || echo "Unable to fetch $TRAVIS_COMMIT from source"
|
|
||||||
fi
|
|
||||||
git fetch origin $TRAVIS_COMMIT || echo "Unable to fetch $TRAVIS_COMMIT from origin"
|
|
||||||
fi
|
|
||||||
git branch -D $TRAVIS_BRANCH || true
|
|
||||||
git checkout $TRAVIS_COMMIT -b $TRAVIS_BRANCH
|
|
||||||
git branch -v
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output status information.
|
# Output status information.
|
||||||
git status
|
(
|
||||||
git describe --tags
|
set +e
|
||||||
git log -n 5 --graph
|
set -x
|
||||||
|
git status
|
||||||
|
git branch -v
|
||||||
|
git log -n 5 --graph
|
||||||
|
git log --format=oneline -n 20 --graph
|
||||||
|
)
|
||||||
echo
|
echo
|
||||||
echo -en 'travis_fold:end:before_install.git\\r'
|
echo -en 'travis_fold:end:before_install.git\\r'
|
||||||
echo
|
echo
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -100,7 +100,7 @@ LDFLAGS += -rdynamic
|
||||||
LDLIBS += -lrt
|
LDLIBS += -lrt
|
||||||
endif
|
endif
|
||||||
|
|
||||||
YOSYS_VER := 0.8+$(shell cd $(YOSYS_SRC) && test -e .git && { git log --author=clifford@clifford.at --oneline 4d4665b.. | wc -l; })
|
YOSYS_VER := 0.8+$(shell cd $(YOSYS_SRC) && test -e .git && { git log --author=clifford@clifford.at --oneline 4d4665b.. 2> /dev/null | wc -l; })
|
||||||
GIT_REV := $(shell cd $(YOSYS_SRC) && git rev-parse --short HEAD 2> /dev/null || echo UNKNOWN)
|
GIT_REV := $(shell cd $(YOSYS_SRC) && git rev-parse --short HEAD 2> /dev/null || echo UNKNOWN)
|
||||||
OBJS = kernel/version_$(GIT_REV).o
|
OBJS = kernel/version_$(GIT_REV).o
|
||||||
|
|
||||||
|
|
|
@ -644,7 +644,7 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
|
||||||
while (right_at_zero_ast->simplify(true, true, false, 1, -1, false, false)) { }
|
while (right_at_zero_ast->simplify(true, true, false, 1, -1, false, false)) { }
|
||||||
if (left_at_zero_ast->type != AST_CONSTANT || right_at_zero_ast->type != AST_CONSTANT)
|
if (left_at_zero_ast->type != AST_CONSTANT || right_at_zero_ast->type != AST_CONSTANT)
|
||||||
log_file_error(filename, linenum, "Unsupported expression on dynamic range select on signal `%s'!\n", str.c_str());
|
log_file_error(filename, linenum, "Unsupported expression on dynamic range select on signal `%s'!\n", str.c_str());
|
||||||
this_width = left_at_zero_ast->integer - right_at_zero_ast->integer + 1;
|
this_width = abs(int(left_at_zero_ast->integer - right_at_zero_ast->integer)) + 1;
|
||||||
delete left_at_zero_ast;
|
delete left_at_zero_ast;
|
||||||
delete right_at_zero_ast;
|
delete right_at_zero_ast;
|
||||||
} else
|
} else
|
||||||
|
@ -792,7 +792,7 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
|
||||||
// everything should have been handled above -> print error if not.
|
// everything should have been handled above -> print error if not.
|
||||||
default:
|
default:
|
||||||
for (auto f : log_files)
|
for (auto f : log_files)
|
||||||
current_ast->dumpAst(f, "verilog-ast> ");
|
current_ast_mod->dumpAst(f, "verilog-ast> ");
|
||||||
log_file_error(filename, linenum, "Don't know how to detect sign and width for %s node!\n", type2str(type).c_str());
|
log_file_error(filename, linenum, "Don't know how to detect sign and width for %s node!\n", type2str(type).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1034,7 +1034,7 @@ RTLIL::SigSpec AstNode::genRTLIL(int width_hint, bool sign_hint)
|
||||||
while (right_at_zero_ast->simplify(true, true, false, 1, -1, false, false)) { }
|
while (right_at_zero_ast->simplify(true, true, false, 1, -1, false, false)) { }
|
||||||
if (left_at_zero_ast->type != AST_CONSTANT || right_at_zero_ast->type != AST_CONSTANT)
|
if (left_at_zero_ast->type != AST_CONSTANT || right_at_zero_ast->type != AST_CONSTANT)
|
||||||
log_file_error(filename, linenum, "Unsupported expression on dynamic range select on signal `%s'!\n", str.c_str());
|
log_file_error(filename, linenum, "Unsupported expression on dynamic range select on signal `%s'!\n", str.c_str());
|
||||||
int width = left_at_zero_ast->integer - right_at_zero_ast->integer + 1;
|
int width = abs(int(left_at_zero_ast->integer - right_at_zero_ast->integer)) + 1;
|
||||||
AstNode *fake_ast = new AstNode(AST_NONE, clone(), children[0]->children.size() >= 2 ?
|
AstNode *fake_ast = new AstNode(AST_NONE, clone(), children[0]->children.size() >= 2 ?
|
||||||
children[0]->children[1]->clone() : children[0]->children[0]->clone());
|
children[0]->children[1]->clone() : children[0]->children[0]->clone());
|
||||||
fake_ast->children[0]->delete_children();
|
fake_ast->children[0]->delete_children();
|
||||||
|
@ -1565,7 +1565,7 @@ RTLIL::SigSpec AstNode::genRTLIL(int width_hint, bool sign_hint)
|
||||||
// everything should have been handled above -> print error if not.
|
// everything should have been handled above -> print error if not.
|
||||||
default:
|
default:
|
||||||
for (auto f : log_files)
|
for (auto f : log_files)
|
||||||
current_ast->dumpAst(f, "verilog-ast> ");
|
current_ast_mod->dumpAst(f, "verilog-ast> ");
|
||||||
type_name = type2str(type);
|
type_name = type2str(type);
|
||||||
log_file_error(filename, linenum, "Don't know how to generate RTLIL code for %s node!\n", type_name.c_str());
|
log_file_error(filename, linenum, "Don't know how to generate RTLIL code for %s node!\n", type_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
|
@ -934,12 +934,15 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (current_scope.count(str) == 0) {
|
if (current_scope.count(str) == 0) {
|
||||||
// log_warning("Creating auto-wire `%s' in module `%s'.\n", str.c_str(), current_ast_mod->str.c_str());
|
if (flag_autowire) {
|
||||||
AstNode *auto_wire = new AstNode(AST_AUTOWIRE);
|
AstNode *auto_wire = new AstNode(AST_AUTOWIRE);
|
||||||
auto_wire->str = str;
|
auto_wire->str = str;
|
||||||
current_ast_mod->children.push_back(auto_wire);
|
current_ast_mod->children.push_back(auto_wire);
|
||||||
current_scope[str] = auto_wire;
|
current_scope[str] = auto_wire;
|
||||||
did_something = true;
|
did_something = true;
|
||||||
|
} else {
|
||||||
|
log_file_error(filename, linenum, "Identifier `%s' is implicitly declared and `default_nettype is set to none.\n", str.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (id2ast != current_scope[str]) {
|
if (id2ast != current_scope[str]) {
|
||||||
id2ast = current_scope[str];
|
id2ast = current_scope[str];
|
||||||
|
@ -1689,7 +1692,7 @@ skip_dynamic_range_lvalue_expansion:;
|
||||||
while (right_at_zero_ast->simplify(true, true, false, 1, -1, false, false)) { }
|
while (right_at_zero_ast->simplify(true, true, false, 1, -1, false, false)) { }
|
||||||
if (left_at_zero_ast->type != AST_CONSTANT || right_at_zero_ast->type != AST_CONSTANT)
|
if (left_at_zero_ast->type != AST_CONSTANT || right_at_zero_ast->type != AST_CONSTANT)
|
||||||
log_file_error(filename, linenum, "Unsupported expression on dynamic range select on signal `%s'!\n", str.c_str());
|
log_file_error(filename, linenum, "Unsupported expression on dynamic range select on signal `%s'!\n", str.c_str());
|
||||||
int width = left_at_zero_ast->integer - right_at_zero_ast->integer + 1;
|
int width = abs(int(left_at_zero_ast->integer - right_at_zero_ast->integer)) + 1;
|
||||||
|
|
||||||
assign_data = new AstNode(AST_ASSIGN_LE, new AstNode(AST_IDENTIFIER),
|
assign_data = new AstNode(AST_ASSIGN_LE, new AstNode(AST_IDENTIFIER),
|
||||||
new AstNode(AST_SHIFT_LEFT, children[1]->clone(), offset_ast->clone()));
|
new AstNode(AST_SHIFT_LEFT, children[1]->clone(), offset_ast->clone()));
|
||||||
|
@ -1778,7 +1781,7 @@ skip_dynamic_range_lvalue_expansion:;
|
||||||
|
|
||||||
if (str == "\\$past")
|
if (str == "\\$past")
|
||||||
{
|
{
|
||||||
if (width_hint <= 0)
|
if (width_hint < 0)
|
||||||
goto replace_fcall_later;
|
goto replace_fcall_later;
|
||||||
|
|
||||||
int num_steps = 1;
|
int num_steps = 1;
|
||||||
|
|
Loading…
Reference in New Issue