parameter keys are per_strings.
This commit is contained in:
parent
b5b02269f1
commit
1295058e5d
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: Module.cc,v 1.22 2004/02/18 17:11:54 steve Exp $"
|
||||
#ident "$Id: Module.cc,v 1.23 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -88,7 +88,7 @@ const svector<PEIdent*>& Module::get_port(unsigned idx) const
|
|||
return zero;
|
||||
}
|
||||
|
||||
unsigned Module::find_port(const string&name) const
|
||||
unsigned Module::find_port(const char*name) const
|
||||
{
|
||||
assert(name != "");
|
||||
for (unsigned idx = 0 ; idx < ports.count() ; idx += 1) {
|
||||
|
|
@ -149,6 +149,9 @@ const list<PProcess*>& Module::get_behaviors() const
|
|||
|
||||
/*
|
||||
* $Log: Module.cc,v $
|
||||
* Revision 1.23 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.22 2004/02/18 17:11:54 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
15
Module.h
15
Module.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: Module.h,v 1.33 2004/02/18 17:11:54 steve Exp $"
|
||||
#ident "$Id: Module.h,v 1.34 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <list>
|
||||
|
|
@ -57,7 +57,7 @@ class Module : public LineInfo {
|
|||
the port. */
|
||||
public:
|
||||
struct port_t {
|
||||
string name;
|
||||
perm_string name;
|
||||
svector<PEIdent*> expr;
|
||||
};
|
||||
|
||||
|
|
@ -77,8 +77,8 @@ class Module : public LineInfo {
|
|||
PExpr*lsb;
|
||||
bool signed_flag;
|
||||
};
|
||||
map<string,param_expr_t>parameters;
|
||||
map<string,param_expr_t>localparams;
|
||||
map<perm_string,param_expr_t>parameters;
|
||||
map<perm_string,param_expr_t>localparams;
|
||||
|
||||
|
||||
/* specparams are simpler then other params, in that they have
|
||||
|
|
@ -98,7 +98,7 @@ class Module : public LineInfo {
|
|||
appear in the instantiated module. Therefore a
|
||||
list of names in module-order is needed to pass from
|
||||
a parameter-index to its name. */
|
||||
list<string> param_names;
|
||||
list<perm_string> param_names;
|
||||
|
||||
/* This is an array of port descriptors, which is in turn a
|
||||
named array of PEident pointers. */
|
||||
|
|
@ -131,7 +131,7 @@ class Module : public LineInfo {
|
|||
|
||||
unsigned port_count() const;
|
||||
const svector<PEIdent*>& get_port(unsigned idx) const;
|
||||
unsigned find_port(const string&) const;
|
||||
unsigned find_port(const char*name) const;
|
||||
|
||||
// Find a wire by name. This is used for connecting gates to
|
||||
// existing wires, etc.
|
||||
|
|
@ -166,6 +166,9 @@ class Module : public LineInfo {
|
|||
|
||||
/*
|
||||
* $Log: Module.h,v $
|
||||
* Revision 1.34 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.33 2004/02/18 17:11:54 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
19
PExpr.cc
19
PExpr.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: PExpr.cc,v 1.33 2003/01/27 05:09:17 steve Exp $"
|
||||
#ident "$Id: PExpr.cc,v 1.34 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -161,13 +161,19 @@ bool PEIdent::is_constant(Module*mod) const
|
|||
{
|
||||
if (mod == 0) return false;
|
||||
|
||||
{ map<string,Module::param_expr_t>::const_iterator cur;
|
||||
cur = mod->parameters.find(path_.peek_name(0));
|
||||
/* This is a work-around for map not matching < even when
|
||||
there is a perm_string operator that can do the comprare.
|
||||
|
||||
The real fix is to make the path_ carry perm_strings. */
|
||||
perm_string tmp = perm_string::literal(path_.peek_name(0));
|
||||
|
||||
{ map<perm_string,Module::param_expr_t>::const_iterator cur;
|
||||
cur = mod->parameters.find(tmp);
|
||||
if (cur != mod->parameters.end()) return true;
|
||||
}
|
||||
|
||||
{ map<string,Module::param_expr_t>::const_iterator cur;
|
||||
cur = mod->localparams.find(path_.peek_name(0));
|
||||
{ map<perm_string,Module::param_expr_t>::const_iterator cur;
|
||||
cur = mod->localparams.find(tmp);
|
||||
if (cur != mod->localparams.end()) return true;
|
||||
}
|
||||
|
||||
|
|
@ -256,6 +262,9 @@ bool PEUnary::is_constant(Module*m) const
|
|||
|
||||
/*
|
||||
* $Log: PExpr.cc,v $
|
||||
* Revision 1.34 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.33 2003/01/27 05:09:17 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: design_dump.cc,v 1.146 2004/02/18 17:11:54 steve Exp $"
|
||||
#ident "$Id: design_dump.cc,v 1.147 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -717,7 +717,7 @@ void NetScope::dump(ostream&o) const
|
|||
|
||||
/* Dump the parameters for this scope. */
|
||||
{
|
||||
map<string,param_expr_t>::const_iterator pp;
|
||||
map<perm_string,param_expr_t>::const_iterator pp;
|
||||
for (pp = parameters.begin()
|
||||
; pp != parameters.end() ; pp ++) {
|
||||
o << " parameter ";
|
||||
|
|
@ -1079,6 +1079,9 @@ void Design::dump(ostream&o) const
|
|||
|
||||
/*
|
||||
* $Log: design_dump.cc,v $
|
||||
* Revision 1.147 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.146 2004/02/18 17:11:54 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_expr.cc,v 1.83 2004/01/21 04:57:40 steve Exp $"
|
||||
#ident "$Id: elab_expr.cc,v 1.84 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -605,8 +605,8 @@ NetExpr* PEIdent::elaborate_expr(Design*des, NetScope*scope,
|
|||
NetEConstParam if possible. */
|
||||
NetEConst*ctmp = dynamic_cast<NetEConst*>(tmp);
|
||||
if (ctmp != 0) {
|
||||
const char*name
|
||||
= lex_strings.add(path_.peek_tail_name());
|
||||
perm_string name
|
||||
= lex_strings.make(path_.peek_tail_name());
|
||||
NetEConstParam*ptmp
|
||||
= new NetEConstParam(found_in, name, ctmp->value());
|
||||
delete tmp;
|
||||
|
|
@ -977,6 +977,9 @@ NetExpr* PEUnary::elaborate_expr(Design*des, NetScope*scope, bool) const
|
|||
|
||||
/*
|
||||
* $Log: elab_expr.cc,v $
|
||||
* Revision 1.84 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.83 2004/01/21 04:57:40 steve
|
||||
* Generate error when missing concatenation operands.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,12 +17,13 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_pexpr.cc,v 1.20 2003/05/30 02:55:32 steve Exp $"
|
||||
#ident "$Id: elab_pexpr.cc,v 1.21 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
||||
# include "PExpr.h"
|
||||
# include "compiler.h"
|
||||
# include "util.h"
|
||||
|
||||
# include <iostream>
|
||||
|
|
@ -136,19 +137,20 @@ NetExpr*PEIdent::elaborate_pexpr(Design*des, NetScope*scope) const
|
|||
if (path.peek_name(0))
|
||||
pscope = des->find_scope(scope, path);
|
||||
|
||||
const NetExpr*ex = pscope->get_parameter(name);
|
||||
perm_string perm_name = lex_strings.make(name);
|
||||
delete name;
|
||||
|
||||
const NetExpr*ex = pscope->get_parameter(perm_name);
|
||||
if (ex == 0) {
|
||||
cerr << get_line() << ": error: identifier ``" << path_ <<
|
||||
"'' is not a parameter in " << scope->name() << "." << endl;
|
||||
des->errors += 1;
|
||||
delete name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
NetExpr*res = new NetEParam(des, pscope, hname_t(name));
|
||||
NetExpr*res = new NetEParam(des, pscope, perm_name);
|
||||
res->set_line(*this);
|
||||
assert(res);
|
||||
delete name;
|
||||
|
||||
assert(idx_ == 0);
|
||||
if (msb_ && lsb_) {
|
||||
|
|
@ -229,6 +231,9 @@ NetExpr*PEUnary::elaborate_pexpr (Design*des, NetScope*scope) const
|
|||
|
||||
/*
|
||||
* $Log: elab_pexpr.cc,v $
|
||||
* Revision 1.21 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.20 2003/05/30 02:55:32 steve
|
||||
* Support parameters in real expressions and
|
||||
* as real expressions, and fix multiply and
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_scope.cc,v 1.29 2004/02/19 07:06:57 steve Exp $"
|
||||
#ident "$Id: elab_scope.cc,v 1.30 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -57,7 +57,7 @@ bool Module::elaborate_scope(Design*des, NetScope*scope) const
|
|||
// the pform and just place a NetEParam placeholder in the
|
||||
// place of the elaborated expression.
|
||||
|
||||
typedef map<string,param_expr_t>::const_iterator mparm_it_t;
|
||||
typedef map<perm_string,param_expr_t>::const_iterator mparm_it_t;
|
||||
typedef map<hname_t,PExpr*>::const_iterator hparm_it_t;
|
||||
|
||||
|
||||
|
|
@ -308,8 +308,8 @@ void PGModule::elaborate_scope_mod_(Design*des, Module*mod, NetScope*sc) const
|
|||
// passed. It is built up by the ordered overrides or named
|
||||
// overrides.
|
||||
|
||||
typedef map<string,PExpr*>::const_iterator mparm_it_t;
|
||||
map<string,PExpr*> replace;
|
||||
typedef map<perm_string,PExpr*>::const_iterator mparm_it_t;
|
||||
map<perm_string,PExpr*> replace;
|
||||
|
||||
|
||||
// Positional parameter overrides are matched to parameter
|
||||
|
|
@ -319,7 +319,7 @@ void PGModule::elaborate_scope_mod_(Design*des, Module*mod, NetScope*sc) const
|
|||
|
||||
if (overrides_) {
|
||||
assert(parms_ == 0);
|
||||
list<string>::const_iterator cur = mod->param_names.begin();
|
||||
list<perm_string>::const_iterator cur = mod->param_names.begin();
|
||||
unsigned idx = 0;
|
||||
for (;;) {
|
||||
if (idx >= overrides_->count())
|
||||
|
|
@ -549,6 +549,9 @@ void PWhile::elaborate_scope(Design*des, NetScope*scope) const
|
|||
|
||||
/*
|
||||
* $Log: elab_scope.cc,v $
|
||||
* Revision 1.30 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.29 2004/02/19 07:06:57 steve
|
||||
* LPM, logic and Variables have perm_string names.
|
||||
*
|
||||
|
|
|
|||
22
eval_tree.cc
22
eval_tree.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: eval_tree.cc,v 1.59 2003/10/31 02:47:11 steve Exp $"
|
||||
#ident "$Id: eval_tree.cc,v 1.60 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1124,8 +1124,7 @@ NetExpr* NetEParam::eval_tree()
|
|||
return 0;
|
||||
|
||||
assert(scope_);
|
||||
assert(name_.peek_name(1) == 0);
|
||||
const NetExpr*expr = scope_->get_parameter(name_.peek_name(0));
|
||||
const NetExpr*expr = scope_->get_parameter(name_);
|
||||
if (expr == 0) {
|
||||
cerr << get_line() << ": internal error: Unable to match "
|
||||
<< "parameter " << name_ << " in scope "
|
||||
|
|
@ -1142,8 +1141,7 @@ NetExpr* NetEParam::eval_tree()
|
|||
// return the constant value.
|
||||
if (NetEConst*tmp = dynamic_cast<NetEConst*>(nexpr)) {
|
||||
verinum val = tmp->value();
|
||||
const char*name = lex_strings.add(name_.peek_name(0));
|
||||
NetEConstParam*ptmp = new NetEConstParam(scope_, name, val);
|
||||
NetEConstParam*ptmp = new NetEConstParam(scope_, name_, val);
|
||||
ptmp->set_line(*this);
|
||||
delete nexpr;
|
||||
return ptmp;
|
||||
|
|
@ -1151,8 +1149,7 @@ NetExpr* NetEParam::eval_tree()
|
|||
|
||||
if (NetECReal*tmp = dynamic_cast<NetECReal*>(nexpr)) {
|
||||
verireal val = tmp->value();
|
||||
const char*name = lex_strings.add(name_.peek_name(0));
|
||||
NetECRealParam*ptmp = new NetECRealParam(scope_, name, val);
|
||||
NetECRealParam*ptmp = new NetECRealParam(scope_, name_, val);
|
||||
ptmp->set_line(*this);
|
||||
delete nexpr;
|
||||
return ptmp;
|
||||
|
|
@ -1171,7 +1168,7 @@ NetExpr* NetEParam::eval_tree()
|
|||
|
||||
// The result can be saved as the value of the parameter for
|
||||
// future reference, and return a copy to the caller.
|
||||
scope_->replace_parameter(name_.peek_name(0), res);
|
||||
scope_->replace_parameter(name_, res);
|
||||
|
||||
/* Return as a result a NetEConstParam or NetECRealParam
|
||||
object, depending on the type of the expression. */
|
||||
|
|
@ -1190,8 +1187,7 @@ NetExpr* NetEParam::eval_tree()
|
|||
assert(tmp);
|
||||
|
||||
verinum val = tmp->value();
|
||||
const char*name = lex_strings.add(name_.peek_name(0));
|
||||
NetEConstParam*ptmp = new NetEConstParam(scope_, name, val);
|
||||
NetEConstParam*ptmp = new NetEConstParam(scope_, name_, val);
|
||||
|
||||
return ptmp;
|
||||
}
|
||||
|
|
@ -1208,8 +1204,7 @@ NetExpr* NetEParam::eval_tree()
|
|||
assert(tmp);
|
||||
|
||||
verireal val = tmp->value();
|
||||
const char*name = lex_strings.add(name_.peek_name(0));
|
||||
NetECRealParam*ptmp = new NetECRealParam(scope_, name, val);
|
||||
NetECRealParam*ptmp = new NetECRealParam(scope_, name_, val);
|
||||
|
||||
return ptmp;
|
||||
}
|
||||
|
|
@ -1515,6 +1510,9 @@ NetEConst* NetEUReduce::eval_tree()
|
|||
|
||||
/*
|
||||
* $Log: eval_tree.cc,v $
|
||||
* Revision 1.60 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.59 2003/10/31 02:47:11 steve
|
||||
* NetEUReduce has its own dup_expr method.
|
||||
*
|
||||
|
|
|
|||
11
named.h
11
named.h
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef __named_H
|
||||
#define __named_H
|
||||
/*
|
||||
* Copyright (c) 2000 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2000-2004 Stephen Williams (steve@icarus.com)
|
||||
*
|
||||
* This source code is free software; you can redistribute it
|
||||
* and/or modify it in source code form under the terms of the GNU
|
||||
|
|
@ -19,10 +19,10 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: named.h,v 1.3 2002/08/12 01:34:59 steve Exp $"
|
||||
#ident "$Id: named.h,v 1.4 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <string>
|
||||
# include "StringHeap.h"
|
||||
|
||||
/*
|
||||
* There are lots of places where names are attached to objects. This
|
||||
|
|
@ -30,12 +30,15 @@
|
|||
*/
|
||||
|
||||
template <class T> struct named {
|
||||
string name;
|
||||
perm_string name;
|
||||
T parm;
|
||||
};
|
||||
|
||||
/*
|
||||
* $Log: named.h,v $
|
||||
* Revision 1.4 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.3 2002/08/12 01:34:59 steve
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_design.cc,v 1.43 2004/02/18 17:11:56 steve Exp $"
|
||||
#ident "$Id: net_design.cc,v 1.44 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
# include "netlist.h"
|
||||
# include "util.h"
|
||||
# include "compiler.h"
|
||||
# include <sstream>
|
||||
|
||||
Design:: Design()
|
||||
|
|
@ -265,26 +266,26 @@ void NetScope::run_defparams(Design*des)
|
|||
NetExpr*val = (*pp).second;
|
||||
hname_t path = (*pp).first;
|
||||
|
||||
char*name = path.remove_tail_name();
|
||||
char*tmp = path.remove_tail_name();
|
||||
perm_string perm_name = lex_strings.make(tmp);
|
||||
delete[]tmp;
|
||||
|
||||
/* If there is no path on the name, then the targ_scope
|
||||
is the current scope. */
|
||||
NetScope*targ_scope = des->find_scope(this, path);
|
||||
if (targ_scope == 0) {
|
||||
cerr << val->get_line() << ": warning: scope of " <<
|
||||
path << "." << name << " not found." << endl;
|
||||
delete[]name;
|
||||
path << "." << perm_name << " not found." << endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
bool flag = targ_scope->replace_parameter(name, val);
|
||||
bool flag = targ_scope->replace_parameter(perm_name, val);
|
||||
if (! flag) {
|
||||
cerr << val->get_line() << ": warning: parameter "
|
||||
<< name << " not found in "
|
||||
<< perm_name << " not found in "
|
||||
<< targ_scope->name() << "." << endl;
|
||||
}
|
||||
|
||||
delete[]name;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -309,7 +310,7 @@ void NetScope::evaluate_parameters(Design*des)
|
|||
// scanning code. Now the parameter expression can be fully
|
||||
// evaluated, or it cannot be evaluated at all.
|
||||
|
||||
typedef map<string,param_expr_t>::iterator mparm_it_t;
|
||||
typedef map<perm_string,param_expr_t>::iterator mparm_it_t;
|
||||
|
||||
for (mparm_it_t cur = parameters.begin()
|
||||
; cur != parameters.end() ; cur ++) {
|
||||
|
|
@ -617,6 +618,9 @@ void Design::delete_process(NetProcTop*top)
|
|||
|
||||
/*
|
||||
* $Log: net_design.cc,v $
|
||||
* Revision 1.44 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.43 2004/02/18 17:11:56 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
11
net_expr.cc
11
net_expr.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_expr.cc,v 1.21 2003/08/28 04:11:19 steve Exp $"
|
||||
#ident "$Id: net_expr.cc,v 1.22 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -377,7 +377,7 @@ NetExpr::TYPE NetECReal::expr_type() const
|
|||
return ET_REAL;
|
||||
}
|
||||
|
||||
NetECRealParam::NetECRealParam(NetScope*s, const char*n, const verireal&v)
|
||||
NetECRealParam::NetECRealParam(NetScope*s, perm_string n, const verireal&v)
|
||||
: NetECReal(v), scope_(s), name_(n)
|
||||
{
|
||||
}
|
||||
|
|
@ -386,7 +386,7 @@ NetECRealParam::~NetECRealParam()
|
|||
{
|
||||
}
|
||||
|
||||
const char* NetECRealParam::name() const
|
||||
perm_string NetECRealParam::name() const
|
||||
{
|
||||
return name_;
|
||||
}
|
||||
|
|
@ -402,7 +402,7 @@ NetEParam::NetEParam()
|
|||
{
|
||||
}
|
||||
|
||||
NetEParam::NetEParam(Design*d, NetScope*s, const hname_t&n)
|
||||
NetEParam::NetEParam(Design*d, NetScope*s, perm_string n)
|
||||
: des_(d), scope_(s), name_(n)
|
||||
{
|
||||
}
|
||||
|
|
@ -516,6 +516,9 @@ NetExpr::TYPE NetESFunc::expr_type() const
|
|||
|
||||
/*
|
||||
* $Log: net_expr.cc,v $
|
||||
* Revision 1.22 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.21 2003/08/28 04:11:19 steve
|
||||
* Spelling patch.
|
||||
*
|
||||
|
|
|
|||
26
net_scope.cc
26
net_scope.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_scope.cc,v 1.30 2004/02/18 17:11:56 steve Exp $"
|
||||
#ident "$Id: net_scope.cc,v 1.31 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -80,7 +80,7 @@ NetScope::~NetScope()
|
|||
/* name_ and module_name_ are perm-allocated. */
|
||||
}
|
||||
|
||||
NetExpr* NetScope::set_parameter(const string&key, NetExpr*expr,
|
||||
NetExpr* NetScope::set_parameter(perm_string key, NetExpr*expr,
|
||||
NetExpr*msb, NetExpr*lsb, bool signed_flag)
|
||||
{
|
||||
param_expr_t&ref = parameters[key];
|
||||
|
|
@ -95,7 +95,7 @@ NetExpr* NetScope::set_parameter(const string&key, NetExpr*expr,
|
|||
/*
|
||||
* Return false if this creates a new parameter.
|
||||
*/
|
||||
bool NetScope::replace_parameter(const string&key, NetExpr*expr)
|
||||
bool NetScope::replace_parameter(perm_string key, NetExpr*expr)
|
||||
{
|
||||
bool flag = true;
|
||||
param_expr_t&ref = parameters[key];
|
||||
|
|
@ -115,7 +115,7 @@ bool NetScope::replace_parameter(const string&key, NetExpr*expr)
|
|||
return flag;
|
||||
}
|
||||
|
||||
NetExpr* NetScope::set_localparam(const string&key, NetExpr*expr)
|
||||
NetExpr* NetScope::set_localparam(perm_string key, NetExpr*expr)
|
||||
{
|
||||
param_expr_t&ref = localparams[key];
|
||||
NetExpr* res = ref.expr;
|
||||
|
|
@ -126,15 +126,22 @@ NetExpr* NetScope::set_localparam(const string&key, NetExpr*expr)
|
|||
return res;
|
||||
}
|
||||
|
||||
const NetExpr* NetScope::get_parameter(const string&key) const
|
||||
/*
|
||||
* NOTE: This method takes a const char* as a key to lookup a
|
||||
* parameter, because we don't save that pointer. However, due to the
|
||||
* way the map<> template works, we need to *cheat* and use the
|
||||
* perm_string::literal method to fake the compiler into doing the
|
||||
* compare without actually creating a perm_string.
|
||||
*/
|
||||
const NetExpr* NetScope::get_parameter(const char* key) const
|
||||
{
|
||||
map<string,param_expr_t>::const_iterator idx;
|
||||
map<perm_string,param_expr_t>::const_iterator idx;
|
||||
|
||||
idx = parameters.find(key);
|
||||
idx = parameters.find(perm_string::literal(key));
|
||||
if (idx != parameters.end())
|
||||
return (*idx).second.expr;
|
||||
|
||||
idx = localparams.find(key);
|
||||
idx = localparams.find(perm_string::literal(key));
|
||||
if (idx != localparams.end())
|
||||
return (*idx).second.expr;
|
||||
|
||||
|
|
@ -450,6 +457,9 @@ string NetScope::local_hsymbol()
|
|||
|
||||
/*
|
||||
* $Log: net_scope.cc,v $
|
||||
* Revision 1.31 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.30 2004/02/18 17:11:56 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: netlist.cc,v 1.221 2004/02/18 17:11:56 steve Exp $"
|
||||
#ident "$Id: netlist.cc,v 1.222 2004/02/20 06:22:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1897,7 +1897,7 @@ bool NetEConst::has_width() const
|
|||
return value_.has_len();
|
||||
}
|
||||
|
||||
NetEConstParam::NetEConstParam(NetScope*s, const char*n, const verinum&v)
|
||||
NetEConstParam::NetEConstParam(NetScope*s, perm_string n, const verinum&v)
|
||||
: NetEConst(v), scope_(s), name_(n)
|
||||
{
|
||||
}
|
||||
|
|
@ -1906,7 +1906,7 @@ NetEConstParam::~NetEConstParam()
|
|||
{
|
||||
}
|
||||
|
||||
const char* NetEConstParam::name() const
|
||||
perm_string NetEConstParam::name() const
|
||||
{
|
||||
return name_;
|
||||
}
|
||||
|
|
@ -2218,6 +2218,9 @@ const NetProc*NetTaskDef::proc() const
|
|||
|
||||
/*
|
||||
* $Log: netlist.cc,v $
|
||||
* Revision 1.222 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.221 2004/02/18 17:11:56 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
33
netlist.h
33
netlist.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: netlist.h,v 1.310 2004/02/19 07:06:57 steve Exp $"
|
||||
#ident "$Id: netlist.h,v 1.311 2004/02/20 06:22:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -1042,11 +1042,11 @@ class NetEConst : public NetExpr {
|
|||
class NetEConstParam : public NetEConst {
|
||||
|
||||
public:
|
||||
explicit NetEConstParam(NetScope*scope, const char*name,
|
||||
explicit NetEConstParam(NetScope*scope, perm_string name,
|
||||
const verinum&val);
|
||||
~NetEConstParam();
|
||||
|
||||
const char* name() const;
|
||||
perm_string name() const;
|
||||
const NetScope*scope() const;
|
||||
|
||||
virtual void expr_scan(struct expr_scan_t*) const;
|
||||
|
|
@ -1056,7 +1056,7 @@ class NetEConstParam : public NetEConst {
|
|||
|
||||
private:
|
||||
NetScope*scope_;
|
||||
const char*name_;
|
||||
perm_string name_;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -1094,11 +1094,11 @@ class NetECReal : public NetExpr {
|
|||
class NetECRealParam : public NetECReal {
|
||||
|
||||
public:
|
||||
explicit NetECRealParam(NetScope*scope, const char*name,
|
||||
explicit NetECRealParam(NetScope*scope, perm_string name,
|
||||
const verireal&val);
|
||||
~NetECRealParam();
|
||||
|
||||
const char* name() const;
|
||||
perm_string name() const;
|
||||
const NetScope*scope() const;
|
||||
|
||||
virtual void expr_scan(struct expr_scan_t*) const;
|
||||
|
|
@ -1108,7 +1108,7 @@ class NetECRealParam : public NetECReal {
|
|||
|
||||
private:
|
||||
NetScope*scope_;
|
||||
const char*name_;
|
||||
perm_string name_;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -2646,7 +2646,7 @@ class NetEVariable : public NetExpr {
|
|||
class NetEParam : public NetExpr {
|
||||
public:
|
||||
NetEParam();
|
||||
NetEParam(class Design*des, NetScope*scope, const hname_t&name);
|
||||
NetEParam(class Design*des, NetScope*scope, perm_string name);
|
||||
~NetEParam();
|
||||
|
||||
virtual NexusSet* nex_input();
|
||||
|
|
@ -2661,7 +2661,7 @@ class NetEParam : public NetExpr {
|
|||
private:
|
||||
Design*des_;
|
||||
NetScope*scope_;
|
||||
hname_t name_;
|
||||
perm_string name_;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -3004,16 +3004,16 @@ class NetScope : public Attrib {
|
|||
the scope. The return value from set_parameter is the
|
||||
previous expression, if there was one. */
|
||||
|
||||
NetExpr* set_parameter(const string&name, NetExpr*val,
|
||||
NetExpr* set_parameter(perm_string name, NetExpr*val,
|
||||
NetExpr*msb, NetExpr*lsb, bool signed_flag);
|
||||
NetExpr* set_localparam(const string&name, NetExpr*val);
|
||||
const NetExpr*get_parameter(const string&name) const;
|
||||
NetExpr* set_localparam(perm_string name, NetExpr*val);
|
||||
const NetExpr*get_parameter(const char* name) const;
|
||||
|
||||
/* These are used by defparam elaboration to replace the
|
||||
expression with a new expression, without affecting the
|
||||
range or signed_flag. Return false if the name does not
|
||||
exist. */
|
||||
bool replace_parameter(const string&name, NetExpr*val);
|
||||
bool replace_parameter(perm_string name, NetExpr*val);
|
||||
|
||||
/* These methods set or access events that live in this
|
||||
scope. */
|
||||
|
|
@ -3125,8 +3125,8 @@ class NetScope : public Attrib {
|
|||
NetExpr*lsb;
|
||||
bool signed_flag;
|
||||
};
|
||||
map<string,param_expr_t>parameters;
|
||||
map<string,param_expr_t>localparams;
|
||||
map<perm_string,param_expr_t>parameters;
|
||||
map<perm_string,param_expr_t>localparams;
|
||||
|
||||
private:
|
||||
TYPE type_;
|
||||
|
|
@ -3315,6 +3315,9 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
|||
|
||||
/*
|
||||
* $Log: netlist.h,v $
|
||||
* Revision 1.311 2004/02/20 06:22:57 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.310 2004/02/19 07:06:57 steve
|
||||
* LPM, logic and Variables have perm_string names.
|
||||
*
|
||||
|
|
|
|||
33
parse.y
33
parse.y
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: parse.y,v 1.190 2004/02/18 17:11:57 steve Exp $"
|
||||
#ident "$Id: parse.y,v 1.191 2004/02/20 06:22:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -278,7 +278,7 @@ attribute_list
|
|||
attribute
|
||||
: IDENTIFIER
|
||||
{ named_pexpr_t*tmp = new named_pexpr_t;
|
||||
tmp->name = string($1);
|
||||
tmp->name = lex_strings.make($1);
|
||||
tmp->parm = 0;
|
||||
delete $1;
|
||||
$$ = tmp;
|
||||
|
|
@ -292,7 +292,7 @@ attribute
|
|||
tmp = 0;
|
||||
}
|
||||
named_pexpr_t*tmp2 = new named_pexpr_t;
|
||||
tmp2->name = string($1);
|
||||
tmp2->name = lex_strings.make($1);
|
||||
tmp2->parm = tmp;
|
||||
delete $1;
|
||||
$$ = tmp2;
|
||||
|
|
@ -1799,7 +1799,8 @@ parameter_assign
|
|||
delete tmp;
|
||||
tmp = 0;
|
||||
} else {
|
||||
pform_set_parameter($1, active_signed,
|
||||
pform_set_parameter(lex_strings.make($1),
|
||||
active_signed,
|
||||
active_range, tmp);
|
||||
}
|
||||
delete $1;
|
||||
|
|
@ -1840,7 +1841,7 @@ localparam_assign
|
|||
delete tmp;
|
||||
tmp = 0;
|
||||
}
|
||||
pform_set_localparam($1, tmp);
|
||||
pform_set_localparam(lex_strings.make($1), tmp);
|
||||
delete $1;
|
||||
}
|
||||
;
|
||||
|
|
@ -1907,14 +1908,14 @@ parameter_value_opt
|
|||
parameter_value_byname
|
||||
: '.' IDENTIFIER '(' expression ')'
|
||||
{ named_pexpr_t*tmp = new named_pexpr_t;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
tmp->parm = $4;
|
||||
free($2);
|
||||
$$ = tmp;
|
||||
}
|
||||
| '.' IDENTIFIER '(' ')'
|
||||
{ named_pexpr_t*tmp = new named_pexpr_t;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
tmp->parm = 0;
|
||||
free($2);
|
||||
$$ = tmp;
|
||||
|
|
@ -1960,7 +1961,7 @@ port
|
|||
|
||||
| '.' IDENTIFIER '(' port_reference ')'
|
||||
{ Module::port_t*tmp = $4;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
delete $2;
|
||||
$$ = tmp;
|
||||
}
|
||||
|
|
@ -1971,7 +1972,7 @@ port
|
|||
|
||||
| '{' port_reference_list '}'
|
||||
{ Module::port_t*tmp = $2;
|
||||
tmp->name = "";
|
||||
tmp->name = perm_string();
|
||||
$$ = tmp;
|
||||
}
|
||||
|
||||
|
|
@ -1980,7 +1981,7 @@ port
|
|||
|
||||
| '.' IDENTIFIER '(' '{' port_reference_list '}' ')'
|
||||
{ Module::port_t*tmp = $5;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
delete $2;
|
||||
$$ = tmp;
|
||||
}
|
||||
|
|
@ -2027,7 +2028,7 @@ port_reference
|
|||
wtmp->msb_ = $3;
|
||||
wtmp->lsb_ = $5;
|
||||
Module::port_t*ptmp = new Module::port_t;
|
||||
ptmp->name = "";
|
||||
ptmp->name = perm_string();
|
||||
ptmp->expr = svector<PEIdent*>(1);
|
||||
ptmp->expr[0] = wtmp;
|
||||
delete $1;
|
||||
|
|
@ -2044,7 +2045,7 @@ port_reference
|
|||
}
|
||||
tmp->msb_ = $3;
|
||||
Module::port_t*ptmp = new Module::port_t;
|
||||
ptmp->name = "";
|
||||
ptmp->name = perm_string();
|
||||
ptmp->expr = svector<PEIdent*>(1);
|
||||
ptmp->expr[0] = tmp;
|
||||
delete $1;
|
||||
|
|
@ -2057,7 +2058,7 @@ port_reference
|
|||
PEIdent*wtmp = new PEIdent(hname_t($1));
|
||||
wtmp->set_file(@1.text);
|
||||
wtmp->set_lineno(@1.first_line);
|
||||
ptmp->name = $1;
|
||||
ptmp->name = lex_strings.make($1);
|
||||
ptmp->expr = svector<PEIdent*>(1);
|
||||
ptmp->expr[0] = wtmp;
|
||||
delete $1;
|
||||
|
|
@ -2084,7 +2085,7 @@ port_reference_list
|
|||
port_name
|
||||
: '.' IDENTIFIER '(' expression ')'
|
||||
{ named_pexpr_t*tmp = new named_pexpr_t;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
tmp->parm = $4;
|
||||
delete $2;
|
||||
$$ = tmp;
|
||||
|
|
@ -2092,14 +2093,14 @@ port_name
|
|||
| '.' IDENTIFIER '(' error ')'
|
||||
{ yyerror(@4, "error: invalid port connection expression.");
|
||||
named_pexpr_t*tmp = new named_pexpr_t;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
tmp->parm = 0;
|
||||
delete $2;
|
||||
$$ = tmp;
|
||||
}
|
||||
| '.' IDENTIFIER '(' ')'
|
||||
{ named_pexpr_t*tmp = new named_pexpr_t;
|
||||
tmp->name = $2;
|
||||
tmp->name = lex_strings.make($2);
|
||||
tmp->parm = 0;
|
||||
delete $2;
|
||||
$$ = tmp;
|
||||
|
|
|
|||
21
pform.cc
21
pform.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: pform.cc,v 1.121 2004/02/19 06:57:10 steve Exp $"
|
||||
#ident "$Id: pform.cc,v 1.122 2004/02/20 06:22:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -208,7 +208,7 @@ void pform_startmodule(const char*name, const char*file, unsigned lineno,
|
|||
if (attr) {
|
||||
for (unsigned idx = 0 ; idx < attr->count() ; idx += 1) {
|
||||
named_pexpr_t*tmp = (*attr)[idx];
|
||||
pform_cur_module->attributes[tmp->name] = tmp->parm;
|
||||
pform_cur_module->attributes[string(tmp->name)] = tmp->parm;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -226,7 +226,7 @@ Module::port_t* pform_module_port_reference(char*name,
|
|||
PEIdent*tmp = new PEIdent(hname_t(name));
|
||||
tmp->set_file(file);
|
||||
tmp->set_lineno(lineno);
|
||||
ptmp->name = name;
|
||||
ptmp->name = lex_strings.make(name);
|
||||
ptmp->expr = svector<PEIdent*>(1);
|
||||
ptmp->expr[0] = tmp;
|
||||
|
||||
|
|
@ -697,7 +697,7 @@ void pform_makegate(PGBuiltin::Type type,
|
|||
if (attr) {
|
||||
for (unsigned idx = 0 ; idx < attr->count() ; idx += 1) {
|
||||
named_pexpr_t*tmp = (*attr)[idx];
|
||||
cur->attributes[tmp->name] = tmp->parm;
|
||||
cur->attributes[string(tmp->name)] = tmp->parm;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -975,7 +975,7 @@ void pform_module_define_port(const struct vlltype&li,
|
|||
if (attr) {
|
||||
for (unsigned idx = 0 ; idx < attr->count() ; idx += 1) {
|
||||
named_pexpr_t*tmp = (*attr)[idx];
|
||||
cur->attributes[tmp->name] = tmp->parm;
|
||||
cur->attributes[string(tmp->name)] = tmp->parm;
|
||||
}
|
||||
}
|
||||
pform_cur_module->add_wire(cur);
|
||||
|
|
@ -1035,7 +1035,7 @@ void pform_makewire(const vlltype&li, const char*nm,
|
|||
if (attr) {
|
||||
for (unsigned idx = 0 ; idx < attr->count() ; idx += 1) {
|
||||
named_pexpr_t*tmp = (*attr)[idx];
|
||||
cur->attributes[tmp->name] = tmp->parm;
|
||||
cur->attributes[string(tmp->name)] = tmp->parm;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1308,7 +1308,7 @@ void pform_set_reg_idx(const char*name, PExpr*l, PExpr*r)
|
|||
cur->set_memory_idx(l, r);
|
||||
}
|
||||
|
||||
void pform_set_parameter(const string&name, bool signed_flag,
|
||||
void pform_set_parameter(perm_string name, bool signed_flag,
|
||||
svector<PExpr*>*range, PExpr*expr)
|
||||
{
|
||||
assert(expr);
|
||||
|
|
@ -1329,7 +1329,7 @@ void pform_set_parameter(const string&name, bool signed_flag,
|
|||
pform_cur_module->param_names.push_back(name);
|
||||
}
|
||||
|
||||
void pform_set_localparam(const string&name, PExpr*expr)
|
||||
void pform_set_localparam(perm_string name, PExpr*expr)
|
||||
{
|
||||
assert(expr);
|
||||
pform_cur_module->localparams[name].expr = expr;
|
||||
|
|
@ -1469,7 +1469,7 @@ PProcess* pform_make_behavior(PProcess::Type type, Statement*st,
|
|||
if (attr) {
|
||||
for (unsigned idx = 0 ; idx < attr->count() ; idx += 1) {
|
||||
named_pexpr_t*tmp = (*attr)[idx];
|
||||
pp->attributes[tmp->name] = tmp->parm;
|
||||
pp->attributes[string(tmp->name)] = tmp->parm;
|
||||
}
|
||||
delete attr;
|
||||
}
|
||||
|
|
@ -1519,6 +1519,9 @@ int pform_parse(const char*path, FILE*file)
|
|||
|
||||
/*
|
||||
* $Log: pform.cc,v $
|
||||
* Revision 1.122 2004/02/20 06:22:58 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.121 2004/02/19 06:57:10 steve
|
||||
* Memory and Event names use perm_string.
|
||||
*
|
||||
|
|
|
|||
9
pform.h
9
pform.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: pform.h,v 1.74 2004/02/18 17:11:57 steve Exp $"
|
||||
#ident "$Id: pform.h,v 1.75 2004/02/20 06:22:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "netlist.h"
|
||||
|
|
@ -207,11 +207,11 @@ extern void pform_set_attrib(perm_string name, const string&key,
|
|||
extern void pform_set_type_attrib(perm_string name, const string&key,
|
||||
char*value);
|
||||
|
||||
extern void pform_set_parameter(const string&name,
|
||||
extern void pform_set_parameter(perm_string name,
|
||||
bool signed_flag,
|
||||
svector<PExpr*>*range,
|
||||
PExpr*expr);
|
||||
extern void pform_set_localparam(const string&name, PExpr*expr);
|
||||
extern void pform_set_localparam(perm_string name, PExpr*expr);
|
||||
extern void pform_set_defparam(const hname_t&name, PExpr*expr);
|
||||
|
||||
/*
|
||||
|
|
@ -283,6 +283,9 @@ extern void pform_dump(ostream&out, Module*mod);
|
|||
|
||||
/*
|
||||
* $Log: pform.h,v $
|
||||
* Revision 1.75 2004/02/20 06:22:58 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.74 2004/02/18 17:11:57 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: pform_dump.cc,v 1.83 2004/02/18 17:11:57 steve Exp $"
|
||||
#ident "$Id: pform_dump.cc,v 1.84 2004/02/20 06:22:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -726,7 +726,7 @@ void Module::dump(ostream&out) const
|
|||
out << ")" << endl;
|
||||
}
|
||||
|
||||
typedef map<string,param_expr_t>::const_iterator parm_iter_t;
|
||||
typedef map<perm_string,param_expr_t>::const_iterator parm_iter_t;
|
||||
typedef map<hname_t,PExpr*>::const_iterator parm_hiter_t;
|
||||
for (parm_iter_t cur = parameters.begin()
|
||||
; cur != parameters.end() ; cur ++) {
|
||||
|
|
@ -881,6 +881,9 @@ void PUdp::dump(ostream&out) const
|
|||
|
||||
/*
|
||||
* $Log: pform_dump.cc,v $
|
||||
* Revision 1.84 2004/02/20 06:22:58 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.83 2004/02/18 17:11:57 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
9
t-dll.cc
9
t-dll.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: t-dll.cc,v 1.127 2004/02/19 06:57:10 steve Exp $"
|
||||
#ident "$Id: t-dll.cc,v 1.128 2004/02/20 06:22:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -487,14 +487,14 @@ void dll_target::make_scope_parameters(ivl_scope_t scope, const NetScope*net)
|
|||
scope->param_ = new struct ivl_parameter_s [scope->nparam_];
|
||||
|
||||
unsigned idx = 0;
|
||||
typedef map<string,NetScope::param_expr_t>::const_iterator pit_t;
|
||||
typedef map<perm_string,NetScope::param_expr_t>::const_iterator pit_t;
|
||||
|
||||
for (pit_t cur_pit = net->parameters.begin()
|
||||
; cur_pit != net->parameters.end() ; cur_pit ++) {
|
||||
|
||||
assert(idx < scope->nparam_);
|
||||
ivl_parameter_t cur_par = scope->param_ + idx;
|
||||
cur_par->basename = lex_strings.add( (*cur_pit).first.c_str() );
|
||||
cur_par->basename = (*cur_pit).first;
|
||||
cur_par->scope = scope;
|
||||
|
||||
NetExpr*etmp = (*cur_pit).second.expr;
|
||||
|
|
@ -2176,6 +2176,9 @@ extern const struct target tgt_dll = { "dll", &dll_target_obj };
|
|||
|
||||
/*
|
||||
* $Log: t-dll.cc,v $
|
||||
* Revision 1.128 2004/02/20 06:22:58 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.127 2004/02/19 06:57:10 steve
|
||||
* Memory and Event names use perm_string.
|
||||
*
|
||||
|
|
|
|||
28
t-dll.h
28
t-dll.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: t-dll.h,v 1.111 2004/02/19 07:06:57 steve Exp $"
|
||||
#ident "$Id: t-dll.h,v 1.112 2004/02/20 06:22:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "target.h"
|
||||
|
|
@ -488,7 +488,7 @@ struct ivl_memory_s {
|
|||
* these.
|
||||
*/
|
||||
struct ivl_parameter_s {
|
||||
const char*basename;
|
||||
perm_string basename;
|
||||
ivl_scope_t scope;
|
||||
ivl_expr_t value;
|
||||
};
|
||||
|
|
@ -683,6 +683,9 @@ struct ivl_variable_s {
|
|||
|
||||
/*
|
||||
* $Log: t-dll.h,v $
|
||||
* Revision 1.112 2004/02/20 06:22:58 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
* Revision 1.111 2004/02/19 07:06:57 steve
|
||||
* LPM, logic and Variables have perm_string names.
|
||||
*
|
||||
|
|
@ -725,26 +728,5 @@ struct ivl_variable_s {
|
|||
* scope names and system task/function names
|
||||
* into this table. Also, permallocate event
|
||||
* names from the beginning.
|
||||
*
|
||||
* Revision 1.98 2003/02/06 16:43:20 steve
|
||||
* Satisfy declaration requirements of some picky compilers.
|
||||
*
|
||||
* Revision 1.97 2003/01/26 21:15:59 steve
|
||||
* Rework expression parsing and elaboration to
|
||||
* accommodate real/realtime values and expressions.
|
||||
*
|
||||
* Revision 1.96 2002/12/21 00:55:58 steve
|
||||
* The $time system task returns the integer time
|
||||
* scaled to the local units. Change the internal
|
||||
* implementation of vpiSystemTime the $time functions
|
||||
* to properly account for this. Also add $simtime
|
||||
* to get the simulation time.
|
||||
*
|
||||
* Revision 1.95 2002/10/23 01:47:17 steve
|
||||
* Fix synth2 handling of aset/aclr signals where
|
||||
* flip-flops are split by begin-end blocks.
|
||||
*
|
||||
* Revision 1.94 2002/09/26 03:18:04 steve
|
||||
* Generate vvp code for asynch set/reset of NetFF.
|
||||
*/
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue