Your input file looks like Verilog, except that Verilog requires the keywords to be lower-case. If so, you can use the
Verilog::Netlist parser to read the file and get all the signals you need. This is preferable to rolling your own parser, which can be difficult.
use warnings;
use strict;
use Data::Dumper qw(Dumper);
use Verilog::Netlist qw();
use File::Slurp qw(write_file read_file);
my $file = shift;
# Create a temporary file with lower-case keywords
my @lines;
for (read_file($file)) {
s/(\w+)/lc $1/e;
push @lines, $_
}
write_file('temp', @lines);
my $nl = Verilog::Netlist->new();
$nl->read_file(filename => 'temp');
$nl->exit_if_error();
my %sigs;
my @wires;
for my $mod ($nl->top_modules_sorted()) {
print 'mod=', $mod->name, "\n";
for my $sig ($mod->nets()) {
push @wires, $sig->name;
}
for my $sig ($mod->ports_sorted()) {
my $dir = $sig->direction();
$dir .= 'put' unless $dir eq 'inout';
my $name = $sig->name();
$sigs{$name} = {dir => $dir};
}
for my $cell ($mod->cells_sorted) {
printf " Cell %s\n", $cell->name;
for my $pin ($cell->pins_sorted) {
printf " %s\n", $pin->netname;
}
}
}
print Dumper(\%sigs);
print Dumper(\@wires);
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.