module DW_rash_func( func_A, func_DATA_TC, func_SH, func_SH_TC, B_func );

parameter func_A_width = 8;
parameter func_SH_width = 3;

// secondary parameters used to pass parameters to function
// when parameter names differ

parameter A_width = func_A_width;
parameter SH_width = func_SH_width;

// Please add search_path = search_path + {synopsys_root + "/dw/sim_ver"}
// to your .synopsys_dc.setup file (for synthesis) and add
// +incdir+$SYNOPSYS/dw/sim_ver+ to your verilog simulator command line
// (for simulation).
`include "DW_rash_function.inc"


input [func_A_width-1 : 0] func_A;
input func_DATA_TC;
input [func_SH_width-1 : 0] func_SH;
input func_SH_TC;
output [func_A_width-1 : 0] B_func;
reg    [func_A_width-1 : 0] B_func_i;

    // Infer DW_rash

   always @ (func_A or func_DATA_TC or func_SH or func_SH_TC)
     begin
     casex({func_DATA_TC,func_SH_TC}) // synopsys full_case
     2'b00: B_func_i = DWF_rash_uns_uns(func_A,func_SH);
     2'b10: B_func_i = DWF_rash_tc_uns(func_A,func_SH);
     2'b01: B_func_i = DWF_rash_uns_tc(func_A,func_SH);
     2'b11: B_func_i = DWF_rash_tc_tc(func_A,func_SH);
     endcase
     end 

assign B_func = B_func_i;

endmodule