HierarchyFilesModulesSignalsTasksFunctionsHelp
Prev123
// All the bypass signals are latched in ex_dpath to imrpove timing on RS1 and RS2
// The following flops are all moved to ex_dpath to improve timing 

// ff_sre	flop_bypass_rs1_estage(.out(bypass_data_rs1_estage_e),
// 				.din(bypass_data_rs1_estage_r),
// 				.clk(clk),
// 				.enable(!(hold_e & !ucode_active)),
// 				.reset_l(reset_l));

// ff_sre	flop_bypass_rs1_cstage(.out(bypass_data_rs1_cstage_e),
// 				.din(bypass_data_rs1_cstage_r),
// 				.clk(clk),
// 				.enable(!(hold_e & !ucode_active)),
// 				.reset_l(reset_l));

// ff_sre	flop_bypass_rs1_wstage(.out(bypass_data_rs1_wstage_e),
// 				.din(bypass_data_rs1_wstage_r),
// 				.clk(clk),
// 				.enable(!(hold_e & !ucode_active)),
// 				.reset_l(reset_l));

// ff_sre	flop_nobypass_rs1(.out(nobypass_rs1_e),
// 			.din(nobypass_rs1_r),
// 			.clk(clk),
// 			.enable(!(hold_e & !ucode_active)),
// 			.reset_l(reset_l));

//  This signal is used for selecting appr. data in EX stage
// assign	rs1_forward_mux_sel[3] = bypass_data_rs1_estage_e;
// assign	rs1_forward_mux_sel[2] = bypass_data_rs1_cstage_e;
// assign	rs1_forward_mux_sel[1] = bypass_data_rs1_wstage_e;
// assign	rs1_forward_mux_sel[0] = nobypass_rs1_e;

assign	rs1_forward_mux_sel[3] = bypass_data_rs1_estage_r;
assign	rs1_forward_mux_sel[2] = bypass_data_rs1_cstage_r;
assign	rs1_forward_mux_sel[1] = bypass_data_rs1_wstage_r;
assign	rs1_forward_mux_sel[0] = nobypass_rs1_r;

// For RS2

// In case of Global Reg matches or scache addr matches in estage 
// bypass estage data and so-on.

// Removed the priority Encoder. bypass signals are used as mux selects in RS1 and
// RS2 and these mux selects already go througha priority encoder. This improves
// timing on byapss as well as RS1 and RS2 paths 

// assign	bypass_data_rs2_estage_r = ( bypass_gl_reg_rs2[0] | bypass_scache_rs2[0]);
// assign	bypass_data_rs2_cstage_r = ( bypass_gl_reg_rs2[1] | bypass_scache_rs2[1]);
// assign	bypass_data_rs2_wstage_r = ( bypass_gl_reg_rs2[2] | bypass_scache_rs2[2]);

assign	bypass_data_rs2_estage_r = ( (bypass_gl_reg_rs2_e &ucode_done)
						 | act_bypass_scache_rs2_e);
assign	bypass_data_rs2_cstage_r = ( (bypass_gl_reg_rs2_c &ucode_done)
						 | bypass_scache_rs2_c);
assign	bypass_data_rs2_wstage_r = ( (bypass_gl_reg_rs2_w &ucode_done)
						 | bypass_scache_rs2_w);

assign	nobypass_rs2_r = !(bypass_data_rs2_estage_r | bypass_data_rs2_cstage_r |
			   bypass_data_rs2_wstage_r);

// Whenver there's a bypass hit, we should not generate any scache read miss
assign	bypass_hit_rs2_r = (bypass_data_rs2_estage_r | bypass_data_rs2_cstage_r |
				bypass_data_rs2_wstage_r);

// All the bypass signals are latched in ex_dpath to imrpove timing on RS1 and RS2
// The following flops are all moved to ex_dpath to improve timing 

// ff_sre	flop_bypass_rs2_estage(.out(bypass_data_rs2_estage_e),
// 				.din(bypass_data_rs2_estage_r),
// 				.clk(clk),
// 				.enable(!hold_e),
// 				.reset_l(reset_l));

// ff_sre	flop_bypass_rs2_cstage(.out(bypass_data_rs2_cstage_e),
// 				.din(bypass_data_rs2_cstage_r),
// 				.clk(clk),
// 				.enable(!hold_e),
// 				.reset_l(reset_l));

// ff_sre	flop_bypass_rs2_wstage(.out(bypass_data_rs2_wstage_e),
// 				.din(bypass_data_rs2_wstage_r),
// 				.clk(clk),
// 				.enable(!hold_e),
// 				.reset_l(reset_l));

// ff_sre	flop_nobypass_rs2(.out(nobypass_rs2_e),
// 			.din(nobypass_rs2_r),
// 			.clk(clk),
// 			.enable(!hold_e),
// 			.reset_l(reset_l));

//  This signal is used for selecting appr. data in EX stage

// assign  rs2_forward_mux_sel[3] = bypass_data_rs2_wstage_e;
// assign  rs2_forward_mux_sel[2] = bypass_data_rs2_cstage_e;
// assign  rs2_forward_mux_sel[1] = bypass_data_rs2_estage_e;
// assign  rs2_forward_mux_sel[0] = nobypass_rs2_e;

assign  rs2_forward_mux_sel[3] = bypass_data_rs2_estage_r;
assign  rs2_forward_mux_sel[2] = bypass_data_rs2_cstage_r;
assign  rs2_forward_mux_sel[1] = bypass_data_rs2_wstage_r;
assign  rs2_forward_mux_sel[0] = nobypass_rs2_r;
 


// This function is used for multi-cycle r-stage operations //

function [1:0]	mult_cyc_state;
input	[1:0]	curr_state;
input		help_rs1_r;
input		hold_e;

reg	[1:0]	nxt_state;

parameter

	IDLE 	= 2'b01,
	SEC_CYC	= 2'b10;
begin

	case (curr_state)

		IDLE: begin

			if (help_rs1_r & !hold_e) begin
				
				nxt_state = SEC_CYC;
			end
			else nxt_state = curr_state;
		end

		SEC_CYC: begin

			if (!hold_e) begin
				nxt_state = IDLE;
			end
			else nxt_state = curr_state;
		end

		default: nxt_state = 2'bx;
	endcase

mult_cyc_state = nxt_state;

end

endfunction

assign	nxt_mul_cyc_state = mult_cyc_state(mul_cyc_state,
					help_rs1_r,
					hold_e );

ff_sr	flop_mult_cyc_st(.out(mul_cyc_state[1]),
			.din(nxt_mul_cyc_state[1]),
			.clk(clk),
			.reset_l(reset_l) );

ff_s	flop_mult_cyc_st_0(.out(mul_cyc_state[0]),
			.din(~reset_l | nxt_mul_cyc_state[0]),
			.clk(clk));

assign	second_cycle = mul_cyc_state[1];
assign	first_cycle = help_rs1_r & !second_cycle;

