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.         */ 
/*                                                                            */ 
/******************************************************************************/ 
// @(#)mr_caches.v	1.36 9/15/93
// Instantiates the cache RAM modules.

[Up: ssparc_core caches]
module mr_caches(
			// Timing critical address bits 
	ic_adr_in,	// ic_adr_in[13:2] go directly to $'s 
	ic_power_down,
	dc_power_down,
        iiddtn,
	ic_wle,
	ic_be,
	it_din,
	dt_din,
	it_val_in,
	ic_do,
	ic_di,
	it_dout_f,
	it_val_f,
        tg_strobe,
        ic_scan_in,
        scan_mode,

	dt_dout_w,
	dt_val_w,
 
        dc_scan_out,
	dc_dtv_din,
	dc_adr_in,
	dc_wle,
	dc_be,
	it_cntx_in,
	it_cntx_out,
	dc_hld,
	ic_hld,
	dc_do,
	dc_di,
	dt_at,
	dt_acc_in,
	dt_acc_out,
	it_acc_in,
	it_acc_out,
	it_lvl_in,
	it_lvl_out,
	dt_cntx_in,
	dt_cntx_out,
	it_be,
	it_be_vb,
	dt_be,
	dt_be_vb,
	dt_hit_w,
	it_hit_f,
    	dt_index3,
    	dt_index2,
    	dt_index1,
    	dt_flush,
    	dt_flush_user,
    	dt_flush_user_cntx,
        it_index3,
        it_index2,
        it_index1,
        it_flush,
        it_flush_user,
        it_flush_user_cntx,

	logic_0,

        clkl_i,
        clkr_i,
        clkl_d,
        clkr_d 
        ) ;

	input logic_0 ;

    	input dt_index3 ; 
    	input dt_index2 ;  
    	input dt_index1 ;   
    	input dt_flush ; 
    	input dt_flush_user ;  
    	input dt_flush_user_cntx ;

    	input it_index3 ; 
    	input it_index2 ;  
    	input it_index1 ;   
    	input it_flush ; 
    	input it_flush_user ;  
    	input it_flush_user_cntx ;

	output dt_hit_w ;
	output it_hit_f ;
	input it_be ;
	input it_be_vb ;
	input dt_be ;
	input dt_be_vb ;
	input [7:0] it_cntx_in ;
	output [7:0] it_cntx_out ;
	input it_acc_in ;
	input [1:0] it_lvl_in ;
	input [1:0] dc_hld ;
	input [1:0] ic_hld ;
	output it_acc_out ;
	output [1:0] it_lvl_out ;
	output [63:0] dc_do ;
	input [63:0] dc_di ;
	input [4:0] dt_at ;
	input [4:0] dt_acc_in ;
	output [4:0] dt_acc_out ;
	input [7:0] dt_cntx_in ;
	output [7:0] dt_cntx_out ;
 
	input tg_strobe;
	input scan_mode ;

	input [`dc_msb:3] dc_adr_in ;
	input dc_wle ;
	input [7:0] dc_be ;

        output dc_scan_out;
        // output dcctl_scan_out;

	output [`dt_msb:0] dt_dout_w ;

	output dt_val_w ;

        wire ic_scan_out;

	input dc_dtv_din ;

 
        input ic_scan_in;
        input ic_power_down;
        input dc_power_down;
        input iiddtn;
        input clkl_i ;
        input clkr_i ;
        input clkl_d ;
        input clkr_d ;
        output [63:0] ic_do ;
	output [`it_msb:0] it_dout_f ;
	output it_val_f ;
	input [`ic_msb:`log2_datasize] ic_adr_in ;
	input ic_wle ;
	input [1:0] ic_be ;
	input [31:`log2_icachesize] it_din ;
	input [31:`log2_dcachesize] dt_din ;
	input it_val_in ;
	input [63:0] ic_di ;

wire DUMY4;  // To satisfy verilog
wire DUMY2;  // To satisfy verilog

// To satisfy verilog

wire [`dt_msb:0] dt_di = {dt_din[31:`log2_dcachesize]} ; 

// For asi tag reads ..
// wire [`dt_msb:0] dt_do = {dt_dout_w[`dt_msb:0]} ; 

// The LSB of the ITag is not used.
// A ZERO is written into the [0] bit of the Itag megacell
// (which is really a replica of the mc_dtag cell). 
// Then the LOWER bit of the output is always neglected 
// while reading the contents of the mc_itag megacell.

// Write '0' into lsb
wire [`dt_msb:0] it_di = {it_din[31:`log2_icachesize],logic_0} ; 
wire [`dt_msb:0] it_do ;
// Disregard lsb during read.
wire [`it_msb:0] it_dout_f = it_do[`dt_msb:1] ;

// Merged I-cache + I-Tag module
mc_i_tag_cache i_tag_cache(
            .ic_hld (ic_hld[1:0]),
	    .ic_do (ic_do[63:0]),
	    .ic_di (ic_di[63:0]),
	    .ic_power_down (ic_power_down),
            .ic_iiddtn (iiddtn),
	    .ic_ain (ic_adr_in[`ic_msb:3]),
	    .ic_wle (ic_wle),
	    .ic_be (ic_be[1:0]),
	    .scan_mode (scan_mode),
	    .ic_scan_in (ic_scan_in),
	    .it_scan_out (ic_scan_out),
            .it_do (it_do),  		// Lowest bit is '0' 
            .it_di (it_di),		// Lowest bit is '0'
            .it_acc_in ({logic_0,it_acc_in,logic_0,it_lvl_in[1:0]}),
            .it_acc_out ({DUMY4,it_acc_out,DUMY2,it_lvl_out[1:0]}),
            .it_cntx_in (it_cntx_in[7:0]),
            .it_cntx_out (it_cntx_out[7:0]),
            .it_be (it_be),  
            .it_be_cntxt (it_be),  
            .it_be_vb (it_be_vb),
            .it_val_in (it_val_in),
            .it_val_out (it_val_f),
            .it_index3 (it_index3),
            .it_index2 (it_index2),
            .it_index1 (it_index1),
            .it_flush (it_flush),
            .it_flush_user (it_flush_user),
            .it_flush_user_cntx (it_flush_user_cntx),
            .it_hit (it_hit_f),
            .it_at ({5{logic_0}}),
            .tg_strobe (tg_strobe),
	    .clkr (clkr_i),
	    .clkl (clkl_i)
        );

// Merged D-cache + D-Tag module
mc_d_tag_cache d_tag_cache(
	    .dc_hld (dc_hld[1:0]),
	    .dc_do (dc_do[63:0]),
	    .dc_ain (dc_adr_in[`dc_msb:3]),
	    .dc_di (dc_di[63:0]),
	    .dc_wle (dc_wle),
	    .dc_be (dc_be[7:0]),
	    .dc_power_down (dc_power_down),
            .dc_iiddtn (iiddtn),
	    .dt_scan_in (ic_scan_out),
	    .dc_scan_out (dc_scan_out),
	    .tg_strobe (tg_strobe),
	    .dt_do (dt_dout_w),
	    .dt_di (dt_di),
	    .dt_val_in (dc_dtv_din),
	    .dt_val_out (dt_val_w),
	    .dt_be (dt_be),
	    .dt_be_cntxt (dt_be),
	    .dt_be_vb (dt_be_vb),
	    .dt_at (dt_at[4:0]),
	    .dt_acc_in (dt_acc_in[4:0]),
	    .dt_acc_out (dt_acc_out[4:0]),
	    .dt_cntx_in (dt_cntx_in[7:0]),
	    .dt_cntx_out (dt_cntx_out[7:0]),
	    .dt_index3 (dt_index3),
            .dt_index2 (dt_index2), 
            .dt_index1 (dt_index1), 
            .dt_flush (dt_flush),  
            .dt_flush_user (dt_flush_user),  
            .dt_flush_user_cntx (dt_flush_user_cntx),  
	    .dt_hit (dt_hit_w),
	    .scan_mode (scan_mode),
	    .clkr (clkr_d),
	    .clkl (clkl_d)
       );

// Added spare cells 
 
        spares  mr_caches_spares ();
endmodule
HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Thu Aug 19 12:02:35 1999
From: ../../../sparc_v8/ssparc/caches/rtl/mr_caches.v

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