Silicon compilation transforms a high-level description into a physical layout through several major stages.
High-level synthesis The process begins with a behavioral description of the hardware, often written in a language like C, C++, or SystemC. This stage, known as
High-level synthesis (HLS), translates the high-level code into a structural representation, typically a
register-transfer level (RTL) description. HLS allows designers to explore different architectures quickly by modifying the source code, rather than manually re-writing RTL code.
Intermediate representation To bridge the gap between high-level programming languages and low-level hardware details, compilers often use an
intermediate representation (IR). An IR provides a standardized format that allows for modular, hardware-focused optimizations. Modern open-source projects have introduced specialized IRs to improve the compilation process. •
CIRCT (Circuit IR for Compilers and Tools) is an
LLVM-based project that aims to create a common infrastructure for hardware design tools. It provides a set of modular IRs (called “dialects”) to represent different levels of hardware abstraction, improving on traditional, less-flexible formats like Verilog. •
Calyx is an IR designed to enable optimizations that require both structural and control-flow information. It features a unique split representation with a hardware-like structural language and a software-like control language (with loops and conditionals), which allows for powerful, hardware-specific optimizations that are difficult to perform on traditional IRs.
Logic synthesis The
logic synthesis stage takes the RTL description and converts it into a gate-level
netlist. This netlist is a detailed map of simple logic gates (like AND, OR, NOT) and the connections between them that implement the functionality specified in the RTL.
Physical design Physical design is the final stage, where the abstract gate-level netlist is converted into a geometric layout. This layout specifies the exact location of every component and wire on the final chip. This stage includes several complex steps: •
Floorplanning: The overall arrangement of the major functional blocks on the chip is planned. This step determines the size and shape of the chip and is critical for performance and power consumption. Optimization often involves metaheuristic algorithms to explore the vast design space. •
Placement: The individual logic gates and standard cells from the netlist are assigned to specific locations on the chip. •
Routing: The physical wires that connect the placed components are created. This is a highly complex task, especially with modern process technologies that have a large number of intricate design rules. == Design paradigms and optimization ==