ID:14816 Converted tri-state buffer "<name>" feeding internal logic into a wire
CAUSE: The specified tri-state buffer only feeds non-tri-state logic, but the chip does not support internal tri-state buffers. Therefore, the behavior of the non-tri-state nodes is undefined when it is driven by High Impedance (Z). As a result, the Quartus Prime software converts the tri-state buffer to a wire as a "don't care" minimization. Consider the following design:
module test1 (input oe1, data1, in, output out);
wire tribuf, tmp;
assign tribuf = oe1 ? data1 : 1'bz;
and(tmp, in, tribuf);
assign out = tmp;
endmodule
Here, the tri-state buffer tribuf
only drives a non-tri-state node (the AND
gate). As a result, the tri-state buffer will be converted to a wire.
Note that an inversion also counts as non-tri-state logic. So, the node tribuf
in the design test2
will also be converted to a wire.
module test2 (input oe1, data1, output out);
wire tribuf;
assign tribuf = oe1 ? data1 : 1'bz;
assign out = !tribuf;
endmodule
ACTION: Avoid this warning by replacing the tri-state node with non-tri-state logic.