HierarchyFilesModulesSignalsTasksFunctionsHelp
/****************************************************************
 ---------------------------------------------------------------
     Copyright 1999 Sun Microsystems, Inc., 901 San Antonio
     Road, Palo Alto, CA 94303, U.S.A.  All Rights Reserved.
     The contents of this file are subject to the current
     version of the Sun Community Source License, picoJava-II
     Core ("the License").  You may not use this file except
     in compliance with the License.  You may obtain a copy
     of the License by searching for "Sun Community Source
     License" on the World Wide Web at http://www.sun.com.
     See the License for the rights, obligations, and
     limitations governing use of the contents of this file.

     Sun, Sun Microsystems, the Sun logo, and all Sun-based
     trademarks and logos, Java, picoJava, and all Java-based
     trademarks and logos are trademarks or registered trademarks 
     of Sun Microsystems, Inc. in the United States and other
     countries.
 ----------------------------------------------------------------
******************************************************************/

[Up: ex ex_imdr]
module imdr (
             ie_mul_d,
             ie_div_d,
             ie_rem_d,
             kill_inst_e,
             ie_dataA_d,
             ie_dataB_d,
             pj_hold,
             reset_l,
             sm,
             sin,
	     so,
             clk,
             imdr_done_e,
             imdr_div0_e,
             imdr_data_out
            );

input         ie_mul_d;            // imul request, validate operands
input         ie_div_d;            // idiv request, validate operands
input         ie_rem_d;            // irem request, validate operands
input	      kill_inst_e;	   // kill the instruction in E stage
input  [31:0] ie_dataA_d;          // a_operand, multiplicand or dividend
input  [31:0] ie_dataB_d;          // b_operand, multiplier   or divisor 
input         pj_hold;             // hold 
input         reset_l;            // reset 
input         sm;                  // register scan mode
input         sin;                 // register scan_input
output	      so;		   // scan out port  
input         clk;              // clock 

output        imdr_done_e;         // imul or idiv or irem done
output        imdr_div0_e;         // a zero divisor is detected
output [31:0] imdr_data_out;       // imdr resulting data back to stack

// -------------- Ports of the 33-bit adder ------------------------------
wire  [32:0] ie_aop_add;          // a-operand       of the 33-bit adder
wire  [32:0] ie_bop_add;          // b-operand[31:0] of the 33-bit adder
wire         ie_cin;              // carry-in        of the 33-bit adder
wire         ie_use_dpath = 1'b0;        // ie uses the adder

wire [32:0] imdr_sum;            // sum             of the 33-bit adder
wire        imdr_cout;           // carry-out       of the 33-bit adder

// -------------- Internal buses -----------------------------------------
wire    [1:0] sel_rac, sel_ra, sel_rb;

wire          clr_rac, clr_ra2, clr_rb, clr_rbb;
wire          clr_aop_, sel_rem_a, sel_mag_a;
wire    [3:0] sel_rsh_b;
wire          sel_rb_b, sel_neg_b;
wire          sel_sum_a, sel_compl_a, sel_sum;
wire          cyc_compare;
wire          ld_a_oprd0, ld_b_oprd0, ld_leading0;
wire          clr_a_oprd0, clr_b_oprd0, clr_leading0;
wire          ain_is0, bin_is0, div_ovf, leading0_r;
wire          ld_sign, clr_sign, bin_sign, out_sign, out_sign_r;
wire          cin, mask32_, mul_cmp, div_cmp, rem_cmp, cout;
wire          extreme_1, extreme_2, rem_sum32;
wire          nxt_booth_0, booth_neg, cur_rbb1;

