Embedded software is so close to the hardware that it's only natural in embedded systems development that the line between hardware and software sometimes get a little fuzzy. The design methodology for complex digital hardware depends on programming just as assuredly as complex software does.
One manifestation of the blurring distinctions between hardware and software is the recent announcement of a reconfigurable computing platform that seems to turn hardware and software development on its head.
Another can be found in this article on moving algorithms from software to hardware. It depends on an field-programmable gate array that incorporates a processor core.
FPGAs are evolving into reconfigurable computing platforms that promise some interesting design capabilities. Tools are on the way that will let engineers create designs at a high level and then, using a single code base and an FPGA platform, partition them into hardware and software.