##################################################################
# Copyright (C) 2000 Greg London   All Rights Reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
##################################################################

Hardware::Vhdl::Parse.pm is currently in "beta" status

The Hardware::Vhdl::Parse.pm file contains a VHDL grammar.
This grammar is used by Parse::RecDescent to parse any
VHDL design file. You will need the latest version of
Parse::RecDescent to use this grammar.

parser.pl is a script which uses this module to do the actual parsing.
A test VHDL file is included called test1.vhd

to parse this file, type:

parser.pl test1.vhd

The parser.pl script doesn't do anything except parse the file.
There is another module called hierarchy.pm which spits out
the name of all instantiated components. There is a script,
called hierarchy.pl, that uses this module. To run this script,
type:

hierarchy.pl test1.vhd

this should print out:
INSTANCENAME DUT



PLEASE NOTE: the script takes some time to simply load the grammar.
the it takes about a minute (yes, 60 seconds) to run the
hierarchy.pl test1.vhd command shown above when run on an Ultra 60.
your performance may vary.

the Parse::RecDescent has some features which will eventually
allow me to speed up this execution time. I'll get to that
when the grammar is ironed out.

status of grammar: Beta

once the grammar is in a released state,
then I'll concentrate on tools that use the grammar.

possible tool applications include:
1) automatic build scripts,
2) automatic synthesis scripts,
3) hierarchical browswers,
4) lint type checking with a hardware slant,
  "hey buddy, you've got combinatorial logic driving a module output port"
  "you've got combinatorial paths that cross multiple hierarchy boundaries."
  "did you ever hear of clocking all your output ports"
5) a script that can go through a netlist,
       find all the signals,
       perform regular-expression renaming on the signals,
       and save the results as a new netlist.


If you have any corrections or questions,
please send them to me at
[email protected]

thanks,
Greg London