// -------------- imdr datapath ------------------------------------------
imdr_dpath imdr_dpath_0 (
                   .ie_dataA_d(ie_dataA_d),
                   .ie_dataB_d(ie_dataB_d),
                   .sm(),
                   .sin(),
		   .so(),
                   .clk(clk),
                   .imdr_data_out(imdr_data_out),

                   .ie_aop_add(ie_aop_add),
                   .ie_bop_add(ie_bop_add),
                   .ie_cin(ie_cin),
                   .ie_use_dpath(ie_use_dpath),
                   .imdr_sum(imdr_sum),
                   .imdr_cout(imdr_cout),

                   .sel_rac(sel_rac),
                   .sel_ra(sel_ra),
                   .sel_rb(sel_rb),
                   .clr_rac(clr_rac),
                   .clr_ra2(clr_ra2),
                   .clr_rb(clr_rb),
                   .clr_rbb(clr_rbb),
                   .clr_aop_(clr_aop_),
                   .sel_rem_a(sel_rem_a),
                   .sel_mag_a(sel_mag_a),
                   .sel_rsh_b(sel_rsh_b),
                   .sel_rb_b(sel_rb_b),
                   .sel_neg_b(sel_neg_b),
                   .sel_sum_a(sel_sum_a),
                   .sel_compl_a(sel_compl_a),
                   .sel_sum(sel_sum),
                   .cyc_compare(cyc_compare),
                   .ld_a_oprd0(ld_a_oprd0),
                   .ld_b_oprd0(ld_b_oprd0),
                   .ld_leading0(ld_leading0),
                   .clr_a_oprd0(clr_a_oprd0),
                   .clr_b_oprd0(clr_b_oprd0),
                   .clr_leading0(clr_leading0),
                   .ain_is0(ain_is0),
                   .bin_is0(bin_is0),
                   .div_ovf(div_ovf),
                   .leading0_r(leading0_r),
                   .ld_sign(ld_sign),
                   .clr_sign(clr_sign),
                   .bin_sign(bin_sign),
                   .out_sign(out_sign),
                   .out_sign_r(out_sign_r),
                   .cin(cin),
                   .mask32_(mask32_),
                   .mul_cmp(mul_cmp),
                   .div_cmp(div_cmp),
                   .rem_cmp(rem_cmp),
                   .sum_32(sum_32),
                   .cout(cout),
                   .extreme_1(extreme_1),
                   .extreme_2(extreme_2),
                   .rem_sum32(rem_sum32),
                   .nxt_booth_0(nxt_booth_0),
                   .booth_neg(booth_neg),
                   .cur_rbb1(cur_rbb1) 
                  );

// -------------- imdr control -------------------------------------------
imdr_ctrl imdr_ctrl_0 (
                  .ie_mul_raw_d(ie_mul_d),
                  .ie_div_raw_d(ie_div_d),
                  .ie_rem_raw_d(ie_rem_d),
		  .kill_inst_e(kill_inst_e),
                  .ie_dataA_d_31(ie_dataA_d[31]),
                  .ie_dataB_d_31(ie_dataB_d[31]),
                  .pj_hold(pj_hold),
                  .reset_l(reset_l),
                  .sm(),
                  .sin(),
                  .so(),
                  .clk(clk),
                  .imdr_done_e(imdr_done_e), 
                  .imdr_div0_e(imdr_div0_e),
 
                  .sel_rac(sel_rac),
                  .sel_ra(sel_ra),
                  .sel_rb(sel_rb),
                  .clr_rac(clr_rac),
                  .clr_ra2(clr_ra2),
                  .clr_rb(clr_rb),
                  .clr_rbb(clr_rbb),
                  .clr_aop_(clr_aop_),
                  .sel_rem_a(sel_rem_a),
                  .sel_mag_a(sel_mag_a),
                  .sel_rsh_b(sel_rsh_b),
                  .sel_rb_b(sel_rb_b),
                  .sel_neg_b(sel_neg_b),
                  .sel_sum_a(sel_sum_a),
                  .sel_compl_a(sel_compl_a),
                  .sel_sum(sel_sum),
                  .cyc_compare(cyc_compare),
                  .ld_a_oprd0(ld_a_oprd0),
                  .ld_b_oprd0(ld_b_oprd0),
                  .ld_leading0(ld_leading0),
                  .clr_a_oprd0(clr_a_oprd0),
                  .clr_b_oprd0(clr_b_oprd0),
                  .clr_leading0(clr_leading0),
                  .ain_is0(ain_is0),
                  .bin_is0(bin_is0),
                  .div_ovf(div_ovf),
                  .leading0_r(leading0_r),
                  .ld_sign(ld_sign),
                  .clr_sign(clr_sign),
                  .bin_sign(bin_sign),
                  .out_sign(out_sign),
                  .out_sign_r(out_sign_r),
                  .cin(cin),
                  .mask32_(mask32_),
                  .mul_cmp(mul_cmp),
                  .div_cmp(div_cmp),
                  .rem_cmp(rem_cmp),
                  .sum_32(sum_32),
                  .cout(cout),
                  .extreme_1(extreme_1),
                  .extreme_2(extreme_2),
                  .rem_sum32(rem_sum32),
                  .nxt_booth_0(nxt_booth_0),
                  .booth_neg(booth_neg),
                  .cur_rbb1(cur_rbb1) 
                  );

endmodule


HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Wed Mar 24 09:43:28 1999
From: /import/jet-pj2-sim/rahim/picoJava-II/design/iu/ex/rtl/imdr/imdr.v

Verilog converted to html by v2html 5.0 (written by Costas Calamvokis).Help