Hardware/software co-design
Beginner
Designing the chip and the programs that will run on it together, so each fits the other.
Novice
Deciding what goes in hardware and what stays in software at the same time, and adapting the algorithm, number formats and data layout to suit the hardware.
Expert
For accelerators it often means trading extra (cheap) computation for less (expensive) memory traffic, choosing number formats, and settling how the compiler sees on-chip memory early enough to shape scratchpad sizes.