module i2c_line(
input wire drive_low,
output tri1 sda // tri1 = weak pull-up when undriven
);
// Open-drain behavior: either pull low or release (Z)
assign sda = drive_low ? 1'b0 : 1'bz;
endmodule
⚠️ Notice: tri1 is not supported by current version of synthesizer.