When you give neighbor bits to the check_cell, you should provide the bits from "q" instead of "data". because the output of cells will compute based on the current state of "q".
The meaning of x outputs, you computed not initialized data.
Flow: Init "data" to "q" -> Compute the next cell state based on the initialized "q".