I generally don't use inout or high impedance states in verilog for synthesis (under the assumption that the internal logic ultimately has to implement it as standard CMOS 2 state logic anyways).
However, I'm finding a lot of verilog that is destined for synthesis that looks like the following:
module top(
inout signal1,
inout signal2
);
submodule sub1 (
//outputs from sub1
signal1,
signal2
);
submodule sub2 (
//outputs from sub2
signal1,
signal2
);
endmodule
Where signal1 and signal2 are only driven to either 1'b0 or 1'bz and they are declare as open-drain ports in the contraints file.
Do most synthesis tools support synthesizing this? I'm targeting a lattice CPLD and it seems to work fine, but I'm curious if other tools synthesize things like this ok?
Do you typically have to explicitly tell the tools to pull-up the signal? or is this generally not necessary ( I cannot find any mention of pull-ups in the code I'm looking at)