Describe the compilation major steps.
This commit is contained in:
parent
27e717839a
commit
e24facfaf6
|
|
@ -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.5 2001/03/20 06:16:23 steve Exp $
|
* $Id: README.txt,v 1.6 2001/03/21 05:12:15 steve Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
VVP SIMULATION ENGINE
|
VVP SIMULATION ENGINE
|
||||||
|
|
@ -243,6 +243,50 @@ is concerned, the functor net is a blob of structure that it pokes and
|
||||||
prods via certain functor access instructions.
|
prods via certain functor access instructions.
|
||||||
|
|
||||||
|
|
||||||
|
VVP COMPILATION AND EXECUTION
|
||||||
|
|
||||||
|
The vvp program operates in a few steps:
|
||||||
|
|
||||||
|
1) Initialization
|
||||||
|
Data structures are cleared to empty, and tables are
|
||||||
|
readied for compilation.
|
||||||
|
|
||||||
|
2) Compilation
|
||||||
|
The input file is read and compiled. Symbol tables are
|
||||||
|
build up as needed, objects are allocated and linked
|
||||||
|
together.
|
||||||
|
|
||||||
|
3) Cleanup
|
||||||
|
Symbol tables and other resources used only for
|
||||||
|
compilation are released to reduce the memory
|
||||||
|
footprint.
|
||||||
|
|
||||||
|
4) Simulation
|
||||||
|
Event simulation is run.
|
||||||
|
|
||||||
|
|
||||||
|
The initialization step is performed by the compile_init() function in
|
||||||
|
compile.cc. This function in turn calls all the *_init() functions in
|
||||||
|
other parts of the source that need initialization for compile. All
|
||||||
|
the various sub-init functions are called <foo>_init().
|
||||||
|
|
||||||
|
Compilation is controlled by the parser, it parse.y. As the parser
|
||||||
|
reads and parses input, the compilation proceeds in the rules by
|
||||||
|
calling various compile_* functions. All these functions live in the
|
||||||
|
compile.cc file. Compilation calls other sections of the code as
|
||||||
|
needed.
|
||||||
|
|
||||||
|
When the parser completes compilation, compile_cleanup() is called to
|
||||||
|
finish the compilation process. Unresolved references are completed,
|
||||||
|
then all the symbol tables and other compile-time-only resources are
|
||||||
|
released. Once compile_cleanup() returns, there is no more use for the
|
||||||
|
parser for the function in compile.cc.
|
||||||
|
|
||||||
|
After cleanup, the simulation is started. This is done by executing
|
||||||
|
the schedule_simulate() function. This does any final setup and starts
|
||||||
|
the simulation running and the event queue running.
|
||||||
|
|
||||||
|
|
||||||
HOW TO GET FROM THERE TO HERE
|
HOW TO GET FROM THERE TO HERE
|
||||||
|
|
||||||
The vvp simulation engine is designed to be able to take as input a
|
The vvp simulation engine is designed to be able to take as input a
|
||||||
|
|
@ -289,7 +333,9 @@ Each bit of a variable is created by a ``.var'' statement. For example:
|
||||||
|
|
||||||
becomes:
|
becomes:
|
||||||
|
|
||||||
a .var;
|
a .var "a", 0, 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue