DLSFQB_LSSD2.v 1.73 KB
// VERSION:3.02 DATE:99/09/02 OPENCAD Verilog Library
`timescale 1ps / 1ps
`celldefine
`ifdef verifault
    `suppress_faults
    `enable_portfaults
`endif

module DLSFQB_LSSD2 ( QB, SETB, RESETB, GATE, D_IN, notifier_din, notifier_out );
output QB;
input  SETB,RESETB,GATE,D_IN,notifier_din, notifier_out;
reg _QB, pre_QB;

buf (QB,_QB);

always @ ( notifier_din or notifier_out ) begin
	_QB=1'bx;
	pre_QB=1'bx;
end

always @ ( SETB or RESETB or GATE or D_IN ) begin
	casez ( {SETB,RESETB,GATE,D_IN} )

		4'b00?? : _QB=1'bx;   // prohibition
		4'b0x?? : _QB=1'bx;   // prohibition
		4'bx0?? : _QB=1'bx;   // prohibition
		4'bxx?? : _QB=1'bx;   // prohibition
//
		4'b1110 : _QB=1;
		4'b1111 : _QB=0;
		4'b111x : _QB=1'bx;
		4'b110? : _QB=pre_QB;
//
		4'b0110 : _QB=1;
		4'b0111 : _QB=0;
		4'b011x : _QB=1'bx;
		4'b010? : _QB=0;
//
		4'b01x1 : _QB=0; 
		4'b01x0 : _QB=1'bx;
		4'b01xx : _QB=1'bx;
//
		4'b1011 : _QB=0;
		4'b1010 : _QB=1;
		4'b101x : _QB=1'bx;
		4'b100? : _QB=1;

		4'b10xx : _QB=1'bx;
		4'b10x1 : _QB=1'bx;
		4'b10x0 : _QB=1;
//
		4'b11x1 : begin
			if (pre_QB===0) _QB=0;
			else _QB=1'bx;
		end
		4'b11x0 : begin
			if (pre_QB===1) _QB=1;
			else _QB=1'bx;
		end
		4'bx111 : _QB=0;
		4'bx110 : _QB=1;
		4'bx11x : _QB=1'bx;
		4'bx10? : begin
			if (pre_QB===0) _QB=0;
			else _QB=1'bx;
		end
		4'bx1x1 : begin
			if (pre_QB===0) _QB=0;
			else _QB=1'bx;
		end
		4'bx1x0 : _QB=1'bx;
		4'bx1xx : _QB=1'bx;
//
		4'b1x10 : _QB=1;
		4'b1x11 : _QB=0;
//
		4'b1x0? : begin
			if (pre_QB==1) _QB=1;
			else _QB=1'bx;
		end
		4'b1xx0 : begin
			if (pre_QB===1) _QB=1;
			else _QB=1'bx;
		end
		4'b1xx1 : _QB=1'bx;
//

		default : _QB=1'bx;
    endcase
	pre_QB=_QB;
end
endmodule
`ifdef verifault
    `nosuppress_faults
    `disable_portfaults
`endif
`endcelldefine