@david_chisnall There've been all kinds of hardware-specific coverage metrics proposed for hardware fuzzing in recent years (CSR registers, mux and FSM coverage, ancestor registers, commit time difference for finding timing side-channels and so on and so forth, just from recent memory), so I don't think the current state of things is that simplistic. Although I recall a recent study from the authors of Cascade from ETHZ showing that many established coverage metrics aren't that useful despite common assumptions to the contrary (https://comsec.ethz.ch/research/hardware-design-security/encarsia/).
Still, it seems like a strand of research with some potential, especially specialized fuzzers that try to uncover transient execution vulnerabilities (see e.g. Phantom Trails paper). As a matter of fact, I've been collecting relevant HW-fuzzing research and some adjacent things here:
https://github.com/forestfoxx/awesome-hardware-fuzzing
(yeah, I hope it can at least be useful for somebody)
Fuzzing probably feels like a suboptimal solution which can only help with a subset of potential bugs but I can't really see how you can rely only on formal methods when you have to deal with state explosion whenever you go beyond a simple design and try to create something sufficiently complex for serious real-world usage.