Skip to content

Commit

Permalink
Improved functor debug dumps.
Browse files Browse the repository at this point in the history
  • Loading branch information
steve committed Dec 18, 2001
1 parent 125c631 commit fd0cb30
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 87 deletions.
17 changes: 6 additions & 11 deletions vvp/debug.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT)
#ident "$Id: debug.cc,v 1.7 2001/09/15 18:27:05 steve Exp $"
#ident "$Id: debug.cc,v 1.8 2001/12/18 05:32:11 steve Exp $"
#endif

/*
Expand Down Expand Up @@ -71,7 +71,7 @@ static void cmd_fbreak(unsigned argc, char*argv[])
continue;
}

fp->breakpoint = 1;
fp->break_flag = 1;
}
}

Expand All @@ -92,15 +92,7 @@ static void cmd_functor(unsigned argc, char*argv[])
continue;
}

printf("0x%x: out pointer = 0x%x\n", fnc, fp->out);
printf("0x%x: input values = %c (%02x) %c (%02x)"
" %c (%02x) %c (%02x)\n", fnc,
bitval_tab[fp->ival&3], fp->istr[0],
bitval_tab[(fp->ival>>2)&3], fp->istr[1],
bitval_tab[(fp->ival>>4)&3], fp->istr[2],
bitval_tab[(fp->ival>>6)&3], fp->istr[3]);
printf("0x%x: out value = %c (%02x)\n", fnc,
bitval_tab[fp->oval], fp->ostr);
fp->debug_print(fnc);
}
}

Expand Down Expand Up @@ -173,6 +165,9 @@ void breakpoint(void)
#endif
/*
* $Log: debug.cc,v $
* Revision 1.8 2001/12/18 05:32:11 steve
* Improved functor debug dumps.
*
* Revision 1.7 2001/09/15 18:27:05 steve
* Make configure detect malloc.h
*
Expand Down
99 changes: 29 additions & 70 deletions vvp/functor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT)
#ident "$Id: functor.cc,v 1.36 2001/12/14 01:59:28 steve Exp $"
#ident "$Id: functor.cc,v 1.37 2001/12/18 05:32:11 steve Exp $"
#endif

# include "functor.h"
Expand Down Expand Up @@ -123,7 +123,7 @@ functor_s::functor_s()
cstr = StX;
inhibit = 0;
#if defined(WITH_DEBUG)
breakpoint = 0;
break_flag = 0;
#endif
}

Expand Down Expand Up @@ -170,8 +170,35 @@ void extra_inputs_functor_s::set(vvp_ipoint_t i, bool push,
edge_inputs_functor_s::~edge_inputs_functor_s()
{}

#ifdef WITH_DEBUG
# include <stdio.h>
static const char bitval_tab[4] = { '0', '1', 'x', 'z' };

void functor_s::debug_print(vvp_ipoint_t fnc)
{
printf("0x%x: out pointer =", fnc);
vvp_ipoint_t cur = out;
while (cur) {
printf(" 0x%x", cur);
functor_t tmp = functor_index(cur);
cur = tmp->port[cur&3];
}
printf("\n");
printf("0x%x: input values = %c %c %c %c\n", fnc,
bitval_tab[ival&3],
bitval_tab[(ival>>2)&3],
bitval_tab[(ival>>4)&3],
bitval_tab[(ival>>6)&3]);
printf("0x%x: out value = %c (%02x)\n", fnc,
bitval_tab[get_oval()], get_ostr());
}
#endif

/*
* $Log: functor.cc,v $
* Revision 1.37 2001/12/18 05:32:11 steve
* Improved functor debug dumps.
*
* Revision 1.36 2001/12/14 01:59:28 steve
* Better variable names for functor chunks.
*
Expand Down Expand Up @@ -201,73 +228,5 @@ edge_inputs_functor_s::~edge_inputs_functor_s()
*
* Revision 1.28 2001/10/27 03:43:56 steve
* Propagate functor push, to make assign better.
*
* Revision 1.27 2001/10/12 03:00:09 steve
* M42 implementation of mode 2 (Stephan Boettcher)
*
* Revision 1.26 2001/08/08 01:05:06 steve
* Initial implementation of vvp_fvectors.
* (Stephan Boettcher)
*
* Revision 1.25 2001/07/30 03:53:01 steve
* Initialize initial functor tables.
*
* Revision 1.24 2001/07/16 18:06:01 steve
* Initialize allocated functors (Stephan Boettcher)
*
* Revision 1.23 2001/06/21 22:54:12 steve
* Support cbValueChange callbacks.
*
* Revision 1.22 2001/05/31 04:12:43 steve
* Make the bufif0 and bufif1 gates strength aware,
* and accurately propagate strengths of outputs.
*
* Revision 1.21 2001/05/30 03:02:35 steve
* Propagate strength-values instead of drive strengths.
*
* Revision 1.20 2001/05/12 20:38:06 steve
* A resolver that understands some simple strengths.
*
* Revision 1.19 2001/05/09 04:23:18 steve
* Now that the interactive debugger exists,
* there is no use for the output dump.
*
* Revision 1.18 2001/05/09 02:53:25 steve
* Implement the .resolv syntax.
*
* Revision 1.17 2001/05/08 23:32:26 steve
* Add to the debugger the ability to view and
* break on functors.
*
* Add strengths to functors at compile time,
* and Make functors pass their strengths as they
* propagate their output.
*
* Revision 1.16 2001/05/06 03:51:37 steve
* Regularize the mode-42 functor handling.
*
* Revision 1.15 2001/05/03 04:54:33 steve
* Fix handling of a mode 1 functor that feeds into a
* mode 2 functor. Feed the result only if the event
* is triggered, and do pass to the output even if no
* threads are waiting.
*
* Revision 1.14 2001/04/26 15:52:22 steve
* Add the mode-42 functor concept to UDPs.
*
* Revision 1.13 2001/04/24 02:23:59 steve
* Support for UDP devices in VVP (Stephen Boettcher)
*
* Revision 1.12 2001/04/18 04:21:23 steve
* Put threads into scopes.
*
* Revision 1.11 2001/04/14 05:10:56 steve
* support the .event/or statement.
*
* Revision 1.10 2001/04/03 03:18:34 steve
* support functor_set push for blocking assignment.
*
* Revision 1.9 2001/03/31 19:29:23 steve
* Fix compilation warnings.
*/

