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: iu pipe]
module	pipe (

	// OUTPUTS
	arch_pc,
	pc_r,
	opcode_pc_e,
	arch_optop,
	iu_optop_din,
	optop_e,
	optop_e_v1,
	optop_e_v2,
	inst_vld,
	inst_vld_e,
	iu_optop_int_we,
	reissue_c,
	fold_c,
	fold_sc_miss_e,
	squash_fold,
	lduse_bypass,
	rs1_bypass_hold,
	rs2_bypass_hold,
	sc_dcache_req,
	sc_data_vld,
	icu_data_vld,
	icu_diag_ld_c,
	sc_rd_miss_sel,
	kill_inst_d,
	kill_inst_e,
	kill_inst_e_int,
	hold_ucode,
	hold_r,
	hold_e,
	hold_c,
	hold_c_int,
	iu_perf_sgnl,
	rs1_mux_sel_din,
	forward_c_sel_din,
	
 	// INPUTS
        icu_pc_d,
        optop_shft_r,
	pc_offset_r,
        fold_r,
	iu_brtaken_e,
	iu_trap_c,
	async_error,
	iu_trap_r,
	trap_vld_r,
	trap_vld_e,
	trap_in_progress,
        inst_vld_r,
        wr_optop_e,
        iu_data_e,
	icu_hold,      
        first_cyc_r,     
        load_c,         
	ucode_stk_rd,
        ucode_done,     
	ucode_last,
        ru_byp_rs1_e_hit,
        ru_byp_rs2_e_hit,
	rs2_bypass_vld,
	rs1_bypass_vld,
        scache_rd_miss_e,
	scache_miss,
	lduse_hold,
        iu_data_vld, 
	powerdown_op_e,

	clk,
	reset_l,
	sm,
	sin,
	so

);

output	[31:0]		arch_pc;		// Architectural PC
output	[31:0]		pc_r;			// PC R stage
output	[31:0]		opcode_pc_e;		// PC of opcode in E stage
output	[31:0]		arch_optop; 		// Architectural OPTOP
output	[31:0]		iu_optop_din; 		// Signal at the din input of arch optop flop
output	[31:0]		optop_e;		// Temporary Optop used by following inst
output	[31:0]		optop_e_v1;		// Temporary Optop used by following inst
output	[31:0]		optop_e_v2;		// Temporary Optop used by following inst
output	[2:0]		inst_vld;	// Valid bits for the pipe to keep track of instructions
output			inst_vld_e;
output			iu_optop_int_we;	// This is the write enable for the flop
						// in SMU to generate it's own version of optop
output			squash_fold;	// disable folding. folded group has trapped
output			sc_dcache_req;	// stack miss dcache request
output			sc_data_vld;	// dcache data available is due to S$ read miss
output			icu_data_vld;	// icu diagnostic data available

output			sc_rd_miss_sel;	// used to select D$ data for S$ read misses
output			lduse_bypass;	// bypass data from DCU on load-use case
output			rs1_bypass_hold;// hold rs1 data
output			rs2_bypass_hold;// hold rs2 data
output			kill_inst_d;	// kill instruction in D stage
output			kill_inst_e;	// kill DCU requests/priv writes in E stage
output			kill_inst_e_int;// kill DCU requests/priv writes in E stage
output			reissue_c;	// reissue the instruction which is in C stage
output			fold_c;		// folded group in C stage
output			fold_sc_miss_e;	// folded group misses S$ 
input			hold_r;		// hold contents of R stage
input			hold_e;		// hold contents of E stage 
input			hold_c;		// hold contents of C stage 
input			hold_c_int;		// hold contents of C stage 
input			hold_ucode;
output			iu_perf_sgnl;	// performance monitor signals
output			rs1_mux_sel_din;	// This signal selects scache data in case of s$ misses
output			forward_c_sel_din;	// This signal selects DCU data for forward data_c
					// for RS1
output			scache_miss;
output			lduse_hold;



input	[31:0]		icu_pc_d;	// PC of first instruction of Ibuffer
input	[31:0]		optop_shft_r;	// Shift in optop due to instructions dispatched.
input	[2:0]		pc_offset_r;	// pc offset to calculate PC of branching instr.
input			iu_brtaken_e;	// Branch has been taken. need to squash vld bits
input			iu_trap_c;	// Trap has been taken need to squash valid bits.
input			async_error;	// asynchronous error in C stage
input			iu_trap_r;	// Trap in R stage.need to start trapframe building
input			trap_vld_r;	// possible trap in R stage
input			trap_vld_e;	// possible trap in E stage
input			trap_in_progress;// trap frame building in R stage
input			inst_vld_r;	// Instruction in R stage is valid
input	[31:0]		iu_data_e;	// Data bus for write to optop on priv_write_optop
input			icu_hold;	// icu unable to service request.
input			ucode_stk_rd;	// ucode reading stackcache
input			first_cyc_r;	// first cycle of a 2 cycle op
input			load_c;		// load instruction in C stage
input			ucode_done;	// ucode is free accept new instruction
input			ucode_last;	// ucode's last  cycle
input			ru_byp_rs1_e_hit;// rs1 bypass hit e stage destination
input			ru_byp_rs2_e_hit;// rs2 bypass hit e stage destination
input			rs2_bypass_vld;	//  instruction uses RS2 bypass
input			rs1_bypass_vld;	//  instruction uses RS1 bypass
input			scache_rd_miss_e;// stack cache read miss
input			icu_diag_ld_c;	// diagnostic load in C stage
input			iu_data_vld;	// data from dcache valid.
input			fold_r;		// folded group in R stage
input			wr_optop_e;	// write to optop register
input			powerdown_op_e;	// powerdown inst in E
input			clk;		
input			reset_l;
input			sm;
input			sin;
output			so;

