blob: b0b7421c33bacca46f7ec3d07832d4a4d4b81428 [file] [log] [blame] [edit]
`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