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: ucode ucode_ctrl_0]
module ucode_ctrl (
                   opcode_1_op_r,
                   opcode_2_op_r,
                   opcode_3_op_r,
                   valid_op_r,
                   iu_trap_r,
                   ie_stall_ucode,
                   ie_kill_ucode,
                   iu_hold_e,
                   iu_psr_gce,
                   ie_alu_cryout,
                   ie_comp_a_eq0,
                   rs1_0_l,
                   rs2_0_l,
                   archi_data,
                   a_oprd,
                   a_oprd_0_l,
                   b_oprd,
                   reg5_31,
                   u_f01,
                   u_f02,
                   u_f08,
                   u_f18,
                   sm,
                   sin,
                   reset_l,
                   clk,
                   so,
                   index_byte1_e,
                   index_byte2_e,
                   rom_addr,
                   sel_fxx_default,
                   u_f01_wt_stk,
                   u_f02_rd_stk,
                   u_done,
                   u_last,
                   u_abt_rdwt,
                   u_abt_cur,
                   u_ary_ovf,
                   u_ref_null,
                   u_ptr_un_eq,
                   u_gc_notify 
                  );

input    [7:0] opcode_1_op_r;      // top first  byte of ibuffer of R_stage
input    [7:0] opcode_2_op_r;      // top second byte of ibuffer of R_stage
input    [7:0] opcode_3_op_r;      // top third  byte of ibuffer of R_stage
input          valid_op_r;         // the opcode is valid        of R_stage
input          iu_trap_r;          // IU issue trap operation    of R_stage

input          ie_stall_ucode;     // IE unit holds off ucode execution
input          ie_kill_ucode;      // IU kill current operation in ucode
input          iu_hold_e;          // IU unit hold E_stage information(registers)
input          iu_psr_gce;         // IU provide Garbage_Collector_Enable
input          ie_alu_cryout;      // the carry-out of the ALU adder
input          ie_comp_a_eq0;      // a_operand compared equal to zero
input          rs1_0_l;            // rs1[0], active low, from IU
input          rs2_0_l;            // rs2[0], active low, from IU
input   [31:0] archi_data;         // architecture register output
input   [31:0] a_oprd;             // a_oprd[31:0]
input          a_oprd_0_l;         // a_oprd[0], active low
input   [31:0] b_oprd;             // b_oprd[31:0], sign_bit/reg_gc_conf
input          reg5_31;            // Temp_reg5[31]
input    [2:0] u_f01;              // Field_01: Ucode and StacK         WT
input    [1:0] u_f02;              // Field_02: Ucode and Stack         RD
input    [2:0] u_f08;              // Field_08: Read_port_A of temp_regs
input   [11:0] u_f18;              // field_18: Branching in ucode

input          sm;                 // register scan mode
input          sin;                // register scan_input
input          reset_l;            // reset
input          clk;                // clock

output         so;                 // register scan_output

output   [7:0] index_byte1_e;      // E_stage, index_indexbyte1_offest
output   [7:0] index_byte2_e;      // E_stage, nargm_indexbyte2_offest+1

output   [8:0] rom_addr;           // next_state of the ucode sequencer
output         sel_fxx_default;    // an ucode exception to squash all ucode ctrls
output         u_f01_wt_stk;       // ucode write stack request
output         u_f02_rd_stk;       // ucode  read stack request
output         u_done;         	   // the ucode is done
output         u_last;             // the last cycle of the ucode
output         u_abt_rdwt;         // abort         read/write requested by ucode
output         u_abt_cur;          // abort current read/write requested by ucode
output         u_ary_ovf;          // array_index exceeds array_length
output         u_ref_null;         // the reference is a null one
output         u_ptr_un_eq;        // the ptr is unqual. used in checkcast_quick
output         u_gc_notify;        // ucode detect gc condition

wire           sel_wd_inc_r;       // select {index_byte1,index_byte2} + 1
wire           sel_offset_add1_r;  // select (offset+1) as the offset
wire     [7:0] index_byte1_e;      // E_stage, index_indexbyte1_offest
wire     [7:0] index_byte2_e;      // E_stage, nargm_indexbyte2_offest+1