15 changes: 11 additions & 4 deletions vvp/functor.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,14 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT)
#ident "$Id: functor.h,v 1.41 2001/12/14 01:59:28 steve Exp $"
#ident "$Id: functor.h,v 1.42 2001/12/18 05:32:11 steve Exp $"
#endif

# include "pointers.h"
# include "delay.h"
#ifdef ENABLE_VVP_DEBUG
# include "debug.h"
#endif

/*
* The vvp_ipoint_t is an integral type that is 32bits. The low 2 bits
Expand Down Expand Up @@ -174,7 +177,8 @@ struct functor_s {
public:
#if defined(WITH_DEBUG)
/* True if this functor triggers a breakpoint. */
unsigned breakpoint : 1;
unsigned break_flag : 1;
virtual void debug_print(vvp_ipoint_t fnc);
#endif

public:
Expand Down Expand Up @@ -220,7 +224,7 @@ inline void functor_s::propagate(unsigned val, unsigned str, bool push)
}

#if defined(WITH_DEBUG)
if (breakpoint)
if (break_flag)
breakpoint();
#endif
}
Expand Down Expand Up @@ -299,7 +303,7 @@ void functor_set(vvp_ipoint_t ptr, unsigned val, unsigned str, bool push = true)
fp->set(ptr, push, val, str);

#if defined(WITH_DEBUG)
if (fp->breakpoint)
if (fp->break_flag)
breakpoint();
#endif
}
Expand Down Expand Up @@ -375,6 +379,9 @@ extern vvp_fvector_t vvp_fvector_continuous_new(unsigned size, vvp_ipoint_t p);

/*
* $Log: functor.h,v $
* Revision 1.42 2001/12/18 05:32:11 steve
* Improved functor debug dumps.
*
* Revision 1.41 2001/12/14 01:59:28 steve
* Better variable names for functor chunks.
*
Expand Down
19 changes: 18 additions & 1 deletion vvp/resolv.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT)
#ident "$Id: resolv.cc,v 1.11 2001/12/15 02:11:51 steve Exp $"
#ident "$Id: resolv.cc,v 1.12 2001/12/18 05:32:11 steve Exp $"
#endif

# include "resolv.h"
Expand Down Expand Up @@ -185,8 +185,25 @@ void resolv_functor_s::set(vvp_ipoint_t i, bool push, unsigned, unsigned str)
put_ostr(val, sval, false);
}

#ifdef WITH_DEBUG
# include <stdio.h>

static const char bitval_tab[4] = { '0', '1', 'x', 'z' };
void resolv_functor_s::debug_print(vvp_ipoint_t fnc)
{
printf("0x%x: Resolver tied to %02x\n", fnc, hiz_);
printf("0x%x: input strengths = %02x %02x %02x %02x\n", fnc,
istr[0], istr[1], istr[2], istr[3]);
functor_s::debug_print(fnc);
}
#endif


/*
* $Log: resolv.cc,v $
* Revision 1.12 2001/12/18 05:32:11 steve
* Improved functor debug dumps.
*
* Revision 1.11 2001/12/15 02:11:51 steve
* Give tri0 and tri1 their proper strengths.
*
Expand Down
10 changes: 9 additions & 1 deletion vvp/resolv.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT)
#ident "$Id: resolv.h,v 1.5 2001/12/15 02:11:51 steve Exp $"
#ident "$Id: resolv.h,v 1.6 2001/12/18 05:32:11 steve Exp $"
#endif

# include "config.h"
# include "functor.h"

/*
Expand All @@ -38,13 +39,20 @@ class resolv_functor_s: public functor_s {

virtual void set(vvp_ipoint_t i, bool push, unsigned val, unsigned str);

#ifdef WITH_DEBUG
void debug_print(vvp_ipoint_t fnc);
#endif

private:
unsigned char istr[4];
unsigned char hiz_;
};

/*
* $Log: resolv.h,v $
* Revision 1.6 2001/12/18 05:32:11 steve
* Improved functor debug dumps.
*
* Revision 1.5 2001/12/15 02:11:51 steve
* Give tri0 and tri1 their proper strengths.
*
Expand Down

0 comments on commit fd0cb30

Please sign in to comment.