The World of Perl

As it could be seen in the last section, it's possible to read more from files than just data. Many commercially available testbenches support sophisticated commands. There are limits however: in most cases structural elements like loops and procedures are missing. It's theoretically possible to extend the file reader into a proper parser and add these language elements, however VHDL is not really suited for these tasks and access to the source code may not always be possible. A way to get around these problems is to generate the input files with a different language such as perl.

The perl script below will generate an input file which can be read by file_read.vhd.

        print "00011\n";
        print "11100\n";
        
        for ($i=0;$i<10;$i++) {
           print num2binary($i,5)."\n";
        }
        
        print "1UXZW\n";
        print "11111\n";

Resulting Stimulus File:

        00011
        11100
        00000
        00001
        00010
        00011
        00100
        00101
        00110
        00111
        01000
        01001
        01010
        1UXZW
        HL111
        11111

It's straightforward to extend this approach e.g. for 256 iterations if all values of a 8 bit word are to be covered. Entering these values manually would be very cumbersome. The script actually calls a procedure num2binary which can be found in the complete script. More complex procedures like PRBS patterns or CRC generators could be used in a similar fashion.

Here is the complete perl script:

tgen.pl
tgen.pl


previous Index next