Shortened time to design and user error reduction are essential to the success of application development environments. Current application development environments are geared towards system engineers. Conventional design tools generally fail to produce deterministic outcomes when conflicting driver properties are set in a design. This is because conventional drivers are allowed to modify global resources without regard to conflicting values requested by other drivers. Thus, in a conventional embedded application design, conflicts are generally managed manually. As a result, a system engineer would often need to manually modify the conflicting driver properties when adding, deleting, or modifying drivers that request different parameter settings of a global resource.
Moreover, system engineers are typically accustomed to describing a design at a higher level than the hardware level. For example, a clock driver may be described at the system level in terms of clock frequency. However, at the hardware level, clock distribution is often described by clock divider ratios. Thus, with conventional design tools, a user may need to hand code in assembly or C code to manually modify conflicting driver properties at a hardware level. Such an approach may be too low level for system designers. Thus, the conventional approach is inefficient and error prone.