-
Notifications
You must be signed in to change notification settings - Fork 0
/
ccx_arb_atomq.v
110 lines (79 loc) · 3.04 KB
/
ccx_arb_atomq.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// ========== Copyright Header Begin ==========================================
//
// OpenSPARC T1 Processor File: ccx_arb_atomq.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 ============================================
////////////////////////////////////////////////////////////////////////
// Global header file includes
////////////////////////////////////////////////////////////////////////
`include "sys.h" // system level definition file which contains the
// time scale definition
`include "iop.h"
// USES srcq select signals; ignore qcount code in this file
////////////////////////////////////////////////////////////////////////
// Local header file includes / local defines
////////////////////////////////////////////////////////////////////////
module ccx_arb_atomq(/*AUTOARG*/
// Outputs
q0_dataout, scan_out,
// Inputs
ctl_qsel1_a_l, ctl_qsel0_a, ctl_shift_a, atom_a, rclk, reset_d1
);
output q0_dataout; // pcx to destination pkt
output scan_out;
input ctl_qsel1_a_l; // queue write sel
input ctl_qsel0_a; // queue write sel
input ctl_shift_a;//grant signal
input atom_a; // spache to pcx data
input rclk;
//input tmb_l;
input reset_d1;
wire q0_datain_pa;
wire q1_datain_pa;
wire q1_dataout;
wire q1_data_out;
wire q0_data_out;
//HEADER SECTION
//DATAPATH SECTION
assign q1_datain_pa = ~ctl_qsel1_a_l ? atom_a : q1_dataout;
dff_s #(1) dff_pcx_atomin_q1(
.din (q1_datain_pa),
.q (q1_data_out),
.clk (rclk),
.se (1'b0),
.si (),
.so ());
assign q1_dataout = ~reset_d1 ? q1_data_out : 1'b0;
assign q0_datain_pa =
ctl_qsel0_a ? atom_a :
ctl_shift_a ? q1_dataout :
q0_dataout;
dff_s #(1) dff_pcx_atomin_q0(
.din (q0_datain_pa),
.q (q0_data_out),
.clk (rclk),
.se (1'b0),
.si (),
.so ());
assign q0_dataout = ~reset_d1 ? q0_data_out : 1'b0;
// Global Variables:
// verilog-library-directories:("." "../../../../../common/rtl" "../rtl")
// End:
// Code start here
//
endmodule