wire     [8:0] rom_addr, rom_addr_l;
wire     [8:0] nxt_addr_1, nxt_addr_2, nxt_addr_3;
wire           ucode_in_r;
wire           u_done_l;
wire           u_f08_rd_rs1_a;     // Field_08: Read_port_A of RS1

/*********** Index bytes from the R_stage to E_stage *************************/

  ucode_ind ucode_ind_0 (
                         .opcode_2_op_r(opcode_2_op_r[7:0]),
                         .opcode_3_op_r(opcode_3_op_r[7:0]),
                         .iu_hold_e    (iu_hold_e),
                         .sel_wd_inc_r     (sel_wd_inc_r),
                         .sel_offset_add1_r(sel_offset_add1_r),
                         .sm     (),
                         .sin    (),
                         .reset_l(reset_l),
                         .clk    (clk),
                         .so     (),
                         .index_byte1_e(index_byte1_e[7:0]),
                         .index_byte2_e(index_byte2_e[7:0])
                        );

/*********** Decode ucode instructions to rom address ************************/

  ucode_add ucode_add_0 (
                         .opcode_1_op_r(opcode_1_op_r[7:0]),
                         .opcode_2_op_r(opcode_2_op_r[7:0]),
                         .valid_op_r   (valid_op_r),
                         .iu_trap_r    (iu_trap_r),
                         .nxt_addr_1   (nxt_addr_1[8:0]),
                         .nxt_addr_2   (nxt_addr_2[8:0]),
                         .nxt_addr_3   (nxt_addr_3[8:0]),
                         .u_f18_6      (u_f18[6]),
                         .u_f18_5      (u_f18[5]),
                         .u_f08_rd_rs1_a(u_f08_rd_rs1_a),
                         .rs1_0_l      (rs1_0_l),
                         .rs2_0_l      (rs2_0_l),
                         .u_done_l     (u_done_l),
                         .rom_addr         (rom_addr[8:0]),
                         .rom_addr_l       (rom_addr_l[8:0]),
                         .ucode_in_r       (ucode_in_r),
                         .sel_wd_inc_r     (sel_wd_inc_r),
                         .sel_offset_add1_r(sel_offset_add1_r)
                        );

/*********** Calculate the rom address and control interface signals *********/

  ucode_seq ucode_seq_0 (
                         .ucode_in_r(ucode_in_r),
                         .rom_addr_l(rom_addr_l[8:0]),
                         .ie_stall_ucode(ie_stall_ucode),
                         .ie_kill_ucode (ie_kill_ucode),
                         .iu_psr_gce    (iu_psr_gce),
                         .ie_alu_cryout(ie_alu_cryout),
                         .ie_comp_a_eq0(ie_comp_a_eq0),
                         .archi_data(archi_data[31:0]),
                         .a_oprd(a_oprd[31:0]),
                         .a_oprd_0_l(a_oprd_0_l),
                         .b_oprd(b_oprd[31:0]),
                         .reg5_31(reg5_31),
                         .u_f01(u_f01),
                         .u_f02(u_f02),
                         .u_f08(u_f08),
                         .u_f18(u_f18),
                         .sm     (),
                         .sin    (),
                         .reset_l(reset_l),
                         .clk    (clk),
                         .so     (),
                         .u_f08_rd_rs1_a(u_f08_rd_rs1_a),
                         .nxt_addr_1(nxt_addr_1[8:0]),
                         .nxt_addr_2(nxt_addr_2[8:0]),
                         .nxt_addr_3(nxt_addr_3[8:0]),
                         .sel_fxx_default(sel_fxx_default),
                         .u_f01_wt_stk(u_f01_wt_stk),
                         .u_f02_rd_stk(u_f02_rd_stk),
                         .u_done     (u_done),
                         .u_done_l   (u_done_l),
                         .u_last     (u_last),
                         .u_abt_rdwt (u_abt_rdwt),
                         .u_abt_cur  (u_abt_cur),
                         .u_ary_ovf  (u_ary_ovf),
                         .u_ref_null (u_ref_null),
                         .u_ptr_un_eq(u_ptr_un_eq),
                         .u_gc_notify(u_gc_notify)
                         );

endmodule

HierarchyFilesModulesSignalsTasksFunctionsHelp

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

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