.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "EditFiles 3pm" .TH EditFiles 3pm 2024-03-07 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME Verilog::EditFiles \- Split Verilog modules into separate files. .SH SYNOPSIS .IX Header "SYNOPSIS" See splitmodule command. .PP .Vb 10 \& use Verilog::EditFiles; \& my $split = Verilog::EditFiles\->new \& (outdir => "processed_rtl", \& translate_synthesis => 0, \& lint_header => undef, \& celldefine => 1, \& ); \& $split\->read_and_split(glob("inbound_rtl/*.v")); \& $split\->write_files(); \& $split\->edit_file(filename=>"foo", cb => sub { return $_[0]; }); .Ve .SH DESCRIPTION .IX Header "DESCRIPTION" Verilog::EditFiles provides a easy way to split library Verilog files that contain multiple modules into many files with one module per file. .SH FUNCTIONS .IX Header "FUNCTIONS" .IP "new (...)" 4 .IX Item "new (...)" Create a new Verilog::EditFiles object. Named parameters may be specified: .RS 4 .IP celldefine 4 .IX Item "celldefine" If true, add "`celldefine" before every module statement. .IP lint_command 4 .IX Item "lint_command" For the write_lint method, the name of the linter to use. Defaults to "vlint \-\-brief". .IP lint_header 4 .IX Item "lint_header" If defined, add the provided text before every module statement. Generally used to insert lint off pragmas. .IP outdir 4 .IX Item "outdir" Name of the directory to write the output modules to. Defaults to ".". .IP program 4 .IX Item "program" Name of the program to add to comments. Defaults to "Verilog::EditFiles". .IP timescale_header 4 .IX Item "timescale_header" If defined, add the provided text before every module statement. Generally set to the next needed to #include a timescale file. Use with timescale_removal. .IP timescale_removal 4 .IX Item "timescale_removal" If set, remove any `timescales. .IP translate_synthesis 4 .IX Item "translate_synthesis" If 1, replace any synopsys translate on/offs with "`ifdef SYNTHESIS" and "`endif"s. If set to a string, use that string instead of "SYNTHESIS". .IP v_suffix 4 .IX Item "v_suffix" The suffix to add to convert a module name into a filename. Defaults to ".v". .IP verbose 4 .IX Item "verbose" If true, print what files are being read and written. .RE .RS 4 .RE .ie n .IP $self\->read_and_split([filenames]) 4 .el .IP \f(CW$self\fR\->read_and_split([filenames]) 4 .IX Item "$self->read_and_split([filenames])" Read from the specified filenames. .Sp If there is no module statement in the file, assume it is a include file, and when write_files is called, place all of the file contents into the output. If there is a module statement, when write_files is called place all following output into a file named based on the module, with .v added. .ie n .IP $self\->\fBwrite_files()\fR 4 .el .IP \f(CW$self\fR\->\fBwrite_files()\fR 4 .IX Item "$self->write_files()" Write all of the files created by read_and_split to the outdir. .ie n .IP $self\->write_lint([filename=>...]) 4 .el .IP \f(CW$self\fR\->write_lint([filename=>...]) 4 .IX Item "$self->write_lint([filename=>...])" Create a shell script that will lint every file created by write_files. If a "filename" parameter is not provided, "0LINT.sh" will be written in the default outdir. .ie n .IP "$self\->edit_file(filename=>..., cb=>sub{...})" 4 .el .IP "\f(CW$self\fR\->edit_file(filename=>..., cb=>sub{...})" 4 .IX Item "$self->edit_file(filename=>..., cb=>sub{...})" Read a file, edit it with the provided callback, and save it if it has changed. The "filename" parameter is the filename to read. The "write_filename" parameter is the filename to write, defaulting to the same name as the filename to read. The "cb" parameter is a reference to a callback which takes the string of file contents and returns the string to write back. Often the callback will simply perform a search and replace. .SH DISTRIBUTION .IX Header "DISTRIBUTION" Verilog-Perl is part of the free Verilog EDA software tool suite. The latest version is available from CPAN and from . .PP Copyright 2006\-2024 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. .SH AUTHORS .IX Header "AUTHORS" Wilson Snyder .SH "SEE ALSO" .IX Header "SEE ALSO" Verilog-Perl