Spelling fixes.
This commit is contained in:
parent
929f0f5f00
commit
b726395d1e
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* $Id: README.txt,v 1.41 2003/01/25 23:48:06 steve Exp $
|
* $Id: README.txt,v 1.42 2003/02/09 23:33:26 steve Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
VVP SIMULATION ENGINE
|
VVP SIMULATION ENGINE
|
||||||
|
|
@ -202,7 +202,7 @@ general syntax of a variable is:
|
||||||
The "name" is the declared base name of the original variable, for the
|
The "name" is the declared base name of the original variable, for the
|
||||||
sake of VPI code that might access it. The variable is placed in the
|
sake of VPI code that might access it. The variable is placed in the
|
||||||
current scope. The variable also has a width, defined by the indices
|
current scope. The variable also has a width, defined by the indices
|
||||||
for the mst significant and lest significant bits. If the indices are
|
for the most significant and lest significant bits. If the indices are
|
||||||
equal (normally 0) the vector has width of one. If the width is greater
|
equal (normally 0) the vector has width of one. If the width is greater
|
||||||
then one, a contiguous array of functors is created and the value of
|
then one, a contiguous array of functors is created and the value of
|
||||||
the label is the address of the least significant bit.
|
the label is the address of the least significant bit.
|
||||||
|
|
@ -264,7 +264,7 @@ functor pointer, though.
|
||||||
|
|
||||||
MEMORY STATEMENTS:
|
MEMORY STATEMENTS:
|
||||||
|
|
||||||
Three types of memory stetement perform (1) creation of a memory, (2)
|
Three types of memory statement perform (1) creation of a memory, (2)
|
||||||
connecting a read port to an existing memory, and (3) initializing the
|
connecting a read port to an existing memory, and (3) initializing the
|
||||||
memory's contents.
|
memory's contents.
|
||||||
|
|
||||||
|
|
@ -301,7 +301,7 @@ become a list of numbers, when multi-index memory ports become
|
||||||
supported).
|
supported).
|
||||||
|
|
||||||
Any address change, or any change in the addressed memory contents is
|
Any address change, or any change in the addressed memory contents is
|
||||||
imediately propagated to the port outputs.
|
immediately propagated to the port outputs.
|
||||||
|
|
||||||
A write port is a superset of a read port. It is a vector of functors
|
A write port is a superset of a read port. It is a vector of functors
|
||||||
that is wide enough to accept the address bits, an event input, a
|
that is wide enough to accept the address bits, an event input, a
|
||||||
|
|
@ -325,14 +325,14 @@ To initialize a memory, use:
|
||||||
val val val ...
|
val val val ...
|
||||||
;
|
;
|
||||||
|
|
||||||
<memid> is the lavbel of the memory. [<start>] is optional,
|
<memid> is the label of the memory. [<start>] is optional,
|
||||||
identifying the bits locattion where the first value is loaded.
|
identifying the bits location where the first value is loaded.
|
||||||
<start> must be a multiple of four, and defaults to zero, if omitted.
|
<start> must be a multiple of four, and defaults to zero, if omitted.
|
||||||
|
|
||||||
The values are decimal or hex numbers (0x prefix), which may be
|
The values are decimal or hex numbers (0x prefix), which may be
|
||||||
optionally separated by commata ','. Each number in the range 0..256
|
optionally separated by comma ','. Each number in the range 0..256
|
||||||
initializes four memory bits. Two bits form each byte for each memory
|
initializes four memory bits. Two bits form each byte for each memory
|
||||||
bit, in the ususal encoding.
|
bit, in the usual encoding.
|
||||||
|
|
||||||
Procedural access to the memory employs an index register to address a
|
Procedural access to the memory employs an index register to address a
|
||||||
bit location in the memory, via the commands:
|
bit location in the memory, via the commands:
|
||||||
|
|
@ -388,7 +388,7 @@ to make this one go.
|
||||||
|
|
||||||
WORD STATEMENTS:
|
WORD STATEMENTS:
|
||||||
|
|
||||||
Verilog includes some scalered word types available to the programmer,
|
Verilog includes some scalar word types available to the programmer,
|
||||||
including real variables, and possible extension types that the code
|
including real variables, and possible extension types that the code
|
||||||
generator can transparently use. Variables of these special types are
|
generator can transparently use. Variables of these special types are
|
||||||
declared with .word statements:
|
declared with .word statements:
|
||||||
|
|
@ -438,7 +438,7 @@ being forced.
|
||||||
|
|
||||||
STRUCTURAL ARITHMETIC STATEMENTS:
|
STRUCTURAL ARITHMETIC STATEMENTS:
|
||||||
|
|
||||||
The various Verilog arithmetic opeators (+-*/%) are available to
|
The various Verilog arithmetic operators (+-*/%) are available to
|
||||||
structural contexts even though they do not fit into nice neat
|
structural contexts even though they do not fit into nice neat
|
||||||
functors. These operators are not in general bitwise, so special
|
functors. These operators are not in general bitwise, so special
|
||||||
measures are needed to make them work in a functor environment. We
|
measures are needed to make them work in a functor environment. We
|
||||||
|
|
@ -536,7 +536,7 @@ caller and %end in the callee. The %fork, then is simply a
|
||||||
generalization of a function call, where the caller does not
|
generalization of a function call, where the caller does not
|
||||||
necessarily wait for the callee.
|
necessarily wait for the callee.
|
||||||
|
|
||||||
For all the behavior of threads and thread parantage to work
|
For all the behavior of threads and thread parentage to work
|
||||||
correctly, all %fork statements must have a corresponding %join in the
|
correctly, all %fork statements must have a corresponding %join in the
|
||||||
parent, and %end in the child. Without this proper matching, the
|
parent, and %end in the child. Without this proper matching, the
|
||||||
hierarchical relationships can get confused. The behavior of erroneous
|
hierarchical relationships can get confused. The behavior of erroneous
|
||||||
|
|
@ -620,7 +620,7 @@ various instructions.
|
||||||
THE RELATIONSHIP BETWEEN FUNCTORS, THREADS AND EVENTS
|
THE RELATIONSHIP BETWEEN FUNCTORS, THREADS AND EVENTS
|
||||||
|
|
||||||
Given the above summary of the major components of vvp, some
|
Given the above summary of the major components of vvp, some
|
||||||
description of their relationship is warrented. Functors provide a
|
description of their relationship is warranted. Functors provide a
|
||||||
structural description of the design (so far as it can be described
|
structural description of the design (so far as it can be described
|
||||||
structurally) and these functors run independently of the threads. In
|
structurally) and these functors run independently of the threads. In
|
||||||
particular, when an input to a functor is set, it calculates a new
|
particular, when an input to a functor is set, it calculates a new
|
||||||
|
|
@ -766,7 +766,7 @@ becomes:
|
||||||
* named events
|
* named events
|
||||||
|
|
||||||
Events in general are implemented as functors, but named events in
|
Events in general are implemented as functors, but named events in
|
||||||
partinular have no inputs and only the event output. The way to
|
particular have no inputs and only the event output. The way to
|
||||||
generate code for these is like so:
|
generate code for these is like so:
|
||||||
|
|
||||||
a .event "name";
|
a .event "name";
|
||||||
|
|
|
||||||
|
|
@ -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: compile.cc,v 1.153 2003/02/06 17:41:47 steve Exp $"
|
#ident "$Id: compile.cc,v 1.154 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "arith.h"
|
# include "arith.h"
|
||||||
|
|
@ -1196,7 +1196,7 @@ void compile_memory_init(char *memid, unsigned i, unsigned char val)
|
||||||
/*
|
/*
|
||||||
* The parser uses this function to compile and link an executable
|
* The parser uses this function to compile and link an executable
|
||||||
* opcode. I do this by looking up the opcode in the opcode_table. The
|
* opcode. I do this by looking up the opcode in the opcode_table. The
|
||||||
* table gives the operand structure that is acceptible, so I can
|
* table gives the operand structure that is acceptable, so I can
|
||||||
* process the operands here as well.
|
* process the operands here as well.
|
||||||
*/
|
*/
|
||||||
void compile_code(char*label, char*mnem, comp_operands_t opa)
|
void compile_code(char*label, char*mnem, comp_operands_t opa)
|
||||||
|
|
@ -1520,6 +1520,9 @@ void compile_net(char*label, char*name, int msb, int lsb, bool signed_flag,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: compile.cc,v $
|
* $Log: compile.cc,v $
|
||||||
|
* Revision 1.154 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.153 2003/02/06 17:41:47 steve
|
* Revision 1.153 2003/02/06 17:41:47 steve
|
||||||
* Add the %sub/wr instruction.
|
* Add the %sub/wr instruction.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: compile.h,v 1.48 2003/01/27 00:14:37 steve Exp $"
|
#ident "$Id: compile.h,v 1.49 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
|
|
@ -70,7 +70,7 @@ extern void compile_vpi_time_precision(long pre);
|
||||||
* this function will free them. (Or save them permanently.) This
|
* this function will free them. (Or save them permanently.) This
|
||||||
* includes the argv array and the strings it references.
|
* includes the argv array and the strings it references.
|
||||||
*
|
*
|
||||||
* The argc and argv are a list of char* that are the port paramters
|
* The argc and argv are a list of char* that are the port parameters
|
||||||
* of the functor. The compile should match those port parameters up
|
* of the functor. The compile should match those port parameters up
|
||||||
* to existing functors to manage the linking.
|
* to existing functors to manage the linking.
|
||||||
*/
|
*/
|
||||||
|
|
@ -143,7 +143,7 @@ extern void code_label_lookup(struct vvp_code_s *code, char *label);
|
||||||
* `compile_udp_table' is called with `table'==NULL to create a new
|
* `compile_udp_table' is called with `table'==NULL to create a new
|
||||||
* table, or with an existing table to append to.
|
* table, or with an existing table to append to.
|
||||||
*
|
*
|
||||||
* `compile_udp_functor' creates a mode-3 functor refering to the
|
* `compile_udp_functor' creates a mode-3 functor referring to the
|
||||||
* labeled UDP.
|
* labeled UDP.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -261,6 +261,9 @@ extern void compile_net(char*label, char*name,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: compile.h,v $
|
* $Log: compile.h,v $
|
||||||
|
* Revision 1.49 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.48 2003/01/27 00:14:37 steve
|
* Revision 1.48 2003/01/27 00:14:37 steve
|
||||||
* Support in various contexts the $realtime
|
* Support in various contexts the $realtime
|
||||||
* system task.
|
* system task.
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,12 @@
|
||||||
* 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: debug.cc,v 1.10 2002/08/12 01:35:08 steve Exp $"
|
#ident "$Id: debug.cc,v 1.11 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file provides a simple command line debugger for the vvp
|
* This file provides a simple command line debugger for the vvp
|
||||||
* runtime. It is a means to interract with the user running the
|
* runtime. It is a means to interact with the user running the
|
||||||
* simulation.
|
* simulation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -154,6 +154,9 @@ void breakpoint(void)
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* $Log: debug.cc,v $
|
* $Log: debug.cc,v $
|
||||||
|
* Revision 1.11 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.10 2002/08/12 01:35:08 steve
|
* Revision 1.10 2002/08/12 01:35:08 steve
|
||||||
* conditional ident string using autoconfig.
|
* conditional ident string using autoconfig.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ breakpoint, or until the simulation ends.
|
||||||
|
|
||||||
* lookup <symbol>...
|
* lookup <symbol>...
|
||||||
|
|
||||||
Give a symbol name, and this function will lookup that symbol and
|
Give a symbol name, and this function will look up that symbol and
|
||||||
return the type and address.
|
return the type and address.
|
||||||
|
|
||||||
fbreak <address>...
|
fbreak <address>...
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ S_test .scope "test", S_main;
|
||||||
.scope S_test;
|
.scope S_test;
|
||||||
T_0/1 ;
|
T_0/1 ;
|
||||||
%delay 5;
|
%delay 5;
|
||||||
%vpi_call "$display", "FAILED -- thread wasn't disbled";
|
%vpi_call "$display", "FAILED -- thread wasn't disabled";
|
||||||
%vpi_call "$finish";
|
%vpi_call "$finish";
|
||||||
%end;
|
%end;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
; along with this program; if not, write to the Free Software
|
; along with this program; if not, write to the Free Software
|
||||||
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
|
||||||
; This example slightly extends the hello.vvp example by ading the
|
; This example slightly extends the hello.vvp example by adding the
|
||||||
; set and display of a reg variable. The Verilog source that would
|
; set and display of a reg variable. The Verilog source that would
|
||||||
; make this might be:
|
; make this might be:
|
||||||
;
|
;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
; end
|
; end
|
||||||
; endmodule
|
; endmodule
|
||||||
;
|
;
|
||||||
; Notice the use of the .arith/sum statment, including the specification
|
; Notice the use of the .arith/sum statement, including the specification
|
||||||
; of the width (4 bits) and the order that the bits of the operands are
|
; of the width (4 bits) and the order that the bits of the operands are
|
||||||
; passed to the statement.
|
; passed to the statement.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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: functor.h,v 1.48 2002/08/12 01:35:08 steve Exp $"
|
#ident "$Id: functor.h,v 1.49 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "pointers.h"
|
# include "pointers.h"
|
||||||
|
|
@ -72,7 +72,7 @@
|
||||||
* The strength-aware outputs are specified as an 8 bit value, that is
|
* The strength-aware outputs are specified as an 8 bit value, that is
|
||||||
* two 4 bit numbers. The value is encoded with two drive strengths (0-7)
|
* two 4 bit numbers. The value is encoded with two drive strengths (0-7)
|
||||||
* and two drive values (0 or 1). Each nibble contains three bits of
|
* and two drive values (0 or 1). Each nibble contains three bits of
|
||||||
* strength and one bit of value, like so: VSSS. The high nible has
|
* strength and one bit of value, like so: VSSS. The high nibble has
|
||||||
* the strength-value closest to supply1, and the low nibble has the
|
* the strength-value closest to supply1, and the low nibble has the
|
||||||
* strength-value closest to supply0.
|
* strength-value closest to supply0.
|
||||||
*
|
*
|
||||||
|
|
@ -308,7 +308,7 @@ struct extra_outputs_functor_s: public functor_s {
|
||||||
};
|
};
|
||||||
|
|
||||||
// extra_ports_functor_s redirects to base without setting the inputs.
|
// extra_ports_functor_s redirects to base without setting the inputs.
|
||||||
// But base must be awayr that i may not match this. This is used by
|
// But base must be aware that i may not match this. This is used by
|
||||||
// memory ports.
|
// memory ports.
|
||||||
|
|
||||||
struct extra_ports_functor_s : public extra_outputs_functor_s
|
struct extra_ports_functor_s : public extra_outputs_functor_s
|
||||||
|
|
@ -352,6 +352,9 @@ extern vvp_fvector_t vvp_fvector_continuous_new(unsigned size, vvp_ipoint_t p);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: functor.h,v $
|
* $Log: functor.h,v $
|
||||||
|
* Revision 1.49 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.48 2002/08/12 01:35:08 steve
|
* Revision 1.48 2002/08/12 01:35:08 steve
|
||||||
* conditional ident string using autoconfig.
|
* conditional ident string using autoconfig.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@ source file.
|
||||||
|
|
||||||
The current values of the inputs are stored in a single 8-bit byte,
|
The current values of the inputs are stored in a single 8-bit byte,
|
||||||
2-bits per value. This is the ``ival'' member. The input of a functor
|
2-bits per value. This is the ``ival'' member. The input of a functor
|
||||||
gets set by propagation events, assign events or %set
|
gets set by propagation events, assign events, or %set instructions.
|
||||||
instructions.
|
|
||||||
|
|
||||||
The output value is stored in two bits of the functor. The current
|
The output value is stored in two bits of the functor. The current
|
||||||
output is used to detect edges when the input changes. Whenever an
|
output is used to detect edges when the input changes. Whenever an
|
||||||
|
|
|
||||||
|
|
@ -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: lexor.lex,v 1.37 2003/01/27 00:14:37 steve Exp $"
|
#ident "$Id: lexor.lex,v 1.38 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "parse_misc.h"
|
# include "parse_misc.h"
|
||||||
|
|
@ -50,9 +50,9 @@
|
||||||
assert(yylval.text);
|
assert(yylval.text);
|
||||||
return T_STRING; }
|
return T_STRING; }
|
||||||
|
|
||||||
/* Binary vector tokens are pared here. The result of this is a
|
/* Binary vector tokens are parsed here. The result of this is a
|
||||||
string of binary 4-values in the yylval.vect.text string. This is
|
string of binary 4-values in the yylval.vect.text string. This is
|
||||||
preceeded by an 's' if the vector is signed. */
|
preceded by an 's' if the vector is signed. */
|
||||||
[1-9][0-9]*("'b"|"'sb")[01xz]+ {
|
[1-9][0-9]*("'b"|"'sb")[01xz]+ {
|
||||||
yylval.vect.idx = strtoul(yytext, 0, 10);
|
yylval.vect.idx = strtoul(yytext, 0, 10);
|
||||||
yylval.vect.text = (char*)malloc(yylval.vect.idx + 2);
|
yylval.vect.text = (char*)malloc(yylval.vect.idx + 2);
|
||||||
|
|
@ -176,6 +176,9 @@ int yywrap()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: lexor.lex,v $
|
* $Log: lexor.lex,v $
|
||||||
|
* Revision 1.38 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.37 2003/01/27 00:14:37 steve
|
* Revision 1.37 2003/01/27 00:14:37 steve
|
||||||
* Support in various contexts the $realtime
|
* Support in various contexts the $realtime
|
||||||
* system task.
|
* system task.
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,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: memory.cc,v 1.19 2002/09/17 00:42:22 steve Exp $"
|
#ident "$Id: memory.cc,v 1.20 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
|
|
@ -409,7 +409,7 @@ void write_event(vvp_memory_port_t p)
|
||||||
|
|
||||||
void vvp_memory_port_s::set(vvp_ipoint_t i, bool, unsigned val, unsigned)
|
void vvp_memory_port_s::set(vvp_ipoint_t i, bool, unsigned val, unsigned)
|
||||||
{
|
{
|
||||||
// !attention! "i" may not corespont to "this"
|
// !attention! "i" may not correspond to "this"
|
||||||
functor_t ifu = functor_index(i);
|
functor_t ifu = functor_index(i);
|
||||||
ifu->put(i, val);
|
ifu->put(i, val);
|
||||||
|
|
||||||
|
|
@ -419,8 +419,8 @@ void vvp_memory_port_s::set(vvp_ipoint_t i, bool, unsigned val, unsigned)
|
||||||
update_data(this);
|
update_data(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// port ix+naddr is the write clock. If it's input value is
|
// port ix+naddr is the write clock. If its input value is
|
||||||
// undefined, we do assynchronous write. Else any event on ix+naddr
|
// undefined, we do asynchronous write. Else any event on ix+naddr
|
||||||
// is a valid write clock edge. Connect an appropriate edge event
|
// is a valid write clock edge. Connect an appropriate edge event
|
||||||
// functor.
|
// functor.
|
||||||
|
|
||||||
|
|
@ -510,6 +510,9 @@ void schedule_memory(vvp_memory_t mem, unsigned idx,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: memory.cc,v $
|
* $Log: memory.cc,v $
|
||||||
|
* Revision 1.20 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.19 2002/09/17 00:42:22 steve
|
* Revision 1.19 2002/09/17 00:42:22 steve
|
||||||
* Proper initialization of the memories table.
|
* Proper initialization of the memories table.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2003 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001-2003 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* $Id: opcodes.txt,v 1.48 2003/02/06 17:41:47 steve Exp $
|
* $Id: opcodes.txt,v 1.49 2003/02/09 23:33:26 steve Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -10,8 +10,8 @@ EXECUTABLE INSTRUCTION OPCODES
|
||||||
|
|
||||||
Instruction opcodes all start with a % character and have 0 or more
|
Instruction opcodes all start with a % character and have 0 or more
|
||||||
operands. In no case are there more then 3 operands. This chapter
|
operands. In no case are there more then 3 operands. This chapter
|
||||||
describes the specific behavior of each opcode, in hopefully enough
|
describes the specific behavior of each opcode, in enough detail
|
||||||
detail that its complete effect can be predicted.
|
(I hope) that its complete effect can be predicted.
|
||||||
|
|
||||||
General principles of Arithmetic:
|
General principles of Arithmetic:
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ See also the %sub instruction.
|
||||||
|
|
||||||
* %add/wr <bit-l>, <bit-r>
|
* %add/wr <bit-l>, <bit-r>
|
||||||
|
|
||||||
This is the real valued version of hte %add instruction. The arguments
|
This is the real valued version of the %add instruction. The arguments
|
||||||
are word indices of the operands. The right operand is added into the
|
are word indices of the operands. The right operand is added into the
|
||||||
left operand.
|
left operand.
|
||||||
|
|
||||||
|
|
@ -130,7 +130,7 @@ variable. This opcode affects only a single bit.
|
||||||
|
|
||||||
* %deassign <var-label>, <wid>
|
* %deassign <var-label>, <wid>
|
||||||
|
|
||||||
Deactive and disconnect a procedural continuous assignment to a
|
Deactivate and disconnect a procedural continuous assignment to a
|
||||||
variable. The <var-label> identifies the affected variable. <wid>
|
variable. The <var-label> identifies the affected variable. <wid>
|
||||||
specifies the how many bits to deassign.
|
specifies the how many bits to deassign.
|
||||||
|
|
||||||
|
|
@ -156,13 +156,13 @@ the same. That is, x and z are considered equal. In other words the eq
|
||||||
bit is the same as ``=='' and the eeq bit ``===''.
|
bit is the same as ``=='' and the eeq bit ``===''.
|
||||||
|
|
||||||
The lt bit is 1 if the left vector is less then the right vector, or 0
|
The lt bit is 1 if the left vector is less then the right vector, or 0
|
||||||
if greater then or equal to the right vector. It is the equivilent of
|
if greater then or equal to the right vector. It is the equivalent of
|
||||||
the Verilog < operator. Combinations of these three bits can be used
|
the Verilog < operator. Combinations of these three bits can be used
|
||||||
to implement all the Verilog comparison operators.
|
to implement all the Verilog comparison operators.
|
||||||
|
|
||||||
The %cmp/u and %cmp/s differ only in the handling of the lt bit. The
|
The %cmp/u and %cmp/s differ only in the handling of the lt bit. The
|
||||||
%cmp/u does an unsigned compare, whereas the %cmp/s does a signed
|
%cmp/u does an unsigned compare, whereas the %cmp/s does a signed
|
||||||
compare. In either case, if either operand constains x or z, then lt
|
compare. In either case, if either operand contains x or z, then lt
|
||||||
bit gets the x value.
|
bit gets the x value.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -332,7 +332,7 @@ a .var or a .functor, and may be indexed with array syntax to get at a
|
||||||
functor within a vector of functors. This instruction loads only a
|
functor within a vector of functors. This instruction loads only a
|
||||||
single bit.
|
single bit.
|
||||||
|
|
||||||
THe %load/v instruction is a vector version, that loads an entire
|
The %load/v instruction is a vector version, that loads an entire
|
||||||
vector, starting at the given <bit> and functor.
|
vector, starting at the given <bit> and functor.
|
||||||
|
|
||||||
* %load/m <bit>, <memory-label>
|
* %load/m <bit>, <memory-label>
|
||||||
|
|
@ -459,7 +459,7 @@ truth table:
|
||||||
* %or/r <dst>, <src>, <wid>
|
* %or/r <dst>, <src>, <wid>
|
||||||
|
|
||||||
This is a reduction version of the %or opcode. The <src> is a vector,
|
This is a reduction version of the %or opcode. The <src> is a vector,
|
||||||
and the <dst> is a writeable scaler. The <dst> gets the value of the
|
and the <dst> is a writable scalar. The <dst> gets the value of the
|
||||||
or of all the bits of the src vector.
|
or of all the bits of the src vector.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -488,7 +488,7 @@ value. Once the set completes, the value is immediately available to
|
||||||
be read out of the variable. The <bit> is the address of the thread
|
be read out of the variable. The <bit> is the address of the thread
|
||||||
register that contains the bit value to assign.
|
register that contains the bit value to assign.
|
||||||
|
|
||||||
The %set/v instrunction is the same as the %set, but it adds a width
|
The %set/v instruction is the same as the %set, but it adds a width
|
||||||
for a vector. The bits are written out in order, starting at the
|
for a vector. The bits are written out in order, starting at the
|
||||||
addressed variable bit and working up. If the <bit> is one of the
|
addressed variable bit and working up. If the <bit> is one of the
|
||||||
constant bits, then the value is repeated for the width. Otherwise,
|
constant bits, then the value is repeated for the width. Otherwise,
|
||||||
|
|
@ -549,7 +549,7 @@ See also the %add instruction.
|
||||||
* %subi <bit-l>, <imm>, <wid>
|
* %subi <bit-l>, <imm>, <wid>
|
||||||
|
|
||||||
This instruction arithmetically subtracts the immediate value from the
|
This instruction arithmetically subtracts the immediate value from the
|
||||||
left vector. The <imm> value is a 16bit unsigned value zer-extended to
|
left vector. The <imm> value is a 16bit unsigned value zero-extended to
|
||||||
the <wid> of the left vector. The result replaces the left vector.
|
the <wid> of the left vector. The result replaces the left vector.
|
||||||
|
|
||||||
See also the %addi instruction.
|
See also the %addi instruction.
|
||||||
|
|
|
||||||
11
vvp/parse.y
11
vvp/parse.y
|
|
@ -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: parse.y,v 1.50 2003/01/27 00:14:37 steve Exp $"
|
#ident "$Id: parse.y,v 1.51 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "parse_misc.h"
|
# include "parse_misc.h"
|
||||||
|
|
@ -114,7 +114,7 @@ program
|
||||||
|
|
||||||
|
|
||||||
/* A statement can be any of the following. In all cases, the
|
/* A statement can be any of the following. In all cases, the
|
||||||
statment is terminated by a semi-colon. In general, a statement
|
statement is terminated by a semi-colon. In general, a statement
|
||||||
has a label, an opcode of some source, and operands. The
|
has a label, an opcode of some source, and operands. The
|
||||||
structure of the operands depends on the opcode. */
|
structure of the operands depends on the opcode. */
|
||||||
|
|
||||||
|
|
@ -137,7 +137,7 @@ statement
|
||||||
|
|
||||||
/* UDP statements define or instantiate UDPs. Definitions take a
|
/* UDP statements define or instantiate UDPs. Definitions take a
|
||||||
label (UDP type id) a name (string), the number of inputs, and
|
label (UDP type id) a name (string), the number of inputs, and
|
||||||
for sequentioal UDPs the initial value. */
|
for sequential UDPs the initial value. */
|
||||||
|
|
||||||
| T_LABEL K_UDP_S T_STRING ',' T_NUMBER ',' T_NUMBER ',' udp_table ';'
|
| T_LABEL K_UDP_S T_STRING ',' T_NUMBER ',' T_NUMBER ',' udp_table ';'
|
||||||
{ compile_udp_def(1, $1, $3, $5, $7, $9); }
|
{ compile_udp_def(1, $1, $3, $5, $7, $9); }
|
||||||
|
|
@ -400,7 +400,7 @@ operand
|
||||||
Each argument of the call is represented as a vpiHandle
|
Each argument of the call is represented as a vpiHandle
|
||||||
object. If the argument is a symbol, the symbol name will be
|
object. If the argument is a symbol, the symbol name will be
|
||||||
kept, until the argument_list is complete. Then, all symbol
|
kept, until the argument_list is complete. Then, all symbol
|
||||||
lookups will be attemted. Postoned lookups will point into the
|
lookups will be attempted. Postponed lookups will point into the
|
||||||
resulting $$->argv.
|
resulting $$->argv.
|
||||||
If it is some other supported object, the necessary
|
If it is some other supported object, the necessary
|
||||||
vpiHandle object is created to support it. */
|
vpiHandle object is created to support it. */
|
||||||
|
|
@ -569,6 +569,9 @@ int compile_design(const char*path)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: parse.y,v $
|
* $Log: parse.y,v $
|
||||||
|
* Revision 1.51 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.50 2003/01/27 00:14:37 steve
|
* Revision 1.50 2003/01/27 00:14:37 steve
|
||||||
* Support in various contexts the $realtime
|
* Support in various contexts the $realtime
|
||||||
* system task.
|
* system task.
|
||||||
|
|
|
||||||
|
|
@ -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: resolv.cc,v 1.15 2002/09/06 04:56:29 steve Exp $"
|
#ident "$Id: resolv.cc,v 1.16 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "resolv.h"
|
# include "resolv.h"
|
||||||
|
|
@ -128,7 +128,7 @@ static unsigned blend(unsigned a, unsigned b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Cannonicalize the HiZ value. */
|
/* Canonicalize the HiZ value. */
|
||||||
if ((res&0x77) == 0)
|
if ((res&0x77) == 0)
|
||||||
res = HiZ;
|
res = HiZ;
|
||||||
|
|
||||||
|
|
@ -182,7 +182,7 @@ void resolv_functor_s::set(vvp_ipoint_t i, bool push, unsigned, unsigned str)
|
||||||
|
|
||||||
// Do not propagate (push). Why? Because if, for example, a
|
// Do not propagate (push). Why? Because if, for example, a
|
||||||
// clock buffer is modeled as parallel inverters, the output
|
// clock buffer is modeled as parallel inverters, the output
|
||||||
// must not show 'bx transitions when the inverters all propagte
|
// must not show 'bx transitions when the inverters all propagate
|
||||||
// at the same time.
|
// at the same time.
|
||||||
|
|
||||||
put_ostr(val, sval, false);
|
put_ostr(val, sval, false);
|
||||||
|
|
@ -204,6 +204,9 @@ void resolv_functor_s::debug_print(vvp_ipoint_t fnc)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: resolv.cc,v $
|
* $Log: resolv.cc,v $
|
||||||
|
* Revision 1.16 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.15 2002/09/06 04:56:29 steve
|
* Revision 1.15 2002/09/06 04:56:29 steve
|
||||||
* Add support for %v is the display system task.
|
* Add support for %v is the display system task.
|
||||||
* Change the encoding of H and L outputs from
|
* Change the encoding of H and L outputs from
|
||||||
|
|
|
||||||
|
|
@ -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: schedule.cc,v 1.21 2003/01/06 23:57:26 steve Exp $"
|
#ident "$Id: schedule.cc,v 1.22 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "schedule.h"
|
# include "schedule.h"
|
||||||
|
|
@ -176,8 +176,8 @@ static void schedule_event_(struct event_s*cur)
|
||||||
|
|
||||||
/* Look for the first event after the cur
|
/* Look for the first event after the cur
|
||||||
event. Decrease the cur->delay as I go, and use the
|
event. Decrease the cur->delay as I go, and use the
|
||||||
skip member to accellerate the search. When I'm done,
|
skip member to accelerate the search. When I'm done,
|
||||||
prev will point to the even immediately before where
|
prev will point to the event immediately before where
|
||||||
this event goes. */
|
this event goes. */
|
||||||
struct event_s*prev = idx;
|
struct event_s*prev = idx;
|
||||||
while (cur->delay > idx->delay) {
|
while (cur->delay > idx->delay) {
|
||||||
|
|
@ -437,6 +437,9 @@ void schedule_simulate(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: schedule.cc,v $
|
* $Log: schedule.cc,v $
|
||||||
|
* Revision 1.22 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.21 2003/01/06 23:57:26 steve
|
* Revision 1.21 2003/01/06 23:57:26 steve
|
||||||
* Schedule wait lists of threads as a single event,
|
* Schedule wait lists of threads as a single event,
|
||||||
* to save on events. Also, improve efficiency of
|
* to save on events. Also, improve efficiency of
|
||||||
|
|
|
||||||
|
|
@ -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: schedule.h,v 1.12 2003/01/06 23:57:26 steve Exp $"
|
#ident "$Id: schedule.h,v 1.13 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vthread.h"
|
# include "vthread.h"
|
||||||
|
|
@ -72,14 +72,14 @@ struct vvp_gen_event_s
|
||||||
extern void schedule_simulate(void);
|
extern void schedule_simulate(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the current absolue simulation time. This is not used
|
* Get the current absolute simulation time. This is not used
|
||||||
* internally by the scheduler (which uses time differences instead)
|
* internally by the scheduler (which uses time differences instead)
|
||||||
* but is used for printouts and stuff.
|
* but is used for printouts and stuff.
|
||||||
*/
|
*/
|
||||||
extern vvp_time64_t schedule_simtime(void);
|
extern vvp_time64_t schedule_simtime(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is the equivilent of the $finish system task. It
|
* This function is the equivalent of the $finish system task. It
|
||||||
* tells the simulator that simulation is done, the current thread
|
* tells the simulator that simulation is done, the current thread
|
||||||
* should be stopped, all remaining events abandoned and the
|
* should be stopped, all remaining events abandoned and the
|
||||||
* schedule_simulate() function will return.
|
* schedule_simulate() function will return.
|
||||||
|
|
@ -101,6 +101,9 @@ extern unsigned long count_event_pool;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: schedule.h,v $
|
* $Log: schedule.h,v $
|
||||||
|
* Revision 1.13 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.12 2003/01/06 23:57:26 steve
|
* Revision 1.12 2003/01/06 23:57:26 steve
|
||||||
* Schedule wait lists of threads as a single event,
|
* Schedule wait lists of threads as a single event,
|
||||||
* to save on events. Also, improve efficiency of
|
* to save on events. Also, improve efficiency of
|
||||||
|
|
|
||||||
|
|
@ -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: symbols.cc,v 1.10 2002/08/12 01:35:08 steve Exp $"
|
#ident "$Id: symbols.cc,v 1.11 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "symbols.h"
|
# include "symbols.h"
|
||||||
|
|
@ -168,7 +168,7 @@ static void split_node_(struct tree_node_*cur)
|
||||||
new_node->parent = cur->parent;
|
new_node->parent = cur->parent;
|
||||||
|
|
||||||
/* Move the last half of the data from the end of the old node
|
/* Move the last half of the data from the end of the old node
|
||||||
to the begining of the new node. At the same time, reduce
|
to the beginning of the new node. At the same time, reduce
|
||||||
the size of the old node. */
|
the size of the old node. */
|
||||||
idx1 = new_node->count;
|
idx1 = new_node->count;
|
||||||
idx2 = cur->count;
|
idx2 = cur->count;
|
||||||
|
|
@ -244,7 +244,7 @@ static struct tree_node_* split_leaf_(struct tree_node_*cur)
|
||||||
new_leaf->parent = cur->parent;
|
new_leaf->parent = cur->parent;
|
||||||
|
|
||||||
/* Move the last half of the data from the end of the old leaf
|
/* Move the last half of the data from the end of the old leaf
|
||||||
to the beggining of the new leaf. At the same time, reduce
|
to the beginning of the new leaf. At the same time, reduce
|
||||||
the size of the old leaf. */
|
the size of the old leaf. */
|
||||||
unsigned idx1 = new_leaf->count;
|
unsigned idx1 = new_leaf->count;
|
||||||
unsigned idx2 = cur->count;
|
unsigned idx2 = cur->count;
|
||||||
|
|
@ -422,6 +422,9 @@ symbol_value_t sym_get_value(symbol_table_t tbl, const char*key)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: symbols.cc,v $
|
* $Log: symbols.cc,v $
|
||||||
|
* Revision 1.11 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.10 2002/08/12 01:35:08 steve
|
* Revision 1.10 2002/08/12 01:35:08 steve
|
||||||
* conditional ident string using autoconfig.
|
* conditional ident string using autoconfig.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,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: udp.cc,v 1.17 2002/08/12 01:35:08 steve Exp $"
|
#ident "$Id: udp.cc,v 1.18 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "udp.h"
|
#include "udp.h"
|
||||||
|
|
@ -305,7 +305,7 @@ void vvp_udp_s::compile_row_(udp_table_entry_t row, char *rchr)
|
||||||
{
|
{
|
||||||
if (!sequ)
|
if (!sequ)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "vvp: edge in compinatorial UDP\n");
|
fprintf(stderr, "vvp: edge in combinatorial UDP\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
if (!i)
|
if (!i)
|
||||||
|
|
@ -350,6 +350,9 @@ void vvp_udp_s::compile_row_(udp_table_entry_t row, char *rchr)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: udp.cc,v $
|
* $Log: udp.cc,v $
|
||||||
|
* Revision 1.18 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.17 2002/08/12 01:35:08 steve
|
* Revision 1.17 2002/08/12 01:35:08 steve
|
||||||
* conditional ident string using autoconfig.
|
* conditional ident string using autoconfig.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* $Id: vpi.txt,v 1.6 2002/12/21 00:55:58 steve Exp $
|
* $Id: vpi.txt,v 1.7 2003/02/09 23:33:26 steve Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -134,7 +134,7 @@ directive cannot have a label.
|
||||||
|
|
||||||
VARIABLES
|
VARIABLES
|
||||||
|
|
||||||
Reg vectors (scalers are vectors of length 1) are created by .var
|
Reg vectors (scalars are vectors of length 1) are created by .var
|
||||||
statements in the source. The .var statement includes the declared
|
statements in the source. The .var statement includes the declared
|
||||||
name of the variable, and the indices of the MSB and LSB of the
|
name of the variable, and the indices of the MSB and LSB of the
|
||||||
vector. The vpiHandle is then created with this information, and the
|
vector. The vpiHandle is then created with this information, and the
|
||||||
|
|
|
||||||
|
|
@ -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: vpi_callback.cc,v 1.25 2002/09/20 02:42:11 steve Exp $"
|
#ident "$Id: vpi_callback.cc,v 1.26 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -178,7 +178,7 @@ struct callback_functor_s *vvp_fvector_make_callback(vvp_fvector_t vec,
|
||||||
/*
|
/*
|
||||||
* A value change callback is tripped when a bit of a signal
|
* A value change callback is tripped when a bit of a signal
|
||||||
* changes. This function creates that value change callback and
|
* changes. This function creates that value change callback and
|
||||||
* attaches it to the relevent vpiSignal object. Also, if the signal
|
* attaches it to the relevant vpiSignal object. Also, if the signal
|
||||||
* does not already have them, create some callback functors to do the
|
* does not already have them, create some callback functors to do the
|
||||||
* actual value change detection.
|
* actual value change detection.
|
||||||
*/
|
*/
|
||||||
|
|
@ -530,6 +530,9 @@ void callback_functor_s::set(vvp_ipoint_t, bool, unsigned val, unsigned)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_callback.cc,v $
|
* $Log: vpi_callback.cc,v $
|
||||||
|
* Revision 1.26 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.25 2002/09/20 02:42:11 steve
|
* Revision 1.25 2002/09/20 02:42:11 steve
|
||||||
* Add support for cbAfterDelay.
|
* Add support for cbAfterDelay.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -20,14 +20,14 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
* ---
|
* ---
|
||||||
* You should also have recieved a copy of the Picture Elements
|
* You should also have received a copy of the Picture Elements
|
||||||
* Binary Software License offer along with the source. This offer
|
* Binary Software License offer along with the source. This offer
|
||||||
* allows you to obtain the right to redistribute the software in
|
* allows you to obtain the right to redistribute the software in
|
||||||
* binary (compiled) form. If you have not received it, contact
|
* binary (compiled) form. If you have not received it, contact
|
||||||
* Picture Elements, Inc., 777 Panoramic Way, Berkeley, CA 94704.
|
* Picture Elements, Inc., 777 Panoramic Way, Berkeley, CA 94704.
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: vpi_memory.cc,v 1.21 2003/02/02 01:40:24 steve Exp $"
|
#ident "$Id: vpi_memory.cc,v 1.22 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vpi_priv.h"
|
# include "vpi_priv.h"
|
||||||
|
|
@ -586,6 +586,9 @@ vpiHandle vpip_make_memory(vvp_memory_t mem)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_memory.cc,v $
|
* $Log: vpi_memory.cc,v $
|
||||||
|
* Revision 1.22 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.21 2003/02/02 01:40:24 steve
|
* Revision 1.21 2003/02/02 01:40:24 steve
|
||||||
* Five vpi_free_object a default behavior.
|
* Five vpi_free_object a default behavior.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vpi_modules.cc,v 1.13 2003/01/10 03:06:32 steve Exp $"
|
#ident "$Id: vpi_modules.cc,v 1.14 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -56,7 +56,7 @@ void vpip_load_module(const char*name)
|
||||||
if (strchr(name, sep)) {
|
if (strchr(name, sep)) {
|
||||||
/* If the name has at least one directory character in
|
/* If the name has at least one directory character in
|
||||||
it, then assume it is a complete name, maybe including any
|
it, then assume it is a complete name, maybe including any
|
||||||
possble .vpi suffix. */
|
possible .vpi suffix. */
|
||||||
rc = stat(name, &sb);
|
rc = stat(name, &sb);
|
||||||
|
|
||||||
if (rc != 0) { /* did we find a file? */
|
if (rc != 0) { /* did we find a file? */
|
||||||
|
|
@ -121,6 +121,9 @@ void vpip_load_module(const char*name)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_modules.cc,v $
|
* $Log: vpi_modules.cc,v $
|
||||||
|
* Revision 1.14 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.13 2003/01/10 03:06:32 steve
|
* Revision 1.13 2003/01/10 03:06:32 steve
|
||||||
* Remove vpithunk, and move libvpi to vvp directory.
|
* Remove vpithunk, and move libvpi to vvp directory.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vpi_priv.cc,v 1.29 2003/02/02 01:40:24 steve Exp $"
|
#ident "$Id: vpi_priv.cc,v 1.30 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vpi_priv.h"
|
# include "vpi_priv.h"
|
||||||
|
|
@ -303,7 +303,7 @@ static vpiHandle find_scope(char *name, vpiHandle handle, int depth)
|
||||||
while (iter && (hand = vpi_scan(iter))) {
|
while (iter && (hand = vpi_scan(iter))) {
|
||||||
char *nm = vpi_get_str(vpiName, hand);
|
char *nm = vpi_get_str(vpiName, hand);
|
||||||
int len = strlen(nm);
|
int len = strlen(nm);
|
||||||
char *cp = name + len; /* hier seperator */
|
char *cp = name + len; /* hier separator */
|
||||||
|
|
||||||
if (!handle && !strcmp(name, nm)) {
|
if (!handle && !strcmp(name, nm)) {
|
||||||
/* root module */
|
/* root module */
|
||||||
|
|
@ -328,8 +328,8 @@ vpiHandle vpi_handle_by_name(char *name, vpiHandle scope)
|
||||||
char *nm, *cp;
|
char *nm, *cp;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
/* If scope provided, look in cooresponding module; otherwise
|
/* If scope provided, look in corresponding module; otherwise
|
||||||
* traverse the hierarcy specified in name to find the leaf module
|
* traverse the hierarchy specified in name to find the leaf module
|
||||||
* and try finding it there.
|
* and try finding it there.
|
||||||
*/
|
*/
|
||||||
if (scope)
|
if (scope)
|
||||||
|
|
@ -395,6 +395,9 @@ extern "C" void vpi_control(int operation, ...)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_priv.cc,v $
|
* $Log: vpi_priv.cc,v $
|
||||||
|
* Revision 1.30 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.29 2003/02/02 01:40:24 steve
|
* Revision 1.29 2003/02/02 01:40:24 steve
|
||||||
* Five vpi_free_object a default behavior.
|
* Five vpi_free_object a default behavior.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vpi_priv.h,v 1.46 2003/02/01 05:50:04 steve Exp $"
|
#ident "$Id: vpi_priv.h,v 1.47 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vpi_user.h"
|
# include "vpi_user.h"
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The vpi_mode_flag contains the major mode for VPI use. This is used
|
* The vpi_mode_flag contains the major mode for VPI use. This is used
|
||||||
* to generate error messages whe vpi functions are called
|
* to generate error messages when vpi functions are called
|
||||||
* incorrectly.
|
* incorrectly.
|
||||||
*/
|
*/
|
||||||
enum vpi_mode_t {
|
enum vpi_mode_t {
|
||||||
|
|
@ -108,7 +108,7 @@ extern vpiHandle vpip_make_iterator(unsigned nargs, vpiHandle*args,
|
||||||
bool free_args_flag);
|
bool free_args_flag);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This represents callback handles. There are some privat types that
|
* This represents callback handles. There are some private types that
|
||||||
* are defined and used in vpi_callback.cc.
|
* are defined and used in vpi_callback.cc.
|
||||||
*/
|
*/
|
||||||
struct __vpiCallback {
|
struct __vpiCallback {
|
||||||
|
|
@ -135,7 +135,7 @@ struct __vpiSystemTime {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Scopes are created by .scope statements in the source. These
|
* Scopes are created by .scope statements in the source. These
|
||||||
* objects hold the items and properties that are knowably bound to a
|
* objects hold the items and properties that are knowingly bound to a
|
||||||
* scope.
|
* scope.
|
||||||
*/
|
*/
|
||||||
struct __vpiScope {
|
struct __vpiScope {
|
||||||
|
|
@ -172,7 +172,7 @@ struct __vpiSignal {
|
||||||
int msb, lsb;
|
int msb, lsb;
|
||||||
/* Flags */
|
/* Flags */
|
||||||
unsigned signed_flag : 1;
|
unsigned signed_flag : 1;
|
||||||
unsigned isint_ : 1; // origial type was integer
|
unsigned isint_ : 1; // original type was integer
|
||||||
/* The represented value is here. */
|
/* The represented value is here. */
|
||||||
vvp_fvector_t bits;
|
vvp_fvector_t bits;
|
||||||
/* This is the callback event functor */
|
/* This is the callback event functor */
|
||||||
|
|
@ -395,6 +395,9 @@ extern char *need_result_buf(unsigned cnt, vpi_rbuf_t type);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_priv.h,v $
|
* $Log: vpi_priv.h,v $
|
||||||
|
* Revision 1.47 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.46 2003/02/01 05:50:04 steve
|
* Revision 1.46 2003/02/01 05:50:04 steve
|
||||||
* Make $time and $realtime available to $display uniquely.
|
* Make $time and $realtime available to $display uniquely.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vpi_scope.cc,v 1.22 2002/12/21 00:55:58 steve Exp $"
|
#ident "$Id: vpi_scope.cc,v 1.23 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "compile.h"
|
# include "compile.h"
|
||||||
|
|
@ -196,7 +196,7 @@ static vpiHandle module_iter(int code, vpiHandle obj)
|
||||||
** connected to the same wire. The SDF annotator need to find those
|
** connected to the same wire. The SDF annotator need to find those
|
||||||
** functors which are inside the scope of the target module, which
|
** functors which are inside the scope of the target module, which
|
||||||
** are driven by the source functor. And even this is only an
|
** are driven by the source functor. And even this is only an
|
||||||
** aproximation, in case the wire is connected to multiple inputs of
|
** approximation, in case the wire is connected to multiple inputs of
|
||||||
** the same module. But those should have the same delays anyway.
|
** the same module. But those should have the same delays anyway.
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
|
|
@ -242,9 +242,9 @@ void functor_set_scope(vpiHandle scope)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Lockup the scope of a functor.
|
** Look up the scope of a functor.
|
||||||
**
|
**
|
||||||
** Cannot use bserach, since we are not looking for an exact match
|
** Cannot use bsearch, since we are not looking for an exact match
|
||||||
*/
|
*/
|
||||||
vpiHandle ipoint_get_scope(vvp_ipoint_t ipt)
|
vpiHandle ipoint_get_scope(vvp_ipoint_t ipt)
|
||||||
{
|
{
|
||||||
|
|
@ -447,6 +447,9 @@ void vpip_attach_to_current_scope(vpiHandle obj)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_scope.cc,v $
|
* $Log: vpi_scope.cc,v $
|
||||||
|
* Revision 1.23 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.22 2002/12/21 00:55:58 steve
|
* Revision 1.22 2002/12/21 00:55:58 steve
|
||||||
* The $time system task returns the integer time
|
* The $time system task returns the integer time
|
||||||
* scaled to the local units. Change the internal
|
* scaled to the local units. Change the internal
|
||||||
|
|
|
||||||
|
|
@ -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: vpi_signal.cc,v 1.51 2003/01/07 18:07:50 steve Exp $"
|
#ident "$Id: vpi_signal.cc,v 1.52 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -442,7 +442,7 @@ static void signal_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||||
* The put_value method writes the value into the vector, and returns
|
* The put_value method writes the value into the vector, and returns
|
||||||
* the affected ref. This operation works much like the %set or
|
* the affected ref. This operation works much like the %set or
|
||||||
* %assign instructions and causes all the side-effects that the
|
* %assign instructions and causes all the side-effects that the
|
||||||
* equivilent instruction would cause.
|
* equivalent instruction would cause.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void functor_poke(struct __vpiSignal*rfp, unsigned idx,
|
static void functor_poke(struct __vpiSignal*rfp, unsigned idx,
|
||||||
|
|
@ -763,6 +763,9 @@ vpiHandle vpip_make_net(const char*name, int msb, int lsb,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_signal.cc,v $
|
* $Log: vpi_signal.cc,v $
|
||||||
|
* Revision 1.52 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.51 2003/01/07 18:07:50 steve
|
* Revision 1.51 2003/01/07 18:07:50 steve
|
||||||
* Allocate res-buf in bigger chunks
|
* Allocate res-buf in bigger chunks
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,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: vpi_vthr_vector.cc,v 1.11 2003/02/06 17:41:33 steve Exp $"
|
#ident "$Id: vpi_vthr_vector.cc,v 1.12 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -331,7 +331,7 @@ static vpiHandle vthr_vec_put_value(vpiHandle ref, s_vpi_value*vp,
|
||||||
}
|
}
|
||||||
|
|
||||||
// The code fully supports vpiReg, vpi_Net, but we do not
|
// The code fully supports vpiReg, vpi_Net, but we do not
|
||||||
// create such things, yet. Lacking a neme, for example.
|
// create such things, yet. Lacking a name, for example.
|
||||||
|
|
||||||
static const struct __vpirt vpip_vthr_const_rt = {
|
static const struct __vpirt vpip_vthr_const_rt = {
|
||||||
vpiConstant,
|
vpiConstant,
|
||||||
|
|
@ -469,6 +469,9 @@ vpiHandle vpip_make_vthr_word(unsigned base, const char*type)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_vthr_vector.cc,v $
|
* $Log: vpi_vthr_vector.cc,v $
|
||||||
|
* Revision 1.12 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.11 2003/02/06 17:41:33 steve
|
* Revision 1.11 2003/02/06 17:41:33 steve
|
||||||
* Support constant types for thread words.
|
* Support constant types for thread words.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vthread.cc,v 1.100 2003/02/06 17:41:47 steve Exp $"
|
#ident "$Id: vthread.cc,v 1.101 2003/02/09 23:33:26 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vthread.h"
|
# include "vthread.h"
|
||||||
|
|
@ -54,7 +54,7 @@
|
||||||
*
|
*
|
||||||
* The %fork instruction creates a new thread and pushes that onto the
|
* The %fork instruction creates a new thread and pushes that onto the
|
||||||
* stack of children for the thread. This new thread, then, becomes
|
* stack of children for the thread. This new thread, then, becomes
|
||||||
* the new direct descendent of the thread. This new thread is
|
* the new direct descendant of the thread. This new thread is
|
||||||
* therefore also the first thread to be reaped when the parent does a
|
* therefore also the first thread to be reaped when the parent does a
|
||||||
* %join.
|
* %join.
|
||||||
*
|
*
|
||||||
|
|
@ -895,7 +895,7 @@ static bool do_disable(vthread_t thr, vthread_t match)
|
||||||
//assert(tmp->is_scheduled == 0);
|
//assert(tmp->is_scheduled == 0);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* No parent at all. Goodby. */
|
/* No parent at all. Goodbye. */
|
||||||
vthread_reap(thr);
|
vthread_reap(thr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1704,7 +1704,7 @@ tally:
|
||||||
/*
|
/*
|
||||||
* %mov <dest>, <src>, <wid>
|
* %mov <dest>, <src>, <wid>
|
||||||
* This instruction is implemented by the of_MOV function
|
* This instruction is implemented by the of_MOV function
|
||||||
* below. However, durning runtime vvp might notice that the
|
* below. However, during runtime vvp might notice that the
|
||||||
* parameters have certain properties that make it possible to
|
* parameters have certain properties that make it possible to
|
||||||
* replace the of_MOV opcode with a more specific instruction that
|
* replace the of_MOV opcode with a more specific instruction that
|
||||||
* more directly does the job. All the of_MOV*_ functions are
|
* more directly does the job. All the of_MOV*_ functions are
|
||||||
|
|
@ -2616,6 +2616,9 @@ bool of_CALL_UFUNC(vthread_t thr, vvp_code_t cp)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vthread.cc,v $
|
* $Log: vthread.cc,v $
|
||||||
|
* Revision 1.101 2003/02/09 23:33:26 steve
|
||||||
|
* Spelling fixes.
|
||||||
|
*
|
||||||
* Revision 1.100 2003/02/06 17:41:47 steve
|
* Revision 1.100 2003/02/06 17:41:47 steve
|
||||||
* Add the %sub/wr instruction.
|
* Add the %sub/wr instruction.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* $Id: vthread.txt,v 1.3 2001/05/01 05:00:02 steve Exp $
|
* $Id: vthread.txt,v 1.4 2003/02/09 23:33:26 steve Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,7 +42,7 @@ a bit address is 16 bits.
|
||||||
|
|
||||||
Threads also contain 4 numeric ``index'' registers. These are binary
|
Threads also contain 4 numeric ``index'' registers. These are binary
|
||||||
values (no unknowns) that can be used in certain cases where extra
|
values (no unknowns) that can be used in certain cases where extra
|
||||||
numeric parameters are needed. The thread instruction set includex
|
numeric parameters are needed. The thread instruction set includes
|
||||||
%ix/* instructions to manipulate these registers. The instructions
|
%ix/* instructions to manipulate these registers. The instructions
|
||||||
that use these registers document which register is used, and what the
|
that use these registers document which register is used, and what the
|
||||||
numeric value is used for. For example, %assign/m uses index register
|
numeric value is used for. For example, %assign/m uses index register
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue