For technical reasons the Clash compiler cannot error out on certain things it doesn't want to render.
In that case it emits __VOID__, indicating that something has gone wrong.
One of the reasons it might not want to render something is when that something is of a type that needs zero-bits (e.g. BitVector 0, (), Vec 0 a, etc.)
Clash tries to filter out zero-bit values as much as possible, but there's one place us compiler developers (and potential users of advanced features of Clash) need to take extra care: primitive blackbox definitions.
In blackbox code we need to check whether arguments could be zero-bits explicitly, and if we forget to do that we could get erroneous code as you experienced.
It would be interesting to know what the net declaration for \x' looks like.
Also, while the zero-bit thing is the most likely culprit, it is not necessarily the only culprit for Clash rendering __VOID__.
To help you narrow down a minimal example, you can compile your clash designs with the `-g` flag.
cabal run clash -- --systemverilog -g examples/FIR.hs -fclash-clear -fclash-no-cache
the generated verilog will contain lines such as:
assign x = c$x_app_arg;
topEntity = exposeClockResetEnable (fir (2:>3:>(-2):>8:>Nil))
Sometimes those line numbers include both declaration and use sites of variables.
Also, Clash tends to mangle and drop line number hints, so they're not super accurate; but they should give you some help in narrowing down a minimal example.