Detect and list scope names.
This commit is contained in:
parent
3a69ab8934
commit
26288eeeb4
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: design_dump.cc,v 1.58 1999/11/21 00:13:08 steve Exp $"
|
#ident "$Id: design_dump.cc,v 1.59 1999/11/24 04:01:58 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -579,6 +579,11 @@ void NetRepeat::dump(ostream&o, unsigned ind) const
|
||||||
statement_->dump(o, ind+2);
|
statement_->dump(o, ind+2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NetScope::dump(ostream&o) const
|
||||||
|
{
|
||||||
|
o << name_ << endl;
|
||||||
|
}
|
||||||
|
|
||||||
void NetSTask::dump(ostream&o, unsigned ind) const
|
void NetSTask::dump(ostream&o, unsigned ind) const
|
||||||
{
|
{
|
||||||
o << setw(ind) << "" << name_;
|
o << setw(ind) << "" << name_;
|
||||||
|
|
@ -773,6 +778,14 @@ void NetEUnary::dump(ostream&o) const
|
||||||
|
|
||||||
void Design::dump(ostream&o) const
|
void Design::dump(ostream&o) const
|
||||||
{
|
{
|
||||||
|
o << "SCOPES:" << endl;
|
||||||
|
{
|
||||||
|
map<string,NetScope*>::const_iterator pp;
|
||||||
|
for (pp = scopes_.begin()
|
||||||
|
; pp != scopes_.end() ; pp ++)
|
||||||
|
(*pp).second -> dump(o);
|
||||||
|
}
|
||||||
|
|
||||||
o << "ELABORATED PARAMETERS:" << endl;
|
o << "ELABORATED PARAMETERS:" << endl;
|
||||||
{
|
{
|
||||||
map<string,NetExpr*>::const_iterator pp;
|
map<string,NetExpr*>::const_iterator pp;
|
||||||
|
|
@ -842,6 +855,9 @@ void Design::dump(ostream&o) const
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: design_dump.cc,v $
|
* $Log: design_dump.cc,v $
|
||||||
|
* Revision 1.59 1999/11/24 04:01:58 steve
|
||||||
|
* Detect and list scope names.
|
||||||
|
*
|
||||||
* Revision 1.58 1999/11/21 00:13:08 steve
|
* Revision 1.58 1999/11/21 00:13:08 steve
|
||||||
* Support memories in continuous assignments.
|
* Support memories in continuous assignments.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
241
elaborate.cc
241
elaborate.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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: elaborate.cc,v 1.128 1999/11/21 20:03:24 steve Exp $"
|
#ident "$Id: elaborate.cc,v 1.129 1999/11/24 04:01:58 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -376,7 +376,7 @@ void PGBuiltin::elaborate(Design*des, const string&path) const
|
||||||
void PGModule::elaborate_mod_(Design*des, Module*rmod, const string&path) const
|
void PGModule::elaborate_mod_(Design*des, Module*rmod, const string&path) const
|
||||||
{
|
{
|
||||||
assert(get_name() != "");
|
assert(get_name() != "");
|
||||||
const string my_name = path + "." + get_name();
|
const string my_name = des->make_scope(path, get_name());
|
||||||
|
|
||||||
const svector<PExpr*>*pins;
|
const svector<PExpr*>*pins;
|
||||||
|
|
||||||
|
|
@ -1322,7 +1322,7 @@ NetProc* PBlock::elaborate(Design*des, const string&path) const
|
||||||
NetBlock*cur = new NetBlock(type);
|
NetBlock*cur = new NetBlock(type);
|
||||||
bool fail_flag = false;
|
bool fail_flag = false;
|
||||||
|
|
||||||
string npath = name_.length()? (path+"."+name_) : path;
|
string npath = name_.length()? des->make_scope(path, name_) : path;
|
||||||
|
|
||||||
// Handle the special case that the block contains only one
|
// Handle the special case that the block contains only one
|
||||||
// statement. There is no need to keep the block node.
|
// statement. There is no need to keep the block node.
|
||||||
|
|
@ -2129,6 +2129,8 @@ Design* elaborate(const map<string,Module*>&modules,
|
||||||
// module and elaborate what I find.
|
// module and elaborate what I find.
|
||||||
Design*des = new Design;
|
Design*des = new Design;
|
||||||
|
|
||||||
|
des->make_root_scope(root);
|
||||||
|
|
||||||
modlist = &modules;
|
modlist = &modules;
|
||||||
udplist = &primitives;
|
udplist = &primitives;
|
||||||
bool rc = rmod->elaborate(des, root, (svector<PExpr*>*)0);
|
bool rc = rmod->elaborate(des, root, (svector<PExpr*>*)0);
|
||||||
|
|
@ -2145,6 +2147,9 @@ Design* elaborate(const map<string,Module*>&modules,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: elaborate.cc,v $
|
* $Log: elaborate.cc,v $
|
||||||
|
* Revision 1.129 1999/11/24 04:01:58 steve
|
||||||
|
* Detect and list scope names.
|
||||||
|
*
|
||||||
* Revision 1.128 1999/11/21 20:03:24 steve
|
* Revision 1.128 1999/11/21 20:03:24 steve
|
||||||
* Handle multiply in constant expressions.
|
* Handle multiply in constant expressions.
|
||||||
*
|
*
|
||||||
|
|
@ -2292,235 +2297,5 @@ Design* elaborate(const map<string,Module*>&modules,
|
||||||
*
|
*
|
||||||
* Revision 1.86 1999/09/15 04:17:52 steve
|
* Revision 1.86 1999/09/15 04:17:52 steve
|
||||||
* separate assign lval elaboration for error checking.
|
* separate assign lval elaboration for error checking.
|
||||||
*
|
|
||||||
* Revision 1.85 1999/09/15 01:55:06 steve
|
|
||||||
* Elaborate non-blocking assignment to memories.
|
|
||||||
*
|
|
||||||
* Revision 1.84 1999/09/14 01:50:52 steve
|
|
||||||
* implicitly declare wires if needed.
|
|
||||||
*
|
|
||||||
* Revision 1.83 1999/09/13 03:10:59 steve
|
|
||||||
* Clarify msb/lsb in context of netlist. Properly
|
|
||||||
* handle part selects in lval and rval of expressions,
|
|
||||||
* and document where the least significant bit goes
|
|
||||||
* in NetNet objects.
|
|
||||||
*
|
|
||||||
* Revision 1.82 1999/09/12 01:16:51 steve
|
|
||||||
* Pad r-values in certain assignments.
|
|
||||||
*
|
|
||||||
* Revision 1.81 1999/09/10 04:04:06 steve
|
|
||||||
* Add ternary elaboration.
|
|
||||||
*
|
|
||||||
* Revision 1.80 1999/09/08 04:05:30 steve
|
|
||||||
* Allow assign to not match rvalue width.
|
|
||||||
*
|
|
||||||
* Revision 1.79 1999/09/08 02:24:39 steve
|
|
||||||
* Empty conditionals (pmonta@imedia.com)
|
|
||||||
*
|
|
||||||
* Revision 1.78 1999/09/04 19:11:46 steve
|
|
||||||
* Add support for delayed non-blocking assignments.
|
|
||||||
*
|
|
||||||
* Revision 1.77 1999/09/03 04:28:38 steve
|
|
||||||
* elaborate the binary plus operator.
|
|
||||||
*
|
|
||||||
* Revision 1.76 1999/09/02 01:59:27 steve
|
|
||||||
* Parse non-blocking assignment delays.
|
|
||||||
*
|
|
||||||
* Revision 1.75 1999/09/01 20:46:19 steve
|
|
||||||
* Handle recursive functions and arbitrary function
|
|
||||||
* references to other functions, properly pass
|
|
||||||
* function parameters and save function results.
|
|
||||||
*
|
|
||||||
* Revision 1.74 1999/08/31 22:38:29 steve
|
|
||||||
* Elaborate and emit to vvm procedural functions.
|
|
||||||
*
|
|
||||||
* Revision 1.73 1999/08/25 22:22:41 steve
|
|
||||||
* elaborate some aspects of functions.
|
|
||||||
*
|
|
||||||
* Revision 1.72 1999/08/23 16:48:39 steve
|
|
||||||
* Parameter overrides support from Peter Monta
|
|
||||||
* AND and XOR support wide expressions.
|
|
||||||
*
|
|
||||||
* Revision 1.71 1999/08/18 04:00:02 steve
|
|
||||||
* Fixup spelling and some error messages. <LRDoolittle@lbl.gov>
|
|
||||||
*
|
|
||||||
* Revision 1.70 1999/08/08 20:06:06 steve
|
|
||||||
* Uninitialized low and high indices for single gate syntax
|
|
||||||
*
|
|
||||||
* Revision 1.69 1999/08/06 04:05:28 steve
|
|
||||||
* Handle scope of parameters.
|
|
||||||
*
|
|
||||||
* Revision 1.68 1999/08/05 04:58:57 steve
|
|
||||||
* Allow integers as register lvalues.
|
|
||||||
*
|
|
||||||
* Revision 1.67 1999/08/04 02:13:02 steve
|
|
||||||
* Elaborate module ports that are concatenations of
|
|
||||||
* module signals.
|
|
||||||
*
|
|
||||||
* Revision 1.66 1999/08/03 04:14:49 steve
|
|
||||||
* Parse into pform arbitrarily complex module
|
|
||||||
* port declarations.
|
|
||||||
*
|
|
||||||
* Revision 1.65 1999/08/01 21:48:11 steve
|
|
||||||
* set width of procedural r-values when then
|
|
||||||
* l-value is a memory word.
|
|
||||||
*
|
|
||||||
* Revision 1.64 1999/08/01 21:18:55 steve
|
|
||||||
* elaborate rise/fall/decay for continuous assign.
|
|
||||||
*
|
|
||||||
* Revision 1.63 1999/08/01 16:34:50 steve
|
|
||||||
* Parse and elaborate rise/fall/decay times
|
|
||||||
* for gates, and handle the rules for partial
|
|
||||||
* lists of times.
|
|
||||||
*
|
|
||||||
* Revision 1.62 1999/07/31 03:16:54 steve
|
|
||||||
* move binary operators to derived classes.
|
|
||||||
*
|
|
||||||
* Revision 1.61 1999/07/28 03:46:57 steve
|
|
||||||
* Handle no ports at all for tasks.
|
|
||||||
*
|
|
||||||
* Revision 1.60 1999/07/24 19:19:06 steve
|
|
||||||
* Add support for task output and inout ports.
|
|
||||||
*
|
|
||||||
* Revision 1.59 1999/07/24 02:11:20 steve
|
|
||||||
* Elaborate task input ports.
|
|
||||||
*
|
|
||||||
* Revision 1.58 1999/07/18 21:17:50 steve
|
|
||||||
* Add support for CE input to XNF DFF, and do
|
|
||||||
* complete cleanup of replaced design nodes.
|
|
||||||
*
|
|
||||||
* Revision 1.57 1999/07/17 19:50:59 steve
|
|
||||||
* netlist support for ternary operator.
|
|
||||||
*
|
|
||||||
* Revision 1.56 1999/07/17 18:06:02 steve
|
|
||||||
* Better handling of bit width of + operators.
|
|
||||||
*
|
|
||||||
* Revision 1.55 1999/07/17 03:08:31 steve
|
|
||||||
* part select in expressions.
|
|
||||||
*
|
|
||||||
* Revision 1.54 1999/07/13 04:08:26 steve
|
|
||||||
* Construct delayed assignment as an equivalent block.
|
|
||||||
*
|
|
||||||
* Revision 1.53 1999/07/12 00:59:36 steve
|
|
||||||
* procedural blocking assignment delays.
|
|
||||||
*
|
|
||||||
* Revision 1.52 1999/07/10 03:00:05 steve
|
|
||||||
* Proper initialization of registers.
|
|
||||||
*
|
|
||||||
* Revision 1.51 1999/07/10 02:19:26 steve
|
|
||||||
* Support concatenate in l-values.
|
|
||||||
*
|
|
||||||
* Revision 1.50 1999/07/03 02:12:51 steve
|
|
||||||
* Elaborate user defined tasks.
|
|
||||||
*
|
|
||||||
* Revision 1.49 1999/06/24 04:45:29 steve
|
|
||||||
* Elaborate wide structoral bitwise OR.
|
|
||||||
*
|
|
||||||
* Revision 1.48 1999/06/24 04:24:18 steve
|
|
||||||
* Handle expression widths for EEE and NEE operators,
|
|
||||||
* add named blocks and scope handling,
|
|
||||||
* add registers declared in named blocks.
|
|
||||||
*
|
|
||||||
* Revision 1.47 1999/06/19 21:06:16 steve
|
|
||||||
* Elaborate and supprort to vvm the forever
|
|
||||||
* and repeat statements.
|
|
||||||
*
|
|
||||||
* Revision 1.46 1999/06/17 05:34:42 steve
|
|
||||||
* Clean up interface of the PWire class,
|
|
||||||
* Properly match wire ranges.
|
|
||||||
*
|
|
||||||
* Revision 1.45 1999/06/15 05:38:39 steve
|
|
||||||
* Support case expression lists.
|
|
||||||
*
|
|
||||||
* Revision 1.44 1999/06/15 03:44:53 steve
|
|
||||||
* Get rid of the STL vector template.
|
|
||||||
*
|
|
||||||
* Revision 1.43 1999/06/13 23:51:16 steve
|
|
||||||
* l-value part select for procedural assignments.
|
|
||||||
*
|
|
||||||
* Revision 1.42 1999/06/13 16:30:06 steve
|
|
||||||
* Unify the NetAssign constructors a bit.
|
|
||||||
*
|
|
||||||
* Revision 1.41 1999/06/13 04:46:54 steve
|
|
||||||
* Add part select lvalues to AssignNB.
|
|
||||||
*
|
|
||||||
* Revision 1.40 1999/06/12 23:16:37 steve
|
|
||||||
* Handle part selects as l-values to continuous assign.
|
|
||||||
*
|
|
||||||
* Revision 1.39 1999/06/10 04:03:53 steve
|
|
||||||
* Add support for the Ternary operator,
|
|
||||||
* Add support for repeat concatenation,
|
|
||||||
* Correct some seg faults cause by elaboration
|
|
||||||
* errors,
|
|
||||||
* Parse the casex anc casez statements.
|
|
||||||
*
|
|
||||||
* Revision 1.38 1999/06/09 03:00:06 steve
|
|
||||||
* Add support for procedural concatenation expression.
|
|
||||||
*
|
|
||||||
* Revision 1.37 1999/06/09 00:58:06 steve
|
|
||||||
* Support for binary | (Stephen Tell)
|
|
||||||
*
|
|
||||||
* Revision 1.36 1999/06/07 02:23:31 steve
|
|
||||||
* Support non-blocking assignment down to vvm.
|
|
||||||
*
|
|
||||||
* Revision 1.35 1999/06/06 23:07:43 steve
|
|
||||||
* Drop degenerate blocks.
|
|
||||||
*
|
|
||||||
* Revision 1.34 1999/06/06 20:45:38 steve
|
|
||||||
* Add parse and elaboration of non-blocking assignments,
|
|
||||||
* Replace list<PCase::Item*> with an svector version,
|
|
||||||
* Add integer support.
|
|
||||||
*
|
|
||||||
* Revision 1.33 1999/06/03 05:16:25 steve
|
|
||||||
* Compile time evalutation of constant expressions.
|
|
||||||
*
|
|
||||||
* Revision 1.32 1999/06/02 15:38:46 steve
|
|
||||||
* Line information with nets.
|
|
||||||
*
|
|
||||||
* Revision 1.31 1999/05/31 15:45:35 steve
|
|
||||||
* Fix error message.
|
|
||||||
*
|
|
||||||
* Revision 1.30 1999/05/30 01:11:46 steve
|
|
||||||
* Exressions are trees that can duplicate, and not DAGS.
|
|
||||||
*
|
|
||||||
* Revision 1.29 1999/05/29 02:36:17 steve
|
|
||||||
* module parameter bind by name.
|
|
||||||
*
|
|
||||||
* Revision 1.28 1999/05/27 04:13:08 steve
|
|
||||||
* Handle expression bit widths with non-fatal errors.
|
|
||||||
*
|
|
||||||
* Revision 1.27 1999/05/20 04:31:45 steve
|
|
||||||
* Much expression parsing work,
|
|
||||||
* mark continuous assigns with source line info,
|
|
||||||
* replace some assertion failures with Sorry messages.
|
|
||||||
*
|
|
||||||
* Revision 1.26 1999/05/16 05:08:42 steve
|
|
||||||
* Redo constant expression detection to happen
|
|
||||||
* after parsing.
|
|
||||||
*
|
|
||||||
* Parse more operators and expressions.
|
|
||||||
*
|
|
||||||
* Revision 1.25 1999/05/10 00:16:58 steve
|
|
||||||
* Parse and elaborate the concatenate operator
|
|
||||||
* in structural contexts, Replace vector<PExpr*>
|
|
||||||
* and list<PExpr*> with svector<PExpr*>, evaluate
|
|
||||||
* constant expressions with parameters, handle
|
|
||||||
* memories as lvalues.
|
|
||||||
*
|
|
||||||
* Parse task declarations, integer types.
|
|
||||||
*
|
|
||||||
* Revision 1.24 1999/05/05 03:04:46 steve
|
|
||||||
* Fix handling of null delay statements.
|
|
||||||
*
|
|
||||||
* Revision 1.23 1999/05/01 20:43:55 steve
|
|
||||||
* Handle wide events, such as @(a) where a has
|
|
||||||
* many bits in it.
|
|
||||||
*
|
|
||||||
* Add to vvm the binary ^ and unary & operators.
|
|
||||||
*
|
|
||||||
* Dump events a bit more completely.
|
|
||||||
*
|
|
||||||
* Revision 1.22 1999/05/01 02:57:53 steve
|
|
||||||
* Handle much more complex event expressions.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
46
netlist.cc
46
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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: netlist.cc,v 1.92 1999/11/21 18:03:35 steve Exp $"
|
#ident "$Id: netlist.cc,v 1.93 1999/11/24 04:01:59 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <cassert>
|
# include <cassert>
|
||||||
|
|
@ -1926,6 +1926,25 @@ const NetExpr* NetRepeat::expr() const
|
||||||
return expr_;
|
return expr_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NetScope::NetScope(const string&n)
|
||||||
|
: name_(n)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NetScope::NetScope(const string&p, const string&n)
|
||||||
|
: name_(p + "." + n)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NetScope::~NetScope()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
string NetScope::name() const
|
||||||
|
{
|
||||||
|
return name_;
|
||||||
|
}
|
||||||
|
|
||||||
NetTaskDef::NetTaskDef(const string&n, const svector<NetNet*>&po)
|
NetTaskDef::NetTaskDef(const string&n, const svector<NetNet*>&po)
|
||||||
: name_(n), proc_(0), ports_(po)
|
: name_(n), proc_(0), ports_(po)
|
||||||
{
|
{
|
||||||
|
|
@ -2218,6 +2237,28 @@ void NetUDP::set_initial(char val)
|
||||||
init_ = val;
|
init_ = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Design:: Design()
|
||||||
|
: errors(0), signals_(0), nodes_(0), procs_(0), lcounter_(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Design::~Design()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
string Design::make_root_scope(const string&root)
|
||||||
|
{
|
||||||
|
scopes_[root] = new NetScope(root);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
string Design::make_scope(const string&path, const string&name)
|
||||||
|
{
|
||||||
|
string npath = path + "." + name;
|
||||||
|
scopes_[npath] = new NetScope(path, name);
|
||||||
|
return npath;
|
||||||
|
}
|
||||||
|
|
||||||
void Design::set_parameter(const string&key, NetExpr*expr)
|
void Design::set_parameter(const string&key, NetExpr*expr)
|
||||||
{
|
{
|
||||||
parameters_[key] = expr;
|
parameters_[key] = expr;
|
||||||
|
|
@ -2531,6 +2572,9 @@ NetNet* Design::find_signal(bool (*func)(const NetNet*))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: netlist.cc,v $
|
* $Log: netlist.cc,v $
|
||||||
|
* Revision 1.93 1999/11/24 04:01:59 steve
|
||||||
|
* Detect and list scope names.
|
||||||
|
*
|
||||||
* Revision 1.92 1999/11/21 18:03:35 steve
|
* Revision 1.92 1999/11/21 18:03:35 steve
|
||||||
* Fix expression width of memory references.
|
* Fix expression width of memory references.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
33
netlist.h
33
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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: netlist.h,v 1.93 1999/11/21 17:35:37 steve Exp $"
|
#ident "$Id: netlist.h,v 1.94 1999/11/24 04:01:59 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -1830,6 +1830,26 @@ class NetESubSignal : public NetExpr {
|
||||||
NetExpr* idx_;
|
NetExpr* idx_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This object type is used to contain a logical scope within a
|
||||||
|
* design.
|
||||||
|
*/
|
||||||
|
class NetScope {
|
||||||
|
|
||||||
|
public:
|
||||||
|
NetScope(const string&root);
|
||||||
|
NetScope(const string&path, const string&n);
|
||||||
|
~NetScope();
|
||||||
|
|
||||||
|
string name() const;
|
||||||
|
|
||||||
|
void dump(ostream&) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
string name_;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This class contains an entire design. It includes processes and a
|
* This class contains an entire design. It includes processes and a
|
||||||
* netlist, and can be passed around from function to function.
|
* netlist, and can be passed around from function to function.
|
||||||
|
|
@ -1837,7 +1857,9 @@ class NetESubSignal : public NetExpr {
|
||||||
class Design {
|
class Design {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Design() : errors(0), signals_(0), nodes_(0), procs_(0), lcounter_(0) { }
|
Design();
|
||||||
|
~Design();
|
||||||
|
|
||||||
|
|
||||||
/* The flags are a generic way of accepting command line
|
/* The flags are a generic way of accepting command line
|
||||||
parameters/flags and passing them to the processing steps
|
parameters/flags and passing them to the processing steps
|
||||||
|
|
@ -1850,6 +1872,8 @@ class Design {
|
||||||
|
|
||||||
string get_flag(const string&key) const;
|
string get_flag(const string&key) const;
|
||||||
|
|
||||||
|
string make_root_scope(const string&name);
|
||||||
|
string make_scope(const string&path, const string&name);
|
||||||
|
|
||||||
// PARAMETERS
|
// PARAMETERS
|
||||||
void set_parameter(const string&, NetExpr*);
|
void set_parameter(const string&, NetExpr*);
|
||||||
|
|
@ -1901,6 +1925,8 @@ class Design {
|
||||||
string local_symbol(const string&path);
|
string local_symbol(const string&path);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
map<string,NetScope*> scopes_;
|
||||||
|
|
||||||
// List all the parameters in the design. This table includes
|
// List all the parameters in the design. This table includes
|
||||||
// the parameters of instantiated modules in canonical names.
|
// the parameters of instantiated modules in canonical names.
|
||||||
map<string,NetExpr*> parameters_;
|
map<string,NetExpr*> parameters_;
|
||||||
|
|
@ -1977,6 +2003,9 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: netlist.h,v $
|
* $Log: netlist.h,v $
|
||||||
|
* Revision 1.94 1999/11/24 04:01:59 steve
|
||||||
|
* Detect and list scope names.
|
||||||
|
*
|
||||||
* Revision 1.93 1999/11/21 17:35:37 steve
|
* Revision 1.93 1999/11/21 17:35:37 steve
|
||||||
* Memory name lookup handles scopes.
|
* Memory name lookup handles scopes.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue