blob: de62febd7c0d3877d9063d42d34707fe0a6567a7 [file] [log] [blame] [edit]
// ========== Copyright Header Begin ==========================================
//
// OpenSPARC T1 Processor File: pad_ddr2.v
// Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
//
// The above named program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public
// License version 2 as published by the Free Software Foundation.
//
// The above named program is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this work; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
// ========== Copyright Header End ============================================
module pad_ddr2(ddr2_dll_bypass_l ,ddr2_bypass_data ,clk_ddr2_cken ,
spare_ddr2_pin ,bscan_mode_ctl_in ,spare_ddr2_pad ,bscan_hiz_l_in ,
ddr_si ,tck ,pad_ddr2_sscan_out ,dram2_io_bank ,dram2_dq ,dram2_cb
,dram2_ba ,dram2_cas_l ,dram2_ras_l ,dram2_cke ,pad_ddr2_sscan_in
,ddr_testmode_l ,ctu_ddr2_dll_delayctr ,dram2_io_cs_l ,afo ,
bypass_enable ,bypass_enable_out ,bscan_shift_dr_out ,
bscan_clock_dr_out ,bscan_hiz_l_out ,ps_select_out ,
bscan_update_dr_out ,serial_out ,afi ,vdd18 ,ddr2_ctu_dll_overflow
,bscan_mode_ctl_out ,pad_ddr2_bsi ,dram_arst_l ,dram_grst_l ,
dram_gclk ,dram2_ck_p ,ctu_global_snap ,dram_gdbginit_l ,
ctu_ddr2_iodll_rst_l ,test_mode ,bscan_clock_dr_in ,serial_in ,
dram2_io_ptr_clk_inv ,ctu_io_sscan_update ,ctu_io_sscan_se ,
spare_ddr2_paddata ,dram23_p_ref_res ,ddr2_ddr3_cbd ,ddr_so ,
ps_select ,dram23_n_ref_res ,dram2_dqs ,pad_ddr2_bso ,ddr_se ,
dram2_addr ,dram2_we_l ,dram2_ck_n ,dram_adbginit_l
,ddr2_ddr3_cbu ,bscan_shift_dr_in ,ddr2_ctu_dll_lock ,
dram2_io_pad_enable ,bscan_update_dr_in ,dram2_io_drive_enable ,
dram2_io_write_en_l ,dram2_io_cas_l ,dram2_io_ras_l ,
dram2_io_clk_enable ,io_dram2_data_valid ,dram2_io_addr ,
io_dram2_data_in ,dram2_io_channel_disabled ,io_dram2_ecc_in ,
dram2_io_drive_data ,dram2_io_data_out ,dram2_io_cke ,
dram2_io_pad_clk_inv ,dram2_cs_l ,spare_ddr2_pindata, ddr2_lpf_code );
output [4:0] ddr2_lpf_code ;
output [2:0] dram2_ba ;
output [143:0] serial_out ;
output [143:0] afi ;
output [3:0] dram2_ck_p ;
output [8:1] ddr2_ddr3_cbd ;
output [14:0] dram2_addr ;
output [3:0] dram2_ck_n ;
output [8:1] ddr2_ddr3_cbu ;
output [255:0] io_dram2_data_in ;
output [31:0] io_dram2_ecc_in ;
output [3:0] dram2_cs_l ;
input [4:0] ddr2_bypass_data ;
input [2:0] dram2_io_bank ;
input [2:0] ctu_ddr2_dll_delayctr ;
input [3:0] dram2_io_cs_l ;
input [143:0] afo ;
input [1:0] dram_gclk ;
input [143:0] serial_in ;
input [4:0] dram2_io_ptr_clk_inv ;
input [6:0] spare_ddr2_paddata ;
input [14:0] dram2_io_addr ;
input [287:0] dram2_io_data_out ;
input [2:0] spare_ddr2_pindata ;
inout [2:0] spare_ddr2_pin ;
inout [6:0] spare_ddr2_pad ;
inout [127:0] dram2_dq ;
inout [15:0] dram2_cb ;
inout [35:0] dram2_dqs ;
output pad_ddr2_sscan_out ;
output dram2_cas_l ;
output dram2_ras_l ;
output dram2_cke ;
output bypass_enable_out ;
output bscan_shift_dr_out ;
output bscan_clock_dr_out ;
output bscan_hiz_l_out ;
output ps_select_out ;
output bscan_update_dr_out ;
output ddr2_ctu_dll_overflow ;
output bscan_mode_ctl_out ;
output ddr_so ;
output pad_ddr2_bso ;
output dram2_we_l ;
output ddr2_ctu_dll_lock ;
output io_dram2_data_valid ;
input ddr2_dll_bypass_l ;
input clk_ddr2_cken ;
input bscan_mode_ctl_in ;
input bscan_hiz_l_in ;
input ddr_si ;
input tck ;
input pad_ddr2_sscan_in ;
input ddr_testmode_l ;
input bypass_enable ;
input vdd18 ;
input pad_ddr2_bsi ;
input dram_arst_l ;
input dram_grst_l ;
input ctu_global_snap ;
input dram_gdbginit_l ;
input ctu_ddr2_iodll_rst_l ;
input test_mode ;
input bscan_clock_dr_in ;
input ctu_io_sscan_update ;
input ctu_io_sscan_se ;
input dram23_p_ref_res ;
input ps_select ;
input dram23_n_ref_res ;
input ddr_se ;
input dram_adbginit_l ;
input bscan_shift_dr_in ;
input dram2_io_pad_enable ;
input bscan_update_dr_in ;
input dram2_io_drive_enable ;
input dram2_io_write_en_l ;
input dram2_io_cas_l ;
input dram2_io_ras_l ;
input dram2_io_clk_enable ;
input dram2_io_channel_disabled ;
input dram2_io_drive_data ;
input dram2_io_cke ;
input dram2_io_pad_clk_inv ;
supply1 vdd ;
supply0 vss ;
wire [7:0] net227 ;
wire [7:0] net246 ;
wire net0204 ;
wire net196 ;
wire rst_l ;
wire sscan0 ;
wire net228 ;
wire scan0 ;
wire scan1 ;
wire scan2 ;
wire scan3 ;
wire clk_ddr2_cken_buf ;
wire net247 ;
wire ddr_se_buf ;
wire rclk ;
wire arst2_l ;
bw_io_ddr_impctl_pulldown ddr2_impctl_pulldown (
.z ({ddr2_ddr3_cbd } ),
.from_csr ({vss ,vss ,vss ,vss ,vss ,vss ,vss ,vss } ),
.to_csr ({net246[0] ,net246[1] ,net246[2] ,net246[3] ,
net246[4] ,net246[5] ,net246[6] ,net246[7] } ),
.tclk (tck ),
.ctu_global_snap (ctu_global_snap ),
.ctu_io_sscan_in (sscan0 ),
.ctu_io_sscan_se (ctu_io_sscan_se ),
.ctu_io_sscan_update (ctu_io_sscan_update ),
.ctu_io_sscan_out (pad_ddr2_sscan_out ),
.rclk (rclk ),
.deltabit (net247 ),
.hard_reset_n (rst_l ),
.clk_dis_l (clk_ddr2_cken_buf ),
.we_csr (vss ),
.si (scan1 ),
.se (ddr_se_buf ),
.vdd18 (vdd18 ),
.pad (dram23_n_ref_res ),
.so (scan2 ) );
bw_io_ddr_impctl_pullup ddr2_impctl_pullup (
.z ({ddr2_ddr3_cbu } ),
.from_csr ({vss ,vss ,vss ,vss ,vss ,vss ,vss ,vss } ),
.to_csr ({net227[0] ,net227[1] ,net227[2] ,net227[3] ,
net227[4] ,net227[5] ,net227[6] ,net227[7] } ),
.rclk (rclk ),
.so (scan1 ),
.deltabit (net228 ),
.hard_reset_n (rst_l ),
.clk_dis_l (clk_ddr2_cken_buf ),
.we_csr (vss ),
.si (scan0 ),
.se (ddr_se_buf ),
.ctu_io_sscan_se (ctu_io_sscan_se ),
.vdd18 (vdd18 ),
.ctu_io_sscan_in (pad_ddr2_sscan_in ),
.ctu_io_sscan_out (sscan0 ),
.ctu_io_sscan_update (ctu_io_sscan_update ),
.pad (dram23_p_ref_res ),
.ctu_global_snap (ctu_global_snap ),
.tclk (tck ) );
// ECO 7016: added instance ddr2_iodll_code_adjust 10/11/04
// ECO 7016: Changed so, lpf_out connections on ddr2_master_dll
wire [4:0] ddr2_lpf_code_pre;
wire scan3_pre;
bw_iodll_code_adjust ddr2_iodll_code_adjust (
.bypass_data (ddr2_bypass_data[4:0]),
.ddr_clk_in (rclk),
.delay_ctrl (ctu_ddr2_dll_delayctr[2:0]),
.io_dll_bypass_l (ddr2_dll_bypass_l),
.iodll_reset_l (ctu_ddr2_iodll_rst_l),
.s_controller_out (ddr2_lpf_code_pre[4:0]),
.s_percent_ctrl_out (ddr2_lpf_code[4:0]),
.se (ddr_se_buf),
.si (scan3_pre),
.so (scan3));
bw_iodll ddr2_master_dll (
.ddr_testmode_l (ddr_testmode_l ),
.bypass_data ({ddr2_bypass_data } ),
.lpf_out (ddr2_lpf_code_pre ),
.delay_ctrl ({ctu_ddr2_dll_delayctr } ),
.so (scan3_pre ),
.io_dll_bypass_l (ddr2_dll_bypass_l ),
.io_dll_reset_l (ctu_ddr2_iodll_rst_l ),
.se (ddr_se_buf ),
.si (scan2 ),
.ddr_clk_in (rclk ),
.iodll_lock (ddr2_ctu_dll_lock ),
.overflow (ddr2_ctu_dll_overflow ),
.strobe (net0204 ) );
// End ECO 7016
bw_clk_cl_ddr_ddr pad_ddr2_header (
.gclk ({dram_gclk } ),
.ddr_rclk (rclk ),
.so (ddr_so_pre_latch ),
.si (scan3 ),
.gdbginit_l (dram_gdbginit_l ),
.grst_l (dram_grst_l ),
.cluster_grst_l (rst_l ),
.dbginit_l (net196 ),
.rclk (rclk ),
.se (ddr_se_buf ),
.adbginit_l (dram_adbginit_l ),
.arst2_l (arst2_l ),
.arst_l (dram_arst_l ),
.cluster_cken (clk_ddr2_cken_buf ) );
bw_u1_buf_40x I223 (
.z (ddr_se_buf ),
.a (ddr_se ) );
ddr_ch ddr2_ddr_ch (
.arst_l_out (arst2_l ),
.afo ({afo } ),
.serial_in ({serial_in } ),
.afi ({afi } ),
.serial_out ({serial_out } ),
.dram_io_data_out ({dram2_io_data_out } ),
.spare_ddr_pin ({spare_ddr2_pin[2] ,spare_ddr2_pad[6:0] ,
spare_ddr2_pin[1:0] } ),
.spare_ddr_data ({spare_ddr2_pindata[2] ,spare_ddr2_paddata[6:0] ,
spare_ddr2_pindata[1:0] } ),
.dram_io_ptr_clk_inv ({dram2_io_ptr_clk_inv } ),
.io_dram_data_in ({io_dram2_data_in } ),
.io_dram_ecc_in ({io_dram2_ecc_in } ),
.dram_io_addr ({dram2_io_addr } ),
.dram_io_bank ({dram2_io_bank } ),
.dram_io_cs_l ({dram2_io_cs_l } ),
.dram_dq ({dram2_dq } ),
.dram_addr ({dram2_addr } ),
.dram_cb ({dram2_cb } ),
.dram_dqs ({dram2_dqs } ),
.dram_ba ({dram2_ba } ),
.dram_ck_n ({dram2_ck_n } ),
.dram_ck_p ({dram2_ck_p } ),
.dram_cs_l ({dram2_cs_l } ),
.lpf_code (ddr2_lpf_code ),
.cbu ({ddr2_ddr3_cbu } ),
.cbd ({ddr2_ddr3_cbd } ),
.update_dr_in (bscan_update_dr_in ),
.mode_ctrl_in (bscan_mode_ctl_in ),
.shift_dr_in (bscan_shift_dr_in ),
.clock_dr_in (bscan_clock_dr_in ),
.hiz_n_in (bscan_hiz_l_in ),
.testmode_l (ddr_testmode_l ),
.test_mode (test_mode ),
.bypass_enable_out (bypass_enable_out ),
.ps_select_out (ps_select_out ),
.rclk (rclk ),
.se (ddr_se_buf ),
.pad_clk_so (scan0 ),
.pad_clk_si (ddr_si ),
.bso (pad_ddr2_bso ),
.bsi (pad_ddr2_bsi ),
.mode_ctrl_out (bscan_mode_ctl_out ),
.update_dr_out (bscan_update_dr_out ),
.shift_dr_out (bscan_shift_dr_out ),
.clock_dr_out (bscan_clock_dr_out ),
.hiz_n_out (bscan_hiz_l_out ),
.bypass_enable_in (bypass_enable ),
.ps_select_in (ps_select ),
.strobe (net0204 ),
.dram_io_clk_enable (dram2_io_clk_enable ),
.dram_io_cke (dram2_io_cke ),
.dram_io_ras_l (dram2_io_ras_l ),
.dram_io_write_en_l (dram2_io_write_en_l ),
.dram_io_cas_l (dram2_io_cas_l ),
.dram_cke (dram2_cke ),
.io_dram_data_valid (io_dram2_data_valid ),
.dram_ras_l (dram2_ras_l ),
.dram_we_l (dram2_we_l ),
.dram_cas_l (dram2_cas_l ),
.burst_length_four (vdd ),
.dram_io_pad_clk_inv (dram2_io_pad_clk_inv ),
.dram_io_pad_enable (dram2_io_pad_enable ),
.dram_io_drive_enable (dram2_io_drive_enable ),
.rst_l (rst_l ),
.dram_arst_l (dram_arst_l ),
.dram_io_channel_disabled (dram2_io_channel_disabled ),
.dram_io_drive_data (dram2_io_drive_data ),
.vdd_h (vdd18 ) );
bw_u1_buf_40x I225 (
.z (clk_ddr2_cken_buf ),
.a (clk_ddr2_cken ) );
bw_u1_scanl_2x lockup_latch(
.so(ddr_so),
.sd(ddr_so_pre_latch),
.ck(rclk));
endmodule