wire	[3:0]		optop_sel_e;
wire	[3:0]		optop_sel_c;
wire	[2:0]		optop_enable;
wire	[2:0]		pc_enable;


pipe_dpath	pipe_dpath(
			.arch_pc		(arch_pc[31:0]),
			.pc_r			(pc_r[31:0]),
			.opcode_pc_e		(opcode_pc_e[31:0]),
			.arch_optop		(arch_optop[31:0]),
			.iu_optop_din		(iu_optop_din[31:0]),
			.optop_e		(optop_e[31:0]),
			.optop_e_v1		(optop_e_v1[31:0]),
			.optop_e_v2		(optop_e_v2[31:0]),
			.optop_sel_e		(optop_sel_e[3:0]),
			.optop_sel_c		(optop_sel_c[3:0]),
			.optop_enable		(optop_enable[2:0]),
			.pc_enable		(pc_enable[2:0]),
			.optop_shft_r		(optop_shft_r[31:0]),
			.pc_offset_r		(pc_offset_r[2:0]),
			.iu_data_e		(iu_data_e[31:0]),
			.icu_pc_d		(icu_pc_d[31:0]),
			.trap_in_progress	(trap_in_progress),
			.clk			(clk),
			.reset_l			(reset_l),
			.sm			(),
			.sin			(),
			.so			());


pipe_cntl	pipe_cntl(
			.inst_vld		(inst_vld[2:0]),
			.inst_vld_e_v1		(inst_vld_e),
			.sc_dcache_req		(sc_dcache_req),
			.sc_data_vld		(sc_data_vld),
			.squash_fold		(squash_fold),
			.iu_optop_int_we	(iu_optop_int_we),
			.sc_rd_miss_sel		(sc_rd_miss_sel),
			.lduse_bypass		(lduse_bypass),
			.optop_sel_e		(optop_sel_e[3:0]),
			.optop_sel_c		(optop_sel_c[3:0]),
			.optop_enable           (optop_enable[2:0]),
                        .pc_enable              (pc_enable[2:0]),
			.kill_inst_d		(kill_inst_d),
			.kill_inst_e		(kill_inst_e),
			.kill_inst_e_int	(kill_inst_e_int),
			.reissue_c		(reissue_c),
			.rs1_bypass_hold	(rs1_bypass_hold),
			.rs2_bypass_hold	(rs2_bypass_hold),
			.fold_c			(fold_c),
			.fold_sc_miss_e		(fold_sc_miss_e),
			.hold_r			(hold_r),
			.hold_e			(hold_e),
			.hold_c			(hold_c),
			.hold_c_int		(hold_c_int),
			.hold_ucode		(hold_ucode),
			.iu_perf_sgnl		(iu_perf_sgnl),
			.rs1_mux_sel_din	(rs1_mux_sel_din),
			.forward_c_sel_din	(forward_c_sel_din),
			.iu_brtaken_e		(iu_brtaken_e),
			.iu_trap_c		(iu_trap_c),
			.async_error		(async_error),
			.iu_trap_r		(iu_trap_r),
			.trap_vld_r		(trap_vld_r),
			.trap_vld_e		(trap_vld_e),
			.trap_in_progress	(trap_in_progress),
			.icu_hold		(icu_hold),
			.first_cyc_r		(first_cyc_r),
			.load_c			(load_c),
			.ucode_done		(ucode_done),
			.ucode_stk_rd		(ucode_stk_rd),
			.ucode_last		(ucode_last),
			.ru_byp_rs1_e_hit	(ru_byp_rs1_e_hit),
			.ru_byp_rs2_e_hit	(ru_byp_rs2_e_hit),
			.rs1_bypass_vld		(rs1_bypass_vld),
			.rs2_bypass_vld		(rs2_bypass_vld),
			.scache_rd_miss_e	(scache_rd_miss_e),
			.scache_miss		(scache_miss),
			.lduse_hold		(lduse_hold),
			.icu_data_vld		(icu_data_vld),
			.icu_diag_ld_c		(icu_diag_ld_c),
			.iu_data_vld		(iu_data_vld),
			.powerdown_op_e		(powerdown_op_e),
			.fold_r			(fold_r),
			.wr_optop_e		(wr_optop_e),
			.inst_vld_r		(inst_vld_r),
			.clk			(clk),
			.sm			(),
			.reset_l			(reset_l),
			.sin			(),
			.so			());


endmodule

HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Wed Mar 24 09:45:53 1999
From: /import/jet-pj2-sim/rahim/picoJava-II/design/iu/pipe/rtl/pipe.v

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