Why is this an issue?

The use of x'd? notation for do-not-care values is not recommended since it has been observed to produce unexpected results for Xilinx synthesis engines. In particular for Xilinx synthesis tools, 4'd? is not interpreted as 4'd???? or 4'b?.

How to fix it

Code examples

Noncompliant code example

module fly;
  logic [3:0] a = 4'd?;
endmodule

Compliant solution

module fly;
  logic [3:0] a = 4'b?;
endmodule