Jun 12, 2023

Memory Compiler in VLSI


Have you heard the term MEMORY COMPILER? Do you understand what it is, how it works and why its important. In this article we will try to find answer of  these  how, what and why?  

Let's find answers to some questions and once we find answers to them we will get clarity about Memory Compilers.

1. First what is semiconductor memory?

Semiconductor memory is a semiconductor device used for digital data storage. 

2. What are the different types of Memory we design and fabricate in VLSI?

There are several types of semiconductor memories, each with its own characteristics, advantages, and disadvantages. The most common types of semiconductor memories are:

i. SRAM: SRAM is a type of memory that uses flip-flops to store data. It is fast, has low power consumption, and is volatile SRAM is commonly used in cache memory, register files, and other high-speed applications.

ii. DRAM: DRAM is a type of memory that uses capacitors to store data. It is slower than SRAM but has higher density and lower cost. DRAM requires constant refreshing to maintain the data, and it is also volatile.

iii. Flash Memory: Flash memory is a non-volatile memory that can retain data even when the power is turned off. It uses floating-gate transistors to store data and can be erased and reprogrammed multiple times. Flash memory is commonly used in portable devices such as smartphones, USB drives, and digital cameras.

iv. EEPROM: EEPROM is a non-volatile memory that can be programmed and erased electrically. It is slower than flash memory but has higher endurance and can be programmed at the byte level. EEPROM is commonly used in small embedded systems.

v. FRAM: FRAM is a type of memory that uses ferroelectric materials to store data. It is fast, low power, and non-volatile.

vi. MRAM: MRAM or Magnetic Random Access Memory is a type of memory that uses magnetic fields to store data. It is fast, low power, and non-volatile.

vii. PCM : Phase-Change Memory or  PCM is a type of memory that uses phase-change materials to store data. It is fast, low power, and non-volatile. 

Overall, each type of semiconductor memory has its own strengths and weaknesses, and the choice of memory technology depends on the specific requirements of the application.

3. What are the embedded and external memories?

Embedded memory devices are  integrated on to the chip with the logic core, while external memory devices resides outside the chip. We all understand this as we all buy external memory for mobiles, external storage for storing movies and all right?

4. What is memory compiler ?

Memory compilers are  basically software tools and intellectual property of memory vendors. They automatically generates various kinds of memories depending on the customer requirement. Compilers support the generation of various memory capacities. 

Memory compilers use a set of pre-designed memory cell layouts, which are then combined and customized to create different types of memory circuits, such as SRAMs, DRAMs, ROMs, and flash memories. The customization process includes selecting the appropriate memory cell size, configuring the memory architecture, and optimizing the circuit for power, speed, and area. Memory compilers are widely used by chip designers because they can significantly reduce the time and cost of developing memory circuits, as well as improve their quality and reliability.

In practical situation, there is always a gap between the customers requirements and vendors portfolio and that part is addressed by a team of designers, application enginerrs, account managers and so on. An excellent team work with extra engineering effort can result into an optimized memory solution delivered to the customer. 

In order to reduce this engineering overhead and quality enhancement a more flexible memory compiler was in much demand and accordingly the generations of more evolved and developed compilers have been introduced into the market. 

5. What are core components of Memory Compiler:

Each memory compiler is a set of various, parameterized generators. These are basically core component of memory compilers and and each of them has very specific work to do. The components of a memory compilers are:

i. Memory Generator that generates memory cells with different sizes, operating conditions, and performance specifications.

ii. Design rules checker that checks the design against the foundry's design rules and design guidelines. This component ensures that the design meets the manufacturing requirements, such as metal pitch, minimum feature size, and via placement.

iii. Layout Generator generates the layout of the memory cells, considering the given set of design rules and constraints. This component also generates the necessary routing, such as power, ground, and signal lines.

iv. Schematic Generator & Netlister extracts a netlist which can be used for both LVS check and functional verification.

v. Function & Timing Model Generators responsible for gate level simulation, dynamic/static timing analysis and synthesis

vi. Characterization Engine characterises the generated memory cells using various simulation and modelling techniques. This component provides performance parameters, such as timing, power, and noise margins, to be used in the overall memory design.

vii. The memory compiler interface provides a user-friendly interface to input the design requirements and constraints, such as memory size, power, and performance requirements. It also provides feedback on the design status and any design rule violations.

viii. Memory BIST and Memory Verification Software test and verify  the generated memory cells. 

ix. Critical Path Generator are used for both circuit design and AC timing characterisation.

Overall, a memory compiler provides a high-level of automation to the memory design process, significantly reducing the design time, cost, and complexity.

6. How a memory compiler works ? 

A memory compiler works by automating the process of designing and manufacturing memory circuits. Here is a general overview of how a memory compiler works:

i. Design specification: The chip designer provides the design specification, which includes the memory type, capacity, speed, power, and area requirements.

ii. Memory Cell Library: The memory compiler uses a pre-designed memory cell library, which contains a set of pre-characterized memory cells with different sizes, layouts, and operating characteristics.

iii. Memory architecture: The memory compiler selects and configures the appropriate memory architecture, which includes the number of memory banks, wordlines, bitlines, sense amplifiers, decoders, and other control circuits.

iv. Circuit layout: The memory compiler generates the circuit layout by placing and connecting the memory cells and control circuits based on the selected architecture and the design rules of the target manufacturing process.

