sudp_rf.v 7.94 KB
// Module instances modified by /home/rws/workarea/rf/sw/bbplayer/tools/necprimfix 
//
//    10 instances of de24d2 changed to j_de24.
//    1 instance of fn01d2 changed to j_fn01.
//    1 instance of nd02d2 changed to j_nd02.
//    12 instances of ni01d5 changed to j_ni01.
//

/**************************************************************************
 *                                                                        *
 *               Copyright (C) 1994, Silicon Graphics, Inc.               *
 *                                                                        *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright  law.  They  may not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *                                                                        *
 *************************************************************************/

// $Id: sudp_rf.v,v 1.3 2002/11/13 02:11:41 rws Exp $

////////////////////////////////////////////////////////////////////////
//
// Project Reality
//
// module:      sudp_rf
// description: Register file for scalar unit, std cell version.
//
// designer:    Phil Gossett
// date:        4/9/95
//
////////////////////////////////////////////////////////////////////////

module sudp_rf (clk, d, a, b, wen, w, ra, rb);

input clk;
input [31:0] d;
output [31:0] a;
output [31:0] b;
input wen;
input [4:0] w;
input [4:0] ra;
input [4:0] rb;

wire [31:0] bufb = d;

wire [1:0] ppgn;
wire [7:0] pgn;
wire [31:0] gn;
wire [1:0] wb;

j_ni01 nigb0  (.i(w[0]),  .z(wb[0]));
j_ni01 nigb1  (.i(w[1]),  .z(wb[1]));
j_fn01 deppgn0 (.a1(w[4]), .b1(wen), .zn(ppgn[0]));
j_nd02 deppgn1 (.a1(w[4]), .a2(wen), .zn(ppgn[1]));
j_de24 depgn0 (.en(ppgn[0]), .a1(w[3]), .a0(w[2]),
		.z0n(pgn[0]), .z1n(pgn[1]), .z2n(pgn[2]), .z3n(pgn[3]));
j_de24 depgn1 (.en(ppgn[1]), .a1(w[3]), .a0(w[2]),
		.z0n(pgn[4]), .z1n(pgn[5]), .z2n(pgn[6]), .z3n(pgn[7]));
j_de24 degn0 (.en(pgn[0]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[0]),  .z1n(gn[1]),  .z2n(gn[2]),  .z3n(gn[3]));
j_de24 degn1 (.en(pgn[1]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[4]),  .z1n(gn[5]),  .z2n(gn[6]),  .z3n(gn[7]));
j_de24 degn2 (.en(pgn[2]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[8]),  .z1n(gn[9]),  .z2n(gn[10]), .z3n(gn[11]));
j_de24 degn3 (.en(pgn[3]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[12]), .z1n(gn[13]), .z2n(gn[14]), .z3n(gn[15]));
j_de24 degn4 (.en(pgn[4]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[16]), .z1n(gn[17]), .z2n(gn[18]), .z3n(gn[19]));
j_de24 degn5 (.en(pgn[5]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[20]), .z1n(gn[21]), .z2n(gn[22]), .z3n(gn[23]));
j_de24 degn6 (.en(pgn[6]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[24]), .z1n(gn[25]), .z2n(gn[26]), .z3n(gn[27]));
j_de24 degn7 (.en(pgn[7]), .a1(wb[1]), .a0(wb[0]),
		.z0n(gn[28]), .z1n(gn[29]), .z2n(gn[30]), .z3n(gn[31]));

wire [31:0] m0b;
wire [31:0] m1b;
wire [31:0] m2b;
wire [31:0] m3b;
wire [31:0] m4b;
wire [31:0] m5b;
wire [31:0] m6b;
wire [31:0] m7b;
wire [31:0] m8b;
wire [31:0] m9b;
wire [31:0] m10b;
wire [31:0] m11b;
wire [31:0] m12b;
wire [31:0] m13b;
wire [31:0] m14b;
wire [31:0] m15b;
wire [31:0] m16b;
wire [31:0] m17b;
wire [31:0] m18b;
wire [31:0] m19b;
wire [31:0] m20b;
wire [31:0] m21b;
wire [31:0] m22b;
wire [31:0] m23b;
wire [31:0] m24b;
wire [31:0] m25b;
wire [31:0] m26b;
wire [31:0] m27b;
wire [31:0] m28b;
wire [31:0] m29b;
wire [31:0] m30b;
wire [31:0] m31b;

