blif target supports wide LPM_PART_VP devices.

This commit is contained in:
Stephen Williams 2013-08-31 16:43:37 -07:00
parent 15cda5fef2
commit 9b3987bf3c
2 changed files with 9 additions and 6 deletions

View File

@ -40,8 +40,7 @@ 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);
// Only handle bit selects.
assert(ned_out->get_width() == 1);
assert(ivl_lpm_width(net) == ned_out->get_width());
// Only handle constant part select base.
assert(ivl_lpm_data(net,1) == 0);
@ -52,10 +51,12 @@ int print_lpm_part_vp(FILE*fd, ivl_lpm_t net)
assert(bit_sel < ned_in->get_width());
fprintf(fd, ".names %s%s %s%s # %s:%u\n1 1\n",
ned_in->get_name(), ned_in->get_name_index(bit_sel),
ned_out->get_name(), ned_out->get_name_index(0),
ivl_lpm_file(net), ivl_lpm_lineno(net));
for (unsigned idx = 0 ; idx < ivl_lpm_width(net) ; idx += 1) {
fprintf(fd, ".names %s%s %s%s # %s:%u\n1 1\n",
ned_in->get_name(), ned_in->get_name_index(bit_sel+idx),
ned_out->get_name(), ned_out->get_name_index(idx),
ivl_lpm_file(net), ivl_lpm_lineno(net));
}
return rc;
}

View File

@ -133,6 +133,8 @@ const char* blif_nex_data_t::get_name_index(unsigned bit)
*/
size_t blif_nex_data_t::get_width(void)
{
if (name_==0) select_name_();
// Special case: If the nexus width is 1 bit, then there is no
// need for index_name maps, so the name_index_ will be empty.
if (name_index_.size()==0)