Designing SoCs involves hardware and software to control the processor, peripherals, and interfaces. A strong design workflow develops hardware and software simultaneously in an architectural co-design method.
Concerning hardware, as with integrated circuit design in general, many SoCs are developed using hardware component IP core specifications, known as blocks. Hardware blocks are created using EDA tools and can be classified into the following categories:
- Hard IP cores are hard layouts using physical design libraries but are technology dependent and may lack flexibility.
- Soft IP cores include VHDL/ Verilog code with functional descriptions of IPs, making them more flexible and reconfigurable but requiring synthesis and verification before implementation.
- Firm IP cores strike a balance between the two and are provided as netlists to specific physical libraries after synthesis.
On the software side, SoCs are designed with high-level programming languages (MATLAB, C++, etc.) and are converted to RTL designs through high-level synthesis tools. These algorithmic synthesis tools allow designers to model and synthesize the system, circuit, software, and verification levels in a single language.
After architecture is defined, new hardware elements are written and synthesized into register transfer level (RTL), defining the circuit behavior and then connected in HDL, creating the full SoC design.
The SoC must be verified for validation before being manufactured in a foundry, in a process known as functional verification. The verification process accounts for a large portion of the chip design life cycle —up to 70%. Once the chip is fully verified to work as intended, it is sent to the foundry for mass production.