HierarchyFilesModulesSignalsTasksFunctionsHelp

/******************************************************************************/ 
/*                                                                            */ 
/* Copyright (c) 1999 Sun Microsystems, Inc. All rights reserved.             */ 
/*                                                                            */ 
/* The contents of this file are subject to the current version of the Sun    */ 
/* Community Source License, microSPARCII ("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 Microsystems, Inc. has intellectual property rights relating to the    */ 
/* technology embodied in these files. In particular, and without limitation, */ 
/* these intellectual property rights may include one or more U.S. patents,   */ 
/* foreign patents, or pending applications.                                  */ 
/*                                                                            */ 
/* Sun, Sun Microsystems, the Sun logo, all Sun-based trademarks and logos,   */ 
/* Solaris, Java and all Java-based trademarks and logos are trademarks or    */ 
/* registered trademarks of Sun Microsystems, Inc. in the United States and   */ 
/* other countries. microSPARC is a trademark or registered trademark of      */ 
/* SPARC International, Inc. All SPARC trademarks are used under license and  */ 
/* are trademarks or registered trademarks of SPARC International, Inc. in    */ 
/* the United States and other countries. Products bearing SPARC trademarks   */ 
/* are based upon an architecture developed by Sun Microsystems, Inc.         */ 
/*                                                                            */ 
/******************************************************************************/ 
// *************************************************************************
// @(#)rl_dpc.v	1.23 10/15/93
// rl_dpc.v
//
//	Description:
//		The Data Path Controller block of memory subsystem in SingleSPARC.
//		Refer to SingleSPARC Hardware Spec, section 2.7.4 for block diagram
//		and more information.
//
//
//	Dependencies:
//		mem_cells.vpp defines.v dpc_bi_tri.v dpc_core.v
//		dpc_logic.v dpc_cont.v dpc_par.v dpc_dpath.v
//
//
//
// *************************************************************************


// *************************************************************************
// This is the the DPC block. It has all the inter-block connections,
//	the 3-state buffers and bi-dir pads.
[Up: rl_memif_major dpc]
module rl_dpc	(dp_perr, b_memdata_out, b_mempar_out,
	   			 mc_mdata0, dp_ben,
				 bd_mux_out1, bd_mux_out0, mc_mdata_en0, 
				 b_memdata_in, b_mempar_in,
				 mc_dpct, mc_curr_st, mc_odat_hld,
				 mm_oddmpar, mm_parity_en,
				 pcic_afxm_db_oen,
				 ss_reset, ss_scan_mode, ss_clock,
				 mm_issue_req, mm_mreq,
				 mc_cfb_data, mm_misc2cf, mm_2nd_wd, mc_mbsy,
				 mm_fb_req,
				 quad_sel, quad_sel_dwd, out_hld_3, out_hld_2,
				 am_gnt_l, valid_l, am_read, sync_t0
				 );

	output	[1:0]	dp_perr;	  	// Parity-Error condition bits.
	output	[63:0]	b_memdata_out ;	// Data out to the Data Pads.
	output	[1:0]	b_mempar_out;	// Parity out to the Parity pads.
	output	[31:0]	mc_mdata0;	  	// Write Lo-word to internal dat_bus.
//	output	[31:0]	mc_mdata1;	  	// Write Hi-word to internal dat_bus.
//	output			dp_buf0_en;		// Internal Tri-enable control to MMU.
	output			dp_ben;			// External Tri-enable control to IO-pad.
	output	[63:0]		mc_cfb_data;

        output  quad_sel;
        output  quad_sel_dwd;
        output  out_hld_3;
        output  out_hld_2;


	input	[31:0]	bd_mux_out1;	// In from internal data bus.
	input	[31:0]	bd_mux_out0;	// In from internal data bus.
	input			mc_mdata_en0;	// Tri_enable, Wr Lo_word, from MMU.
//	input			mc_mdata_en1;	// Tri_enable, Wr Hi_word, from MMU.
	input	[63:0]	b_memdata_in ;	// Data in from Data Pads.
	input	[1:0]	b_mempar_in;	// Parity in from the Parity pads.
								  	//	bd_mdat bus, when this is asserted.
	input	[8:0]	mc_curr_st;	  	// MCB current state.
	input			mc_odat_hld;  	// MCB in Idle when 0.
	input	[5:0]	mc_dpct;	  	// DPC control bus from MCB.
	input			mm_oddmpar;	  	// Selects odd/even parity.
	input			mm_parity_en;	  	// Selects parity enable.
        input  pcic_afxm_db_oen;                //IIep 2.0: dma_rd par c
    input           ss_reset;		// System Reset.
	input			ss_scan_mode;
	input			ss_clock;		// Free running system clock.