v. Verification: The memory compiler verifies the circuit layout for functionality, timing, power, and manufacturability, using a set of simulation, verification, and optimization tools.

vi. Output generation: The memory compiler generates the output files, which include the circuit layout, timing models, power models, and test patterns, in the required format for the target manufacturing process.

Overall, the memory compiler takes the design specification provided by the chip designer and automates the process of creating a customised memory circuit layout, optimising it for performance, power, and area, and verifying its correctness and manufacturability.

7.  Who uses memory compiler?

Memory compilers are mainly used by semiconductor companies, chip designers, and integrated circuit (IC) manufacturers to automate the design and manufacturing process of memory circuits. This includes companies that produce microprocessors, graphics processors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and other types of integrated circuits that contain memory components.

Memory compilers are particularly useful for companies that need to design and manufacture large volumes of memory circuits, such as DRAMs and flash memories, because they can significantly reduce the time and cost of developing these circuits. Memory compilers are also used by companies that need to create custom memory circuits with specific performance, power, and area requirements.

Overall, the use of memory compilers is widespread in the semiconductor industry, and they have become an essential tool for designing and manufacturing memory circuits.

 8. Which are the best memory compilers available in   market?

i. Synopsys DesignWare Memory Compiler is a widely used memory compiler that supports a wide range of memory types, such as SRAMs, ROMs, and flash memories. It offers a high degree of automation, customization, and optimization, as well as advanced verification and characterization capabilities. 

ii. Cadence Memory Compiler is another popular memory compiler that provides a comprehensive set of tools for designing and verifying memory circuits. It supports a wide range of memory types, including SRAMs, DRAMs, ROMs, and flash memories, and offers a high degree of customization, optimization, and verification.

iii. Arm Artisan Memory Compiler is a memory compiler developed by Arm Holdings, a leading semiconductor IP provider. It supports a wide range of memory types, including SRAMs, DRAMs, ROMs, and flash memories, and offers a high degree of automation, customization, and optimization, as well as advanced verification and characterization capabilities.

iv. Mentor Graphics Embedded Memory IP is a memory compiler that provides a range of pre-designed memory IP blocks, including SRAMs, ROMs, and flash memories, that can be customized and optimized to meet specific design requirements. It offers a high degree of automation, customization, and optimization, as well as advanced verification and characterization capabilities.

Overall, there are many memory compilers available in the market, and the choice of a particular memory compiler depends on the specific design requirements, the target manufacturing process, and the design team's familiarity with the tool.

9. What is embedded memory?

Embedded memory is a type of memory that is integrated directly into an integrated circuit (IC) or chip, rather than being a separate component. Embedded memory is used to store data or instructions within the IC itself and is an essential component of many electronic devices, including microprocessors, digital signal processors (DSPs), and system-on-chip (SoC) designs.

There are several types of embedded memory, including static random-access memory (SRAM), dynamic random-access memory (DRAM), read-only memory (ROM), and flash memory. Each type of embedded memory has its own unique characteristics and is optimized for specific performance, power, and area requirements.

Embedded memory is typically designed using a memory compiler tool that can automate the process of designing and manufacturing memory circuits, as well as optimize them for performance, power, and area. The use of embedded memory can significantly reduce the size, cost, and power consumption of electronic devices, as well as improve their performance and reliability.

10. How embedded memory is different from others?

Embedded memory is different from standalone memory, because it is integrated directly into an IC, rather than being a separate component. Here are some key differences between embedded memory and other types of memory  based on some parameters like  Integration,  Customization,  Performance,  Cost.

i. Embedded memory is integrated directly into an IC , which means it takes up less physical space and has a smaller form factor than standalone memory. In contrast, standalone memory is a separate component that needs to be connected to the IC or chip using external pins or interfaces.

ii. Embedded memory is often designed and optimized specifically for a particular IC , which means it can be customized to meet the specific performance, power, and area requirements of the design. Standalone memory, on the other hand, is a standardized component that is not optimized for any particular design.

iii. Embedded memory can often provide faster access times and lower latency than standalone memory because it is integrated directly into the IC . However, standalone memory can provide higher bandwidth and larger capacity than embedded memory.

iv. Embedded memory can be more cost-effective than standalone memory because it eliminates the need for a separate memory component and the associated packaging, testing, and assembly costs. However, the cost-effectiveness of embedded memory depends on the specific design requirements and the manufacturing process.

Overall, embedded memory is an essential component of many electronic devices, and its integration into an IC provides several advantages over standalone memory in terms of size, customization, performance, and cost.

11. Do you know about OPENRAM?

OpenRAM is an open-source memory compiler that enables the design and customization of different types of memory modules, such as SRAM, DRAM and CAM. It is developed using the Python programming language and is licensed under the GNU General Public License (GPL).

OpenRAM includes a set of scripts and tools that can automate the process of designing memory circuits, from layout to verification. This can save designers time and effort by eliminating the need for manual design and optimization. OpenRAM also provides a user-friendly interface for designers to specify the memory parameters, such as size, speed, power, and area, and generate the corresponding memory circuit layout. It supports various process technologies and can be easily integrated into different design flows.

OpenRAM is widely used in academic and industrial research projects for developing memory circuits for various applications, such as microprocessors, graphics processors, and networking devices.

Find the video lecture on this topic here:


Courtesy : Image by www.pngegg.com