// Misc. Logic
// COSIM SIGNALS
// Provide inst_complete_w signal to cosim
// inst_vld_w is valid for both the cycles in case of a long op.
// But cosim needs only one signal during the second cycle. So, we propogate 
// first_cycle through pipe and then use first_cycle_w to qualify inst_vld[2]

ff_sre  flop_fc_e (.out(first_cycle_e),
                        .din(first_cycle&valid_op_r),
                        .reset_l(reset_l),
                        .enable(!hold_e),
                        .clk(clk));

ff_sre  flop_fc_c (.out(first_cycle_c),
                        .din(first_cycle_e),
                        .reset_l(reset_l),
                        .enable(!hold_c),
                        .clk(clk));

// Whenver there's a Write Enable signal in C-stage and it's 
// a first cycle, generate a signal "first_vld_c" to pipe
// so as to hold the pipe appropriately in case of fpu ops.
// Especially inthe case of dcmpg and dcmpl ops

assign	first_vld_c = first_cycle_c & iu_data_we_c;

// Whenever there's a hold_c, we need to kill inst_complete_w
// This is because we donot hold w-stage and hold_w == hold_c

ff_sr  flop_fc_w (.out(first_cycle_w),
                        .din((first_cycle_c & !hold_c)),
                        .reset_l(reset_l),
                        .clk(clk));


// We need to qualify inst_complete with ucode_done_w

ff_sre	flop_udone_c(.out(ucode_done_c),
		.din(ucode_done),
		.clk(clk),
		.enable(!hold_c),
		.reset_l(reset_l) );

ff_sre	flop_udone_w(.out(ucode_done_w),
		.din((ucode_done_c & !hold_c)),
		.clk(clk),
		.enable(!hold_c),
		.reset_l(reset_l) );
		
assign	inst_complete_w = inst_vld[2] & !first_cycle_w & ucode_done_w;



mj_spare spare1( .clk(clk),
                .reset_l(reset_l));

mj_spare spare2( .clk(clk),
                .reset_l(reset_l));
 

 
endmodule

[Up: rcu_ctl decode_opcode_rs1][Up: rcu_ctl decode_opcode_rs2]
module	decode_opcode (
	opcode,
	valid,
	aconst_null,
	iconst_m1,
	iconst_0,
	iconst_1,
	iconst_2,
	iconst_3,
	iconst_4,
	iconst_5,
	lconst_0,
	lconst_1,
	fconst_0,
	fconst_1,
	fconst_2,
	dconst_0,
	dconst_1,
	bipush,
	sipush,
	read_gl0,
	read_gl1,
	read_gl2,
	read_gl3
);

input	[15:0]	opcode;
input		valid;
output		aconst_null;
output		iconst_m1;
output		iconst_0;
output		iconst_1;
output		iconst_2;
output		iconst_3;
output		iconst_4;
output		iconst_5;
output		lconst_0;
output		lconst_1;
output		fconst_0;
output		fconst_1;
output		fconst_2;
output		dconst_0;
output		dconst_1;
output		bipush;
output		sipush;
output		read_gl0;
output		read_gl1;
output		read_gl2;
output		read_gl3;

wire		ext_opcode;

