I work to make the whole hardware design and verification process easier and more scalable through the application of software engineering techniques. This involves new languages (e.g., the Chisel embedded domain specific language), intermediate representations for circuits (e.g., FIRRTL or CIRCT), and the application of compiler techniques to tie everything together.