The main reason UDPs are used is performance: Verilog evaluates UDPs quickly, and UDPs take up only a small amount of memory. For example, a mux is typically modeled with an inverter, two AND gates, ...