//        input       mm_wbstben0;        // strobe for 0th word of store double.
//        input       mm_wbstben1;        // strobe for 1st word of store double.
        input       mm_issue_req;        // 
        input   [3:0]   mm_mreq;        // 
	input	mm_misc2cf;
	input	mm_2nd_wd;
	input	mc_mbsy;
	input	mm_fb_req;
 	input   am_gnt_l;           // IIe signal : DRAM bus granted to Falcon.
        input   valid_l;                // IIe signal : DMA r/w data valid
        input   am_read;                // IIe signal : DMA r/~w direction
        input       sync_t0;    	//IIep 2.0: for dma read par chk




	wire	[63:0]	rid ;		  	// Data in to internal bd_mdata bus.
	wire	[31:0]  mdata0;  // Lo & Hi uni-dir Wr data bus
//	wire	[31:0]  mdata1;  // Lo & Hi uni-dir Wr data bus
									//  from rl_dpc_core.
//	wire			mdata_en1r;		// reg'd Tri_enable to tri32 Hi_wrd
	wire			mdata_en0;		// scan_en gated Tri_enable to tri32 Lo_wrd
//	wire			mdata_en1;		// scan_en gated Tri_enable to tri32 Hi_wrd
	wire			fix_1032;		// see comments below

	wire			Gnd = 1'b0 ;

	wire 			enable_qlfr = ~(ss_reset | ss_scan_mode);

/* remove 1 mc_mdata_en,
	GReg1	hi_wrd_en (mdata_en1r, ((mc_mdata_en1)&(enable_qlfr)), 
					   ss_clock, Gnd);
	// Per fix for bug#1032, the "mdata_en1" is now gated with
	// a new signal "fix_1032" that is forced to "1" while ss_reset=1
	// or ss_scan_mode=1
	assign fix_1032 = (ss_reset ? ss_reset : ss_scan_mode );
	assign	mdata_en1 = (mdata_en1r & ~fix_1032);
	
	GReg1	lo_wrd_en (mdata_en0r, ((mc_mdata_en0)&(enable_qlfr)), 
					   ss_clock, Gnd);
	assign	mdata_en0 = (mdata_en0r & ~ss_scan_mode);

*/

// enable needs to be 1 cycle earlier than data using fj tristate cell.
	assign fix_1032 = (ss_reset ? ss_reset : ss_scan_mode );
	wire	mdata_en0_p = ((mc_mdata_en0)&(enable_qlfr)&(~fix_1032));
/*
        GReg1   lo_wrd_en (mdata_en0r, ((mc_mdata_en0)&(enable_qlfr)),
                                           ss_clock, Gnd);
        assign  mdata_en0 = (mdata_en0r & ~fix_1032);
*/

	rl_dpc_core	   dpc_core( dp_perr, mdata0 , 
	   				b_memdata_out, b_mempar_out, dp_ben,
	   				bd_mux_out1, bd_mux_out0, b_memdata_in, b_mempar_in,
					mc_dpct, mc_curr_st, mc_odat_hld,
					mm_oddmpar, mm_parity_en, 
					pcic_afxm_db_oen,
					ss_scan_mode, ss_clock,
					mm_issue_req, mm_mreq,
					mc_cfb_data, mm_misc2cf, mm_2nd_wd, 
					mc_mbsy, mm_fb_req,
					quad_sel, quad_sel_dwd, out_hld_3, out_hld_2,
					am_gnt_l, valid_l, am_read, 
					sync_t0
					);

// Added spare cells 

        // spares  rl_dpc_spares ();			commented out 

//	tri32	hi_wrd_wr(mc_mdata1, mdata1, mdata_en1);
//use fj tristate cell
//	tri32	lo_wrd_wr(mc_mdata0, mdata0, mdata_en0);
	tri_regen_32	lo_wrd_wr(mc_mdata0, mdata0, ss_clock, mdata_en0_p, ss_reset);
	
endmodule


HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Thu Aug 19 12:03:11 1999
From: ../../../sparc_v8/ssparc/memif/rtl/rl_dpc.v

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