```python
"""Render a value as fixed-width unsigned binary, nibble-grouped."""


def format_bits(value: int, width: int) -> str:
    """Render value as unsigned binary in exactly width bits, nibble-grouped."""
    if isinstance(value, bool) or not isinstance(value, int) or value < 0:
        raise ValueError("value must be a non-negative integer")
    if not isinstance(width, int) or isinstance(width, bool):
        raise ValueError("width must be a positive integer")
    if width <= 0:
        raise ValueError("width must be a positive integer")
    if width % 4 != 0:
        raise ValueError("width must be a multiple of four")
    if width > 32:
        raise ValueError("width must not exceed 32")
    max_val = (1 << width) - 1
    if value > max_val:
        raise ValueError("value does not fit in width bits")
    
    bits = format(value, f'0{width}b')
    groups = [bits[i:i+4] for i in range(0, width, 4)]
    return ' '.join(groups)
```