assign	aconst_null =  (opcode[15:8] == 8'd1)  & valid;
assign	iconst_m1 =  (opcode[15:8] == 8'd2)  & valid;
assign	iconst_0  =  (opcode[15:8] == 8'd3)  & valid;
assign	iconst_1  =  (opcode[15:8] == 8'd4)  & valid;
assign	iconst_2  =  (opcode[15:8] == 8'd5)  & valid;
assign	iconst_3  =  (opcode[15:8] == 8'd6)  & valid;
assign	iconst_4  =  (opcode[15:8] == 8'd7)  & valid;
assign	iconst_5  =  (opcode[15:8] == 8'd8)  & valid;
assign	lconst_0  =  (opcode[15:8] == 8'd9)  & valid;
assign	lconst_1  =  (opcode[15:8] == 8'd10) & valid;
assign	fconst_0  =  (opcode[15:8] == 8'd11) & valid;
assign	fconst_1  =  (opcode[15:8] == 8'd12) & valid;
assign	fconst_2  =  (opcode[15:8] == 8'd13) & valid;
assign	dconst_0  =  (opcode[15:8] == 8'd14) & valid;
assign	dconst_1  =  (opcode[15:8] == 8'd15) & valid;
assign	bipush	  =  (opcode[15:8] == 8'd16) & valid;
assign	sipush	  =  (opcode[15:8] == 8'd17) & valid;

assign	ext_opcode = (opcode[15:8] == 8'hff) & valid;
assign	read_gl0   = ((opcode[7:0]  == 8'd90) & ext_opcode) & valid; 
assign	read_gl1   = ((opcode[7:0]  == 8'd91) & ext_opcode) & valid; 
assign	read_gl2   = ((opcode[7:0]  == 8'd92) & ext_opcode) & valid; 
assign	read_gl3   = ((opcode[7:0]  == 8'd93) & ext_opcode) & valid; 

endmodule

[Up: rcu_ctl dest_dec]
module dest_decoder (

	opcode,
	valid,
	first_cyc,
	second_cyc,
	group_2_r,
	group_3_r,
	group_5_r,
	group_6_r,
	group_7_r,
	optop_incr_sel,
	dest_we
);

input	[15:0]	opcode;
input		valid;
input		first_cyc;
input		second_cyc;
input		group_2_r;
input		group_3_r;
input		group_5_r;
input		group_6_r;
input		group_7_r;
output	[7:0]	optop_incr_sel;
output		dest_we;

wire	[15:0]	opcode_int;
wire		ext_opcode;
wire		curr_inc_optop_1;
wire		curr_inc_optop_2;
wire		curr_inc_optop_3;
wire		curr_inc_optop_4;
wire		curr_dec_optop_1;
wire		curr_no_change_optop;
wire		act_inc_optop_1;
wire		act_inc_optop_2;
wire		act_inc_optop_3;
wire		act_inc_optop_4;
wire		act_dec_optop_1;
wire		act_dec_optop_2;
wire		act_dec_optop_3;
wire		act_no_change_optop;

assign  opcode_int[15:0] = (opcode[15:0] ) & ({16{valid}});
assign	ext_opcode = (opcode_int[15:8] == 8'd255);


assign	curr_inc_optop_1 = (

		(opcode_int[15:8] == 8'd116)  |			// ineg
		(opcode_int[15:8] == 8'd118)  |			// fneg
		(opcode_int[15:8] == 8'd134)  |                 // i2f
                ((opcode_int[15:8] == 8'd135) & first_cyc)  |   // i2d
                ((opcode_int[15:8] == 8'd141) & first_cyc)  |   // f2d
                ((opcode_int[15:8] == 8'd138) & second_cyc)  |  // l2d
                (opcode_int[15:8] == 8'd139)  |                 // f2i
                ((opcode_int[15:8] == 8'd140) & first_cyc) |    // f2l
                ((opcode_int[15:8] == 8'd143) & second_cyc)  |  // d2l
                (opcode_int[15:8] == 8'd145)  |                 // i2b
                (opcode_int[15:8] == 8'd146)  |                 // i2c
                (opcode_int[15:8] == 8'd147)  |                 // i2s
		(opcode_int[15:8] == 8'd237)  | 		// sethi
		(ext_opcode & (opcode_int[7:0] == 8'd0))| 	// load_ubyte
		(ext_opcode & (opcode_int[7:0] == 8'd1))| 	// load_byte
		(ext_opcode & (opcode_int[7:0] == 8'd2))| 	// load_char
		(ext_opcode & (opcode_int[7:0] == 8'd3))| 	// load_short
		(ext_opcode & (opcode_int[7:0] == 8'd4))| 	// load_word
		(ext_opcode & (opcode_int[7:0] == 8'd6))| 	// priv_read_dcache_tag
		(ext_opcode & (opcode_int[7:0] == 8'd7))| 	// priv_read_dcache_data
		(ext_opcode & (opcode_int[7:0] == 8'd10))| 	// load_char_oe
		(ext_opcode & (opcode_int[7:0] == 8'd11))| 	// load_short_oe
		(ext_opcode & (opcode_int[7:0] == 8'd12))| 	// load_word_oe
		(ext_opcode & (opcode_int[7:0] == 8'd14)
						& first_cyc) | 	// priv_read_icache_tag
		(ext_opcode & (opcode_int[7:0] == 8'd15)
						& first_cyc) | 	// priv_read_icache_data
		(ext_opcode & (opcode_int[7:0] == 8'd16))| 	// ncload_ubyte
		(ext_opcode & (opcode_int[7:0] == 8'd17))| 	// ncload_byte
		(ext_opcode & (opcode_int[7:0] == 8'd18))| 	// ncload_char
		(ext_opcode & (opcode_int[7:0] == 8'd19))| 	// ncload_short
		(ext_opcode & (opcode_int[7:0] == 8'd20))| 	// ncload_word
		(ext_opcode & (opcode_int[7:0] == 8'd23))| 	// cache_invalidate
		(ext_opcode & (opcode_int[7:0] == 8'd26))| 	// ncload_char_oe
		(ext_opcode & (opcode_int[7:0] == 8'd27))| 	// ncload_short_oe
		(ext_opcode & (opcode_int[7:0] == 8'd28))| 	// ncload_word_oe
		(ext_opcode & (opcode_int[7:0] == 8'd30))| 	// cache_flush
		(ext_opcode & (opcode_int[7:0] == 8'd31))| 	// cache_index_flush
		((opcode_int[15:8] == 8'd117) & second_cyc) |	// lneg
		(opcode_int[15:8] == 8'd119) 			// dneg

		);

assign	curr_inc_optop_2 = (

		(opcode_int[15:8] == 8'd96)  |			// iadd
		(opcode_int[15:8] == 8'd98)  |			// fadd
		(opcode_int[15:8] == 8'd100)  |			// isub
		(opcode_int[15:8] == 8'd102)  |			// fsub
		(opcode_int[15:8] == 8'd104)  |			// imul
		(opcode_int[15:8] == 8'd106)  |			// fmul
		(opcode_int[15:8] == 8'd108)  |			// idiv
		(opcode_int[15:8] == 8'd110)  |			// fdiv
		(opcode_int[15:8] == 8'd112)  |			// irem
		(opcode_int[15:8] == 8'd114)  |			// frem
		((opcode_int[15:8] == 8'd117) & first_cyc)  |	// lneg
		(opcode_int[15:8] == 8'd120)  |			// ishl
		((opcode_int[15:8] == 8'd121) & second_cyc)  |	// lshl
		(opcode_int[15:8] == 8'd122)  |			// ishr
		((opcode_int[15:8] == 8'd123) & first_cyc)  |	// lshr
		(opcode_int[15:8] == 8'd124)  |			// iushr
		((opcode_int[15:8] == 8'd125) & first_cyc)  |	// lushr
		(opcode_int[15:8] == 8'd126)  |			// iand
		(opcode_int[15:8] == 8'd128)  |			// ior
		(opcode_int[15:8] == 8'd130)  |			// ixor
		(opcode_int[15:8] == 8'd137)  |			// l2f
		((opcode_int[15:8] == 8'd138) & first_cyc)  |	// l2d
		(opcode_int[15:8] == 8'd142)  |			// d2i
		((opcode_int[15:8] == 8'd143) & first_cyc)  |	// d2l
		(opcode_int[15:8] == 8'd144)  |			// d2f
		(opcode_int[15:8] == 8'd149)  |			// fcmpl
		(opcode_int[15:8] == 8'd150)  |			// fcmpg
		(ext_opcode & (opcode_int[7:0] == 8'd21)) 	// iucmp

	);

assign	curr_inc_optop_3 = (

   	         ((opcode_int[15:8] == 8'd97) & second_cyc)  | 	// ladd
   	         ((opcode_int[15:8] == 8'd99) & second_cyc)  | 	// dadd
   	         ((opcode_int[15:8] == 8'd101) & second_cyc) | 	// lsub
   	         ((opcode_int[15:8] == 8'd103) & second_cyc) | 	// dsub
   	         ((opcode_int[15:8] == 8'd105) & second_cyc) | 	// lmul
   	         ((opcode_int[15:8] == 8'd107) & second_cyc) | 	// dmul
   	         ((opcode_int[15:8] == 8'd109) & second_cyc) | 	// ldiv
   	         ((opcode_int[15:8] == 8'd111) & second_cyc) | 	// ddiv
   	         ((opcode_int[15:8] == 8'd113) & second_cyc) | 	// lrem
   	         ((opcode_int[15:8] == 8'd115) & second_cyc) | 	// drem
   	         ((opcode_int[15:8] == 8'd121) & first_cyc) | 	// lshl
   	         ((opcode_int[15:8] == 8'd123) & second_cyc) | 	// lshr
   	         ((opcode_int[15:8] == 8'd125) & second_cyc) | 	// lushr
   	         ((opcode_int[15:8] == 8'd127) & second_cyc) | 	// land
   	         ((opcode_int[15:8] == 8'd129) & second_cyc) | 	// lor
   	         ((opcode_int[15:8] == 8'd131) & second_cyc)  	// lxor

	);

assign	curr_inc_optop_4 = (

   	         ((opcode_int[15:8] == 8'd97) & first_cyc)  | 	// ladd
   	         ((opcode_int[15:8] == 8'd99) & first_cyc)  | 	// dadd
   	         ((opcode_int[15:8] == 8'd101) & first_cyc) | 	// lsub
   	         ((opcode_int[15:8] == 8'd103) & first_cyc) | 	// dsub
   	         ((opcode_int[15:8] == 8'd105) & first_cyc) | 	// lmul
   	         ((opcode_int[15:8] == 8'd107) & first_cyc) | 	// dmul
   	         ((opcode_int[15:8] == 8'd109) & first_cyc) | 	// ldiv
   	         ((opcode_int[15:8] == 8'd111) & first_cyc) | 	// ddiv
   	         ((opcode_int[15:8] == 8'd113) & first_cyc) | 	// lrem
   	         ((opcode_int[15:8] == 8'd115) & first_cyc) | 	// drem
   	         ((opcode_int[15:8] == 8'd127) & first_cyc) | 	// land
   	         ((opcode_int[15:8] == 8'd129) & first_cyc) | 	// lor
   	         ((opcode_int[15:8] == 8'd131) & first_cyc) |  	// lxor
   	         ((opcode_int[15:8] == 8'd148) & second_cyc) |	// lcmp
   	         ((opcode_int[15:8] == 8'd151) & second_cyc) |	// dcmpl
   	         ((opcode_int[15:8] == 8'd152) & second_cyc)   	// dcmpg
	);

assign	curr_dec_optop_1 = (

   	         ((opcode_int[15:8] == 8'd9) & second_cyc)  | 	// lconst_0
   	         ((opcode_int[15:8] == 8'd10) & second_cyc)  | 	// lconst_1
   	         ((opcode_int[15:8] == 8'd14) & second_cyc)  | 	// dconst_0
   	         ((opcode_int[15:8] == 8'd15) & second_cyc)  | 	// dconst_1
   	         ((opcode_int[15:8] == 8'd22) & second_cyc)  | 	// lload
   	         ((opcode_int[15:8] == 8'd24) & second_cyc)  | 	// dload
   	         ((opcode_int[15:8] == 8'd30) & second_cyc)  | 	// lload_0
   	         ((opcode_int[15:8] == 8'd31) & second_cyc)  | 	// lload_1
   	         ((opcode_int[15:8] == 8'd32) & second_cyc)  | 	// lload_2
   	         ((opcode_int[15:8] == 8'd33) & second_cyc)  | 	// lload_3
   	         ((opcode_int[15:8] == 8'd38) & second_cyc)  | 	// dload_0
   	         ((opcode_int[15:8] == 8'd39) & second_cyc)  | 	// dload_1
   	         ((opcode_int[15:8] == 8'd40) & second_cyc)  | 	// dload_2
   	         ((opcode_int[15:8] == 8'd41) & second_cyc)   	// dload_3
	);

assign		curr_no_change_optop = !(curr_inc_optop_1 | curr_inc_optop_2 | 
					curr_inc_optop_3 | curr_inc_optop_4 | 
					curr_dec_optop_1);

// BG2 op sometimes pushes 1 item onto stack and sometimes 2. Because of
// this it's difficult to determine the dest_offset just from group
// information. Hence we need  to decode BG2 and then use grouping
// info. to calculate the offset. For ex. for LV LB BG2 (group_3_r)
// If BG2 pushes one item onto stack, then decoding BG2 we'll get dest
// offset as +1 (it consumes 2 and pushes 1), but if we use the group info.
// (in this case group_3), then offset is -2 +1 (since 2 operands needed by
// BG2 are now available within the instruction itself  instead of popping
// them from scache. Same holds good for groups  5 and 6 (LV BG2 and LV BG1)
// for groups 2 and 7 (LV LV OP and LV OP), dest offsets are 0 and +1 resp

assign	act_inc_optop_4 = curr_inc_optop_4 & !(group_3_r | group_5_r | group_6_r);

assign	act_inc_optop_3 = curr_inc_optop_3 & !(group_3_r | group_5_r | group_6_r) |
			  curr_inc_optop_4 & (group_5_r | group_6_r);

assign	act_inc_optop_2 =  curr_inc_optop_2 &!(group_3_r | group_5_r | group_6_r) |
			    curr_inc_optop_4 & (group_3_r) |
			    curr_inc_optop_3 & (group_5_r | group_6_r);

assign	act_inc_optop_1 =  curr_inc_optop_1 &!(group_3_r | group_5_r | group_6_r) |
			    curr_inc_optop_3 & (group_3_r) |
			    curr_inc_optop_2 & (group_5_r | group_6_r);

assign	act_no_change_optop = curr_no_change_optop &!(group_3_r | group_5_r | group_6_r) |
			    curr_inc_optop_2 & (group_3_r) |
			    curr_inc_optop_1 & (group_5_r | group_6_r);

assign	act_dec_optop_1 =  curr_dec_optop_1 &!(group_3_r | group_5_r | group_6_r) |
			    curr_no_change_optop & (group_5_r | group_6_r) |
			    curr_inc_optop_1 & (group_3_r);

assign	act_dec_optop_2 =  curr_dec_optop_1 & (group_5_r | group_6_r) |
			    curr_no_change_optop & (group_3_r) ;

assign	act_dec_optop_3 =  curr_dec_optop_1 & (group_3_r );



// Instead of providing the offset, we are now providing the selects to MUXes
// to improve timing 

assign	optop_incr_sel[7] = act_inc_optop_4 & !(group_7_r | group_2_r);
assign	optop_incr_sel[6] = act_inc_optop_3 & !(group_7_r | group_2_r);
assign	optop_incr_sel[5] = act_inc_optop_2 & !(group_7_r | group_2_r);
assign	optop_incr_sel[4] = (act_inc_optop_1 | group_7_r) & !group_2_r;
assign	optop_incr_sel[3] = act_dec_optop_1 & !(group_7_r | group_2_r);
assign	optop_incr_sel[2] = act_dec_optop_2 & !(group_7_r | group_2_r);
assign	optop_incr_sel[1] = act_dec_optop_3 & !(group_7_r | group_2_r);
assign	optop_incr_sel[0] = !(|optop_incr_sel[7:1]); 
			

/*
mux8_32		mux_dest_offset_int (.out(dest_offset_int),
				.in0(32'h0),
				.in1(32'hfffffff4),	// 2's complement of 4*-3
				.in2(32'hfffffff8),	// 2's complement of 4*-2
				.in3(32'hfffffffc),	// 2's complement of 4*-1
				.in4(32'h4),		// 4*1
				.in5(32'h8),		// 4*2
				.in6(32'hc),		// 4*3
				.in7(32'h10),		// 4*4
				.sel({
					act_inc_optop_4,
					act_inc_optop_3,
					act_inc_optop_2,
					act_inc_optop_1,
					act_dec_optop_1,
					act_dec_optop_2,
					act_dec_optop_3,
					(default_ch_optop | act_no_change_optop) 
				     }) );
				    
mux3_32		mux_dest_offset(.out(dest_offset),
				.in0(dest_offset_int),
				.in1(32'h0),
				.in2(32'h4),
				.sel ( {
					group_7_r,
					group_2_r,
					!(group_7_r | group_2_r)
					}) );
*/

assign	dest_we	= (

		(opcode_int[15:8] == 8'd1) |			// aconst_null
		(opcode_int[15:8] == 8'd2) |			// iconst_m1
		(opcode_int[15:8] == 8'd3) |			// iconst_0
		(opcode_int[15:8] == 8'd4) |			// iconst_1
		(opcode_int[15:8] == 8'd5) |			// iconst_2
		(opcode_int[15:8] == 8'd6) |			// iconst_3
		(opcode_int[15:8] == 8'd7) |			// iconst_4
		(opcode_int[15:8] == 8'd8) |			// iconst_5
		(opcode_int[15:8] == 8'd9) |			// lconst_0
		(opcode_int[15:8] == 8'd10) |			// lconst_1
		(opcode_int[15:8] == 8'd11) |			// fconst_0
		(opcode_int[15:8] == 8'd12) |			// fconst_1
		(opcode_int[15:8] == 8'd13) |			// fconst_2
		(opcode_int[15:8] == 8'd14) |			// dconst_0
		(opcode_int[15:8] == 8'd15) |			// dconst_1
		(opcode_int[15:8] == 8'd16) |			// bipush
		(opcode_int[15:8] == 8'd17) |			// sipush
		(opcode_int[15:8] == 8'd21) |			// iload
		(opcode_int[15:8] == 8'd22) |			// lload
		(opcode_int[15:8] == 8'd23) |			// fload
		(opcode_int[15:8] == 8'd24) |			// dload
		(opcode_int[15:8] == 8'd25) |			// aload
		(opcode_int[15:8] == 8'd26) |			// iload_0
		(opcode_int[15:8] == 8'd27) |			// iload_1
		(opcode_int[15:8] == 8'd28) |			// iload_2
		(opcode_int[15:8] == 8'd29) |			// iload_3
		(opcode_int[15:8] == 8'd30) |			// lload_0
		(opcode_int[15:8] == 8'd31) |			// lload_1
		(opcode_int[15:8] == 8'd32) |			// lload_2
		(opcode_int[15:8] == 8'd33) |			// lload_3
		(opcode_int[15:8] == 8'd34) |			// fload_0
		(opcode_int[15:8] == 8'd35) |			// fload_1
		(opcode_int[15:8] == 8'd36) |			// fload_2
		(opcode_int[15:8] == 8'd37) |			// fload_3
		(opcode_int[15:8] == 8'd38) |			// dload_0
		(opcode_int[15:8] == 8'd39) |			// dload_1
		(opcode_int[15:8] == 8'd40) |			// dload_2
		(opcode_int[15:8] == 8'd41) |			// dload_3
		(opcode_int[15:8] == 8'd42) |			// aload_0
		(opcode_int[15:8] == 8'd43) |			// aload_1
		(opcode_int[15:8] == 8'd44) |			// aload_2
		(opcode_int[15:8] == 8'd45) |			// aload_3
		(opcode_int[15:8] == 8'd89) |			// dup
		(opcode_int[15:8] == 8'd96) |			// iadd
		(opcode_int[15:8] == 8'd97) |			// ladd
		(opcode_int[15:8] == 8'd98) |			// fadd
		(opcode_int[15:8] == 8'd99) |			// dadd
		(opcode_int[15:8] == 8'd100) |			// isub
		(opcode_int[15:8] == 8'd101) |			// lsub
		(opcode_int[15:8] == 8'd102) |			// fsub
		(opcode_int[15:8] == 8'd103) |			// dsub
		(opcode_int[15:8] == 8'd104) |			// imul
		(opcode_int[15:8] == 8'd106) |			// fmul
		(opcode_int[15:8] == 8'd107) |			// dmul
		(opcode_int[15:8] == 8'd108) |			// idiv
		(opcode_int[15:8] == 8'd110) |			// fdiv
		(opcode_int[15:8] == 8'd111) |			// ddiv
		(opcode_int[15:8] == 8'd112) |			// irem
		(opcode_int[15:8] == 8'd114) |			// frem
		(opcode_int[15:8] == 8'd115) |			// drem
		(opcode_int[15:8] == 8'd116) |			// ineg
		(opcode_int[15:8] == 8'd117) |			// lneg
		(opcode_int[15:8] == 8'd118) |			// fneg
		(opcode_int[15:8] == 8'd119) |			// dneg
		(opcode_int[15:8] == 8'd120) |			// ishl
		(opcode_int[15:8] == 8'd121) |			// lshl
		(opcode_int[15:8] == 8'd122) |			// ishr
		(opcode_int[15:8] == 8'd123) |			// lshr
		(opcode_int[15:8] == 8'd124) |			// iushr
		(opcode_int[15:8] == 8'd125) |			// lushr
		(opcode_int[15:8] == 8'd126) |			// iand
		(opcode_int[15:8] == 8'd127) |			// iand
		(opcode_int[15:8] == 8'd128) |			// ior
		(opcode_int[15:8] == 8'd129) |			// ior
		(opcode_int[15:8] == 8'd130) |			// ixor
		(opcode_int[15:8] == 8'd131) |			// ixor
		(opcode_int[15:8] == 8'd132) |			// iinc
		(opcode_int[15:8] == 8'd133) |			// i2l
		(opcode_int[15:8] == 8'd134) |			// i2f
		(opcode_int[15:8] == 8'd135) |			// i2d
		(opcode_int[15:8] == 8'd137) |			// l2f
		(opcode_int[15:8] == 8'd138) |			// l2d
		(opcode_int[15:8] == 8'd139) |			// f2i
		(opcode_int[15:8] == 8'd140) |			// f2l
		(opcode_int[15:8] == 8'd141) |			// f2d
		(opcode_int[15:8] == 8'd142) |			// d2i
		(opcode_int[15:8] == 8'd143) |			// d2l
		(opcode_int[15:8] == 8'd144) |			// d2f
		(opcode_int[15:8] == 8'd145) |			// i2b
		(opcode_int[15:8] == 8'd146) |			// i2c
		(opcode_int[15:8] == 8'd147) |			// i2s
		((opcode_int[15:8] == 8'd148) & second_cyc) |	// lcmp
		(opcode_int[15:8] == 8'd149) |			// fcmpl
		(opcode_int[15:8] == 8'd150) |			// fcmpg
		((opcode_int[15:8] == 8'd151) & second_cyc) |	// dcmpl
		((opcode_int[15:8] == 8'd152) & second_cyc) |	// dcmpg
		(opcode_int[15:8] == 8'd168) |			// jsr
		(opcode_int[15:8] == 8'd201) |			// jsr_w
		(opcode_int[15:8] == 8'd237) |			// sethi
		(opcode_int[15:8] == 8'd238) |			// load_word_index
		(opcode_int[15:8] == 8'd239) |			// load_short_index
		(opcode_int[15:8] == 8'd240) |			// load_char_index
		(opcode_int[15:8] == 8'd241) |			// load_byte_index
		(opcode_int[15:8] == 8'd242) |			// load_ubyte_index
		(ext_opcode & (opcode_int[7:0] == 8'd0))| 	// load_ubyte
		(ext_opcode & (opcode_int[7:0] == 8'd1))| 	// load_byte
		(ext_opcode & (opcode_int[7:0] == 8'd2))| 	// load_char
		(ext_opcode & (opcode_int[7:0] == 8'd3))| 	// load_short
		(ext_opcode & (opcode_int[7:0] == 8'd4))| 	// load_word
		(ext_opcode & (opcode_int[7:0] == 8'd6))| 	// priv_read_dcache_tag
		(ext_opcode & (opcode_int[7:0] == 8'd7))| 	// priv_read_dcache_data
		(ext_opcode & (opcode_int[7:0] == 8'd10))| 	// load_char_oe
		(ext_opcode & (opcode_int[7:0] == 8'd11))| 	// load_short_oe
		(ext_opcode & (opcode_int[7:0] == 8'd12))| 	// load_word_oe
		(ext_opcode & (opcode_int[7:0] == 8'd14) 
						& first_cyc) | 	// priv_read_icache_tag
		(ext_opcode & (opcode_int[7:0] == 8'd15) 
						& first_cyc) | 	// priv_read_icache_data
		(ext_opcode & (opcode_int[7:0] == 8'd16))| 	// ncload_ubyte
		(ext_opcode & (opcode_int[7:0] == 8'd17))| 	// ncload_byte
		(ext_opcode & (opcode_int[7:0] == 8'd18))| 	// ncload_char
		(ext_opcode & (opcode_int[7:0] == 8'd19))| 	// ncload_short
		(ext_opcode & (opcode_int[7:0] == 8'd20))| 	// ncload_word
		(ext_opcode & (opcode_int[7:0] == 8'd21))| 	// iucmp
		(ext_opcode & (opcode_int[7:0] == 8'd23))| 	// cache_invalidate
		(ext_opcode & (opcode_int[7:0] == 8'd26))| 	// ncload_char_oe
		(ext_opcode & (opcode_int[7:0] == 8'd27))| 	// ncload_short_oe
		(ext_opcode & (opcode_int[7:0] == 8'd28))| 	// ncload_word_oe
		(ext_opcode & (opcode_int[7:0] == 8'd30))| 	// cache_flush
		(ext_opcode & (opcode_int[7:0] == 8'd31))| 	// cache_index_flush
		(ext_opcode & (opcode_int[7:0] == 8'd64))| 	// read_pc
		(ext_opcode & (opcode_int[7:0] == 8'd65))| 	// read_vars
		(ext_opcode & (opcode_int[7:0] == 8'd66))| 	// read_frame
		(ext_opcode & (opcode_int[7:0] == 8'd67))| 	// read_optop
		(ext_opcode & (opcode_int[7:0] == 8'd68))| 	// priv_read_oplim
		(ext_opcode & (opcode_int[7:0] == 8'd69))| 	// read_const_pool
		(ext_opcode & (opcode_int[7:0] == 8'd70))| 	// priv_read_psr
		(ext_opcode & (opcode_int[7:0] == 8'd71))| 	// priv_read_trapbase
		(ext_opcode & (opcode_int[7:0] == 8'd72))| 	// priv_read_lockcount0
		(ext_opcode & (opcode_int[7:0] == 8'd73))| 	// priv_read_lockcount1
		(ext_opcode & (opcode_int[7:0] == 8'd76))| 	// priv_read_lockaddr0
		(ext_opcode & (opcode_int[7:0] == 8'd77))| 	// priv_read_lockaddr1
		(ext_opcode & (opcode_int[7:0] == 8'd80))| 	// priv_read_userrange1
		(ext_opcode & (opcode_int[7:0] == 8'd81))| 	// priv_read_gc_config
		(ext_opcode & (opcode_int[7:0] == 8'd82))| 	// priv_read_brk1a
		(ext_opcode & (opcode_int[7:0] == 8'd83))| 	// priv_read_brk2a
		(ext_opcode & (opcode_int[7:0] == 8'd84))| 	// priv_read_brk12c
		(ext_opcode & (opcode_int[7:0] == 8'd85))| 	// priv_read_userrange2
		(ext_opcode & (opcode_int[7:0] == 8'd87))| 	// priv_read_versionid
		(ext_opcode & (opcode_int[7:0] == 8'd88))| 	// priv_read_hcr
		(ext_opcode & (opcode_int[7:0] == 8'd89))| 	// priv_read_sc_bottom
		(ext_opcode & (opcode_int[7:0] == 8'd90))| 	// read_global0
		(ext_opcode & (opcode_int[7:0] == 8'd91))| 	// read_global1
		(ext_opcode & (opcode_int[7:0] == 8'd92))| 	// read_global2
		(ext_opcode & (opcode_int[7:0] == 8'd93)) 	// read_global3

	);
endmodule

[Up: rcu_ctl optop_dec]
module optop_decoder (

	opcode,
	valid,
	second_cyc,
	group_3_r,
	group_5_r,
	group_6_r,
	net_optop_sel1,
	net_optop_sel2,
	net_optop_sel

);

input	[15:0]	opcode;
input		valid;
input		second_cyc;
input		group_3_r;
input		group_5_r;
input		group_6_r;
output	[4:0]	net_optop_sel1;
output	[3:0]	net_optop_sel2;
output	[1:0]	net_optop_sel;

wire	[15:0]	opcode_int;
wire		inc_optop_1;
wire		inc_optop_2;
wire		inc_optop_3;
wire		inc_optop_4;
wire		dec_optop_1;
wire		dec_optop_2;
wire		ext_opcode;
wire		no_change;
wire		no_change_optop;

assign  opcode_int[15:0] = (opcode[15:0] ) & ({16{valid}});
assign	ext_opcode	= (opcode[15:8] == 8'd255);

assign	dec_optop_1	= (

		(opcode_int[15:8] == 8'd1) |			// aconst_null	
		(opcode_int[15:8] == 8'd2) |			// iconst_m1	
		(opcode_int[15:8] == 8'd3) |			// iconst_0	
		(opcode_int[15:8] == 8'd4) |			// iconst_1	
		(opcode_int[15:8] == 8'd5) |			// iconst_2	
		(opcode_int[15:8] == 8'd6) |			// iconst_3	
		(opcode_int[15:8] == 8'd7) |			// iconst_4	
		(opcode_int[15:8] == 8'd8) |			// iconst_5	
		(opcode_int[15:8] == 8'd11) |			// fconst_0	
		(opcode_int[15:8] == 8'd12) |			// fconst_1	
		(opcode_int[15:8] == 8'd13) |			// fconst_2	
		(opcode_int[15:8] == 8'd16) |			// bipush	
		(opcode_int[15:8] == 8'd17) |			// sipush	
		(opcode_int[15:8] == 8'd21) |			// iload	
		(opcode_int[15:8] == 8'd23) |			// fload	
		(opcode_int[15:8] == 8'd25) |			// aload	
		(opcode_int[15:8] == 8'd26) |			// iload_0	
		(opcode_int[15:8] == 8'd27) |			// iload_1	
		(opcode_int[15:8] == 8'd28) |			// iload_2	
		(opcode_int[15:8] == 8'd29) |			// iload_3	
		(opcode_int[15:8] == 8'd34) |			// fload_0	
		(opcode_int[15:8] == 8'd35) |			// fload_1	
		(opcode_int[15:8] == 8'd36) |			// fload_2	
		(opcode_int[15:8] == 8'd37) |			// fload_3	
		(opcode_int[15:8] == 8'd42) |			// aload_0	
		(opcode_int[15:8] == 8'd43) |			// aload_1	
		(opcode_int[15:8] == 8'd44) |			// aload_2	
		(opcode_int[15:8] == 8'd45) |			// aload_3	
		(opcode_int[15:8] == 8'd89) |			// dup	
		(opcode_int[15:8] == 8'd90) |			// dup_x1	
		(opcode_int[15:8] == 8'd91) |			// dup_x2	
		(opcode_int[15:8] == 8'd133) |			// i2l	
		((opcode_int[15:8] == 8'd135) & second_cyc) |	// i2d	
		((opcode_int[15:8] == 8'd140) & second_cyc) |	// f2l	
		((opcode_int[15:8] == 8'd141) & second_cyc) |	// f2d	
		(opcode_int[15:8] == 8'd168) |			// jsr	
		(opcode_int[15:8] == 8'd201) |			// jsr_w	
		(opcode_int[15:8] == 8'd203) |			// ldc_quick	
		(opcode_int[15:8] == 8'd204) |			// ldc_w_quick	
		(opcode_int[15:8] == 8'd208) |			// getfield2_quick	
		(opcode_int[15:8] == 8'd210) |			// getstatic_quick	
		(opcode_int[15:8] == 8'd232) |			// agetstatic_quick	
		(opcode_int[15:8] == 8'd234) |			// aldc_quick	
		(opcode_int[15:8] == 8'd235) |			// aldc_w_quick	
		(opcode_int[15:8] == 8'd238) |			// load_word_index	
		(opcode_int[15:8] == 8'd239) |			// load_short_index	
		(opcode_int[15:8] == 8'd240) |			// load_char_index	
		(opcode_int[15:8] == 8'd241) |			// load_byte_index	
		(opcode_int[15:8] == 8'd242) |			// load_ubyte_index	
		( ext_opcode & (opcode_int[7:0] == 8'd55)) |	// get_current_class	
		( ext_opcode & (opcode_int[7:0] == 8'd64)) |	// read_pc	
		( ext_opcode & (opcode_int[7:0] == 8'd65)) |	// read_vars	
		( ext_opcode & (opcode_int[7:0] == 8'd66)) |	// read_frame	
		( ext_opcode & (opcode_int[7:0] == 8'd67)) |	// read_optop	
		( ext_opcode & (opcode_int[7:0] == 8'd68)) |	// read_oplim	
		( ext_opcode & (opcode_int[7:0] == 8'd69)) |	// read_const_pool	
		( ext_opcode & (opcode_int[7:0] == 8'd70)) |	// priv_read_psr	
		( ext_opcode & (opcode_int[7:0] == 8'd71)) |	// priv_read_trapbase	
		( ext_opcode & (opcode_int[7:0] == 8'd72)) |	// priv_read_lockcount0	
		( ext_opcode & (opcode_int[7:0] == 8'd73)) |	// priv_read_lockcount1	
		( ext_opcode & (opcode_int[7:0] == 8'd76)) |	// priv_read_lockaddr0	
		( ext_opcode & (opcode_int[7:0] == 8'd77)) |	// priv_read_lockaddr1	
		( ext_opcode & (opcode_int[7:0] == 8'd80)) |	// priv_readuserrange1	
		( ext_opcode & (opcode_int[7:0] == 8'd81)) |	// priv_read_gc_config	
		( ext_opcode & (opcode_int[7:0] == 8'd82)) |	// priv_read_brk1a	
		( ext_opcode & (opcode_int[7:0] == 8'd83)) |	// priv_read_brk2a	
		( ext_opcode & (opcode_int[7:0] == 8'd84)) |	// priv_read_brk12c	
		( ext_opcode & (opcode_int[7:0] == 8'd85)) |	// priv_read_userrange2	
		( ext_opcode & (opcode_int[7:0] == 8'd87)) |	// priv_read_versionid	
		( ext_opcode & (opcode_int[7:0] == 8'd88)) |	// priv_read_hcr	
		( ext_opcode & (opcode_int[7:0] == 8'd89)) |	// priv_read_sc_bottom	
		( ext_opcode & (opcode_int[7:0] == 8'd90)) |	// priv_read_global0	
		( ext_opcode & (opcode_int[7:0] == 8'd91)) |	// priv_read_global1	
		( ext_opcode & (opcode_int[7:0] == 8'd92)) |	// priv_read_global2	
		( ext_opcode & (opcode_int[7:0] == 8'd93)) 	// priv_read_global3	

	);


assign dec_optop_2 = (

		((opcode_int[15:8] == 8'd9) & second_cyc) |	// lconst_0	
		((opcode_int[15:8] == 8'd10) & second_cyc) |	// lconst_1	
		((opcode_int[15:8] == 8'd14) & second_cyc) |	// dconst_0	
		((opcode_int[15:8] == 8'd15) & second_cyc) |	// dconst_1	
		((opcode_int[15:8] == 8'd22) & second_cyc) |	// lload
		((opcode_int[15:8] == 8'd24) & second_cyc) |	// dload
		((opcode_int[15:8] == 8'd30) & second_cyc) |	// lload_0	
		((opcode_int[15:8] == 8'd31) & second_cyc) |	// lload_1	
		((opcode_int[15:8] == 8'd32) & second_cyc) |	// lload_2	
		((opcode_int[15:8] == 8'd33) & second_cyc) |	// lload_3	
		((opcode_int[15:8] == 8'd38) & second_cyc) |	// dload_0	
		((opcode_int[15:8] == 8'd39) & second_cyc) |	// dload_1	
		((opcode_int[15:8] == 8'd40) & second_cyc) |	// dload_2	
		((opcode_int[15:8] == 8'd41) & second_cyc) |	// dload_3	
		(opcode_int[15:8] == 8'd92) |			// dup2	
		(opcode_int[15:8] == 8'd93) |			// dup2_x1	
		(opcode_int[15:8] == 8'd94) |			// dup2_x2	
		(opcode_int[15:8] == 8'd205) |			// ldc2_w_quick	
		(opcode_int[15:8] == 8'd212) 			// getstatic2_quick	
	);

assign	inc_optop_1 = (

		(opcode_int[15:8] == 8'd46) |			// iaload
		(opcode_int[15:8] == 8'd48) |			// faload
		(opcode_int[15:8] == 8'd50) |			// aaload
		(opcode_int[15:8] == 8'd51) |			// baload
		(opcode_int[15:8] == 8'd52) |			// caload
		(opcode_int[15:8] == 8'd53) |			// saload
		(opcode_int[15:8] == 8'd54) |			// istore
		(opcode_int[15:8] == 8'd56) |			// fstore
		(opcode_int[15:8] == 8'd58) |			// astore
		(opcode_int[15:8] == 8'd59) |			// istore_0
		(opcode_int[15:8] == 8'd60) |			// istore_1
		(opcode_int[15:8] == 8'd61) |			// istore_2
		(opcode_int[15:8] == 8'd62) |			// istore_3
		(opcode_int[15:8] == 8'd67) |			// fstore_0
		(opcode_int[15:8] == 8'd68) |			// fstore_1
		(opcode_int[15:8] == 8'd69) |			// fstore_2
		(opcode_int[15:8] == 8'd70) |			// fstore_3
		(opcode_int[15:8] == 8'd75) |			// astore_0
		(opcode_int[15:8] == 8'd76) |			// astore_1
		(opcode_int[15:8] == 8'd77) |			// astore_2
		(opcode_int[15:8] == 8'd78) |			// astore_3
		(opcode_int[15:8] == 8'd87) |			// pop
		(opcode_int[15:8] == 8'd96) |			// iadd
		(opcode_int[15:8] == 8'd98) |			// fadd
		(opcode_int[15:8] == 8'd100) |			// isub
		(opcode_int[15:8] == 8'd102) |			// fsub
		(opcode_int[15:8] == 8'd104) |			// imul
		(opcode_int[15:8] == 8'd106) |			// fmul
		(opcode_int[15:8] == 8'd108) |			// idiv
		(opcode_int[15:8] == 8'd110) |			// fdiv
		(opcode_int[15:8] == 8'd112) |			// irem
		(opcode_int[15:8] == 8'd114) |			// frem
		(opcode_int[15:8] == 8'd120) |			// ishl
		((opcode_int[15:8] == 8'd121) & second_cyc) |	// lshl
		(opcode_int[15:8] == 8'd122) |			// ishr
		((opcode_int[15:8] == 8'd123) & second_cyc) |	// lshr
		(opcode_int[15:8] == 8'd124) |			// iushr
		((opcode_int[15:8] == 8'd125) & second_cyc) |	// lushr
		(opcode_int[15:8] == 8'd126) |			// iand
		(opcode_int[15:8] == 8'd128) |			// ior
		(opcode_int[15:8] == 8'd130) |			// ixor
		(opcode_int[15:8] == 8'd136) |			// l2i
		(opcode_int[15:8] == 8'd137) |			// l2f
		(opcode_int[15:8] == 8'd142) |			// d2i
		(opcode_int[15:8] == 8'd144) |			// d2f
		(opcode_int[15:8] == 8'd149) |			// fcmpl
		(opcode_int[15:8] == 8'd150) |			// fcmpg
		(opcode_int[15:8] == 8'd153) |			// ifeq
		(opcode_int[15:8] == 8'd154) |			// ifne
		(opcode_int[15:8] == 8'd155) |			// iflt
		(opcode_int[15:8] == 8'd156) |			// ifge
		(opcode_int[15:8] == 8'd157) |			// ifgt
		(opcode_int[15:8] == 8'd158) |			// ifle
		(opcode_int[15:8] == 8'd170) |			// tableswitch
		(opcode_int[15:8] == 8'd172) |			// ireturn
		(opcode_int[15:8] == 8'd174) |			// freturn
		(opcode_int[15:8] == 8'd176) |			// areturn
		(opcode_int[15:8] == 8'd194) |			// monitorenter
		(opcode_int[15:8] == 8'd195) |			// monitorexit
		(opcode_int[15:8] == 8'd198) |			// ifnull
		(opcode_int[15:8] == 8'd199) |			// ifnonnull
		(opcode_int[15:8] == 8'd211) |			// putstatic_quick
		(opcode_int[15:8] == 8'd229) |			// nunull_quick
		(opcode_int[15:8] == 8'd233) |			// aputstatic_quick
		(opcode_int[15:8] == 8'd243) |			// store_word_index
		(opcode_int[15:8] == 8'd244) |			// nastore_word_index
		(opcode_int[15:8] == 8'd245) |			// store_short_index
		(opcode_int[15:8] == 8'd246) |			// store_byte_index
		(ext_opcode & (opcode_int[7:0] == 8'd21)) |	// iucmp
		(ext_opcode & (opcode_int[7:0] == 8'd62)) |	// zero_line
		(ext_opcode & (opcode_int[7:0] == 8'd96)) |	// write_pc
		(ext_opcode & (opcode_int[7:0] == 8'd97) &
						second_cyc) |	// write_vars
		(ext_opcode & (opcode_int[7:0] == 8'd98) &
						second_cyc) |	// write_frame
		(ext_opcode & (opcode_int[7:0] == 8'd99) &
						second_cyc) |	// write_optop
		(ext_opcode & (opcode_int[7:0] == 8'd100) &
						second_cyc) |	// write_oplim
		(ext_opcode & (opcode_int[7:0] == 8'd101) &
						second_cyc) |	// write_const_pool
		(ext_opcode & (opcode_int[7:0] == 8'd102) &
						second_cyc) |	// priv_write_psr
		(ext_opcode & (opcode_int[7:0] == 8'd103) &
						second_cyc) |	// priv_write_trapbase
		(ext_opcode & (opcode_int[7:0] == 8'd104) &
						second_cyc) |	// priv_write_lockcount0
		(ext_opcode & (opcode_int[7:0] == 8'd105) &
						second_cyc) |	// priv_write_lockcount1
		(ext_opcode & (opcode_int[7:0] == 8'd108) &
						second_cyc) |	// priv_write_lockaddr0
		(ext_opcode & (opcode_int[7:0] == 8'd109) &
						second_cyc) |	// priv_write_lockaddr1
		(ext_opcode & (opcode_int[7:0] == 8'd112) &
						second_cyc) |	// priv_write_userrange1
		(ext_opcode & (opcode_int[7:0] == 8'd113) &
						second_cyc) |	// priv_write_gc_config
		(ext_opcode & (opcode_int[7:0] == 8'd114) &
						second_cyc) |	// priv_write_brk1a
		(ext_opcode & (opcode_int[7:0] == 8'd115) &
						second_cyc) |	// priv_write_brk2a
		(ext_opcode & (opcode_int[7:0] == 8'd116) &
						second_cyc) |	// priv_write_brk12c
		(ext_opcode & (opcode_int[7:0] == 8'd117) &
						second_cyc) |	// priv_write_userrange2
		(ext_opcode & (opcode_int[7:0] == 8'd121) &
						second_cyc) |	// priv_write_sc_bottom
		(ext_opcode & (opcode_int[7:0] == 8'd122)) |	// write_gl0
		(ext_opcode & (opcode_int[7:0] == 8'd123)) |	// write_gl1
		(ext_opcode & (opcode_int[7:0] == 8'd124)) |	// write_gl2
		(ext_opcode & (opcode_int[7:0] == 8'd125)) 	// write_gl3
	);

assign	inc_optop_2 = (

		((opcode_int[15:8] == 8'd55) & second_cyc) |	// lstore
Next123
HierarchyFilesModulesSignalsTasksFunctionsHelp

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

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