Memories, standard cells, and larger macro functions such as processor cores are all examples of these building blocks. Using pre-defined building blocks increases designer efficiency. The design process is one of assembly of the building blocks and verification that the collection of blocks used will satisfy the design requirements. Sophisticated EDA tools are used to create specific versions of the building blocks to address unique requirements. A memory compiler that creates the correct memory size for a given design is an example of this process. Descriptions of digital circuits expressed in high-level languages such as Verilog are automatically “compiled” into the logic elements needed to implement these functions. This is called logic synthesis and is another example of this process. The entire collection of design elements is then placed and routed on the silicon substrate using automated technology.
While this process is very efficient, it creates a circuit that is a “best fit” for the requirements based on the standard building blocks that are available. Sometimes, the “best fit” approach will not meet the goals of the design. For high-precision requirements, where the performance, accuracy, power, or size of the IC is critical, a custom IC design approach is needed.
A custom, or full-custom IC, design process uses unique building blocks that are created specifically for the function required. Many of the same tools are used in a custom IC design process that are used in the previously described semi-custom, or ASIC, design process. The difference is, the building blocks that are assembled are often custom built to deliver specific capabilities. An IC layout editor is an important tool for this kind of design process. The methods used to assemble these devices can also be different to accommodate the unique requirements of the IC or block being developed.