|  | `timescale 1ps/1ps | 
|  | (* whitebox *) | 
|  | (* FASM_PARAMS="INV.ESEL=ESEL;INV.OSEL=OSEL;INV.FIXHOLD=FIXHOLD;INV.WPD=WPD;INV.DS=DS" *) | 
|  | module BIDIR_CELL( | 
|  | I_PAD_$inp, I_DAT, I_EN, | 
|  | O_PAD_$out, O_DAT, O_EN | 
|  | ); | 
|  | (* iopad_external_pin *) | 
|  | input  wire I_PAD_$inp; | 
|  | input  wire I_EN; | 
|  |  | 
|  | input  wire O_DAT; | 
|  | input  wire O_EN; | 
|  |  | 
|  | (* DELAY_CONST_I_PAD_$inp="{iopath_IP_IZ}" *) | 
|  | (* DELAY_CONST_I_EN="1e-10" *)  // No timing for IE/INEN -> IZ in LIB/SDF. | 
|  | output wire I_DAT; | 
|  |  | 
|  | (* DELAY_CONST_O_DAT="{iopath_OQI_IP}" *) | 
|  | (* DELAY_CONST_O_EN="{iopath_IE_IP}" *) | 
|  | (* iopad_external_pin *) | 
|  | output wire O_PAD_$out; | 
|  |  | 
|  | specify | 
|  | (O_DAT => O_PAD_$out) = (0,0); | 
|  | (O_EN => O_PAD_$out) = (0,0); | 
|  | (I_PAD_$inp => I_DAT) = (0,0); | 
|  | (I_EN => I_DAT) = (0,0); | 
|  | endspecify | 
|  |  | 
|  | // Parameters | 
|  | parameter [0:0] ESEL    = 0; | 
|  | parameter [0:0] OSEL    = 0; | 
|  | parameter [0:0] FIXHOLD = 0; | 
|  | parameter [0:0] WPD     = 0; | 
|  | parameter [0:0] DS      = 0; | 
|  |  | 
|  | // Behavioral model | 
|  | assign I_DAT = (I_EN == 1'b1) ? I_PAD_$inp : 1'b0; | 
|  | assign O_PAD_$out = (O_EN == 1'b1) ? O_DAT : 1'b0; | 
|  |  | 
|  | endmodule |