diff --git a/frontend/frontend_base.h b/frontend/frontend_base.h index cd26349f1b..6697765883 100644 --- a/frontend/frontend_base.h +++ b/frontend/frontend_base.h @@ -472,7 +472,10 @@ template struct GenericFrontend ci->ports[port_bit_ids].type = dir; // Resolve connectivity NetInfo *net; - if (impl.is_vector_bit_constant(bits, i)) { + if (impl.is_vector_bit_undef(bits, i)) { + // Don't connect it if it's an `x` + continue; + } else if (impl.is_vector_bit_constant(bits, i)) { // Create a constant driver if one is needed net = create_constant_net(m, inst_name.str(ctx) + "." + port_bit_name + "$const", impl.get_vector_bit_constval(bits, i)); diff --git a/frontend/json_frontend.cc b/frontend/json_frontend.cc index 6004ee17ce..3351c98ea4 100644 --- a/frontend/json_frontend.cc +++ b/frontend/json_frontend.cc @@ -161,6 +161,12 @@ struct JsonFrontendImpl int get_vector_length(BitVectorDataType &bits) const { return int(bits.size()); } + bool is_vector_bit_undef(BitVectorDataType &bits, int i) const + { + NPNR_ASSERT(i < int(bits.size())); + return bits[i] == "x"; + } + bool is_vector_bit_constant(BitVectorDataType &bits, int i) const { NPNR_ASSERT(i < int(bits.size()));