Support event names as expressions elements.
This commit is contained in:
parent
299f6f8551
commit
f1cc9d865b
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: design_dump.cc,v 1.138 2003/03/10 23:40:53 steve Exp $"
|
#ident "$Id: design_dump.cc,v 1.139 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -915,6 +915,11 @@ void NetECReal::dump(ostream&o) const
|
||||||
o << value_;
|
o << value_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NetEEvent::dump(ostream&o) const
|
||||||
|
{
|
||||||
|
o << "<event=" << event_->name() << ">";
|
||||||
|
}
|
||||||
|
|
||||||
void NetEScope::dump(ostream&o) const
|
void NetEScope::dump(ostream&o) const
|
||||||
{
|
{
|
||||||
o << "<scope=" << scope_->name() << ">";
|
o << "<scope=" << scope_->name() << ">";
|
||||||
|
|
@ -1028,6 +1033,9 @@ void Design::dump(ostream&o) const
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: design_dump.cc,v $
|
* $Log: design_dump.cc,v $
|
||||||
|
* Revision 1.139 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.138 2003/03/10 23:40:53 steve
|
* Revision 1.138 2003/03/10 23:40:53 steve
|
||||||
* Keep parameter constants for the ivl_target API.
|
* Keep parameter constants for the ivl_target API.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
11
dup_expr.cc
11
dup_expr.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: dup_expr.cc,v 1.13 2003/03/15 18:08:43 steve Exp $"
|
#ident "$Id: dup_expr.cc,v 1.14 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -46,6 +46,12 @@ NetEConstParam* NetEConstParam::dup_expr() const
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NetEEvent* NetEEvent::dup_expr() const
|
||||||
|
{
|
||||||
|
assert(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
NetEScope* NetEScope::dup_expr() const
|
NetEScope* NetEScope::dup_expr() const
|
||||||
{
|
{
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
@ -116,6 +122,9 @@ NetEVariable* NetEVariable::dup_expr() const
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: dup_expr.cc,v $
|
* $Log: dup_expr.cc,v $
|
||||||
|
* Revision 1.14 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.13 2003/03/15 18:08:43 steve
|
* Revision 1.13 2003/03/15 18:08:43 steve
|
||||||
* Comparison operators do have defined width.
|
* Comparison operators do have defined width.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
13
elab_expr.cc
13
elab_expr.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: elab_expr.cc,v 1.75 2003/04/19 04:19:38 steve Exp $"
|
#ident "$Id: elab_expr.cc,v 1.76 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -778,6 +778,14 @@ NetExpr* PEIdent::elaborate_expr(Design*des, NetScope*scope,
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the identifier is a named event.
|
||||||
|
// is a variable reference.
|
||||||
|
if (NetEvent*nev = des->find_event(scope, path_)) {
|
||||||
|
NetEEvent*tmp = new NetEEvent(nev);
|
||||||
|
tmp->set_line(*this);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
// Finally, if this is a scope name, then return that. Look
|
// Finally, if this is a scope name, then return that. Look
|
||||||
// first to see if this is a name of a local scope. Failing
|
// first to see if this is a name of a local scope. Failing
|
||||||
// that, search globally for a hierarchical name.
|
// that, search globally for a hierarchical name.
|
||||||
|
|
@ -953,6 +961,9 @@ NetExpr* PEUnary::elaborate_expr(Design*des, NetScope*scope, bool) const
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: elab_expr.cc,v $
|
* $Log: elab_expr.cc,v $
|
||||||
|
* Revision 1.76 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.75 2003/04/19 04:19:38 steve
|
* Revision 1.75 2003/04/19 04:19:38 steve
|
||||||
* Set line number for ternary expressions.
|
* Set line number for ternary expressions.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
10
emit.cc
10
emit.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: emit.cc,v 1.72 2003/03/10 23:40:53 steve Exp $"
|
#ident "$Id: emit.cc,v 1.73 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -435,6 +435,11 @@ void NetEParam::expr_scan(struct expr_scan_t*tgt) const
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NetEEvent::expr_scan(struct expr_scan_t*tgt) const
|
||||||
|
{
|
||||||
|
tgt->expr_event(this);
|
||||||
|
}
|
||||||
|
|
||||||
void NetEScope::expr_scan(struct expr_scan_t*tgt) const
|
void NetEScope::expr_scan(struct expr_scan_t*tgt) const
|
||||||
{
|
{
|
||||||
tgt->expr_scope(this);
|
tgt->expr_scope(this);
|
||||||
|
|
@ -497,6 +502,9 @@ bool emit(const Design*des, const char*type)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: emit.cc,v $
|
* $Log: emit.cc,v $
|
||||||
|
* Revision 1.73 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.72 2003/03/10 23:40:53 steve
|
* Revision 1.72 2003/03/10 23:40:53 steve
|
||||||
* Keep parameter constants for the ivl_target API.
|
* Keep parameter constants for the ivl_target API.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
1
ivl.def
1
ivl.def
|
|
@ -26,6 +26,7 @@ ivl_expr_type
|
||||||
ivl_expr_bits
|
ivl_expr_bits
|
||||||
ivl_expr_def
|
ivl_expr_def
|
||||||
ivl_expr_dvalue
|
ivl_expr_dvalue
|
||||||
|
ivl_expr_event
|
||||||
ivl_expr_lsi
|
ivl_expr_lsi
|
||||||
ivl_expr_memory
|
ivl_expr_memory
|
||||||
ivl_expr_name
|
ivl_expr_name
|
||||||
|
|
|
||||||
44
ivl_target.h
44
ivl_target.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: ivl_target.h,v 1.116 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: ivl_target.h,v 1.117 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
@ -167,25 +167,28 @@ typedef enum ivl_drive_e {
|
||||||
IVL_DR_SUPPLY = 7
|
IVL_DR_SUPPLY = 7
|
||||||
} ivl_drive_t;
|
} ivl_drive_t;
|
||||||
|
|
||||||
/* This is the type of an ivl_expr_t object. */
|
/* This is the type of an ivl_expr_t object. The explicit numbers
|
||||||
|
allow additions to the enumeration without causing values to shift
|
||||||
|
and incompatibilities to be introduced. */
|
||||||
typedef enum ivl_expr_type_e {
|
typedef enum ivl_expr_type_e {
|
||||||
IVL_EX_NONE = 0,
|
IVL_EX_NONE = 0,
|
||||||
IVL_EX_BITSEL,
|
IVL_EX_BITSEL = 1,
|
||||||
IVL_EX_BINARY,
|
IVL_EX_BINARY = 2,
|
||||||
IVL_EX_CONCAT,
|
IVL_EX_CONCAT = 3,
|
||||||
IVL_EX_MEMORY,
|
IVL_EX_EVENT = 17,
|
||||||
IVL_EX_NUMBER,
|
IVL_EX_MEMORY = 4,
|
||||||
IVL_EX_SCOPE,
|
IVL_EX_NUMBER = 5,
|
||||||
IVL_EX_SELECT,
|
IVL_EX_SCOPE = 6,
|
||||||
IVL_EX_SFUNC,
|
IVL_EX_SELECT = 7,
|
||||||
IVL_EX_SIGNAL,
|
IVL_EX_SFUNC = 8,
|
||||||
IVL_EX_STRING,
|
IVL_EX_SIGNAL = 9,
|
||||||
IVL_EX_TERNARY,
|
IVL_EX_STRING = 10,
|
||||||
IVL_EX_UFUNC,
|
IVL_EX_TERNARY = 11,
|
||||||
IVL_EX_ULONG,
|
IVL_EX_UFUNC = 12,
|
||||||
IVL_EX_UNARY,
|
IVL_EX_ULONG = 13,
|
||||||
IVL_EX_VARIABLE,
|
IVL_EX_UNARY = 14,
|
||||||
IVL_EX_REALNUM
|
IVL_EX_VARIABLE = 15,
|
||||||
|
IVL_EX_REALNUM = 16
|
||||||
} ivl_expr_type_t;
|
} ivl_expr_type_t;
|
||||||
|
|
||||||
/* This is the type code for an ivl_net_logic_t object. */
|
/* This is the type code for an ivl_net_logic_t object. */
|
||||||
|
|
@ -493,6 +496,8 @@ extern ivl_expr_t ivl_expr_parm(ivl_expr_t net, unsigned idx);
|
||||||
extern unsigned ivl_expr_parms(ivl_expr_t net);
|
extern unsigned ivl_expr_parms(ivl_expr_t net);
|
||||||
/* IVL_EX_CONCAT */
|
/* IVL_EX_CONCAT */
|
||||||
extern unsigned ivl_expr_repeat(ivl_expr_t net);
|
extern unsigned ivl_expr_repeat(ivl_expr_t net);
|
||||||
|
/* IVL_EX_EVENT */
|
||||||
|
extern ivl_event_t ivl_expr_event(ivl_expr_t net);
|
||||||
/* IVL_EX_SCOPE */
|
/* IVL_EX_SCOPE */
|
||||||
extern ivl_scope_t ivl_expr_scope(ivl_expr_t net);
|
extern ivl_scope_t ivl_expr_scope(ivl_expr_t net);
|
||||||
/* IVL_EX_BITSEL */
|
/* IVL_EX_BITSEL */
|
||||||
|
|
@ -1209,6 +1214,9 @@ _END_DECL
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: ivl_target.h,v $
|
* $Log: ivl_target.h,v $
|
||||||
|
* Revision 1.117 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.116 2003/04/11 05:18:08 steve
|
* Revision 1.116 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
11
net_event.cc
11
net_event.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: net_event.cc,v 1.22 2003/03/06 00:28:41 steve Exp $"
|
#ident "$Id: net_event.cc,v 1.23 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -35,6 +35,7 @@ NetEvent::NetEvent(const char*n)
|
||||||
probes_ = 0;
|
probes_ = 0;
|
||||||
trig_ = 0;
|
trig_ = 0;
|
||||||
waitref_ = 0;
|
waitref_ = 0;
|
||||||
|
exprref_ = 0;
|
||||||
wlist_ = 0;
|
wlist_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -116,6 +117,11 @@ unsigned NetEvent::nwait() const
|
||||||
return waitref_;
|
return waitref_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned NetEvent::nexpr() const
|
||||||
|
{
|
||||||
|
return exprref_;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A "similar" event is one that has an identical non-nil set of
|
* A "similar" event is one that has an identical non-nil set of
|
||||||
* probes.
|
* probes.
|
||||||
|
|
@ -443,6 +449,9 @@ NetProc* NetEvWait::statement()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: net_event.cc,v $
|
* $Log: net_event.cc,v $
|
||||||
|
* Revision 1.23 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.22 2003/03/06 00:28:41 steve
|
* Revision 1.22 2003/03/06 00:28:41 steve
|
||||||
* All NetObj objects have lex_string base names.
|
* All NetObj objects have lex_string base names.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: net_nex_input.cc,v 1.8 2003/01/26 21:15:58 steve Exp $"
|
#ident "$Id: net_nex_input.cc,v 1.9 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -102,6 +102,11 @@ NexusSet* NetEParam::nex_input()
|
||||||
return new NexusSet;
|
return new NexusSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NexusSet* NetEEvent::nex_input()
|
||||||
|
{
|
||||||
|
return new NexusSet;
|
||||||
|
}
|
||||||
|
|
||||||
NexusSet* NetEScope::nex_input()
|
NexusSet* NetEScope::nex_input()
|
||||||
{
|
{
|
||||||
return new NexusSet;
|
return new NexusSet;
|
||||||
|
|
@ -372,6 +377,9 @@ NexusSet* NetWhile::nex_input()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: net_nex_input.cc,v $
|
* $Log: net_nex_input.cc,v $
|
||||||
|
* Revision 1.9 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.8 2003/01/26 21:15:58 steve
|
* Revision 1.8 2003/01/26 21:15:58 steve
|
||||||
* Rework expression parsing and elaboration to
|
* Rework expression parsing and elaboration to
|
||||||
* accommodate real/realtime values and expressions.
|
* accommodate real/realtime values and expressions.
|
||||||
|
|
|
||||||
20
netlist.cc
20
netlist.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: netlist.cc,v 1.211 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: netlist.cc,v 1.212 2003/04/22 04:48:29 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -1942,6 +1942,21 @@ NetEMemory* NetEMemory::dup_expr() const
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NetEEvent::NetEEvent(NetEvent*e)
|
||||||
|
: event_(e)
|
||||||
|
{
|
||||||
|
e->exprref_ += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
NetEEvent::~NetEEvent()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const NetEvent* NetEEvent::event() const
|
||||||
|
{
|
||||||
|
return event_;
|
||||||
|
}
|
||||||
|
|
||||||
NetEScope::NetEScope(NetScope*s)
|
NetEScope::NetEScope(NetScope*s)
|
||||||
: scope_(s)
|
: scope_(s)
|
||||||
{
|
{
|
||||||
|
|
@ -2162,6 +2177,9 @@ const NetProc*NetTaskDef::proc() const
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: netlist.cc,v $
|
* $Log: netlist.cc,v $
|
||||||
|
* Revision 1.212 2003/04/22 04:48:29 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.211 2003/04/11 05:18:08 steve
|
* Revision 1.211 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
32
netlist.h
32
netlist.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: netlist.h,v 1.285 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: netlist.h,v 1.286 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -1734,6 +1734,7 @@ class NetEvent : public LineInfo {
|
||||||
friend class NetEvProbe;
|
friend class NetEvProbe;
|
||||||
friend class NetEvTrig;
|
friend class NetEvTrig;
|
||||||
friend class NetEvWait;
|
friend class NetEvWait;
|
||||||
|
friend class NetEEvent;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// The name of the event is the basename, and should not
|
// The name of the event is the basename, and should not
|
||||||
|
|
@ -1752,8 +1753,8 @@ class NetEvent : public LineInfo {
|
||||||
|
|
||||||
// Return the number of NetEvWait nodes that reference me.
|
// Return the number of NetEvWait nodes that reference me.
|
||||||
unsigned nwait() const;
|
unsigned nwait() const;
|
||||||
|
|
||||||
unsigned ntrig() const;
|
unsigned ntrig() const;
|
||||||
|
unsigned nexpr() const;
|
||||||
|
|
||||||
NetScope* scope();
|
NetScope* scope();
|
||||||
const NetScope* scope() const;
|
const NetScope* scope() const;
|
||||||
|
|
@ -1795,6 +1796,9 @@ class NetEvent : public LineInfo {
|
||||||
};
|
};
|
||||||
struct wcell_ *wlist_;
|
struct wcell_ *wlist_;
|
||||||
|
|
||||||
|
// expression references, ala. task/funcs
|
||||||
|
unsigned exprref_;
|
||||||
|
|
||||||
private: // not implemented
|
private: // not implemented
|
||||||
NetEvent(const NetEvent&);
|
NetEvent(const NetEvent&);
|
||||||
NetEvent& operator= (const NetEvent&);
|
NetEvent& operator= (const NetEvent&);
|
||||||
|
|
@ -2645,6 +2649,27 @@ class NetESelect : public NetExpr {
|
||||||
NetExpr*base_;
|
NetExpr*base_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This node is for representation of named events.
|
||||||
|
*/
|
||||||
|
class NetEEvent : public NetExpr {
|
||||||
|
|
||||||
|
public:
|
||||||
|
NetEEvent(NetEvent*);
|
||||||
|
~NetEEvent();
|
||||||
|
|
||||||
|
const NetEvent* event() const;
|
||||||
|
|
||||||
|
virtual void expr_scan(struct expr_scan_t*) const;
|
||||||
|
virtual NetEEvent* dup_expr() const;
|
||||||
|
virtual NexusSet* nex_input();
|
||||||
|
|
||||||
|
virtual void dump(ostream&os) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
NetEvent*event_;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This class is a special (and magical) expression node type that
|
* This class is a special (and magical) expression node type that
|
||||||
* represents scope names. These can only be found as parameters to
|
* represents scope names. These can only be found as parameters to
|
||||||
|
|
@ -3250,6 +3275,9 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: netlist.h,v $
|
* $Log: netlist.h,v $
|
||||||
|
* Revision 1.286 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.285 2003/04/11 05:18:08 steve
|
* Revision 1.285 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: nodangle.cc,v 1.17 2002/08/12 01:35:00 steve Exp $"
|
#ident "$Id: nodangle.cc,v 1.18 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -46,7 +46,7 @@ void nodangle_f::event(Design*des, NetEvent*ev)
|
||||||
/* If there are no references to this event, then go right
|
/* If there are no references to this event, then go right
|
||||||
ahead and delete in. There is no use looking further at
|
ahead and delete in. There is no use looking further at
|
||||||
it. */
|
it. */
|
||||||
if ((ev->nwait() + ev->ntrig()) == 0) {
|
if ((ev->nwait() + ev->ntrig() + ev->nexpr()) == 0) {
|
||||||
delete ev;
|
delete ev;
|
||||||
etotal += 1;
|
etotal += 1;
|
||||||
return;
|
return;
|
||||||
|
|
@ -164,6 +164,9 @@ void nodangle(Design*des)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: nodangle.cc,v $
|
* $Log: nodangle.cc,v $
|
||||||
|
* Revision 1.18 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.17 2002/08/12 01:35:00 steve
|
* Revision 1.17 2002/08/12 01:35:00 steve
|
||||||
* conditional ident string using autoconfig.
|
* conditional ident string using autoconfig.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
12
t-dll-api.cc
12
t-dll-api.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: t-dll-api.cc,v 1.97 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: t-dll-api.cc,v 1.98 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -420,6 +420,13 @@ extern "C" unsigned ivl_expr_repeat(ivl_expr_t net)
|
||||||
return net->u_.concat_.rept;
|
return net->u_.concat_.rept;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" ivl_event_t ivl_expr_event(ivl_expr_t net)
|
||||||
|
{
|
||||||
|
assert(net);
|
||||||
|
assert(net->type_ == IVL_EX_EVENT);
|
||||||
|
return net->u_.event_.event;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" ivl_scope_t ivl_expr_scope(ivl_expr_t net)
|
extern "C" ivl_scope_t ivl_expr_scope(ivl_expr_t net)
|
||||||
{
|
{
|
||||||
assert(net);
|
assert(net);
|
||||||
|
|
@ -1826,6 +1833,9 @@ extern "C" ivl_variable_type_t ivl_variable_type(ivl_variable_t net)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: t-dll-api.cc,v $
|
* $Log: t-dll-api.cc,v $
|
||||||
|
* Revision 1.98 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.97 2003/04/11 05:18:08 steve
|
* Revision 1.97 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: t-dll-expr.cc,v 1.35 2003/03/10 23:40:53 steve Exp $"
|
#ident "$Id: t-dll-expr.cc,v 1.36 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -302,6 +302,30 @@ void dll_target::expr_creal(const NetECReal*net)
|
||||||
expr_->u_.real_.value = net->value().as_double();
|
expr_->u_.real_.value = net->value().as_double();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dll_target::expr_event(const NetEEvent*net)
|
||||||
|
{
|
||||||
|
assert(expr_ == 0);
|
||||||
|
|
||||||
|
expr_ = (ivl_expr_t)calloc(1, sizeof(struct ivl_expr_s));
|
||||||
|
assert(expr_);
|
||||||
|
|
||||||
|
expr_->type_ = IVL_EX_EVENT;
|
||||||
|
expr_->value_= IVL_VT_VOID;
|
||||||
|
|
||||||
|
/* Locate the event by name. Save the ivl_event_t in the
|
||||||
|
expression so that the generator can find it easily. */
|
||||||
|
const NetEvent*ev = net->event();
|
||||||
|
ivl_scope_t ev_scope = lookup_scope_(ev->scope());
|
||||||
|
|
||||||
|
for (unsigned idx = 0 ; idx < ev_scope->nevent_ ; idx += 1) {
|
||||||
|
const char*ename = ivl_event_basename(ev_scope->event_[idx]);
|
||||||
|
if (strcmp(ev->name(), ename) == 0) {
|
||||||
|
expr_->u_.event_.event = ev_scope->event_[idx];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void dll_target::expr_scope(const NetEScope*net)
|
void dll_target::expr_scope(const NetEScope*net)
|
||||||
{
|
{
|
||||||
assert(expr_ == 0);
|
assert(expr_ == 0);
|
||||||
|
|
@ -579,6 +603,9 @@ void dll_target::expr_variable(const NetEVariable*net)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: t-dll-expr.cc,v $
|
* $Log: t-dll-expr.cc,v $
|
||||||
|
* Revision 1.36 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.35 2003/03/10 23:40:53 steve
|
* Revision 1.35 2003/03/10 23:40:53 steve
|
||||||
* Keep parameter constants for the ivl_target API.
|
* Keep parameter constants for the ivl_target API.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
10
t-dll.h
10
t-dll.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: t-dll.h,v 1.101 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: t-dll.h,v 1.102 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "target.h"
|
# include "target.h"
|
||||||
|
|
@ -134,6 +134,7 @@ struct dll_target : public target_t, public expr_scan_t {
|
||||||
void expr_const(const NetEConst*);
|
void expr_const(const NetEConst*);
|
||||||
void expr_creal(const NetECReal*);
|
void expr_creal(const NetECReal*);
|
||||||
void expr_param(const NetEConstParam*);
|
void expr_param(const NetEConstParam*);
|
||||||
|
void expr_event(const NetEEvent*);
|
||||||
void expr_scope(const NetEScope*);
|
void expr_scope(const NetEScope*);
|
||||||
void expr_select(const NetESelect*);
|
void expr_select(const NetESelect*);
|
||||||
void expr_sfunc(const NetESFunc*);
|
void expr_sfunc(const NetESFunc*);
|
||||||
|
|
@ -217,6 +218,10 @@ struct ivl_expr_s {
|
||||||
ivl_parameter_t parameter;
|
ivl_parameter_t parameter;
|
||||||
} number_;
|
} number_;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
ivl_event_t event;
|
||||||
|
} event_;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
ivl_scope_t scope;
|
ivl_scope_t scope;
|
||||||
} scope_;
|
} scope_;
|
||||||
|
|
@ -673,6 +678,9 @@ struct ivl_variable_s {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: t-dll.h,v $
|
* $Log: t-dll.h,v $
|
||||||
|
* Revision 1.102 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.101 2003/04/11 05:18:08 steve
|
* Revision 1.101 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
11
target.cc
11
target.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: target.cc,v 1.66 2003/03/10 23:40:54 steve Exp $"
|
#ident "$Id: target.cc,v 1.67 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -346,6 +346,12 @@ void expr_scan_t::expr_memory(const NetEMemory*)
|
||||||
"unhandled expr_memory." << endl;
|
"unhandled expr_memory." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void expr_scan_t::expr_event(const NetEEvent*)
|
||||||
|
{
|
||||||
|
cerr << "expr_scan_t (" << typeid(*this).name() << "): "
|
||||||
|
"unhandled expr_event." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
void expr_scan_t::expr_scope(const NetEScope*)
|
void expr_scan_t::expr_scope(const NetEScope*)
|
||||||
{
|
{
|
||||||
cerr << "expr_scan_t (" << typeid(*this).name() << "): "
|
cerr << "expr_scan_t (" << typeid(*this).name() << "): "
|
||||||
|
|
@ -408,6 +414,9 @@ void expr_scan_t::expr_binary(const NetEBinary*ex)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: target.cc,v $
|
* $Log: target.cc,v $
|
||||||
|
* Revision 1.67 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.66 2003/03/10 23:40:54 steve
|
* Revision 1.66 2003/03/10 23:40:54 steve
|
||||||
* Keep parameter constants for the ivl_target API.
|
* Keep parameter constants for the ivl_target API.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
6
target.h
6
target.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: target.h,v 1.62 2003/03/10 23:40:54 steve Exp $"
|
#ident "$Id: target.h,v 1.63 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "netlist.h"
|
# include "netlist.h"
|
||||||
|
|
@ -135,6 +135,7 @@ struct expr_scan_t {
|
||||||
virtual void expr_creal(const NetECReal*);
|
virtual void expr_creal(const NetECReal*);
|
||||||
virtual void expr_concat(const NetEConcat*);
|
virtual void expr_concat(const NetEConcat*);
|
||||||
virtual void expr_memory(const NetEMemory*);
|
virtual void expr_memory(const NetEMemory*);
|
||||||
|
virtual void expr_event(const NetEEvent*);
|
||||||
virtual void expr_scope(const NetEScope*);
|
virtual void expr_scope(const NetEScope*);
|
||||||
virtual void expr_select(const NetESelect*);
|
virtual void expr_select(const NetESelect*);
|
||||||
virtual void expr_sfunc(const NetESFunc*);
|
virtual void expr_sfunc(const NetESFunc*);
|
||||||
|
|
@ -168,6 +169,9 @@ extern const struct target *target_table[];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: target.h,v $
|
* $Log: target.h,v $
|
||||||
|
* Revision 1.63 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.62 2003/03/10 23:40:54 steve
|
* Revision 1.62 2003/03/10 23:40:54 steve
|
||||||
* Keep parameter constants for the ivl_target API.
|
* Keep parameter constants for the ivl_target API.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: draw_vpi.c,v 1.6 2003/04/12 23:25:20 steve Exp $"
|
#ident "$Id: draw_vpi.c,v 1.7 2003/04/22 04:48:30 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vvp_priv.h"
|
# include "vvp_priv.h"
|
||||||
|
|
@ -77,6 +77,7 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
||||||
case IVL_EX_NONE:
|
case IVL_EX_NONE:
|
||||||
case IVL_EX_NUMBER:
|
case IVL_EX_NUMBER:
|
||||||
case IVL_EX_STRING:
|
case IVL_EX_STRING:
|
||||||
|
case IVL_EX_EVENT:
|
||||||
case IVL_EX_SCOPE:
|
case IVL_EX_SCOPE:
|
||||||
case IVL_EX_VARIABLE:
|
case IVL_EX_VARIABLE:
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -198,6 +199,10 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
case IVL_EX_EVENT:
|
||||||
|
fprintf(vvp_out, ", E_%p", ivl_expr_event(expr));
|
||||||
|
continue;
|
||||||
|
|
||||||
case IVL_EX_SCOPE:
|
case IVL_EX_SCOPE:
|
||||||
fprintf(vvp_out, ", S_%p", ivl_expr_scope(expr));
|
fprintf(vvp_out, ", S_%p", ivl_expr_scope(expr));
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -289,6 +294,9 @@ int draw_vpi_rfunc_call(ivl_expr_t fnet)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: draw_vpi.c,v $
|
* $Log: draw_vpi.c,v $
|
||||||
|
* Revision 1.7 2003/04/22 04:48:30 steve
|
||||||
|
* Support event names as expressions elements.
|
||||||
|
*
|
||||||
* Revision 1.6 2003/04/12 23:25:20 steve
|
* Revision 1.6 2003/04/12 23:25:20 steve
|
||||||
* Properly pass $signed(signal) to tasks.
|
* Properly pass $signed(signal) to tasks.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue