Add t_dist_untracked files to prevent forgetting adds
This commit is contained in:
parent
b1ce6bd5cc
commit
50db34457c
|
|
@ -1,70 +0,0 @@
|
|||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Verilator Source Code Notes
|
||||
|
||||
=head1 INTRODUCTION
|
||||
|
||||
See also the Verilator internals presentation at http://www.veripool.org.
|
||||
|
||||
=head1 VISITOR FUNCTIONS
|
||||
|
||||
=head2 Passing Variables
|
||||
|
||||
There's three ways data is passed between visitor functions.
|
||||
|
||||
1. A visitor-class member variable. This is generally for passing "parent"
|
||||
information down to children. m_modp is a common example. It's set to
|
||||
NULL in the constructor, where that node (AstModule visitor) sets it, then
|
||||
the children are iterated, then it's cleared. Children under an AstModule
|
||||
will see it set, while nodes elsewhere will see it clear. If there can be
|
||||
nested items (for example an AstFor under an AstFor) the variable needs to
|
||||
be save-set-restored in the AstFor visitor, otherwise exiting the lower for
|
||||
will loose the upper for's setting.
|
||||
|
||||
2. User() attributes. Each node has 4 ->user() number or ->userp() pointer
|
||||
utility values (a common technique lifted from graph traversal packages).
|
||||
A visitor first clears the one it wants to use by calling
|
||||
AstNode::user#ClearTree(), then it can mark any node's user() with whatever
|
||||
data it wants. Readers just call nodep->user(), but may need to cast
|
||||
appropriately, so you'll often see nodep->userp()->castSOMETYPE(). At the
|
||||
top of each visitor are comments describing how the user() stuff applies to
|
||||
that visitor class. For example:
|
||||
|
||||
// NODE STATE
|
||||
// Cleared entire netlist
|
||||
// AstModule::user1p() // bool. True to inline this module
|
||||
|
||||
This says that at the AstNetlist user1ClearTree() is called. Each
|
||||
AstModule's is user1() is used to indicate if we're going to inline it.
|
||||
|
||||
These comments are important to make sure a user#() on a given AstNode type
|
||||
is never being used for two different purposes.
|
||||
|
||||
Note that calling user#ClearTree is fast, it doesn't walk the tree, so it's
|
||||
ok to call fairly often. For example, it's commonly called on every
|
||||
module.
|
||||
|
||||
3. Parameters can be passed between the visitors in close to the "normal"
|
||||
function caller to callee way. This is the second "vup" parameter that is
|
||||
ignored on most of the visitor functions. V3Width does this, but it proved
|
||||
more messy than the above and is deprecated. (V3Width was nearly the first
|
||||
module written. Someday this scheme may be removed, as it slows the
|
||||
program down to have to pass vup everywhere.)
|
||||
|
||||
=head1 DEBUGGING WITH GDB
|
||||
|
||||
The test_regress/driver.pl script accepts --gdb to start Verilator under
|
||||
gdb.
|
||||
|
||||
To break at a specific edit number which changed a node (presumably to find
|
||||
what made a <e####> line in the tree dumps):
|
||||
|
||||
watch AstNode::s_editCntGbl==####
|
||||
|
||||
=head1 DISTRIBUTION
|
||||
|
||||
Copyright 2008-2009 by Wilson Snyder. Verilator 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.
|
||||
|
|
@ -38,6 +38,7 @@ foreach my $file (sort keys %files) {
|
|||
}
|
||||
}
|
||||
|
||||
my %warns;
|
||||
foreach my $file (sort keys %files) {
|
||||
my $tar = $files{$file}&1;
|
||||
my $dir = $files{$file}&2;
|
||||
|
|
@ -49,9 +50,17 @@ foreach my $file (sort keys %files) {
|
|||
." $file\n") if $Debug;
|
||||
|
||||
if ($dir && !$tar && !$skip) {
|
||||
$Self->error("File not in manifest or MANIFEST.SKIP: $file");
|
||||
$warns{$file} = "File not in manifest or MANIFEST.SKIP: $file";
|
||||
} elsif (!$dir && $tar && !$skip) {
|
||||
$Self->error("File in manifest, but not directory: $file");
|
||||
$warns{$file} = "File in manifest, but not directory: $file";
|
||||
}
|
||||
}
|
||||
|
||||
if (keys %warns) {
|
||||
# First warning lists everything as that's shown in the driver summary
|
||||
$Self->error("Files mismatch with manifest: ",join(' ',sort keys %warns));
|
||||
foreach my $file (sort keys %warns) {
|
||||
$Self->error($warns{$file});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/perl
|
||||
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# Copyright 2003 by Wilson Snyder. This program 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.
|
||||
|
||||
my $root = "..";
|
||||
my $Debug;
|
||||
|
||||
if (!-r "$root/.git") {
|
||||
$Self->skip("Not in a git repository");
|
||||
} else {
|
||||
### Must trim output before and after our file list
|
||||
my $status = `cd $root && git ls-files -o --exclude-standard`;
|
||||
print "ST $status\n" if $Debug;
|
||||
my %warns;
|
||||
foreach my $file (sort split /\n/, $status) {
|
||||
next if $file =~ /nodist/;
|
||||
$warns{$file} = "File not in git or .gitignore: $file";
|
||||
}
|
||||
if (keys %warns) {
|
||||
# First warning lists everything as that's shown in the driver summary
|
||||
$Self->error("Files untracked in git or .gitignore: ",join(' ',sort keys %warns));
|
||||
foreach my $file (sort keys %warns) {
|
||||
$Self->error($warns{$file});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ok(1);
|
||||
1;
|
||||
Loading…
Reference in New Issue