//sudp_latg mem0  (.clk(clk), .gn(gn[0]),  .i(bufb[31:0]), .z(m0b[31:0]));
assign m0b[31:0] = 32'h0; 
sudp_latg mem1  (.clk(clk), .gn(gn[1]),  .i(bufb[31:0]), .z(m1b[31:0]));
sudp_latg mem2  (.clk(clk), .gn(gn[2]),  .i(bufb[31:0]), .z(m2b[31:0]));
sudp_latg mem3  (.clk(clk), .gn(gn[3]),  .i(bufb[31:0]), .z(m3b[31:0]));
sudp_latg mem4  (.clk(clk), .gn(gn[4]),  .i(bufb[31:0]), .z(m4b[31:0]));
sudp_latg mem5  (.clk(clk), .gn(gn[5]),  .i(bufb[31:0]), .z(m5b[31:0]));
sudp_latg mem6  (.clk(clk), .gn(gn[6]),  .i(bufb[31:0]), .z(m6b[31:0]));
sudp_latg mem7  (.clk(clk), .gn(gn[7]),  .i(bufb[31:0]), .z(m7b[31:0]));
sudp_latg mem8  (.clk(clk), .gn(gn[8]),  .i(bufb[31:0]), .z(m8b[31:0]));
sudp_latg mem9  (.clk(clk), .gn(gn[9]),  .i(bufb[31:0]), .z(m9b[31:0]));
sudp_latg mem10 (.clk(clk), .gn(gn[10]), .i(bufb[31:0]), .z(m10b[31:0]));
sudp_latg mem11 (.clk(clk), .gn(gn[11]), .i(bufb[31:0]), .z(m11b[31:0]));
sudp_latg mem12 (.clk(clk), .gn(gn[12]), .i(bufb[31:0]), .z(m12b[31:0]));
sudp_latg mem13 (.clk(clk), .gn(gn[13]), .i(bufb[31:0]), .z(m13b[31:0]));
sudp_latg mem14 (.clk(clk), .gn(gn[14]), .i(bufb[31:0]), .z(m14b[31:0]));
sudp_latg mem15 (.clk(clk), .gn(gn[15]), .i(bufb[31:0]), .z(m15b[31:0]));
sudp_latg mem16 (.clk(clk), .gn(gn[16]), .i(bufb[31:0]), .z(m16b[31:0]));
sudp_latg mem17 (.clk(clk), .gn(gn[17]), .i(bufb[31:0]), .z(m17b[31:0]));
sudp_latg mem18 (.clk(clk), .gn(gn[18]), .i(bufb[31:0]), .z(m18b[31:0]));
sudp_latg mem19 (.clk(clk), .gn(gn[19]), .i(bufb[31:0]), .z(m19b[31:0]));
sudp_latg mem20 (.clk(clk), .gn(gn[20]), .i(bufb[31:0]), .z(m20b[31:0]));
sudp_latg mem21 (.clk(clk), .gn(gn[21]), .i(bufb[31:0]), .z(m21b[31:0]));
sudp_latg mem22 (.clk(clk), .gn(gn[22]), .i(bufb[31:0]), .z(m22b[31:0]));
sudp_latg mem23 (.clk(clk), .gn(gn[23]), .i(bufb[31:0]), .z(m23b[31:0]));
sudp_latg mem24 (.clk(clk), .gn(gn[24]), .i(bufb[31:0]), .z(m24b[31:0]));
sudp_latg mem25 (.clk(clk), .gn(gn[25]), .i(bufb[31:0]), .z(m25b[31:0]));
sudp_latg mem26 (.clk(clk), .gn(gn[26]), .i(bufb[31:0]), .z(m26b[31:0]));
sudp_latg mem27 (.clk(clk), .gn(gn[27]), .i(bufb[31:0]), .z(m27b[31:0]));
sudp_latg mem28 (.clk(clk), .gn(gn[28]), .i(bufb[31:0]), .z(m28b[31:0]));
sudp_latg mem29 (.clk(clk), .gn(gn[29]), .i(bufb[31:0]), .z(m29b[31:0]));
sudp_latg mem30 (.clk(clk), .gn(gn[30]), .i(bufb[31:0]), .z(m30b[31:0]));
sudp_latg mem31 (.clk(clk), .gn(gn[31]), .i(bufb[31:0]), .z(m31b[31:0]));

