|
|
FILE
|
FILE
|
deperlify.pl
|
deperlify.pl
|
|
|
AUTHOR
|
AUTHOR
|
David Fick - dfick@umich.edu
|
David Fick - dfick@umich.edu
|
|
|
VERSION
|
VERSION
|
1.0 - June 27, 2010
|
1.0 - June 27, 2010
|
|
|
DESCRIPTION
|
DESCRIPTION
|
Deperlify generates *.v files from *.perl.v.
|
Deperlify generates *.v files from *.perl.v.
|
Deperlify can also generate *.io from *.perl.io
|
Deperlify can also generate *.io from *.perl.io
|
|
|
*.perl.v files have Perl injected inside of them with the following syntax
|
*.perl.v files have Perl injected inside of them with the following syntax
|
|
|
PERL begin /*
|
PERL begin /*
|
|
|
|
|
|
|
*/
|
*/
|
end
|
end
|
|
|
Deperlify finds these blocks, executes them, and replaces the block with
|
Deperlify finds these blocks, executes them, and replaces the block with
|
its output. The output of the Perl code (that is, anything printed to
|
its output. The output of the Perl code (that is, anything printed to
|
STDOUT) is what replaces the block.
|
STDOUT) is what replaces the block.
|
|
|
This style works well with emacs syntax highlighting and tabs. However, the
|
This style works well with emacs syntax highlighting and tabs. However, the
|
Perl code is not syntax highlighted since it appears as a comment. It is
|
Perl code is not syntax highlighted since it appears as a comment. It is
|
sometimes beneficial to have a scratch Perl file to first the Perl code
|
sometimes beneficial to have a scratch Perl file to first the Perl code
|
in and then copy from there to the Verilog.
|
in and then copy from there to the Verilog.
|
|
|
Deperlify also finds all of the defines from a file and inserts them
|
Deperlify also finds all of the defines from a file and inserts them
|
where Perl code is used. $`define_name must be used instead of `define_name,
|
where Perl code is used. $`define_name must be used instead of `define_name,
|
however.
|
however.
|
|
|
Deperlify can be given multiple files. Variable definitions found in one
|
Deperlify can be given multiple files. Variable definitions found in one
|
file roll over to the subsequent files.
|
file roll over to the subsequent files.
|
|
|
The order of files is important for variable replacement. *.vh files should
|
The order of files is important for variable replacement. *.vh files should
|
be included before any *.perl.v files that needs those definitions.
|
be included before any *.perl.v files that needs those definitions.
|
|
|
Additional Perl code may be included from other files. This can be
|
Additional Perl code may be included from other files. This can be
|
particularly useful for using the same data structure across multiple files.
|
particularly useful for using the same data structure across multiple files.
|
The scan example takes advantage of this, by reusing a scan signal list
|
The scan example takes advantage of this, by reusing a scan signal list
|
many times. Adding a signal to a scan chain would normally require adding
|
many times. Adding a signal to a scan chain would normally require adding
|
the signal in nearly a dozen places. Using Deperlify, however, allows that
|
the signal in nearly a dozen places. Using Deperlify, however, allows that
|
change to be localized to only one place.
|
change to be localized to only one place.
|
|
|
The syntax to include a Perl file is:
|
The syntax to include a Perl file is:
|
DEPERLIFY_INCLUDE(another_perl_file.pl);
|
DEPERLIFY_INCLUDE(another_perl_file.pl);
|
|
|
|
|