Make blif cppcheck clean
This commit is contained in:
parent
67e48188a9
commit
7916ae3c49
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -42,7 +42,8 @@ static int do_print_logic_gate(FILE*fd, ivl_net_logic_t net, unsigned bit)
|
|||
ivl_nexus_t nex_out = ivl_logic_pin(net,0);
|
||||
blif_nex_data_t*ned_out = blif_nex_data_t::get_nex_data(nex_out);
|
||||
|
||||
assert(ned_out->get_width() > bit);
|
||||
size_t o_wid = ned_out->get_width();
|
||||
assert(o_wid > bit);
|
||||
|
||||
fprintf(fd, ".names");
|
||||
for (unsigned idx = 1 ; idx < ivl_logic_pins(net) ; idx += 1) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -38,9 +38,12 @@ int print_lpm_add(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*a_ned = blif_nex_data_t::get_nex_data(a_nex);
|
||||
blif_nex_data_t*b_ned = blif_nex_data_t::get_nex_data(b_nex);
|
||||
|
||||
assert(ivl_lpm_width(net) == q_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == a_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == b_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t a_wid = a_ned->get_width();
|
||||
size_t b_wid = b_ned->get_width();
|
||||
assert(ivl_lpm_width(net) == q_wid);
|
||||
assert(ivl_lpm_width(net) == a_wid);
|
||||
assert(ivl_lpm_width(net) == b_wid);
|
||||
|
||||
// Q[0] = A[0] ^ B[0]
|
||||
fprintf(fd, ".names %s%s %s%s %s%s\n"
|
||||
|
|
@ -114,9 +117,12 @@ int print_lpm_sub(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*a_ned = blif_nex_data_t::get_nex_data(a_nex);
|
||||
blif_nex_data_t*b_ned = blif_nex_data_t::get_nex_data(b_nex);
|
||||
|
||||
assert(ivl_lpm_width(net) == q_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == a_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == b_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t a_wid = a_ned->get_width();
|
||||
size_t b_wid = b_ned->get_width();
|
||||
assert(ivl_lpm_width(net) == q_wid);
|
||||
assert(ivl_lpm_width(net) == a_wid);
|
||||
assert(ivl_lpm_width(net) == b_wid);
|
||||
|
||||
// Q[0] = A[0] ^ ~B[0] ^ 1
|
||||
fprintf(fd, ".names %s%s %s%s %s%s\n"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -38,9 +38,12 @@ int print_lpm_cmp_eq(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*a_ned = blif_nex_data_t::get_nex_data(a_nex);
|
||||
blif_nex_data_t*b_ned = blif_nex_data_t::get_nex_data(b_nex);
|
||||
|
||||
assert(1 == q_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == a_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == b_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t a_wid = a_ned->get_width();
|
||||
size_t b_wid = b_ned->get_width();
|
||||
assert(1 == q_wid);
|
||||
assert(ivl_lpm_width(net) == a_wid);
|
||||
assert(ivl_lpm_width(net) == b_wid);
|
||||
|
||||
if (ivl_lpm_width(net) == 1) {
|
||||
fprintf(fd, ".names %s%s %s%s %s%s\n"
|
||||
|
|
@ -89,9 +92,12 @@ int print_lpm_cmp_ne(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*a_ned = blif_nex_data_t::get_nex_data(a_nex);
|
||||
blif_nex_data_t*b_ned = blif_nex_data_t::get_nex_data(b_nex);
|
||||
|
||||
assert(1 == q_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == a_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == b_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t a_wid = a_ned->get_width();
|
||||
size_t b_wid = b_ned->get_width();
|
||||
assert(1 == q_wid);
|
||||
assert(ivl_lpm_width(net) == a_wid);
|
||||
assert(ivl_lpm_width(net) == b_wid);
|
||||
|
||||
if (ivl_lpm_width(net) == 1) {
|
||||
fprintf(fd, ".names %s%s %s%s %s%s\n"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -31,9 +31,12 @@ static int print_lpm_cmp_gt_s(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*a_ned = blif_nex_data_t::get_nex_data(a_nex);
|
||||
blif_nex_data_t*b_ned = blif_nex_data_t::get_nex_data(b_nex);
|
||||
|
||||
assert(1 == q_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == a_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == b_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t a_wid = a_ned->get_width();
|
||||
size_t b_wid = b_ned->get_width();
|
||||
assert(1 == q_wid);
|
||||
assert(ivl_lpm_width(net) == a_wid);
|
||||
assert(ivl_lpm_width(net) == b_wid);
|
||||
|
||||
// This is true if the operator is GE instead of just GT.
|
||||
bool ge_flag = ivl_lpm_type(net)==IVL_LPM_CMP_GE;
|
||||
|
|
@ -67,9 +70,12 @@ static int print_lpm_cmp_gt_u(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*a_ned = blif_nex_data_t::get_nex_data(a_nex);
|
||||
blif_nex_data_t*b_ned = blif_nex_data_t::get_nex_data(b_nex);
|
||||
|
||||
assert(1 == q_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == a_ned->get_width());
|
||||
assert(ivl_lpm_width(net) == b_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t a_wid = a_ned->get_width();
|
||||
size_t b_wid = b_ned->get_width();
|
||||
assert(1 == q_wid);
|
||||
assert(ivl_lpm_width(net) == a_wid);
|
||||
assert(ivl_lpm_width(net) == b_wid);
|
||||
|
||||
// This is true if the operator is GE instead of just GT.
|
||||
bool ge_flag = ivl_lpm_type(net)==IVL_LPM_CMP_GE;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -46,12 +46,16 @@ static int print_lpm_mux_s1(FILE*fd, ivl_lpm_t net)
|
|||
|
||||
fprintf(fd, "# IVL_LPM_MUX ivl_lpm_width(net)=%u, Q=%s, D0=%s, D1=%s\n",
|
||||
ivl_lpm_width(net), ned_out->get_name(), ned_d0->get_name(), ned_d1->get_name());
|
||||
assert(ivl_lpm_width(net) == ned_out->get_width());
|
||||
assert(ivl_lpm_width(net) == ned_d0->get_width());
|
||||
assert(ivl_lpm_width(net) == ned_d1->get_width());
|
||||
size_t o_wid = ned_out->get_width();
|
||||
size_t d0_wid = ned_d0->get_width();
|
||||
size_t d1_wid = ned_d1->get_width();
|
||||
assert(ivl_lpm_width(net) == o_wid);
|
||||
assert(ivl_lpm_width(net) == d0_wid);
|
||||
assert(ivl_lpm_width(net) == d1_wid);
|
||||
|
||||
// Only support single-bit select
|
||||
assert(ned_sel->get_width() == 1);
|
||||
size_t s_wid = ned_sel->get_width();
|
||||
assert(1 == s_wid);
|
||||
|
||||
for (unsigned idx = 0 ; idx < ivl_lpm_width(net) ; idx += 1) {
|
||||
fprintf(fd, ".names %s%s %s%s %s%s %s%s\n"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -40,7 +40,8 @@ int print_lpm_part_vp(FILE*fd, ivl_lpm_t net)
|
|||
ivl_nexus_t nex_out = ivl_lpm_q(net);
|
||||
blif_nex_data_t*ned_out = blif_nex_data_t::get_nex_data(nex_out);
|
||||
|
||||
assert(ivl_lpm_width(net) == ned_out->get_width());
|
||||
size_t o_wid = ned_out->get_width();
|
||||
assert(ivl_lpm_width(net) == o_wid);
|
||||
// Only handle constant part select base.
|
||||
assert(ivl_lpm_data(net,1) == 0);
|
||||
|
||||
|
|
@ -49,7 +50,8 @@ int print_lpm_part_vp(FILE*fd, ivl_lpm_t net)
|
|||
ivl_nexus_t nex_in = ivl_lpm_data(net,0);
|
||||
blif_nex_data_t*ned_in = blif_nex_data_t::get_nex_data(nex_in);
|
||||
|
||||
assert(bit_sel < ned_in->get_width());
|
||||
size_t i_wid = ned_in->get_width();
|
||||
assert(bit_sel < i_wid);
|
||||
|
||||
for (unsigned idx = 0 ; idx < ivl_lpm_width(net) ; idx += 1) {
|
||||
fprintf(fd, ".names %s%s %s%s # %s:%u\n1 1\n",
|
||||
|
|
@ -70,7 +72,8 @@ static int print_part_vp_mux(FILE*fd, ivl_lpm_t net)
|
|||
blif_nex_data_t*ned_out = blif_nex_data_t::get_nex_data(nex_out);
|
||||
|
||||
// Only handle bit selects.
|
||||
assert(ned_out->get_width() == 1);
|
||||
size_t o_wid = ned_out->get_width();
|
||||
assert(1 == o_wid);
|
||||
|
||||
ivl_nexus_t nex_in = ivl_lpm_data(net,0);
|
||||
blif_nex_data_t*ned_in = blif_nex_data_t::get_nex_data(nex_in);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2013-2026 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
|
||||
|
|
@ -40,24 +40,26 @@ int print_lpm_re_logic(FILE*fd, ivl_lpm_t net)
|
|||
ivl_nexus_t nex_d = ivl_lpm_data(net,0);
|
||||
blif_nex_data_t*ned_d = blif_nex_data_t::get_nex_data(nex_d);
|
||||
|
||||
assert(ned_q->get_width() == 1);
|
||||
size_t q_wid = ned_q->get_width();
|
||||
assert(1 == q_wid);
|
||||
|
||||
size_t d_wid = ned_d->get_width();
|
||||
fprintf(fd, ".names");
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1) {
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1) {
|
||||
fprintf(fd, " %s%s", ned_d->get_name(), ned_d->get_name_index(idx));
|
||||
}
|
||||
fprintf(fd, " %s%s\n", ned_q->get_name(), ned_q->get_name_index(0));
|
||||
|
||||
switch (ivl_lpm_type(net)) {
|
||||
case IVL_LPM_RE_AND:
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1)
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1)
|
||||
fputc('1', fd);
|
||||
fprintf(fd, " 1\n");
|
||||
break;
|
||||
|
||||
case IVL_LPM_RE_OR:
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1) {
|
||||
for (size_t wid = 0 ; wid < ned_d->get_width() ; wid += 1) {
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1) {
|
||||
for (size_t wid = 0 ; wid < d_wid ; wid += 1) {
|
||||
if (wid==idx)
|
||||
fputc('1', fd);
|
||||
else
|
||||
|
|
@ -68,12 +70,12 @@ int print_lpm_re_logic(FILE*fd, ivl_lpm_t net)
|
|||
break;
|
||||
|
||||
case IVL_LPM_RE_XOR:
|
||||
assert(ned_d->get_width() < 8*sizeof(unsigned));
|
||||
for (unsigned val = 0; val < (1U<<ned_d->get_width()); val += 1) {
|
||||
assert(d_wid < 8*sizeof(unsigned));
|
||||
for (unsigned val = 0; val < (1U << d_wid) ; val += 1) {
|
||||
if (! re_xor(val))
|
||||
continue;
|
||||
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1) {
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1) {
|
||||
if (val & (1<<idx))
|
||||
fputc('1', fd);
|
||||
else
|
||||
|
|
@ -84,8 +86,8 @@ int print_lpm_re_logic(FILE*fd, ivl_lpm_t net)
|
|||
break;
|
||||
|
||||
case IVL_LPM_RE_NAND:
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1) {
|
||||
for (size_t wid = 0 ; wid < ned_d->get_width() ; wid += 1) {
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1) {
|
||||
for (size_t wid = 0 ; wid < d_wid ; wid += 1) {
|
||||
if (wid==idx)
|
||||
fputc('0', fd);
|
||||
else
|
||||
|
|
@ -96,18 +98,18 @@ int print_lpm_re_logic(FILE*fd, ivl_lpm_t net)
|
|||
break;
|
||||
|
||||
case IVL_LPM_RE_NOR:
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1)
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1)
|
||||
fputc('0', fd);
|
||||
fprintf(fd, " 1\n");
|
||||
break;
|
||||
|
||||
case IVL_LPM_RE_XNOR:
|
||||
assert(ned_d->get_width() < 8*sizeof(unsigned));
|
||||
for (unsigned val = 0; val < (1U<<ned_d->get_width()); val += 1) {
|
||||
assert(d_wid < 8*sizeof(unsigned));
|
||||
for (unsigned val = 0; val < (1U << d_wid) ; val += 1) {
|
||||
if (re_xor(val))
|
||||
continue;
|
||||
|
||||
for (size_t idx = 0 ; idx < ned_d->get_width() ; idx += 1) {
|
||||
for (size_t idx = 0 ; idx < d_wid ; idx += 1) {
|
||||
if (val & (1<<idx))
|
||||
fputc('1', fd);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016 Yury Gribov (tetra2005@gmail.com)
|
||||
* Copyright (c) 2016-2026 Yury Gribov (tetra2005@gmail.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
|
||||
|
|
@ -43,8 +43,10 @@ int print_lpm_shift(FILE*fd, ivl_lpm_t net, bool left)
|
|||
size_t shiftw = s_ned->get_width();
|
||||
bool signed_ = ivl_lpm_signed(net);
|
||||
|
||||
assert(dataw == q_ned->get_width());
|
||||
assert(dataw == d_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
size_t d_wid = d_ned->get_width();
|
||||
assert(dataw == q_wid);
|
||||
assert(dataw == d_wid);
|
||||
|
||||
// TODO: output width can be larger than data
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016 Yury Gribov (tetra2005@gmail.com)
|
||||
* Copyright (c) 2016-2026 Yury Gribov (tetra2005@gmail.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
|
||||
|
|
@ -41,7 +41,8 @@ int print_lpm_sign_ext(FILE*fd, ivl_lpm_t net)
|
|||
|
||||
//printf("Shift: LPM width = %u, output width = %zd, input width = %u\n", outw, q_ned->get_width(), inw);
|
||||
|
||||
assert(outw == q_ned->get_width());
|
||||
size_t q_wid = q_ned->get_width();
|
||||
assert(outw == q_wid);
|
||||
assert(inw < outw);
|
||||
|
||||
for (unsigned idx = 0 ; idx < outw ; idx += 1) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue