Skip to content
Newer
Older
100644 562 lines (484 sloc) 13.2 KB
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
1 /*
2 * Copyright (c) 2000 Stephen Williams (steve@icarus.com)
3 *
4 * This source code is free software; you can redistribute it
5 * and/or modify it in source code form under the terms of the GNU
6 * General Public License as published by the Free Software
7 * Foundation; either version 2 of the License, or (at your option)
8 * any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
18 */
52bf4e6 conditional ident string using autoconfig.
steve authored Aug 12, 2002
19 #ifdef HAVE_CVS_IDENT
c7d97f4 Properly evaluate scope path expressions.
steve authored Jun 2, 2007
20 #ident "$Id: net_event.cc,v 1.27 2007/06/02 03:42:13 steve Exp $"
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
21 #endif
22
badad63 All NetObj objects have lex_string base names.
steve authored Mar 6, 2003
23 # include "config.h"
24 # include "compiler.h"
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
25 # include "netlist.h"
26
4c67de5 Add the lex_strings string handler, and put
steve authored Mar 1, 2003
27 /*
28 * NOTE: The name_ is perm-allocated by the caller.
29 */
536068b Memory and Event names use perm_string.
steve authored Feb 19, 2004
30 NetEvent::NetEvent(perm_string n)
4c67de5 Add the lex_strings string handler, and put
steve authored Mar 1, 2003
31 : name_(n)
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
32 {
33 scope_ = 0;
34 snext_ = 0;
4493e96 Finally remove the NetNEvent and NetPEvent classes,
steve authored Apr 12, 2000
35 probes_ = 0;
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
36 trig_ = 0;
37 waitref_ = 0;
f1cc9d8 Support event names as expressions elements.
steve authored Apr 22, 2003
38 exprref_ = 0;
c1c0168 Globally merge redundant event objects.
steve authored May 31, 2000
39 wlist_ = 0;
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
40 }
41
42 NetEvent::~NetEvent()
43 {
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
44 assert(waitref_ == 0);
74c4303 Clean up unneeded NetEvent objects.
steve authored Apr 18, 2000
45 if (scope_) scope_->rem_event(this);
46 while (probes_) {
47 NetEvProbe*tmp = probes_->enext_;
48 delete probes_;
ea53f2b Typo stepping ot next probe in delete.
steve authored Sep 19, 2000
49 probes_ = tmp;
74c4303 Clean up unneeded NetEvent objects.
steve authored Apr 18, 2000
50 }
4c67de5 Add the lex_strings string handler, and put
steve authored Mar 1, 2003
51 /* name_ is lex_strings. */
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
52 }
53
536068b Memory and Event names use perm_string.
steve authored Feb 19, 2004
54 perm_string NetEvent::name() const
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
55 {
56 return name_;
57 }
58
c7d97f4 Properly evaluate scope path expressions.
steve authored Jun 2, 2007
59 NetScope* NetEvent::scope()
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
60 {
61 assert(scope_);
c7d97f4 Properly evaluate scope path expressions.
steve authored Jun 2, 2007
62 return scope_;
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
63 }
64
a4e528f Add the ivl_event_t to ivl_target, and use that to generate
steve authored Mar 28, 2001
65 const NetScope* NetEvent::scope() const
66 {
67 assert(scope_);
68 return scope_;
69 }
70
4493e96 Finally remove the NetNEvent and NetPEvent classes,
steve authored Apr 12, 2000
71 unsigned NetEvent::nprobe() const
72 {
73 unsigned cnt = 0;
74 NetEvProbe*cur = probes_;
75 while (cur) {
76 cnt += 1;
77 cur = cur->enext_;
78 }
79
80 return cnt;
81 }
82
83 NetEvProbe* NetEvent::probe(unsigned idx)
84 {
85 NetEvProbe*cur = probes_;
86 while (cur && idx) {
87 cur = cur->enext_;
88 idx -= 1;
89 }
90 return cur;
91 }
92
ad8565f Add const probe method to NetEvent.
steve authored Mar 29, 2001
93 const NetEvProbe* NetEvent::probe(unsigned idx) const
94 {
95 NetEvProbe*cur = probes_;
96 while (cur && idx) {
97 cur = cur->enext_;
98 idx -= 1;
99 }
100 return cur;
101 }
102
74c4303 Clean up unneeded NetEvent objects.
steve authored Apr 18, 2000
103 unsigned NetEvent::ntrig() const
104 {
105 unsigned cnt = 0;
106 NetEvTrig*cur = trig_;
107 while (cur) {
108 cnt += 1;
109 cur = cur->enext_;
110 }
111
112 return cnt;
113 }
114
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
115 unsigned NetEvent::nwait() const
116 {
117 return waitref_;
118 }
119
f1cc9d8 Support event names as expressions elements.
steve authored Apr 22, 2003
120 unsigned NetEvent::nexpr() const
121 {
122 return exprref_;
123 }
124
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
125 /*
126 * A "similar" event is one that has an identical non-nil set of
127 * probes.
128 */
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
129 void NetEvent::find_similar_event(list<NetEvent*>&event_list)
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
130 {
131 if (probes_ == 0)
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
132 return;
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
133
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
134 map<NetEvent*,unsigned> event_matches;
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
135
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
136 /* First, get a list of all the NetEvProbes that are connected
137 to my first probe. Then use that to create a set of
138 candidate events. These candidate events are a superset of
139 the similar events, so I will be culling this list later. */
140 list<NetEvProbe*>first_probes;
141 probes_->find_similar_probes(first_probes);
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
142
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
143 for (list<NetEvProbe*>::iterator idx = first_probes.begin()
144 ; idx != first_probes.end() ; idx ++) {
145 event_matches[ (*idx)->event() ] = 1;
146 }
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
147
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
148 /* Now scan the remaining probes, in each case ticking the
149 candidate event. The events that really are similar to this
150 one will turn up in every probe list. */
151 unsigned probe_count = 1;
152 for (NetEvProbe*cur = probes_->enext_ ; cur ; cur = cur->enext_) {
153 list<NetEvProbe*>similar_probes;
154 cur->find_similar_probes(similar_probes);
155
156 for (list<NetEvProbe*>::iterator idx = similar_probes.begin()
157 ; idx != similar_probes.end() ; idx ++) {
158 event_matches[ (*idx)->event() ] += 1;
159 }
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
160
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
161 probe_count += 1;
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
162 }
163
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
164 /* Now scan the candidate events. Those events that are
165 connected to all my probes (match_count[x] == probe_count)
166 are possible. If those events have the same number of
167 events, then jackpot. */
168 for (map<NetEvent*,unsigned>::iterator idx = event_matches.begin()
169 ; idx != event_matches.end() ; idx ++) {
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
170
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
171 NetEvent*tmp = (*idx).first;
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
172
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
173 if (tmp == this)
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
174 continue;
175
18edf2f Rework of automatic task/function support.
Martin Whitaker authored Oct 28, 2008
176 /* For automatic tasks, the VVP runtime holds state for events
177 in the automatically allocated context. This means we can't
178 merge similar events in different automatic tasks. */
179 if (scope()->is_auto() && (tmp->scope() != scope()))
180 continue;
181
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
182 if ((*idx).second != probe_count)
54dab22 event find_similar should not find self.
steve authored Feb 2, 2002
183 continue;
184
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
185 unsigned tcnt = 0;
186 for (NetEvProbe*cur = tmp->probes_ ; cur ; cur = cur->enext_)
187 tcnt += 1;
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
188
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
189 if (tcnt == probe_count)
190 event_list .push_back(tmp);
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
191 }
192
193 }
194
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
195
c1c0168 Globally merge redundant event objects.
steve authored May 31, 2000
196 void NetEvent::replace_event(NetEvent*that)
197 {
198 while (wlist_) {
199 wlist_->obj->replace_event(this, that);
200 }
201 }
202
9b6b081 Add structure for asynchronous logic synthesis.
steve authored Jun 30, 2002
203 NexusSet* NetEvent::nex_async_()
204 {
205 /* If there are behavioral trigger statements attached to me,
206 then this is not an asynchronous event. */
207 if (trig_ != 0)
208 return 0;
209
e4ae832 Clean up spurious trailing white space.
steve authored Oct 4, 2004
210
9b6b081 Add structure for asynchronous logic synthesis.
steve authored Jun 30, 2002
211 NexusSet*tmp = new NexusSet;
212 for (NetEvProbe*cur = probes_ ; cur != 0 ; cur = cur->enext_) {
213 if (cur->edge() != NetEvProbe::ANYEDGE) {
214 delete tmp;
215 return 0;
216 }
217
218 for (unsigned idx = 0 ; idx < cur->pin_count() ; idx += 1)
219 tmp->add(cur->pin(idx).nexus());
220
221 }
222
223 return tmp;
224 }
225
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
226 NetEvTrig::NetEvTrig(NetEvent*ev)
227 : event_(ev)
228 {
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
229 enext_ = event_->trig_;
230 event_->trig_ = this;
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
231 }
232
233 NetEvTrig::~NetEvTrig()
234 {
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
235 if (event_->trig_ == this) {
236 event_->trig_ = enext_;
237
238 } else {
239 NetEvTrig*cur = event_->trig_;
240 while (cur->enext_ != this) {
241 assert(cur->enext_);
242 cur = cur->enext_;
243 }
244
245 cur->enext_ = this->enext_;
246 }
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
247 }
248
249 const NetEvent* NetEvTrig::event() const
250 {
251 return event_;
252 }
253
27af95d Use perm_strings for named langiage items.
steve authored Feb 18, 2004
254 NetEvProbe::NetEvProbe(NetScope*s, perm_string n, NetEvent*tgt,
8dbd641 All events now use the NetEvent class.
steve authored Apr 10, 2000
255 edge_t t, unsigned p)
27af95d Use perm_strings for named langiage items.
steve authored Feb 18, 2004
256 : NetNode(s, n, p), event_(tgt), edge_(t)
8dbd641 All events now use the NetEvent class.
steve authored Apr 10, 2000
257 {
258 for (unsigned idx = 0 ; idx < p ; idx += 1) {
259 pin(idx).set_dir(Link::INPUT);
260 }
4493e96 Finally remove the NetNEvent and NetPEvent classes,
steve authored Apr 12, 2000
261
262 enext_ = event_->probes_;
263 event_->probes_ = this;
8dbd641 All events now use the NetEvent class.
steve authored Apr 10, 2000
264 }
265
266 NetEvProbe::~NetEvProbe()
267 {
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
268 if (event_->probes_ == this) {
269 event_->probes_ = enext_;
270
271 } else {
272 NetEvProbe*cur = event_->probes_;
273 while (cur->enext_ != this) {
274 assert(cur->enext_);
275 cur = cur->enext_;
276 }
277
278 cur->enext_ = this->enext_;
279 }
8dbd641 All events now use the NetEvent class.
steve authored Apr 10, 2000
280 }
281
282 NetEvProbe::edge_t NetEvProbe::edge() const
283 {
284 return edge_;
285 }
286
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
287 NetEvent* NetEvProbe::event()
288 {
289 return event_;
290 }
291
8dbd641 All events now use the NetEvent class.
steve authored Apr 10, 2000
292 const NetEvent* NetEvProbe::event() const
293 {
294 return event_;
295 }
296
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
297 /*
298 * A similar NetEvProbe is one that is connected to all the same nexa
299 * that this probe is connected to, and also is the same edge
300 * type. Don't count myself as a similar probe.
301 */
302 void NetEvProbe::find_similar_probes(list<NetEvProbe*>&plist)
303 {
304 Nexus*nex = pin(0).nexus();
305
306 for (Link*lcur = nex->first_nlink(); lcur; lcur = lcur->next_nlink()) {
b292a5f @steveicarus Create a branch object to be the argument to the access function.
authored Aug 4, 2008
307 NetPins*obj = lcur->get_obj();
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
308 if (obj->pin_count() != pin_count())
309 continue;
310
311 NetEvProbe*tmp = dynamic_cast<NetEvProbe*>(obj);
312 if (tmp == 0)
313 continue;
314
315 if (tmp == this)
316 continue;
317
318 if (edge() != tmp->edge())
319 continue;
320
321 bool ok_flag = true;
322 for (unsigned idx = 1 ; idx < pin_count() ; idx += 1)
323 if (pin(idx).nexus() != tmp->pin(idx).nexus()) {
324 ok_flag = false;
325 break;
326 }
327
328 if (ok_flag == true)
329 plist .push_back(tmp);
330 }
331 }
332
b1fd927 Named events really should be expressed with PEIdent
steve authored Apr 12, 2000
333 NetEvWait::NetEvWait(NetProc*pr)
334 : statement_(pr), nevents_(0), events_(0)
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
335 {
336 }
337
338 NetEvWait::~NetEvWait()
339 {
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
340 if (events_) {
341 for (unsigned idx = 0 ; idx < nevents_ ; idx += 1) {
342 NetEvent*tgt = events_[idx];
343 tgt->waitref_ -= 1;
c1c0168 Globally merge redundant event objects.
steve authored May 31, 2000
344
345 struct NetEvent::wcell_*tmp = tgt->wlist_;
346 if (tmp->obj == this) {
347 tgt->wlist_ = tmp->next;
348 delete tmp;
349 } else {
350 assert(tmp->next);
351 while (tmp->next->obj != this) {
352 tmp = tmp->next;
353 assert(tmp->next);
354 }
355 tmp->next = tmp->next->next;
356 delete tmp;
357 }
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
358 }
359 delete[]events_;
360 }
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
361 delete statement_;
362 }
363
b1fd927 Named events really should be expressed with PEIdent
steve authored Apr 12, 2000
364 void NetEvWait::add_event(NetEvent*tgt)
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
365 {
b1fd927 Named events really should be expressed with PEIdent
steve authored Apr 12, 2000
366 assert(tgt);
367 if (nevents_ == 0) {
368 events_ = new NetEvent*[1];
369
370 } else {
371 NetEvent**tmp = new NetEvent*[nevents_+1];
372 for (unsigned idx = 0 ; idx < nevents_ ; idx += 1) {
373 tmp[idx] = events_[idx];
374 assert(tmp[idx] != tgt);
375 }
376 delete[]events_;
377 events_ = tmp;
378 }
379
380 events_[nevents_] = tgt;
381 nevents_ += 1;
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
382
383 // Remember to tell the NetEvent that there is someone
384 // pointing to it.
385 tgt->waitref_ += 1;
c1c0168 Globally merge redundant event objects.
steve authored May 31, 2000
386
387 struct NetEvent::wcell_*tmp = new NetEvent::wcell_;
388 tmp->obj = this;
389 tmp->next = tgt->wlist_;
390 tgt->wlist_ = tmp;
391 }
392
393 void NetEvWait::replace_event(NetEvent*src, NetEvent*repl)
394 {
395 unsigned idx;
396 for (idx = 0 ; idx < nevents_ ; idx += 1) {
397 if (events_[idx] == src)
398 break;
399 }
400
401 assert(idx < nevents_);
402
403 /* First, remove me from the list held by the src NetEvent. */
404 assert(src->waitref_ > 0);
405 src->waitref_ -= 1;
406 struct NetEvent::wcell_*tmp = src->wlist_;
407 if (tmp->obj == this) {
408 src->wlist_ = tmp->next;
409 delete tmp;
410 } else {
411 assert(tmp->next);
412 while (tmp->next->obj != this) {
413 tmp = tmp->next;
414 assert(tmp->next);
415 }
416 tmp->next = tmp->next->next;
417 delete tmp;
418 }
419
420 events_[idx] = repl;
421
422 // Remember to tell the replacement NetEvent that there is
423 // someone pointing to it.
424 repl->waitref_ += 1;
425
426 tmp = new NetEvent::wcell_;
427 tmp->obj = this;
428 tmp->next = repl->wlist_;
429 repl->wlist_ = tmp;
430
b1fd927 Named events really should be expressed with PEIdent
steve authored Apr 12, 2000
431 }
432
433 unsigned NetEvWait::nevents() const
434 {
435 return nevents_;
436 }
437
438 const NetEvent* NetEvWait::event(unsigned idx) const
439 {
440 assert(idx < nevents_);
441 return events_[idx];
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
442 }
443
4493e96 Finally remove the NetNEvent and NetPEvent classes,
steve authored Apr 12, 2000
444 NetEvent* NetEvWait::event(unsigned idx)
445 {
446 assert(idx < nevents_);
447 return events_[idx];
448 }
449
450 NetProc* NetEvWait::statement()
451 {
452 return statement_;
453 }
454
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
455 /*
456 * $Log: net_event.cc,v $
c7d97f4 Properly evaluate scope path expressions.
steve authored Jun 2, 2007
457 * Revision 1.27 2007/06/02 03:42:13 steve
458 * Properly evaluate scope path expressions.
459 *
e4ae832 Clean up spurious trailing white space.
steve authored Oct 4, 2004
460 * Revision 1.26 2004/10/04 01:10:54 steve
461 * Clean up spurious trailing white space.
462 *
536068b Memory and Event names use perm_string.
steve authored Feb 19, 2004
463 * Revision 1.25 2004/02/19 06:57:10 steve
464 * Memory and Event names use perm_string.
465 *
27af95d Use perm_strings for named langiage items.
steve authored Feb 18, 2004
466 * Revision 1.24 2004/02/18 17:11:56 steve
467 * Use perm_strings for named langiage items.
468 *
f1cc9d8 Support event names as expressions elements.
steve authored Apr 22, 2003
469 * Revision 1.23 2003/04/22 04:48:29 steve
470 * Support event names as expressions elements.
471 *
badad63 All NetObj objects have lex_string base names.
steve authored Mar 6, 2003
472 * Revision 1.22 2003/03/06 00:28:41 steve
473 * All NetObj objects have lex_string base names.
474 *
4c67de5 Add the lex_strings string handler, and put
steve authored Mar 1, 2003
475 * Revision 1.21 2003/03/01 06:25:30 steve
476 * Add the lex_strings string handler, and put
477 * scope names and system task/function names
478 * into this table. Also, permallocate event
479 * names from the beginning.
480 *
52bf4e6 conditional ident string using autoconfig.
steve authored Aug 12, 2002
481 * Revision 1.20 2002/08/12 01:34:59 steve
482 * conditional ident string using autoconfig.
483 *
58ec62c Rewrite find_similar_event to support doing
steve authored Jul 24, 2002
484 * Revision 1.19 2002/07/24 16:24:45 steve
485 * Rewrite find_similar_event to support doing
486 * all event matching and replacement in one
487 * shot, saving time in the scans.
488 *
9b6b081 Add structure for asynchronous logic synthesis.
steve authored Jun 30, 2002
489 * Revision 1.18 2002/06/30 02:21:31 steve
490 * Add structure for asynchronous logic synthesis.
491 *
54dab22 event find_similar should not find self.
steve authored Feb 2, 2002
492 * Revision 1.17 2002/02/02 06:13:38 steve
493 * event find_similar should not find self.
494 *
874bab1 NetObj constructor finally requires a scope.
steve authored Oct 28, 2001
495 * Revision 1.16 2001/10/28 01:14:53 steve
496 * NetObj constructor finally requires a scope.
497 *
b825f8d Create a config.h.in file to hold all the config
steve authored Jul 25, 2001
498 * Revision 1.15 2001/07/25 03:10:49 steve
499 * Create a config.h.in file to hold all the config
500 * junk, and support gcc 3.0. (Stephan Boettcher)
501 *
ad8565f Add const probe method to NetEvent.
steve authored Mar 29, 2001
502 * Revision 1.14 2001/03/29 02:52:19 steve
503 * Add const probe method to NetEvent.
504 *
a4e528f Add the ivl_event_t to ivl_target, and use that to generate
steve authored Mar 28, 2001
505 * Revision 1.13 2001/03/28 06:07:39 steve
506 * Add the ivl_event_t to ivl_target, and use that to generate
507 * .event statements in vvp way ahead of the thread that uses it.
508 *
bcbd5b2 Remove limits from the similar events search.
steve authored Dec 15, 2000
509 * Revision 1.12 2000/12/15 17:45:07 steve
510 * Remove limits from the similar events search.
511 *
aac5fc2 Use char8 instead of string to store name.
steve authored Oct 4, 2000
512 * Revision 1.11 2000/10/04 16:30:39 steve
513 * Use char8 instead of string to store name.
514 *
ea53f2b Typo stepping ot next probe in delete.
steve authored Sep 19, 2000
515 * Revision 1.10 2000/09/19 03:00:36 steve
516 * Typo stepping ot next probe in delete.
517 *
39c71ef fix problem coalescing events w/ probes.
steve authored Jul 29, 2000
518 * Revision 1.9 2000/07/29 03:55:38 steve
519 * fix problem coalescing events w/ probes.
520 *
c1c0168 Globally merge redundant event objects.
steve authored May 31, 2000
521 * Revision 1.8 2000/05/31 02:26:49 steve
522 * Globally merge redundant event objects.
523 *
fd09bc3 Merge similar probes within a module.
steve authored May 27, 2000
524 * Revision 1.7 2000/05/27 19:33:23 steve
525 * Merge similar probes within a module.
526 *
74c4303 Clean up unneeded NetEvent objects.
steve authored Apr 18, 2000
527 * Revision 1.6 2000/04/18 04:50:20 steve
528 * Clean up unneeded NetEvent objects.
529 *
726f7b8 Synthesis of comparator in expressions.
steve authored Apr 16, 2000
530 * Revision 1.5 2000/04/16 23:32:18 steve
531 * Synthesis of comparator in expressions.
532 *
533 * Connect the NetEvent and related classes
534 * together better.
535 *
4493e96 Finally remove the NetNEvent and NetPEvent classes,
steve authored Apr 12, 2000
536 * Revision 1.4 2000/04/12 20:02:53 steve
537 * Finally remove the NetNEvent and NetPEvent classes,
538 * Get synthesis working with the NetEvWait class,
539 * and get started supporting multiple events in a
540 * wait in vvm.
541 *
b1fd927 Named events really should be expressed with PEIdent
steve authored Apr 12, 2000
542 * Revision 1.3 2000/04/12 04:23:58 steve
543 * Named events really should be expressed with PEIdent
544 * objects in the pform,
545 *
546 * Handle named events within the mix of net events
547 * and edges. As a unified lot they get caught together.
548 * wait statements are broken into more complex statements
549 * that include a conditional.
550 *
551 * Do not generate NetPEvent or NetNEvent objects in
552 * elaboration. NetEvent, NetEvWait and NetEvProbe
553 * take over those functions in the netlist.
554 *
8dbd641 All events now use the NetEvent class.
steve authored Apr 10, 2000
555 * Revision 1.2 2000/04/10 05:26:06 steve
556 * All events now use the NetEvent class.
557 *
30e8289 Simulate named event trigger and waits.
steve authored Apr 4, 2000
558 * Revision 1.1 2000/04/04 03:20:15 steve
559 * Simulate named event trigger and waits.
560 *
561 */
Something went wrong with that request. Please try again.