Indeed, adding the debugger to the RTL processor model yields many benefits. Adding the software debugger to the hardware verification environment allows for a higher level of abstraction when writing software. This helps to avoid the tendency to oversimplify the software because of a lack of visibility. Even though C or C++ allow for a higher level of abstraction, programs written in these languages are often very simple, because they are very hard to debug. In the extreme case, such programs work almost at the assembly level, performing basic hardware writes and reads just so they can configure ASIC registers.