module mc10158_test;

/*  verilog test of primitive definition for MC10158 multiplexer  */  

	wire dout;
	reg select,d1,d2;
	parameter d = 20 ;     // waveform time step

/*  create instance of multiplexer  */
	mc10158 mux1(dout,select,d1,d2);

/*  describe external stimulus of inputs  */
	initial
		begin
			#d select=0; d1=0; d2=0;
			#d ;
			#d ;
			#d d1=1;
			#d d1=0;
			#d ;
			#d d2=1;
			#d d2=0;
			#d ;
			#d ;
			#d select=1;
			#d ;
			#d ;
			#d d1=1;
			#d d1=0;
			#d ;
			#d d2=1;
			#d d2=0;
			#d ;
			#d ;
			#d select=0;
			#d ;
			#d ;
			#d select=1;

			$stop;
			
		end

/*  monitor system  */
	initial
		$gr_waves("data1",d1,"data 2",d2,"selest",select,
				"data out",dout);

endmodule

	primitive mc10158(qx,select,dx0,dx1);

/*   ---  Primitive definition of 2-input non-inverting multiplexer  ---
	(ECL MC10158, p3-90)        */

	output qx;
	input select,dx0,dx1;

	table
//		select	dx0	dx1		qx
		0	?	0	:	0;	//   ? = 0,1,x
		0	?	1	:	1;
		1	0	?	:	0;
		1	1	?	:	1;
		x	0	0	:	0;
		x	1	1	:	1;
	endtable

	endprimitive
