Automatically Customising VLIW Architectures with Coarse Grained Application-Specific Functional Units