*** IDIV ***

{{4{b_sgn}},b[63:0]}		@~>	cpa_a		b_a		
68'b0				~>	cpa_b		zero_b
cpa_s[67:0]			~>	lbus1		cpa_lbus1
lbus1[67:0]			~>	div		lbus1_div
{4'b0,a[63:0]}			~>	rem_s		inta_rems
a[63:0] / b[63:0] / ip[63:0]	~>	res		a_res/b_res/ip_res
(	div[67:0]		~>	dbus	)	div_dbus
(	68'b0			~>	rem_c	)	zero_remc
(	68'b0			~>	rem_low	)	zero_reml
(	64'b0			~>	lz_in	)	zero_lz
(	64'b0			~>	sh_in	)	zero_sh

div[67:0]	 		~>	dbus		div_dbus
dbus[63:0]			~>	lz_in		dbus_lz
dbus[63:0]			~>	sh_in		dbus_sh
{4'b0,sh_out[63:0]}		~>	lbus2		sh_lbus2,to_div
lbus2[67:0]			~>	div		lbus2_div
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	68'b0			~>	rem_c	)	zero_remc
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_low	)	zero_reml
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b

rem_s[63:0]			~>	sh_in		rems_sh
{2'b0,sh_out[63:0],2'b0}	~>	lbus2		sh_lbus2,to_reml
lbus2[67:0]			~>	rem_low		lbus2_reml
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	lz_in	)	zero_lz
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div

rem_s[63:0]			~>	sh_in		rems_sh
{{4{a_sgn}},sh_out[63:0]}	~>	lbus2		sh_lbus2,to_rems
lbus2[67:0]			~>	rem_s		lbus2_rems
68'b0				~>	rem_c		zero_remc
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	lz_in	)	zero_lz
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	res[67:0]		~>	res	)	hold_res
(	div[67:0]		~>	div	)	hold_div
(	{rem_low[65:0],2'b0}	~>	rem_low	)	shift_reml

****************************iter*******************************
{rem_low[65:0],2'b0}		~>	rem_low		shift_reml
div[67:0]			~>	dbus		div_dbus
rem_s,rem_c,dbus		~>	iter_stage	
iter_stage			~>	lbus1,lbus2	qp2/qp1/q0/qn1/qn2
{lbus1[65:0],rem_low[1:0]}	~>	rem_s		eval
{lbus2[65:0],2'b0}		~>	rem_c		lbus2_remc
(	res[67:0]		~>	res	)	hold_res
(	div[67:0]		~>	div	)	hold_div
(	64'b0			~>	lz_in	)	zero_lz
(	64'b0			~>	sh_in	)	zero_sh
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
***************************************************************

rem_s[67:0]			~>	cpa_a		rems_a
{rem_c[66:0],gnd!}		~>	cpa_b		remc_b
cpa_s[67:0]			~>	lbus1		cpa_lbus1
lbus1[67:0]			~>	rem_s		lbus1_rems
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	lz_in	)	zero_lz
(	64'b0			~>	sh_in	)	zero_sh
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml

rem_s[63:0]			~>	lz_in		rems_lz
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	sh_in	)	zero_sh
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml

qn / qp[67:0]			~>	dbus		qn_dbus/qp_dbus
dbus[67:0]			@~>	cpa_a		dbus_a
68'b0				~>	cpa_b		zero_b
cpa_s[67:0]			~>	lbus1		cpa_lbus1
lbus1[63:0] /			~>	res		final_res,int
/ {errtype[9:0],res[53:0]}	~>	res		errval_res
(	64'b0			~>	sh_in	)	zero_sh
(	64'b0			~>	lz_in	)	zero_lz
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml
	
res[63:0]			~>	wb		res_wb
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	sh_in	)	zero_sh
(	64'b0			~>	lz_in	)	zero_lz
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml




*** FDIV ***

{b_uflw_L,b[51:0],11'b0}	~>	lz_in		b_lz
{b_uflw_L,b[51:0],11'b0}	~>	sh_in		b_sh
{4'b0,sh_out[63:0]}		~>	lbus2		sh_lbuz2,to_div
lbus2[67:0]			~>	div		lbus2_div
{4'b0,a_uflw_L,a[51:0],11'b0}	~>	rem_s		flta_rems
68'b0				~>	rem_c		zero_remc
68'b0				~>	rem_low		zero_reml
a[63:0] / b[63:0] / ip[63:0]	~>	res		a_res/b_res/ip_res
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	div[67:0]		~>	dbus	)	div_dbus

****************************iter*******************************
{rem_low[65:0],2'b0}		~>	rem_low		shift_reml
div[67:0]			~>	dbus		div_dbus
rem_s,rem_c,dbus		~>	iter_stage	
iter_stage			~>	lbus1,lbus2	qp2/qp1/q0/qn1/qn2
{lbus1[65:0],rem_low[1:0]}	~>	rem_s		eval
{lbus2[65:0],2'b0}		~>	rem_c		lbus2_remc
(	res[67:0]		~>	res	)	hold_res
(	div[67:0]		~>	div	)	hold_div
(	64'b0			~>	lz_in	)	zero_lz
(	64'b0			~>	sh_in	)	zero_sh
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
***************************************************************

rem_s[67:0]			~>	cpa_a		rems_a
{rem_c[66:0],1'b0}		~>	cpa_b		remc_b
cpa_s[67:0]			~>	lbus1		cpa_lbus1
lbus1[67:0]			~>	rem_s		lbus1_rems
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	sh_in	)	zero_sh
(	64'b0			~>	lz_in	)	zero_lz
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml
	
qn/qp[67:0]			~>	dbus		qn_dbus/qp_dbus
dbus[63:0]			~>	lz_in		dbus_lz
dbus[63:0]			~>	sh_in		dbus_sh
{4'b0,sh_out[63:0]}		~>	lbus2		sh_lbus2,to_div
lbus2[67:0]			~>	div		lbus2_div
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	68'b0			~>	rem_c	)	zero_remc
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_low	)	zero_reml

div[67:0]			~>	dbus		div_dbus
dbus[67:0]			~>	cpa_a		dbus_a
{58'b0,1'b1,9'b0}		~>	cpa_b		stky_b
cpa_s[67:0]			~>	lbus1		cpa_lbus1
lbus1[67:0]			~>	rem_s		lbus1_rems
rem_s[63:0]			~>	lz_in		rems_lz
(	64'b0			~>	sh_in	)	zero_sh
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml

div[67:0]			~>	dbus		div_dbus
{r_sgn,r_exp[10:0],dbus[60:9]} /~>	res		final_res,flt_norm
{" "," ",rem_s[60:0]} /		~>	res		final_res,flt_plus1
{" "," ",rem_s[61:10]} /	~>	res		final_res,flt_ovr
/ {errtype[9:0],res[53:0]}	~>	res		errval_res
(	64'b0			~>	sh_in	)	zero_sh
(	64'b0			~>	lz_in	)	zero_lz
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml

res[63:0]			~> 	wb		res_wb
(	div[67:0]		~>	dbus	)	div_dbus
(	64'b0			~>	sh_in	)	zero_sh
(	64'b0			~>	lz_in	)	zero_lz
(	68'b0			~>	cpa_a	)	zero_a
(	68'b0			~>	cpa_b	)	zero_b
(	rem_s[67:0]		~>	rem_s	)	hold_rems
(	res[67:0]		~>	res	)	hold_res
(	68'b0			~>	rem_c	)	zero_remc
(	div[67:0]		~>	div	)	hold_div
(	68'b0			~>	rem_low	)	zero_reml