wire [4:0] rab;
wire [4:0] rbb;
wire [31:0] ppa0b;
wire [31:0] ppa1b;
wire [31:0] ppa2b;
wire [31:0] ppa3b;
wire [31:0] pa0b;
wire [31:0] pa1b;
wire [31:0] ppb0b;
wire [31:0] ppb1b;
wire [31:0] ppb2b;
wire [31:0] ppb3b;
wire [31:0] pb0b;
wire [31:0] pb1b;

j_ni01 nirab0 (.i(ra[0]),  .z(rab[0]));
j_ni01 nirab1 (.i(ra[1]),  .z(rab[1]));
j_ni01 nirab2 (.i(ra[2]),  .z(rab[2]));
j_ni01 nirab3 (.i(ra[3]),  .z(rab[3]));
j_ni01 nirab4 (.i(ra[4]),  .z(rab[4]));
j_ni01 nirbb0 (.i(rb[0]),  .z(rbb[0]));
j_ni01 nirbb1 (.i(rb[1]),  .z(rbb[1]));
j_ni01 nirbb2 (.i(rb[2]),  .z(rbb[2]));
j_ni01 nirbb3 (.i(rb[3]),  .z(rbb[3]));
j_ni01 nirbb4 (.i(rb[4]),  .z(rbb[4]));
sudp_mx81 mxppa0 (.s(rab[2:0]),
		.i0(m0b),  .i1(m1b),  .i2(m2b),  .i3(m3b),
		.i4(m4b),  .i5(m5b),  .i6(m6b),  .i7(m7b),  .z(ppa0b));
sudp_mx81 mxppa1 (.s(rab[2:0]),
		.i0(m8b),  .i1(m9b),  .i2(m10b), .i3(m11b),
		.i4(m12b), .i5(m13b), .i6(m14b), .i7(m15b), .z(ppa1b));
sudp_mx81 mxppa2 (.s(rab[2:0]),
		.i0(m16b), .i1(m17b), .i2(m18b), .i3(m19b),
		.i4(m20b), .i5(m21b), .i6(m22b), .i7(m23b), .z(ppa2b));
sudp_mx81 mxppa3 (.s(rab[2:0]),
		.i0(m24b), .i1(m25b), .i2(m26b), .i3(m27b),
		.i4(m28b), .i5(m29b), .i6(m30b), .i7(m31b), .z(ppa3b));
sudp_mx21 mxpa0  (.s(rab[3]), .i0(ppa0b), .i1(ppa1b), .z(pa0b));
sudp_mx21 mxpa1  (.s(rab[3]), .i0(ppa2b), .i1(ppa3b), .z(pa1b));
sudp_mx21 mxa0   (.s(rab[4]), .i0(pa0b),  .i1(pa1b),  .z(a));
sudp_mx81 mxppb0 (.s(rbb[2:0]),
		.i0(m0b),  .i1(m1b),  .i2(m2b),  .i3(m3b),
		.i4(m4b),  .i5(m5b),  .i6(m6b),  .i7(m7b),  .z(ppb0b));
sudp_mx81 mxppb1 (.s(rbb[2:0]),
		.i0(m8b),  .i1(m9b),  .i2(m10b), .i3(m11b),
		.i4(m12b), .i5(m13b), .i6(m14b), .i7(m15b), .z(ppb1b));
sudp_mx81 mxppb2 (.s(rbb[2:0]),
		.i0(m16b), .i1(m17b), .i2(m18b), .i3(m19b),
		.i4(m20b), .i5(m21b), .i6(m22b), .i7(m23b), .z(ppb2b));
sudp_mx81 mxppb3 (.s(rbb[2:0]),
		.i0(m24b), .i1(m25b), .i2(m26b), .i3(m27b),
		.i4(m28b), .i5(m29b), .i6(m30b), .i7(m31b), .z(ppb3b));
sudp_mx21 mxpb0  (.s(rbb[3]), .i0(ppb0b), .i1(ppb1b), .z(pb0b));
sudp_mx21 mxpb1  (.s(rbb[3]), .i0(ppb2b), .i1(ppb3b), .z(pb1b));
sudp_mx21 mxb0   (.s(rbb[4]), .i0(pb0b),  .i1(pb1b),  .z(b));

endmodule // sudp_rf