1. A method for programmatic design of a VLIW processor from an input specification including specified processor operations, I/O formats for the specified operations, instruction level parallelism constraints among the specified operations, and a register file specification of the processor, the method comprising: based on the specified processor operations, and the instruction level parallelism constraints, programmatically generating a datapath description of the processor from a macrocell library, the datapath description including functional unit instances, register file instances and an interconnect between the functional unit and register file instances; and based on the datapath description, the I/O formats, and the instruction level parallelism constraints, programmatically generating an instruction format specification, including instruction templates representing VLIW instructions executable by the processor, instruction fields for each of the templates, and bit positions and bit encodings for the instruction fields.