Gray code (also called reflected binary code) is a binary numbering system where only one bit changes at a time between consecutive numbers.
It's mainly used to prevent errors during transitions (especially in hardware, encoders, ADCs, etc.).
Here is a detailed layered testbench designed for obtaining maximum functional coverage
