Fix warning and little E full vector up/down selects

(cherry picked from commit 0c12344b27)
This commit is contained in:
Cary R 2021-01-30 00:34:10 -08:00 committed by Martin Whitaker
parent f64c831688
commit cccf36d76f
1 changed files with 4 additions and 3 deletions

View File

@ -5255,6 +5255,7 @@ NetExpr* PEIdent::elaborate_expr_net_idx_up_(Design*des, NetScope*scope,
}
long rel_base = net->sig()->sb_to_idx(prefix_indices, lsv);
rel_base += offset;
// If the part select covers exactly the entire
// vector, then do not bother with it. Return the
@ -5267,7 +5268,7 @@ NetExpr* PEIdent::elaborate_expr_net_idx_up_(Design*des, NetScope*scope,
// Otherwise, make a part select that covers the right
// range.
ex = new NetEConst(verinum(rel_base + offset));
ex = new NetEConst(verinum(rel_base));
if (warn_ob_select) {
if (rel_base < 0) {
cerr << get_fileline() << ": warning: "
@ -5358,11 +5359,12 @@ NetExpr* PEIdent::elaborate_expr_net_idx_do_(Design*des, NetScope*scope,
}
long rel_base = net->sig()->sb_to_idx(prefix_indices, lsv);
rel_base += offset;
// If the part select covers exactly the entire
// vector, then do not bother with it. Return the
// signal itself.
if (rel_base == (long) (wid-1) && wid == net->vector_width()) {
if (rel_base == (long)(wid-1) && wid == net->vector_width()) {
delete base;
net->cast_signed(false);
return net;
@ -5370,7 +5372,6 @@ NetExpr* PEIdent::elaborate_expr_net_idx_do_(Design*des, NetScope*scope,
// Otherwise, make a part select that covers the right
// range.
rel_base += offset;
ex = new NetEConst(verinum(rel_base));
if (warn_ob_select) {
if (rel_base < 0) {