Implement acc_fetch_defname and its infrastructure in vvp.

This commit is contained in:
steve 2003-05-29 02:21:45 +00:00
parent 577554cca5
commit 8cfef65bd8
8 changed files with 80 additions and 16 deletions

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: acc_user.h,v 1.13 2003/05/24 03:02:04 steve Exp $"
#ident "$Id: acc_user.h,v 1.14 2003/05/29 02:21:45 steve Exp $"
#endif
/*
@ -196,6 +196,7 @@ extern char* acc_fetch_fullname(handle obj);
extern int acc_fetch_location(p_location loc, handle obj);
extern char* acc_fetch_name(handle obj);
extern char* acc_fetch_defname(handle obj);
extern double acc_fetch_paramval(handle obj);
@ -244,6 +245,9 @@ EXTERN_C_END
/*
* $Log: acc_user.h,v $
* Revision 1.14 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.13 2003/05/24 03:02:04 steve
* Add implementation of acc_handle_by_name.
*

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: a_fetch_fullname.c,v 1.4 2003/03/13 05:07:46 steve Exp $"
#ident "$Id: a_fetch_fullname.c,v 1.5 2003/05/29 02:21:45 steve Exp $"
#endif
#include <vpi_user.h>
@ -37,8 +37,16 @@ char* acc_fetch_name(handle object)
return __acc_newstring(vpi_get_str(vpiName, object));
}
char* acc_fetch_defname(handle object)
{
return __acc_newstring(vpi_get_str(vpiDefName, object));
}
/*
* $Log: a_fetch_fullname.c,v $
* Revision 1.5 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.4 2003/03/13 05:07:46 steve
* Declaration warnings.
*

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: vvp_scope.c,v 1.93 2003/05/13 01:56:15 steve Exp $"
#ident "$Id: vvp_scope.c,v 1.94 2003/05/29 02:21:45 steve Exp $"
#endif
# include "vvp_priv.h"
@ -1558,8 +1558,9 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
default: type = "?"; assert(0);
}
fprintf(vvp_out, "S_%p .scope %s, \"%s\"",
net, type, vvp_mangle_name(ivl_scope_basename(net)));
fprintf(vvp_out, "S_%p .scope %s, \"%s\" \"%s\"",
net, type, vvp_mangle_name(ivl_scope_basename(net)),
ivl_scope_tname(net));
if (parent) {
fprintf(vvp_out, ", S_%p;\n", parent);
@ -1647,6 +1648,9 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
/*
* $Log: vvp_scope.c,v $
* Revision 1.94 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.93 2003/05/13 01:56:15 steve
* Allow primitives to hvae unconnected input ports.
*

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: vpi_user.h,v 1.26 2003/05/23 04:04:02 steve Exp $"
#ident "$Id: vpi_user.h,v 1.27 2003/05/29 02:21:45 steve Exp $"
#endif
@ -187,6 +187,7 @@ typedef struct t_vpi_value {
#define vpiName 2
#define vpiFullName 3
#define vpiSize 4
#define vpiDefName 9
#define vpiTimeUnit 11
#define vpiTimePrecision 12
#define vpiConstType 43
@ -396,6 +397,9 @@ EXTERN_C_END
/*
* $Log: vpi_user.h,v $
* Revision 1.27 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.26 2003/05/23 04:04:02 steve
* Add vpi_fopen and vpi_get_file.
*

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: compile.h,v 1.51 2003/04/11 05:15:39 steve Exp $"
#ident "$Id: compile.h,v 1.52 2003/05/29 02:21:45 steve Exp $"
#endif
# include <stdio.h>
@ -243,7 +243,7 @@ extern void compile_codelabel(char*label);
* The parser uses these functions to compile .scope statements.
* The implementations of these live in the vpi_scope.cc file.
*/
extern void compile_scope_decl(char*typ, char*lab, char*nam, char*par);
extern void compile_scope_decl(char*typ, char*lab, char*nam,char*tnam,char*par);
extern void compile_scope_recall(char*sym);
/*
@ -264,6 +264,9 @@ extern void compile_net(char*label, char*name,
/*
* $Log: compile.h,v $
* Revision 1.52 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.51 2003/04/11 05:15:39 steve
* Add signed versions of .cmp/gt/ge
*

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT)
#ident "$Id: parse.y,v 1.53 2003/04/11 05:15:39 steve Exp $"
#ident "$Id: parse.y,v 1.54 2003/05/29 02:21:45 steve Exp $"
#endif
# include "parse_misc.h"
@ -303,13 +303,36 @@ statement
/* Scope statements come in two forms. There are the scope
declaration and the scope recall. */
declaration and the scope recall. The declarations create the
scope, with their association with a parent. The label of the
scope declaration is associated with the new scope.
The symbol is module, function task, fork or begin. It is the
general class of the scope.
The strings are the instance name and type name of the
module. For example, if it is instance U of module foo, the
instance name is "U" and the type name is "foo".
The final symbol is the label of the parent scope. If there is no
parent scope, then this is a root scope. */
| T_LABEL K_SCOPE T_SYMBOL ',' T_STRING T_STRING ';'
{ compile_scope_decl($1, $3, $5, $6, 0); }
| T_LABEL K_SCOPE T_SYMBOL ',' T_STRING T_STRING ',' T_SYMBOL ';'
{ compile_scope_decl($1, $3, $5, $6, $8); }
/* XXXX Legacy declaration has no type name. */
| T_LABEL K_SCOPE T_SYMBOL ',' T_STRING ';'
{ compile_scope_decl($1, $3, $5, 0); }
{ compile_scope_decl($1, $3, $5, "", 0); }
| T_LABEL K_SCOPE T_SYMBOL ',' T_STRING ',' T_SYMBOL ';'
{ compile_scope_decl($1, $3, $5, $7); }
{ compile_scope_decl($1, $3, $5, "", $7); }
/* Scope recall has no label of its own, but refers by label to a
declared scope. */
| K_SCOPE T_SYMBOL ';'
{ compile_scope_recall($2); }
@ -584,6 +607,9 @@ int compile_design(const char*path)
/*
* $Log: parse.y,v $
* Revision 1.54 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.53 2003/04/11 05:15:39 steve
* Add signed versions of .cmp/gt/ge
*

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: vpi_priv.h,v 1.54 2003/05/02 04:29:57 steve Exp $"
#ident "$Id: vpi_priv.h,v 1.55 2003/05/29 02:21:45 steve Exp $"
#endif
# include "vpi_user.h"
@ -143,6 +143,7 @@ struct __vpiScope {
struct __vpiScope *scope;
/* The scope has a name. */
const char*name;
const char*tname;
/* The scope has a system time of its own. */
struct __vpiSystemTime scoped_time;
struct __vpiSystemTime scoped_realtime;
@ -417,6 +418,9 @@ extern char *need_result_buf(unsigned cnt, vpi_rbuf_t type);
/*
* $Log: vpi_priv.h,v $
* Revision 1.55 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.54 2003/05/02 04:29:57 steve
* Add put_value with transport delay.
*

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: vpi_scope.cc,v 1.30 2003/05/27 16:22:10 steve Exp $"
#ident "$Id: vpi_scope.cc,v 1.31 2003/05/29 02:21:45 steve Exp $"
#endif
# include "compile.h"
@ -87,7 +87,7 @@ static void construct_scope_fullname(struct __vpiScope*ref, char*buf)
static char* scope_get_str(int code, vpiHandle obj)
{
struct __vpiScope*ref = (struct __vpiScope*)obj;
char *rbuf = need_result_buf(strlen(ref->name) + 1, RBUF_STR);
char *rbuf;
assert(handle_is_scope(obj));
@ -102,9 +102,15 @@ static char* scope_get_str(int code, vpiHandle obj)
}
case vpiName:
rbuf = need_result_buf(strlen(ref->name) + 1, RBUF_STR);
strcpy(rbuf, ref->name);
return rbuf;
case vpiDefName:
rbuf = need_result_buf(strlen(ref->tname) + 1, RBUF_STR);
strcpy(rbuf, ref->tname);
return rbuf;
default:
assert(0);
return 0;
@ -367,7 +373,8 @@ static void attach_to_scope_(struct __vpiScope*scope, vpiHandle obj)
* and within the addressed parent. The label is used as a key in the
* symbol table and the name is used to construct the actual object.
*/
void compile_scope_decl(char*label, char*type, char*name, char*parent)
void
compile_scope_decl(char*label, char*type, char*name, char*tname, char*parent)
{
struct __vpiScope*scope = new struct __vpiScope;
count_vpi_scopes += 1;
@ -396,6 +403,7 @@ void compile_scope_decl(char*label, char*type, char*name, char*parent)
assert(scope->base.vpi_type);
scope->name = vpip_name_string(name);
scope->tname = vpip_name_string(tname);
scope->intern = 0;
scope->nintern = 0;
scope->threads = 0;
@ -465,6 +473,9 @@ void vpip_attach_to_current_scope(vpiHandle obj)
/*
* $Log: vpi_scope.cc,v $
* Revision 1.31 2003/05/29 02:21:45 steve
* Implement acc_fetch_defname and its infrastructure in vvp.
*
* Revision 1.30 2003/05/27 16:22:10 steve
* PLI get time units/precision.
*