1. A method for developing an application specific integrated circuit (ASIC) which performs a function, the method comprising: storing on a non-transitory memory medium, a software program comprising program instructions which implement the function; executing the software program on a processing system capable of parallel processing, wherein said executing the software program is performed at a desired system speed; validating the software program based on said executing; storing on a non-transitory memory medium, a first hardware description of at least a portion of the processing system, wherein the first hardware description specifies implementation of at least a portion of the processing system; generating a second hardware description that corresponds to a first portion of the first hardware description, wherein the second hardware description specifies a dedicated hardware implementation of a first portion of the software program executing on the processing system, wherein said generating is performed one or more times; creating an ASIC which implements the function of the software program, wherein said creating comprises implementing the second hardware description on the ASIC.