Spelling fixes.
This commit is contained in:
parent
929f0f5f00
commit
b726395d1e
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
|
|
@ -202,7 +202,7 @@ general syntax of a variable is:
|
|||
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
|
||||
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
|
||||
then one, a contiguous array of functors is created and the value of
|
||||
the label is the address of the least significant bit.
|
||||
|
|
@ -264,7 +264,7 @@ functor pointer, though.
|
|||
|
||||
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
|
||||
memory's contents.
|
||||
|
||||
|
|
@ -301,7 +301,7 @@ become a list of numbers, when multi-index memory ports become
|
|||
supported).
|
||||
|
||||
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
|
||||
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 ...
|
||||
;
|
||||
|
||||
<memid> is the lavbel of the memory. [<start>] is optional,
|
||||
identifying the bits locattion where the first value is loaded.
|
||||
<memid> is the label of the memory. [<start>] is optional,
|
||||
identifying the bits location where the first value is loaded.
|
||||
<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
|
||||
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
|
||||
bit, in the ususal encoding.
|
||||
bit, in the usual encoding.
|
||||
|
||||
Procedural access to the memory employs an index register to address a
|
||||
bit location in the memory, via the commands:
|
||||
|
|
@ -388,7 +388,7 @@ to make this one go.
|
|||
|
||||
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
|
||||
generator can transparently use. Variables of these special types are
|
||||
declared with .word statements:
|
||||
|
|
@ -438,7 +438,7 @@ being forced.
|
|||
|
||||
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
|
||||
functors. These operators are not in general bitwise, so special
|
||||
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
|
||||
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
|
||||
parent, and %end in the child. Without this proper matching, the
|
||||
hierarchical relationships can get confused. The behavior of erroneous
|
||||
|
|
@ -620,7 +620,7 @@ various instructions.
|
|||
THE RELATIONSHIP BETWEEN FUNCTORS, THREADS AND EVENTS
|
||||
|
||||
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
|
||||
structurally) and these functors run independently of the threads. In
|
||||
particular, when an input to a functor is set, it calculates a new
|
||||
|
|
@ -766,7 +766,7 @@ becomes:
|
|||
* named events
|
||||
|
||||
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:
|
||||
|
||||
a .event "name";
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# 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
|
||||
* 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.
|
||||
*/
|
||||
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 $
|
||||
* Revision 1.154 2003/02/09 23:33:26 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
* Revision 1.153 2003/02/06 17:41:47 steve
|
||||
* Add the %sub/wr instruction.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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.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
|
||||
|
||||
# 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
|
||||
* 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
|
||||
* 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
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
|
@ -261,6 +261,9 @@ extern void compile_net(char*label, char*name,
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Support in various contexts the $realtime
|
||||
* system task.
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
|
@ -154,6 +154,9 @@ void breakpoint(void)
|
|||
#endif
|
||||
/*
|
||||
* $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
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ S_test .scope "test", S_main;
|
|||
.scope S_test;
|
||||
T_0/1 ;
|
||||
%delay 5;
|
||||
%vpi_call "$display", "FAILED -- thread wasn't disbled";
|
||||
%vpi_call "$display", "FAILED -- thread wasn't disabled";
|
||||
%vpi_call "$finish";
|
||||
%end;
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
; along with this program; if not, write to the Free Software
|
||||
; 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
|
||||
; make this might be:
|
||||
;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
; end
|
||||
; 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
|
||||
; passed to the statement.
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "pointers.h"
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
* 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)
|
||||
* 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
|
||||
* 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.
|
||||
// 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.
|
||||
|
||||
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 $
|
||||
* Revision 1.49 2003/02/09 23:33:26 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
* Revision 1.48 2002/08/12 01:35:08 steve
|
||||
* 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,
|
||||
2-bits per value. This is the ``ival'' member. The input of a functor
|
||||
gets set by propagation events, assign events or %set
|
||||
instructions.
|
||||
gets set by propagation events, assign events, or %set instructions.
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "parse_misc.h"
|
||||
|
|
@ -50,9 +50,9 @@
|
|||
assert(yylval.text);
|
||||
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
|
||||
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]+ {
|
||||
yylval.vect.idx = strtoul(yytext, 0, 10);
|
||||
yylval.vect.text = (char*)malloc(yylval.vect.idx + 2);
|
||||
|
|
@ -176,6 +176,9 @@ int yywrap()
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Support in various contexts the $realtime
|
||||
* system task.
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
#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)
|
||||
{
|
||||
// !attention! "i" may not corespont to "this"
|
||||
// !attention! "i" may not correspond to "this"
|
||||
functor_t ifu = functor_index(i);
|
||||
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);
|
||||
}
|
||||
|
||||
// port ix+naddr is the write clock. If it's input value is
|
||||
// undefined, we do assynchronous write. Else any event on ix+naddr
|
||||
// port ix+naddr is the write clock. If its input value is
|
||||
// undefined, we do asynchronous write. Else any event on ix+naddr
|
||||
// is a valid write clock edge. Connect an appropriate edge event
|
||||
// functor.
|
||||
|
||||
|
|
@ -510,6 +510,9 @@ void schedule_memory(vvp_memory_t mem, unsigned idx,
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Proper initialization of the memories table.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
operands. In no case are there more then 3 operands. This chapter
|
||||
describes the specific behavior of each opcode, in hopefully enough
|
||||
detail that its complete effect can be predicted.
|
||||
describes the specific behavior of each opcode, in enough detail
|
||||
(I hope) that its complete effect can be predicted.
|
||||
|
||||
General principles of Arithmetic:
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ See also the %sub instruction.
|
|||
|
||||
* %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
|
||||
left operand.
|
||||
|
||||
|
|
@ -130,7 +130,7 @@ variable. This opcode affects only a single bit.
|
|||
|
||||
* %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>
|
||||
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 ``===''.
|
||||
|
||||
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
|
||||
to implement all the Verilog comparison operators.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
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.
|
||||
|
||||
* %load/m <bit>, <memory-label>
|
||||
|
|
@ -459,7 +459,7 @@ truth table:
|
|||
* %or/r <dst>, <src>, <wid>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
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
|
||||
addressed variable bit and working up. If the <bit> is one of the
|
||||
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>
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "parse_misc.h"
|
||||
|
|
@ -114,7 +114,7 @@ program
|
|||
|
||||
|
||||
/* 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
|
||||
structure of the operands depends on the opcode. */
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ statement
|
|||
|
||||
/* UDP statements define or instantiate UDPs. Definitions take a
|
||||
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 ';'
|
||||
{ compile_udp_def(1, $1, $3, $5, $7, $9); }
|
||||
|
|
@ -400,7 +400,7 @@ operand
|
|||
Each argument of the call is represented as a vpiHandle
|
||||
object. If the argument is a symbol, the symbol name will be
|
||||
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.
|
||||
If it is some other supported object, the necessary
|
||||
vpiHandle object is created to support it. */
|
||||
|
|
@ -569,6 +569,9 @@ int compile_design(const char*path)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Support in various contexts the $realtime
|
||||
* system task.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# 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)
|
||||
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
|
||||
// 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.
|
||||
|
||||
put_ostr(val, sval, false);
|
||||
|
|
@ -204,6 +204,9 @@ void resolv_functor_s::debug_print(vvp_ipoint_t fnc)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Add support for %v is the display system task.
|
||||
* 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
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "schedule.h"
|
||||
|
|
@ -176,8 +176,8 @@ static void schedule_event_(struct event_s*cur)
|
|||
|
||||
/* Look for the first event after the cur
|
||||
event. Decrease the cur->delay as I go, and use the
|
||||
skip member to accellerate the search. When I'm done,
|
||||
prev will point to the even immediately before where
|
||||
skip member to accelerate the search. When I'm done,
|
||||
prev will point to the event immediately before where
|
||||
this event goes. */
|
||||
struct event_s*prev = idx;
|
||||
while (cur->delay > idx->delay) {
|
||||
|
|
@ -437,6 +437,9 @@ void schedule_simulate(void)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Schedule wait lists of threads as a single event,
|
||||
* to save on events. Also, improve efficiency of
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "vthread.h"
|
||||
|
|
@ -72,14 +72,14 @@ struct vvp_gen_event_s
|
|||
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)
|
||||
* but is used for printouts and stuff.
|
||||
*/
|
||||
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
|
||||
* should be stopped, all remaining events abandoned and the
|
||||
* schedule_simulate() function will return.
|
||||
|
|
@ -101,6 +101,9 @@ extern unsigned long count_event_pool;
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Schedule wait lists of threads as a single event,
|
||||
* to save on events. Also, improve efficiency of
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "symbols.h"
|
||||
|
|
@ -168,7 +168,7 @@ static void split_node_(struct tree_node_*cur)
|
|||
new_node->parent = cur->parent;
|
||||
|
||||
/* 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. */
|
||||
idx1 = new_node->count;
|
||||
idx2 = cur->count;
|
||||
|
|
@ -244,7 +244,7 @@ static struct tree_node_* split_leaf_(struct tree_node_*cur)
|
|||
new_leaf->parent = cur->parent;
|
||||
|
||||
/* 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. */
|
||||
unsigned idx1 = new_leaf->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 $
|
||||
* Revision 1.11 2003/02/09 23:33:26 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
* Revision 1.10 2002/08/12 01:35:08 steve
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
#include "udp.h"
|
||||
|
|
@ -305,7 +305,7 @@ void vvp_udp_s::compile_row_(udp_table_entry_t row, char *rchr)
|
|||
{
|
||||
if (!sequ)
|
||||
{
|
||||
fprintf(stderr, "vvp: edge in compinatorial UDP\n");
|
||||
fprintf(stderr, "vvp: edge in combinatorial UDP\n");
|
||||
assert(0);
|
||||
}
|
||||
if (!i)
|
||||
|
|
@ -350,6 +350,9 @@ void vvp_udp_s::compile_row_(udp_table_entry_t row, char *rchr)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
|
||||
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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
/*
|
||||
|
|
@ -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
|
||||
* 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
|
||||
* 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 $
|
||||
* Revision 1.26 2003/02/09 23:33:26 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
* Revision 1.25 2002/09/20 02:42:11 steve
|
||||
* Add support for cbAfterDelay.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -20,14 +20,14 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* 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
|
||||
* allows you to obtain the right to redistribute the software in
|
||||
* binary (compiled) form. If you have not received it, contact
|
||||
* Picture Elements, Inc., 777 Panoramic Way, Berkeley, CA 94704.
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "vpi_priv.h"
|
||||
|
|
@ -586,6 +586,9 @@ vpiHandle vpip_make_memory(vvp_memory_t mem)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Five vpi_free_object a default behavior.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -56,7 +56,7 @@ void vpip_load_module(const char*name)
|
|||
if (strchr(name, sep)) {
|
||||
/* If the name has at least one directory character in
|
||||
it, then assume it is a complete name, maybe including any
|
||||
possble .vpi suffix. */
|
||||
possible .vpi suffix. */
|
||||
rc = stat(name, &sb);
|
||||
|
||||
if (rc != 0) { /* did we find a file? */
|
||||
|
|
@ -121,6 +121,9 @@ void vpip_load_module(const char*name)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Remove vpithunk, and move libvpi to vvp directory.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "vpi_priv.h"
|
||||
|
|
@ -303,7 +303,7 @@ static vpiHandle find_scope(char *name, vpiHandle handle, int depth)
|
|||
while (iter && (hand = vpi_scan(iter))) {
|
||||
char *nm = vpi_get_str(vpiName, hand);
|
||||
int len = strlen(nm);
|
||||
char *cp = name + len; /* hier seperator */
|
||||
char *cp = name + len; /* hier separator */
|
||||
|
||||
if (!handle && !strcmp(name, nm)) {
|
||||
/* root module */
|
||||
|
|
@ -328,8 +328,8 @@ vpiHandle vpi_handle_by_name(char *name, vpiHandle scope)
|
|||
char *nm, *cp;
|
||||
int len;
|
||||
|
||||
/* If scope provided, look in cooresponding module; otherwise
|
||||
* traverse the hierarcy specified in name to find the leaf module
|
||||
/* If scope provided, look in corresponding module; otherwise
|
||||
* traverse the hierarchy specified in name to find the leaf module
|
||||
* and try finding it there.
|
||||
*/
|
||||
if (scope)
|
||||
|
|
@ -395,6 +395,9 @@ extern "C" void vpi_control(int operation, ...)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Five vpi_free_object a default behavior.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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.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
|
||||
|
||||
# include "vpi_user.h"
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
enum vpi_mode_t {
|
||||
|
|
@ -108,7 +108,7 @@ extern vpiHandle vpip_make_iterator(unsigned nargs, vpiHandle*args,
|
|||
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.
|
||||
*/
|
||||
struct __vpiCallback {
|
||||
|
|
@ -135,7 +135,7 @@ struct __vpiSystemTime {
|
|||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
struct __vpiScope {
|
||||
|
|
@ -172,7 +172,7 @@ struct __vpiSignal {
|
|||
int msb, lsb;
|
||||
/* Flags */
|
||||
unsigned signed_flag : 1;
|
||||
unsigned isint_ : 1; // origial type was integer
|
||||
unsigned isint_ : 1; // original type was integer
|
||||
/* The represented value is here. */
|
||||
vvp_fvector_t bits;
|
||||
/* 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 $
|
||||
* Revision 1.47 2003/02/09 23:33:26 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
* Revision 1.46 2003/02/01 05:50:04 steve
|
||||
* Make $time and $realtime available to $display uniquely.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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.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
|
||||
|
||||
# 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
|
||||
** functors which are inside the scope of the target module, which
|
||||
** 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.
|
||||
**
|
||||
*/
|
||||
|
|
@ -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)
|
||||
{
|
||||
|
|
@ -447,6 +447,9 @@ void vpip_attach_to_current_scope(vpiHandle obj)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* The $time system task returns the integer time
|
||||
* scaled to the local units. Change the internal
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
/*
|
||||
|
|
@ -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 affected ref. This operation works much like the %set or
|
||||
* %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,
|
||||
|
|
@ -763,6 +763,9 @@ vpiHandle vpip_make_net(const char*name, int msb, int lsb,
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Allocate res-buf in bigger chunks
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
/*
|
||||
|
|
@ -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
|
||||
// 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 = {
|
||||
vpiConstant,
|
||||
|
|
@ -469,6 +469,9 @@ vpiHandle vpip_make_vthr_word(unsigned base, const char*type)
|
|||
|
||||
/*
|
||||
* $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
|
||||
* Support constant types for thread words.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#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
|
||||
|
||||
# include "vthread.h"
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
*
|
||||
* The %fork instruction creates a new thread and pushes that onto the
|
||||
* 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
|
||||
* %join.
|
||||
*
|
||||
|
|
@ -895,7 +895,7 @@ static bool do_disable(vthread_t thr, vthread_t match)
|
|||
//assert(tmp->is_scheduled == 0);
|
||||
|
||||
} else {
|
||||
/* No parent at all. Goodby. */
|
||||
/* No parent at all. Goodbye. */
|
||||
vthread_reap(thr);
|
||||
}
|
||||
|
||||
|
|
@ -1704,7 +1704,7 @@ tally:
|
|||
/*
|
||||
* %mov <dest>, <src>, <wid>
|
||||
* 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
|
||||
* replace the of_MOV opcode with a more specific instruction that
|
||||
* 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 $
|
||||
* Revision 1.101 2003/02/09 23:33:26 steve
|
||||
* Spelling fixes.
|
||||
*
|
||||
* Revision 1.100 2003/02/06 17:41:47 steve
|
||||
* Add the %sub/wr instruction.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
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
|
||||
that use these registers document which register is used, and what the
|
||||
numeric value is used for. For example, %assign/m uses index register
|
||||
|
|
|
|||
Loading…
Reference in New Issue