Wojciech Zabolotny
2007-02-20 12:22:14 UTC
This is a generic, parametrized implementation of the pseudorandom sequence
generator, based on linear feedback shift register, written in VHDL.
This is a behavioral code, however it also gives quite nice results in
synthesis (checked in both Altera Quartus 6.0 and Xilinx ISE 8.2 tools).
The code is published as public domain, in the hope, that it may be useful
for someone...
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 2007-02-20 13:12 CET by <***@ipebio15>.
# Source directory was `/tmp/lfsr'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 1320 -rw-r--r-- genlfsr.vhd
# 191 -rw-r--r-- genlfsr_pkg.vhd
# 2574 -rw-r--r-- genlfsr_tb.vhd
# 281 -rw-rw-r-- makefile
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
set `$dir/gettext --version 2>&1`
if test "$3" = GNU
then
gettext_dir=$dir
fi
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then
shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then
shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then
shar_touch='touch -am $3$4$5$6$2 "$8"'
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch
#
if mkdir _sh11731; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
exit 1
fi
# ============= genlfsr.vhd ==============
if test -f 'genlfsr.vhd' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'genlfsr.vhd' '(file already exists)'
else
$echo 'x -' extracting 'genlfsr.vhd' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'genlfsr.vhd' &&
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
library work;
use work.genlfsr_pkg.all;
X
entity genlfsr is
X
X generic (
X width : integer := 16;
X length : integer := 17; -- length of the register
X taps : T_LFSR_TAPS := (17, 14));
X
X port (
X rst_n : in std_logic;
X clk : in std_logic;
X dout : out std_logic_vector(15 downto 0));
X
end genlfsr;
X
architecture beh of genlfsr is
X
X signal reg : std_logic_vector(length-1 downto 0);
X
begin -- beh
X
X lfsr1 : process (clk, rst_n)
X variable vreg : std_logic_vector(length-1 downto 0);
X variable fb : std_logic;
X begin -- process lfsr1
X if rst_n = '0' then -- asynchronous reset (active low)
X reg <= (others => '1');
X elsif clk'event and clk = '1' then -- rising clock edge
X vreg := reg;
X for i in 1 to width loop
X fb := '0';
X for j in taps'range loop
X if fb=vreg(taps(j)-1) then
X fb := '0';
X else
X fb := '1';
X end if;
X end loop; -- j
X for k in vreg'left downto 1 loop
X vreg(k) := vreg(k-1);
X end loop; -- k
X vreg(0) := fb;
X end loop; -- i
X reg <= vreg;
X end if;
X end process lfsr1;
X
X dout <= reg(width-1 downto 0);
X
end beh;
SHAR_EOF
(set 20 07 02 20 13 10 28 'genlfsr.vhd'; eval "$shar_touch") &&
chmod 0644 'genlfsr.vhd' ||
$echo 'restore of' 'genlfsr.vhd' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'genlfsr.vhd:' 'MD5 check failed'
3243fbb313774b7882608658baa4084b genlfsr.vhd
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'genlfsr.vhd'`"
test 1320 -eq "$shar_count" ||
$echo 'genlfsr.vhd:' 'original size' '1320,' 'current size' "$shar_count!"
fi
fi
# ============= genlfsr_pkg.vhd ==============
if test -f 'genlfsr_pkg.vhd' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'genlfsr_pkg.vhd' '(file already exists)'
else
$echo 'x -' extracting 'genlfsr_pkg.vhd' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'genlfsr_pkg.vhd' &&
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
X
package genlfsr_pkg is
X
X type T_LFSR_TAPS is array (natural range <>) of integer;
X
end genlfsr_pkg;
SHAR_EOF
(set 20 07 02 20 13 10 28 'genlfsr_pkg.vhd'; eval "$shar_touch") &&
chmod 0644 'genlfsr_pkg.vhd' ||
$echo 'restore of' 'genlfsr_pkg.vhd' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'genlfsr_pkg.vhd:' 'MD5 check failed'
6ffb4cb1e002518f948fca29002bffe5 genlfsr_pkg.vhd
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'genlfsr_pkg.vhd'`"
test 191 -eq "$shar_count" ||
$echo 'genlfsr_pkg.vhd:' 'original size' '191,' 'current size' "$shar_count!"
fi
fi
# ============= genlfsr_tb.vhd ==============
if test -f 'genlfsr_tb.vhd' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'genlfsr_tb.vhd' '(file already exists)'
else
$echo 'x -' extracting 'genlfsr_tb.vhd' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'genlfsr_tb.vhd' &&
-------------------------------------------------------------------------------
-- Title : Testbench for design "genlfsr"
-- Project :
-------------------------------------------------------------------------------
-- File : genlfsr_tb.vhd
-- Author :
-- Company :
-- Created : 2007-02-20
-- Last update: 2007-02-20
-- Platform :
-- Standard : VHDL'87
-------------------------------------------------------------------------------
-- Description:
-------------------------------------------------------------------------------
-- Copyright (c) 2007
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2007-02-20 1.0 xl Created
-------------------------------------------------------------------------------
X
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.genlfsr_pkg.all;
-------------------------------------------------------------------------------
X
entity genlfsr_tb is
X
end genlfsr_tb;
X
-------------------------------------------------------------------------------
X
architecture test1 of genlfsr_tb is
X
X component genlfsr
X generic (
X width : integer;
X length : integer;
X taps : T_LFSR_TAPS);
X port (
X rst_n : in std_logic;
X clk : in std_logic;
X dout : out std_logic_vector(15 downto 0));
X end component;
X
X -- component generics
X constant width : integer := 16;
X constant length : integer := 17;
X constant taps : T_LFSR_TAPS := (17, 14);
X
X -- component ports
X signal rst_n : std_logic;
X signal dout : std_logic_vector(15 downto 0);
X
X -- clock
X signal Clk : std_logic := '1';
X
X signal stop : std_logic := '0';
begin -- test1
X
X -- component instantiation
X DUT: genlfsr
X generic map (
X width => width,
X length => length,
X taps => taps)
X port map (
X rst_n => rst_n,
X clk => clk,
X dout => dout);
X
X -- clock generation
X Clk <= not Clk after 10 ns when stop = '0' else
X '0';
X
X -- waveform generation
X WaveGen_Proc: process
X begin
X -- insert signal assignments here
X rst_n <= '0';
X wait until Clk = '1';
X wait for 15 ns;
X rst_n <= '1';
X wait for 2000 ns;
X stop <= '1';
X end process WaveGen_Proc;
X
X
X
end test1;
X
-------------------------------------------------------------------------------
X
configuration genlfsr_tb_test1_cfg of genlfsr_tb is
X for test1
X end for;
end genlfsr_tb_test1_cfg;
X
-------------------------------------------------------------------------------
SHAR_EOF
(set 20 07 02 20 13 10 38 'genlfsr_tb.vhd'; eval "$shar_touch") &&
chmod 0644 'genlfsr_tb.vhd' ||
$echo 'restore of' 'genlfsr_tb.vhd' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'genlfsr_tb.vhd:' 'MD5 check failed'
cfd6a7b12be1320de5cbd8d906218a9c genlfsr_tb.vhd
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'genlfsr_tb.vhd'`"
test 2574 -eq "$shar_count" ||
$echo 'genlfsr_tb.vhd:' 'original size' '2574,' 'current size' "$shar_count!"
fi
fi
# ============= makefile ==============
if test -f 'makefile' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'makefile' '(file already exists)'
else
$echo 'x -' extracting 'makefile' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'makefile' &&
TRIPS = genlfsr_pkg.vhd \
X genlfsr.vhd\
X genlfsr_tb.vhd
X
all: show
X
genlfsr_tb: ${TRIPS}
# vhdlp -work fmf fmf/*.vhd
X ghdl -a --ieee=standard ${TRIPS}
X ghdl -e --ieee=standard genlfsr_tb
test.ghw: genlfsr_tb
X ./genlfsr_tb --wave=test.ghw
show: test.ghw
X gtkwave test.ghw test
SHAR_EOF
(set 20 07 02 20 13 10 41 'makefile'; eval "$shar_touch") &&
chmod 0664 'makefile' ||
$echo 'restore of' 'makefile' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'makefile:' 'MD5 check failed'
a369fb457ee4ed9a8dcb74c423ab49a9 makefile
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'makefile'`"
test 281 -eq "$shar_count" ||
$echo 'makefile:' 'original size' '281,' 'current size' "$shar_count!"
fi
fi
rm -fr _sh11731
exit 0
generator, based on linear feedback shift register, written in VHDL.
This is a behavioral code, however it also gives quite nice results in
synthesis (checked in both Altera Quartus 6.0 and Xilinx ISE 8.2 tools).
The code is published as public domain, in the hope, that it may be useful
for someone...
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 2007-02-20 13:12 CET by <***@ipebio15>.
# Source directory was `/tmp/lfsr'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 1320 -rw-r--r-- genlfsr.vhd
# 191 -rw-r--r-- genlfsr_pkg.vhd
# 2574 -rw-r--r-- genlfsr_tb.vhd
# 281 -rw-rw-r-- makefile
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
set `$dir/gettext --version 2>&1`
if test "$3" = GNU
then
gettext_dir=$dir
fi
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then
shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then
shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then
shar_touch='touch -am $3$4$5$6$2 "$8"'
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch
#
if mkdir _sh11731; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
exit 1
fi
# ============= genlfsr.vhd ==============
if test -f 'genlfsr.vhd' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'genlfsr.vhd' '(file already exists)'
else
$echo 'x -' extracting 'genlfsr.vhd' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'genlfsr.vhd' &&
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
library work;
use work.genlfsr_pkg.all;
X
entity genlfsr is
X
X generic (
X width : integer := 16;
X length : integer := 17; -- length of the register
X taps : T_LFSR_TAPS := (17, 14));
X
X port (
X rst_n : in std_logic;
X clk : in std_logic;
X dout : out std_logic_vector(15 downto 0));
X
end genlfsr;
X
architecture beh of genlfsr is
X
X signal reg : std_logic_vector(length-1 downto 0);
X
begin -- beh
X
X lfsr1 : process (clk, rst_n)
X variable vreg : std_logic_vector(length-1 downto 0);
X variable fb : std_logic;
X begin -- process lfsr1
X if rst_n = '0' then -- asynchronous reset (active low)
X reg <= (others => '1');
X elsif clk'event and clk = '1' then -- rising clock edge
X vreg := reg;
X for i in 1 to width loop
X fb := '0';
X for j in taps'range loop
X if fb=vreg(taps(j)-1) then
X fb := '0';
X else
X fb := '1';
X end if;
X end loop; -- j
X for k in vreg'left downto 1 loop
X vreg(k) := vreg(k-1);
X end loop; -- k
X vreg(0) := fb;
X end loop; -- i
X reg <= vreg;
X end if;
X end process lfsr1;
X
X dout <= reg(width-1 downto 0);
X
end beh;
SHAR_EOF
(set 20 07 02 20 13 10 28 'genlfsr.vhd'; eval "$shar_touch") &&
chmod 0644 'genlfsr.vhd' ||
$echo 'restore of' 'genlfsr.vhd' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'genlfsr.vhd:' 'MD5 check failed'
3243fbb313774b7882608658baa4084b genlfsr.vhd
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'genlfsr.vhd'`"
test 1320 -eq "$shar_count" ||
$echo 'genlfsr.vhd:' 'original size' '1320,' 'current size' "$shar_count!"
fi
fi
# ============= genlfsr_pkg.vhd ==============
if test -f 'genlfsr_pkg.vhd' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'genlfsr_pkg.vhd' '(file already exists)'
else
$echo 'x -' extracting 'genlfsr_pkg.vhd' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'genlfsr_pkg.vhd' &&
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
X
package genlfsr_pkg is
X
X type T_LFSR_TAPS is array (natural range <>) of integer;
X
end genlfsr_pkg;
SHAR_EOF
(set 20 07 02 20 13 10 28 'genlfsr_pkg.vhd'; eval "$shar_touch") &&
chmod 0644 'genlfsr_pkg.vhd' ||
$echo 'restore of' 'genlfsr_pkg.vhd' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'genlfsr_pkg.vhd:' 'MD5 check failed'
6ffb4cb1e002518f948fca29002bffe5 genlfsr_pkg.vhd
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'genlfsr_pkg.vhd'`"
test 191 -eq "$shar_count" ||
$echo 'genlfsr_pkg.vhd:' 'original size' '191,' 'current size' "$shar_count!"
fi
fi
# ============= genlfsr_tb.vhd ==============
if test -f 'genlfsr_tb.vhd' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'genlfsr_tb.vhd' '(file already exists)'
else
$echo 'x -' extracting 'genlfsr_tb.vhd' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'genlfsr_tb.vhd' &&
-------------------------------------------------------------------------------
-- Title : Testbench for design "genlfsr"
-- Project :
-------------------------------------------------------------------------------
-- File : genlfsr_tb.vhd
-- Author :
-- Company :
-- Created : 2007-02-20
-- Last update: 2007-02-20
-- Platform :
-- Standard : VHDL'87
-------------------------------------------------------------------------------
-- Description:
-------------------------------------------------------------------------------
-- Copyright (c) 2007
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2007-02-20 1.0 xl Created
-------------------------------------------------------------------------------
X
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.genlfsr_pkg.all;
-------------------------------------------------------------------------------
X
entity genlfsr_tb is
X
end genlfsr_tb;
X
-------------------------------------------------------------------------------
X
architecture test1 of genlfsr_tb is
X
X component genlfsr
X generic (
X width : integer;
X length : integer;
X taps : T_LFSR_TAPS);
X port (
X rst_n : in std_logic;
X clk : in std_logic;
X dout : out std_logic_vector(15 downto 0));
X end component;
X
X -- component generics
X constant width : integer := 16;
X constant length : integer := 17;
X constant taps : T_LFSR_TAPS := (17, 14);
X
X -- component ports
X signal rst_n : std_logic;
X signal dout : std_logic_vector(15 downto 0);
X
X -- clock
X signal Clk : std_logic := '1';
X
X signal stop : std_logic := '0';
begin -- test1
X
X -- component instantiation
X DUT: genlfsr
X generic map (
X width => width,
X length => length,
X taps => taps)
X port map (
X rst_n => rst_n,
X clk => clk,
X dout => dout);
X
X -- clock generation
X Clk <= not Clk after 10 ns when stop = '0' else
X '0';
X
X -- waveform generation
X WaveGen_Proc: process
X begin
X -- insert signal assignments here
X rst_n <= '0';
X wait until Clk = '1';
X wait for 15 ns;
X rst_n <= '1';
X wait for 2000 ns;
X stop <= '1';
X end process WaveGen_Proc;
X
X
X
end test1;
X
-------------------------------------------------------------------------------
X
configuration genlfsr_tb_test1_cfg of genlfsr_tb is
X for test1
X end for;
end genlfsr_tb_test1_cfg;
X
-------------------------------------------------------------------------------
SHAR_EOF
(set 20 07 02 20 13 10 38 'genlfsr_tb.vhd'; eval "$shar_touch") &&
chmod 0644 'genlfsr_tb.vhd' ||
$echo 'restore of' 'genlfsr_tb.vhd' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'genlfsr_tb.vhd:' 'MD5 check failed'
cfd6a7b12be1320de5cbd8d906218a9c genlfsr_tb.vhd
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'genlfsr_tb.vhd'`"
test 2574 -eq "$shar_count" ||
$echo 'genlfsr_tb.vhd:' 'original size' '2574,' 'current size' "$shar_count!"
fi
fi
# ============= makefile ==============
if test -f 'makefile' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'makefile' '(file already exists)'
else
$echo 'x -' extracting 'makefile' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'makefile' &&
TRIPS = genlfsr_pkg.vhd \
X genlfsr.vhd\
X genlfsr_tb.vhd
X
all: show
X
genlfsr_tb: ${TRIPS}
# vhdlp -work fmf fmf/*.vhd
X ghdl -a --ieee=standard ${TRIPS}
X ghdl -e --ieee=standard genlfsr_tb
test.ghw: genlfsr_tb
X ./genlfsr_tb --wave=test.ghw
show: test.ghw
X gtkwave test.ghw test
SHAR_EOF
(set 20 07 02 20 13 10 41 'makefile'; eval "$shar_touch") &&
chmod 0664 'makefile' ||
$echo 'restore of' 'makefile' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'makefile:' 'MD5 check failed'
a369fb457ee4ed9a8dcb74c423ab49a9 makefile
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'makefile'`"
test 281 -eq "$shar_count" ||
$echo 'makefile:' 'original size' '281,' 'current size' "$shar_count!"
fi
fi
rm -fr _sh11731
exit 0