OpenCores
URL https://opencores.org/ocsvn/sparc64soc/sparc64soc/trunk

Subversion Repositories sparc64soc

[/] [sparc64soc/] [trunk/] [T1-common/] [common/] [cluster_header_dup.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dmitryr
// ========== Copyright Header Begin ==========================================
2
// 
3
// OpenSPARC T1 Processor File: cluster_header_dup.v
4
// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6
// 
7
// The above named program is free software; you can redistribute it and/or
8
// modify it under the terms of the GNU General Public
9
// License version 2 as published by the Free Software Foundation.
10
// 
11
// The above named program is distributed in the hope that it will be 
12
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
// General Public License for more details.
15
// 
16
// You should have received a copy of the GNU General Public
17
// License along with this work; if not, write to the Free Software
18
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19
// 
20
// ========== Copyright Header End ============================================
21
// The cluster header is instatiated as a hard macro.
22
// This model is for simulation only.
23
`include "sys.h"
24
 
25
module cluster_header_dup (/*AUTOARG*/
26
   // Outputs
27
   dbginit_l, cluster_grst_l, rclk, so,
28
   // Inputs
29
   gclk, cluster_cken, arst_l, grst_l, adbginit_l, gdbginit_l, si,
30
   se
31
   );
32
 
33
   input       gclk;
34
   input       cluster_cken;
35
   input       arst_l;
36
   input       grst_l;
37
   input       adbginit_l;
38
   input       gdbginit_l;
39
   output      dbginit_l;
40
   output      cluster_grst_l;
41
   output      rclk;
42
 
43
   input       si; // scan ports for reset flop repeaters
44
   input       se;
45
   output      so;
46
 
47
   wire        pre_sync_enable;
48
   wire        sync_enable;
49
   wire        cluster_grst_l;
50
   wire        dbginit_l;
51
   wire        rst_sync_so;
52
 
53
   bw_u1_soffasr_2x sync_cluster_master ( // no scan hook-up
54
                                        .so(),
55
                                        .q (pre_sync_enable),
56
                                        .ck (gclk),
57
                                        .d (cluster_cken),
58
                                        .r_l (arst_l),
59
                                        .s_l (1'b1),
60
                                        .sd(1'b0),
61
                                        .se(1'b0)
62
                                        );
63
 
64
 
65
   bw_clk_cclk_scanlasr_2x sync_cluster_slave ( // use scan lock-up latch
66
                                      .r_l (arst_l),
67
                                      .so (sync_enable),
68
                                      .ck (gclk),
69
                                      .sd (pre_sync_enable)
70
                                      );
71
 
72
// NOTE! Pound delay in the below statement is meant to provide 10 ps
73
// delay between gclk and rclk to allow the synchronizer for rst, dbginit,
74
// and sync pulses to be modelled accurately.  gclk and rclk need to have 
75
// at least one simulator timestep separation to allow the flop->flop 
76
// synchronizer to work correctly.
77
   assign #10 rclk = gclk & sync_enable;
78
 
79
   synchronizer_asr rst_repeater (
80
                                 .sync_out(cluster_grst_l),
81
                                 .so(rst_sync_so),
82
                                 .async_in(grst_l),
83
                                 .gclk(gclk),
84
                                 .rclk(rclk),
85
                                 .arst_l(arst_l),
86
                                 .si(si),
87
                                 .se(se)
88
                                 );
89
 
90
   synchronizer_asr_dup dbginit_repeater (
91
                                     .sync_out(dbginit_l),
92
                                     .so(so),
93
                                     .async_in(gdbginit_l),
94
                                     .gclk(gclk),
95
                                     .rclk(rclk),
96
                                     .arst_l(adbginit_l),
97
                                     .si(rst_sync_so),
98
                                     .se(se)
99
                                     );
100
 
101
endmodule // cluster_header

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.