Here’s a perl script to indent verilog files.
Download here. vindent.pdf
Add your own list of keywords to indent any source code
For example, this script could be used to indent C/C++/Java source codes.
This script uses two spaces for each indent. This could be changed as required.
#!/usr/bin/perl
# Filename : vindent.pl
# Author : A.G.Raja
# Website : http://agraja.wordpress.com
#
# Usage : ./vindent.pl verilogfile.v
# : ./vindent.pl *.*v*
# Help : ./vindent.pl
# Verilog File indenter
# Space for each indent
my $Space = “ “;
# Block begin. For indenting C/C++/Java program use “{“
my $Open = “begin”;
# Block end. For indenting C/C++/Java program use “}”
my $Close = “end”;
# Block statements.
# Note: Each Open keyword must have corresponding Close keyword
my @Openkeywords = qw{ module program package interface class task function };
my @Closekeywords = qw{ endmodule endprogram endpackage endinterface endclass endtask endfunction };
sub indent {
my $indent = 0;
my($infile) = @_;
open(FILE, “$infile”) or die “Couldn’t open file \”$infile\”\n”;
open(TFILE, “>temp”) or die “Couldn’t create temp file\n”;
while($line = <FILE>) {
chomp $line;
$line =~ s/^\s*//;
print TFILE “$line \n”;
}
close TFILE;
close FILE;
open(TFILE, “<temp”);
open(FILE, “>$infile”);
while($line = <TFILE>) {
foreach $Closekey (@Closekeywords) {
if($line =~ /^$Closekey\s/) { $indent–; }
}
if (($line =~ /.*\s+$Close\s/ ) || ($line =~ /^$Close\s/))
{ $indent–; }
for($i=0;$i<$indent;$i++) { print FILE $Space; }
print FILE $line;
foreach $Openkey (@Openkeywords) {
if($line =~ /^$Openkey\s/) { $indent++; }
}
if (($line =~ /.*\s+$Open\s/ )|| ($line =~ /^$Open\s/))
{ $indent++; }
}
close FILE; close TFILE;
print “Indented File \”$infile\”\n”;
}
my $argnum;
if($ARGV[0] eq “”) {
print “Usage : vindent.pl verilogfile.v\n”;
print “ vindent.pl *.v\n”;
print “ vindent.pl *.*v*\n”;
print “Help :\n”;
print “ vindent.pl\n”;
}
foreach $argnum (0 .. $#ARGV) {
my $ifile = $ARGV[$argnum];
&indent($ifile);
}
unlink “temp”;
Download here. vindent.pdf


C, comments, documentation, help, Perl, program, script
Perl script to display comments
In Bookmarks on March 19, 2008 at 1:57 pmDownload here. c_help.pdf
#!/usr/bin/perl
# Filename: chelp.pl
# Author : A. G. Raja
# Website : agraja.wordpress.com
# License : GPL
# pass c file as argument to this script
# this script displays all the comments
use strict;
use warnings;
open(FILE,$ARGV[0]) or die “File not Found”;
my $line;
my $start=0;
while ( $line = <FILE> ) {
if($line =~ /\/\//)
{
$line=~ s/(.*)\/\/(.*)/$2/;
print $line;
}
if($line =~ /\/\*/)
{
$start=1;
$line=~ s/(.*)\/\*(.*)/$2/;
}
if($line =~ /\*\//)
{
$line=~ s/(.*)\*\//$1/;
print $line;
$start=0;
}
if($start) { print $line; }
}
close FILE;
Tips:
Use a shell script to redirect the output
of the above script to another program.
Example
#!/bin/bash
# Filename: help.sh
# Author : A.G.Raja
# Website : agraja.wordpress.com
# License : GPL
# rename chelp.pl to chelp
# Install chelp and add to path
chelp $1 | less
Demo:
Below is a C file
// Filename : demo.c
// Author : cfile.pl
// License : GPL
#include <stdio.h>
#define print(x) printf(“str=%s\n”,x);
int main(int argc, char **argv)
{
/* this is a multi-
line comment */
char *str=”File name:”;// this will print file name
print(argv[0])
return 0;
}
Type at the terminal:
[raja@agraja ]$ chelp demo.c
The following will be printed to stdout
Filename : demo.c
Author : cfile.pl
License : GPL
this is a multi-
line comment
this will print file name
Download here. c_help.pdf