12/05/2024

Why Abstractions are Important in VLSI ? Synthesis : Episode - 2

In this article, we delve into several important aspects of abstraction in VLSI design. We start by discussing various forms of abstraction that we encounter in everyday life, providing relatable examples to illustrate the concept. Then, we explore the benefits of abstraction levels in VLSI, highlighting how they simplify complex designs and enhance efficiency. We examine different levels of abstraction and their roles in the synthesis process, including system-level abstraction, which offers a high-level view of the entire system. We also cover high-level abstraction and behavioral-level abstraction, explaining how they contribute to the design and functionality of VLSI systems. Furthermore, we delve into the register-transfer level (RTL) abstraction and logic gate level abstraction, detailing their significance in the detailed design phase. Finally, we summarize the key points, reinforcing the importance of understanding and utilizing various abstraction levels in VLSI design.

Various Abstraction Around Us :

Programming: In computer programming, abstraction involves creating functions, classes, and objects that encapsulate complex operations. This allows developers to interact with high-level, easy-to-understand interfaces while the underlying complex code remains hidden. 

Art: In art, abstraction involves representing objects or scenes in a simplified or stylized manner. This can evoke emotions and ideas without presenting a detailed and realistic depiction.

Science: In scientific models, abstraction is used to represent complex phenomena with simplified equations or diagrams. These models help scientists understand the underlying principles without getting lost in intricate details.

Engineering: In engineering, abstraction helps break down complex systems into manageable components. For example, a car's engine can be abstracted as a black box with inputs and outputs, ignoring the internal mechanisms.

VLSI : In VLSI (Very Large Scale Integration), abstraction refers to the process of simplifying the representation of a digital circuit or system while retaining its essential functionality. This is crucial in VLSI design, where the complexity of modern integrated circuits can be overwhelming. Abstraction enables engineers to manage this complexity by focusing on higher-level views of the design, which are easier to work with and understand.

Benefits Of Abstraction Levels in VLSI :

Each abstraction level allows engineers to work at a suitable granularity, depending on the design stage and goals. During the design process, engineers often start with higher-level abstractions to capture the functionality and overall structure. As the design progresses, they refine the abstraction, eventually reaching the transistor-level representation for detailed analysis before fabrication. Abstraction in VLSI design helps manage the intricate details of the manufacturing process, optimize performance, and ensure correctness. It allows engineers to approach the design from different angles, enabling efficient collaboration and easing the transition between different stages of the design process.

Levels of Abstraction & Synthesis :



System Level Abstraction :

System Level abstraction focuses on major components like CPUs and cores. High-level description uses languages like C/C++ or Matlab. Special software libraries, like SystemC, aid in simulating circuits at this level. System level usually avoids automated synthesis for lower-level representation. System level design tools facilitate interconnecting building blocks. The IEEE 1685-2009 standard establishes IP-XACT file format. This format represents system level designs and building blocks for such designs.

High Level Abstraction :

High-level abstraction (algorithmic level) employs traditional programming languages. These languages have limited features; e.g., C with restricted pointer usage to mimic hardware concepts. In high-level C representation, pointers simulate hardware ideas like memory interfaces. However, advanced dynamic memory management isn't allowed as it lacks digital circuit equivalents. Synthesis tools convert high-level code (like C/C++/SystemC with metadata) into behavioral HDL code. Commercial and FOSS tools for high-level synthesis are available. These tools transform high-level code into Verilog or VHDL code for implementation.


Behavioral Level Abstraction :

Behavioural Abstraction: Utilizes hardware description languages (Verilog/VHDL). Incorporates behavioral modeling in circuit representation. 

Behavioral Modeling: Employs imperative programming for data paths and registers. Utilizes constructs like "always-block" in Verilog, "process-block" in VHDL. 

Code Fragments and Sensitivity: Behavioral modeling includes code segments with a sensitivity list (signals, conditions). In simulation, execution upon sensitivity list changes or conditions triggered.

Synthesis Transformation: Synthesis converts this representation into suitable datapaths and registers. Ensures alignment with hardware description.


Register-Transfer Level (RTL) Abstraction :

Register-Transfer Level (RTL) design involves combinatorial data paths and registers (usually D-type flip flops).  Verilog code at RTL represents designs using combinational logic and registers. 

Example: assign tmp = a + b; (combinatorial data path), 

always @(posedge clk) (register), y <= tmp;.

RTL representation uses HDLs like Verilog and VHDL, with minimalistic always-blocks or process-blocks. HDLs simplify RTL simulation, no additional tools required. RTL allows optimizations like FSM detection, memory identification, resource sharing. RTL represents circuits as graphs of registers, combinatorial cells, and signals. Encoded graph is called a netlist.  RTL synthesis replaces netlist elements with gate-level circuits. RTL synthesis includes sophisticated optimizations within RTL representation. Few FOSS tools for specific RTL synthesis tasks, but none covering a wide range.


Logic Gate Level Abstraction:

Logical gate level represents designs using netlists comprising basic logic gates (AND, OR, NOT, XOR) and registers (D-Type Flip-flops). Netlist formats include EDIF, while HDL netlists (Verilog or VHDL) are commonly used for simulation ease. Logic synthesis involves optimizing gate level netlists and mapping them to physically available gate types. Two challenges: optimization within gate-level netlist and optimal mapping to physical gates. Two-level logic synthesis is basic, converting logic function into sum-of-products using methods like Karnaugh maps. Modern tools use complex multi-level logic synthesis algorithms based on Binary-Decision- Diagrams (BDD) or And-Inverter-Graphs (AIG). BDD ensures normalized form, AIG offers better worst-case performance for large logic functions. FOSS tools exist for multi-level logic synthesis. Yosys provides basic logic synthesis, can use ABC for logic synthesis (recommended).


Summary :

Behavioral Abstraction: This is the highest level of abstraction. It focuses on the functional behavior of the circuit without delving into implementation details. Engineers describe the desired functionality using high-level languages like Verilog or VHDL.

Register Transfer Level (RTL) Abstraction: At this level, the design is represented in terms of registers, logic operations, and data transfers. It provides a more detailed view of the circuit's operation, but still abstracts away lower-level implementation specifics. 

Gate-Level Abstraction: Here, the design is represented using basic logic gates (AND, OR, NOT, etc.). The abstraction captures the logic relationships but ignores the physical properties of the components.

Transistor-Level/Layout Abstraction: This level involves modeling the circuit using individual transistors. It's the closest abstraction to the physical implementation, providing insights into the electrical behavior of the design.


Watch the Video lecture here:

Courtesy: Image by www.pngegg.com