clocks.h revision 12855:588919e0e4aa
1/*****************************************************************************
2
3  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
4  more contributor license agreements.  See the NOTICE file distributed
5  with this work for additional information regarding copyright ownership.
6  Accellera licenses this file to you under the Apache License, Version 2.0
7  (the "License"); you may not use this file except in compliance with the
8  License.  You may obtain a copy of the License at
9
10    http://www.apache.org/licenses/LICENSE-2.0
11
12  Unless required by applicable law or agreed to in writing, software
13  distributed under the License is distributed on an "AS IS" BASIS,
14  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15  implied.  See the License for the specific language governing
16  permissions and limitations under the License.
17
18 *****************************************************************************/
19
20/*****************************************************************************
21
22  clocks.h --
23
24  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
25
26 *****************************************************************************/
27
28/*****************************************************************************
29
30  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
31  changes you are making here.
32
33      Name, Affiliation, Date:
34  Description of Modification:
35
36 *****************************************************************************/
37
38#include "systemc.h"
39
40/******************************************************************************/
41/***************************    CLK_POS Function         **********************/
42/******************************************************************************/
43
44SC_MODULE( CLK_POS )
45{
46    SC_HAS_PROCESS( CLK_POS );
47
48    sc_in_clk clk;
49
50    sc_signal<bool>&	out_clk_pos;
51
52    CLK_POS ( sc_module_name   	NAME,
53              sc_clock&		TICK_P,
54	      sc_signal<bool>&	OUT_CLK_POS )
55
56    :
57      out_clk_pos (OUT_CLK_POS)
58    {
59        clk (TICK_P);
60	SC_CTHREAD( entry, clk.pos() );
61    }
62
63  void entry();
64};
65
66void
67CLK_POS::entry()
68{
69  cout << sc_time_stamp() << " : CLK UP\n" << endl;
70  out_clk_pos.write(1);
71  wait();
72  cout << sc_time_stamp() << " : CLK UP\n" << endl;
73  out_clk_pos.write(0);
74  wait();
75  cout << sc_time_stamp() << " : CLK UP\n" << endl;
76  wait();
77  cout << sc_time_stamp() << " : CLK UP\n" << endl;
78}
79
80/******************************************************************************/
81/***************************    CLK_NEG Function         **********************/
82/******************************************************************************/
83
84SC_MODULE( CLK_NEG )
85{
86    SC_HAS_PROCESS( CLK_NEG );
87
88    sc_in_clk clk;
89
90    sc_signal<bool>&	out_clk_neg;
91
92    CLK_NEG ( sc_module_name   	NAME,
93              sc_clock&		TICK_N,
94	      sc_signal<bool>&	OUT_CLK_NEG )
95    :
96      out_clk_neg (OUT_CLK_NEG)
97    {
98        clk (TICK_N);
99	SC_CTHREAD( entry, clk.neg() );
100    }
101
102  void entry();
103};
104
105void
106CLK_NEG::entry()
107{
108  cout << sc_time_stamp() << " : CLK DN\n" << endl;
109  out_clk_neg.write(1);
110  wait();
111  cout << sc_time_stamp() << " : CLK DN\n" << endl;
112  out_clk_neg.write(0);
113  wait();
114  cout << sc_time_stamp() << " : CLK DN\n" << endl;
115  wait();
116  cout << sc_time_stamp() << " : CLK DN\n" << endl;
117}
118
119/******************************************************************************/
120/***************************    CLK2_POS Function        **********************/
121/******************************************************************************/
122
123SC_MODULE( CLK2_POS )
124{
125    SC_HAS_PROCESS( CLK2_POS );
126
127    sc_in_clk clk;
128
129    sc_signal<bool>&	out_clk2_pos;
130
131    CLK2_POS ( sc_module_name  	NAME,
132               sc_clock&	TICK2_P,
133	       sc_signal<bool>&	OUT_CLK2_POS )
134    :
135      out_clk2_pos (OUT_CLK2_POS)
136    {
137        clk (TICK2_P);
138	SC_CTHREAD( entry, clk.pos() );
139    }
140
141  void entry();
142};
143
144void
145CLK2_POS::entry()
146{
147  cout << sc_time_stamp() << " : _____________CLK2 UP\n" << endl;
148  out_clk2_pos.write(1);
149  wait();
150  cout << sc_time_stamp() << " : _____________CLK2 UP\n" << endl;
151  out_clk2_pos.write(0);
152  wait();
153  cout << sc_time_stamp() << " : _____________CLK2 UP\n" << endl;
154  wait();
155  cout << sc_time_stamp() << " : _____________CLK2 UP\n" << endl;
156}
157
158/******************************************************************************/
159/***************************    CLK2_NEG Function        **********************/
160/******************************************************************************/
161
162SC_MODULE( CLK2_NEG )
163{
164    SC_HAS_PROCESS( CLK2_NEG );
165
166    sc_in_clk clk;
167
168    sc_signal<bool>&	out_clk2_neg;
169
170    CLK2_NEG ( sc_module_name  	NAME,
171               sc_clock&	TICK2_N,
172	       sc_signal<bool>&	OUT_CLK2_NEG )
173    :
174      out_clk2_neg (OUT_CLK2_NEG)
175    {
176        clk (TICK2_N);
177	SC_CTHREAD( entry, clk.neg() );
178    }
179
180  void entry();
181};
182
183void
184CLK2_NEG::entry()
185{
186  cout << sc_time_stamp() << " : _____________CLK2 DN\n" << endl;
187  out_clk2_neg.write(1);
188  wait();
189  cout << sc_time_stamp() << " : _____________CLK2 DN\n" << endl;
190  out_clk2_neg.write(0);
191  wait();
192  cout << sc_time_stamp() << " : _____________CLK2 DN\n" << endl;
193  wait();
194  cout << sc_time_stamp() << " : _____________CLK2 DN\n" << endl;
195}
196