forked from github/verilator
Commentary
This commit is contained in:
parent
40d961e059
commit
f0d7cdcb20
@ -252,7 +252,7 @@ descriptions in the next sections for more information.
|
|||||||
--exe Link to create executable
|
--exe Link to create executable
|
||||||
-F <file> Parse options from a file, relatively
|
-F <file> Parse options from a file, relatively
|
||||||
-f <file> Parse options from a file
|
-f <file> Parse options from a file
|
||||||
--gdbbt Run Verilator under GDB for backtrace
|
--gdbbt Run Verilator under GDB for backtrace
|
||||||
--help Display this help
|
--help Display this help
|
||||||
-I<dir> Directory to search for includes
|
-I<dir> Directory to search for includes
|
||||||
--if-depth <value> Tune IFDEPTH warning
|
--if-depth <value> Tune IFDEPTH warning
|
||||||
@ -976,7 +976,7 @@ your operating system (as an RPM), first you need to point to the kit:
|
|||||||
export PATH=$VERILATOR_ROOT/bin:$PATH
|
export PATH=$VERILATOR_ROOT/bin:$PATH
|
||||||
|
|
||||||
Now we run Verilator on our little example.
|
Now we run Verilator on our little example.
|
||||||
|
|
||||||
verilator -Wall --cc our.v --exe sim_main.cpp
|
verilator -Wall --cc our.v --exe sim_main.cpp
|
||||||
|
|
||||||
We can see the source code under the "obj_dir" directory. See the FILES
|
We can see the source code under the "obj_dir" directory. See the FILES
|
||||||
@ -1410,6 +1410,38 @@ The /*verilator sformat*/ indicates that this function accepts a $display
|
|||||||
like format specifier followed by any number of arguments to satisfy the
|
like format specifier followed by any number of arguments to satisfy the
|
||||||
format.
|
format.
|
||||||
|
|
||||||
|
=head2 DPI Context Functions
|
||||||
|
|
||||||
|
Verilator supports IEEE DPI Context Functions. Context imports pass the
|
||||||
|
simulator context, including calling scope name, and filename and line
|
||||||
|
number to the C code. For example, in Verilog:
|
||||||
|
|
||||||
|
import "DPI-C" context function int dpic_line();
|
||||||
|
initial $display("This is line %d, again, line %d\n", `line, dpic_line());
|
||||||
|
|
||||||
|
This will call C++ code which may then use the svGet* functions to read
|
||||||
|
information, in this case the line number of the Verilog statement that
|
||||||
|
invoked the dpic_line function:
|
||||||
|
|
||||||
|
int dpic_line() {
|
||||||
|
// Get a scope: svScope scope = svGetScope();
|
||||||
|
|
||||||
|
const char* scopenamep = svGetNameFromScope(scope);
|
||||||
|
assert(scopenamep);
|
||||||
|
|
||||||
|
const char* filenamep = "";
|
||||||
|
int lineno = 0;
|
||||||
|
if (svGetCallerInfo(&filenamep, &lineno)) {
|
||||||
|
printf("dpic_line called from scope %s on line %d\n",
|
||||||
|
scopenamep, lineno);
|
||||||
|
return lineno;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
See the IEEE Standard for more information.
|
||||||
|
|
||||||
=head2 DPI Header Isolation
|
=head2 DPI Header Isolation
|
||||||
|
|
||||||
Verilator places the IEEE standard header files such as svdpi.h into a
|
Verilator places the IEEE standard header files such as svdpi.h into a
|
||||||
@ -1421,7 +1453,7 @@ svdpi.h and similar standard files with different contents, the vltstd
|
|||||||
directory should not be included to prevent picking up incompatible
|
directory should not be included to prevent picking up incompatible
|
||||||
definitions.
|
definitions.
|
||||||
|
|
||||||
=head2 Public Functions
|
=head2 Public Functions
|
||||||
|
|
||||||
Instead of DPI exporting, there's also Verilator public functions, which
|
Instead of DPI exporting, there's also Verilator public functions, which
|
||||||
are slightly faster, but less compatible.
|
are slightly faster, but less compatible.
|
||||||
@ -2080,7 +2112,7 @@ of the form:
|
|||||||
|
|
||||||
inout driver;
|
inout driver;
|
||||||
wire driver = (enable) ? output_value : 1'bz;
|
wire driver = (enable) ? output_value : 1'bz;
|
||||||
|
|
||||||
Will be converted to
|
Will be converted to
|
||||||
|
|
||||||
input driver__in; // Value being driven in from "external" drivers
|
input driver__in; // Value being driven in from "external" drivers
|
||||||
|
Loading…
Reference in New Issue
Block a user