CN112001136A - Software implementation method for automatically generating memory layout and netlist - Google Patents
Software implementation method for automatically generating memory layout and netlist Download PDFInfo
- Publication number
- CN112001136A CN112001136A CN202010840904.0A CN202010840904A CN112001136A CN 112001136 A CN112001136 A CN 112001136A CN 202010840904 A CN202010840904 A CN 202010840904A CN 112001136 A CN112001136 A CN 112001136A
- Authority
- CN
- China
- Prior art keywords
- layout
- memory
- unit
- netlist
- mcdl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
The invention relates to a software implementation method for automatically generating a layout and a netlist of a memory, which realizes a memory splicing description language MCDL, can complete memory splicing of any complex structure by using the language and finally obtains layout and netlist output. The characteristics of defining the memory splicing by MCDL are as follows: 1) the layout splicing does not need to define absolute coordinates, and the coordinates of all units are automatically calculated through topological relations between adjacent units. 2) And automatically extracting port information from the bottom layout unit to the top unit. 3) The layout ring structure is automatically generated, unit functions of non-key parts are shielded, and simulation operation amount is reduced. 4) And the netlist splicing is automatically connected with the ports with the same name.
Description
Technical Field
The invention relates to the field of memory design in integrated circuit aided design software tools.
Background
Memory (Memory) design is a specialized area in the development of integrated circuit chips (ICs), and includes SRAM, DRAM, ROM, Register File, Flash, and the like. In order to enable the memory to be used in multiple chips, the memory is generally divided into a plurality of bottom layer cells (Leaf cells), and then the cells are spliced into a memory with a specified size according to a certain splicing rule. Its capacity and structure are generally specified by the following variables: capacity of Words (Words), number of Bits (Bits) per word, and width of multiplexer (Mux).
The Memory layout and netlist automatic generation software (Memory Compiler) is a software tool for completing the splicing of corresponding memories according to word, Bits and Mux specified by a user. The output of the result comprises a GDSII layout and a CDL netlist.
The invention realizes a Memory splicing Description Language (MCDL), which is called MCDL for short, and can be used for completing the Memory splicing of any complex structure to finally obtain the layout and netlist output.
Disclosure of Invention
FIG. 1 is a flow diagram of a process for memory compilation using the present invention. The program first reads in the concatenation definition described by the MCDL statement and loads leaf element information from the specified standard GDS/CDL format file. Then, the program completes the memory splicing according to the leaf unit information and the splicing rule defined by MCDL according to the capacity size (Word, Bits) and the structure (Mux) parameters specified by the user. The GDS and CDL files of the memory are finally output.
MCDL is based on TCL language, provides basic syntax structure support such as variable access, expression calculation, and control structure (if, while, for), and provides the following extended commands for memory splicing:
1) MCDL _ Place < cell >: < rotate > < side >: and splicing the layout cell to the current cell. The placement of a layout cell is determined by two parameters, coordinates (x, y) and rotation direction rotate. There are 8 kinds of rotation directions, be R0 (irrotational), R90 (anticlockwise rotation 90 degrees), R180 (rotation 180 degrees), R270 (rotation 270 degrees), MX (along Y axle mirror image), MXR90 (follow Y axle mirror image earlier and rotate 90 degrees again), MY (follow X axle mirror image), MYR90 (follow X axle mirror image earlier and rotate 90 degrees again), the coordinate needs adjust according to the rotation direction. The MCDL _ Place command is characterized in that the coordinates are not required to be considered in the unit placement, but only in the upper, lower, left or right (side) of the existing graph, and the program automatically calculates the coordinates and keeps the coordinates of the lower left corner of the current unit to be (0, 0) all the time.
3) MCDL _ MapBorderLabel < pattern > < pin-list >: and extracting the Label of the bottom unit of the layout, and mapping the Label to be an external port. The ordinary memory compiler only provides a layer of Label mapping, and finally forms an external port to be subjected to multilayer Label mapping, while the MCDL command is characterized in that the external port definition can be completed only by one-time mapping. The command first looks up the Label in the Leaf unit according to the pattern, which is a regular expression, e.g., D × matches D <0>, D <1>, D <2>. D [0-3] matches D0, D1, D2, D3. The labels conforming to the pattern are extracted and arranged in the order of coordinates from small to large, so that the labels at the bottom and top of the memory are arranged from left to right, and the labels at the left and right of the memory are arranged from bottom to top. The arranged Label and the pin-list correspond to each other one by one in sequence, and the external ports are generated at the same position. For example, the Label extraction results a0, a1, a0, a1, a2, and a < 3: 4>, A < 0: 2>, then external port a <3> is generated at the first a0, external port a <4> is generated at the first a1, external port a <0> is generated at the second a0, external port a <1> is generated at the second a1, and external port a <2> is generated at a 2.
4) MCDL _ Donut bitcell-row. -. col.: and generating a donut circle ring of the layout. The word bit unit of the memory is called bitcell, and the main part of the memory except for the control decoding circuit is a bit array formed by splicing bitcells. For a large memory, the process of extracting its timing characteristics through simulation can be time consuming. Because the time sequence characteristics are only related to the outer ring bitcell of the bit array, the middle part of the bit array is hollowed in a simulation used layout, namely the Mos tube in the middle part is removed, and only the connecting line is reserved. The MCDL _ Donut command is designed to handle this situation, and only one command is needed to form a Donut circle of the layout. Row/col in the command controls which cells to reserve and empty, e.g., -row 151 denotes row 1 and row 7 out of 7 rows to reserve, and 5 in the middle to empty; col 171 denotes the 1 st and 9 th of the 9 remaining columns, hollowing out the middle 7 columns; the two are combined to show that the outer circle in the array is reserved, and the bitcell in the middle is hollowed out.
5) MCDL _ Connect < cell > -pin > net.: and splicing the netlist cell. Port connections are specified by-pin pin ═ net, e.g., -pin DIN < 0: 3> d0 d1 d2 d3, which means that port DIN <0> is connected to net d0, port DIN <1> is connected to net d1, port DIN <2> is connected to net d2, and port DIN <3> is connected to net d 3. The command is characterized in that if the port name is the same as the net name, the unwritten can be ignored. In a memory system, most of the line net names and port names are the same, such as CLK, WEB, etc., so this feature greatly simplifies the splice definition.
6) MCDL _ DefPin < pin >: ports of the netlist cells are defined.
7) MCDL _ LoadLeafCell < gds >/< cdl >: and loading the designated Lead unit layout or netlist. The layout units are stored in a GDS format, and each unit comprises unit name, unit size, contained graph, Label and other information. Netlist cells are stored in CDL format, with each cell including information such as cell name, port list, etc.
Drawings
FIG. 1: memory compiler flow diagram.
FIG. 2: MCDL _ Place command example. The graph corresponds to the command:
MCDL_Place A:R0
MCDL_Place B:MX Right
MCDL_Place C:MY Bottom
firstly, the unit A is placed, no rotation operation is performed, and after the operation, the current unit only comprises the unit A and coordinates (0, 0) at the lower left corner. And then placing a unit B on the right side of the unit A, rotating the unit B according to the Y axis before placing, checking the height of the unit B is consistent with that of the unit A by a program, checking that the current unit comprises the unit A and the unit B after operation, wherein the height is consistent with that of the unit A, the width is the width of the unit A plus the unit B, and the lower left corner coordinates (0, 0). And then placing a unit C below the current unit, rotating the unit C according to the X axis before placing, checking the width of the unit C is consistent with that of the current unit by a program, and after operation, the current unit comprises a unit A, a unit B and a unit C, wherein the height is equal to the height of the unit A plus the height of the unit B, the width is equal to the width of the unit A plus the width of the unit B, and the lower left corner coordinate is still (0, 0).
After GDS is output, cell A coordinates (0, H)C) (coordinate 1 in the figure), direction of rotation R0; unit B coordinate (W)A+WB,HC) (coordinate 2 in the figure) the direction of rotation MX; cell C coordinate (0, 0) (coordinate 1 in the figure), rotation direction MY. Wherein HCRepresents the height of the unit C, WAAnd WBRepresenting the width of cells a and B, respectively.
FIG. 3: example of the MCDL _ mapbedderlabel command. The graph corresponds to the command:
MCDL_MapBorderLabel DI D<0:6>
MCDL_MapBorderLabel DO Q<0:6>
MCDL_MapBorderLabel A*A<6:7>,A<3:5>,A<0:2>
the lower part of the memory is shown in the figure, and the memory consists of 4 RD units, one YDECH unit, one YDECL unit, 1 XDEC unit and 3 RD units from left to right, wherein each RD unit leads out one DI and one DO and has two data signals, the YDECH unit leads out two address signals A0 and A1, the YDECL unit leads out three address signals A0-A2, and the XDECL unit leads out three address signals A0-A2.
Command extraction of DI as 6 data input signals D < 0: 6>, 0-6 are arranged from left to right; extract DO as 6 data output signals Q < 0: 6>, 0-6 are arranged from left to right; extracting a as 8 address signals, since the address signals are not monotonically increasing from left to right, the order of arrangement a6, a7, A3, a4, a5, a0, a1, a2 is to be specified in the command.
FIG. 4: MCDL _ Donut command example. The graph corresponds to the command:
MCDL_MakeDonutCell CELL6T poly diff nsdm psdm
MCDL_Donut CELL6T-row‘1 161’-col‘1 16 1’
the memory CELL array is CELL6T, which is 18 × 15 memory CELL array, and there is a row of strap CELLs in every 5 CELLs in the array direction of the CELL array, and they are not counted in the CELL array. The first command first generates a donut CELL for CELL6T that removes all the graphics in the poly, diff, nsdm, and psdm layers (i.e., removes the Mos tube), and the other metal layer graphics are preserved (i.e., preserves the links). The second command generates a circular loop, all CELL6T in the middle are replaced by donut CELLs, but the CELL6T CELLs in the first row (bottom), last row (top), first column (left), and last column (right) are preserved.
FIG. 5: MCDL _ Connect command example. The graph corresponds to the command:
MCDL_DefPin D<0:6>,Q<0:6>,A<0:4>,CLK,WEB,OEB
MCDL_Connect XDEC-pin A=>A<0:1>
MCDL_Connect YDEC-pin A=>A<2:4>
MCDL_Connect WINGL-pin D=>D<0:3>-pin Q=>Q<0:3>
MCDL_Connect WINGR-pin D=>D<4:6>-pin Q=>Q<0:3>
DefPin defines the external port: data input D < 0: 6>, data output Q < 0: 6>, address signal a < 0: 4>, control signals CLK, WEB, and OEB. The Connect signal connects 4 units XDEC, YDEC, WINGL, and WINGR. The 3 control signals are identical and therefore are not described in the splice definition. The BL, WL signal definition between WING and DEC is also the same and may be omitted in the concatenation. The address line is divided into two parts, A < 0: 1> and A < 2: 4>, respectively sending the signals to an X decoder XDEC and a Y decoder YDEC; the data line is also divided into two parts, D/Q < 0: 3> and D/Q < 4: 6> are respectively sent into the left array WINGL and the right array WINGR. The connection of the address lines and the data lines needs to be described in the Connect command.
The specific implementation mode is as follows:
the automatic generation software of the memory layout and the netlist is realized by a Tcl language, and a C + + realized function library is provided for each MCDL extended command. The software implementation process is as follows:
in the first step, a user writes an MCDL file of a piece of memory, specifies a GDS/CDL file of a Leaf unit in the MCDL file, splices the memory by using MCDL _ Place and MCDL _ Connect, and presents and uses parameters related to the capacity size and structure of the memory, such as Word, Bits, Mux and the like in a variable form.
In the second step, the user specifies the size of the specific memory to be generated and the values of the configuration parameters, for example, Word 512, Bits 8, and Mux 4, i.e., 512 words are generated, each Word has 8 Bits, and the memory has 4K Bits and uses 4-way multiplexers, i.e., 512/4 128 rows of Word lines and 8x 4 columns of bit lines. For each version of the MCDL described memory, a variety of specific memories of specified size and structure within the effective range can be generated.
And thirdly, automatically generating software of the memory layout and the netlist according to the MCDL and the parameters to splice and generate a memory with a specified size and structure, outputting the result layout as a GDS format file, and outputting the result netlist as a CDL format file.
Claims (1)
1. A syntax of Memory mosaic Description Language (Memory Compiler Description Language) abbreviated as mcdl is defined, a software tool can generate a layout and a netlist of any complex structure through the syntax according to requirements, and the syntax is characterized in that:
1.1. absolute coordinates do not need to be defined in the layout of the units, and the coordinates of all the units are automatically calculated through topological relations between adjacent units;
1.2. the port information of the bottom unit in the layout can be automatically extracted to the top unit and automatically named to be used as an external interface of the memory;
1.3, in order to improve the simulation efficiency, a layout automatically generates a unit of a circular ring, the unit function of a non-key part is shielded, and the operation amount is reduced;
and 1.4, automatically connecting ports with the same name in netlist splicing, and simplifying netlist definition.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010840904.0A CN112001136A (en) | 2020-08-20 | 2020-08-20 | Software implementation method for automatically generating memory layout and netlist |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010840904.0A CN112001136A (en) | 2020-08-20 | 2020-08-20 | Software implementation method for automatically generating memory layout and netlist |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112001136A true CN112001136A (en) | 2020-11-27 |
Family
ID=73472715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010840904.0A Pending CN112001136A (en) | 2020-08-20 | 2020-08-20 | Software implementation method for automatically generating memory layout and netlist |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112001136A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117272916A (en) * | 2023-11-21 | 2023-12-22 | 杭州广立微电子股份有限公司 | Automatic layout generation method, device, equipment and readable storage medium |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129483A (en) * | 2010-01-20 | 2011-07-20 | 天津蓝海微科技有限公司 | Method for automatically generating test vector of design rule checking (DRC) rule file |
CN103106294A (en) * | 2012-12-24 | 2013-05-15 | 西安华芯半导体有限公司 | Territory programming method for static random access memory compiler |
AU2012355904A1 (en) * | 2011-12-21 | 2014-06-12 | Boston Scientific Neuromodulation Corporation | A system for an implantable medical device having an external charger coupleable to accessory charging coils |
CN104376137A (en) * | 2013-08-15 | 2015-02-25 | 天津蓝海微科技有限公司 | Process for constructing storage compiling software |
US20180350144A1 (en) * | 2018-07-27 | 2018-12-06 | Yogesh Rathod | Generating, recording, simulating, displaying and sharing user related real world activities, actions, events, participations, transactions, status, experience, expressions, scenes, sharing, interactions with entities and associated plurality types of data in virtual world |
CN209897359U (en) * | 2019-01-18 | 2020-01-03 | 东莞市怡德电子科技有限公司 | PCB layout structure of programmable logic controller |
-
2020
- 2020-08-20 CN CN202010840904.0A patent/CN112001136A/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129483A (en) * | 2010-01-20 | 2011-07-20 | 天津蓝海微科技有限公司 | Method for automatically generating test vector of design rule checking (DRC) rule file |
AU2012355904A1 (en) * | 2011-12-21 | 2014-06-12 | Boston Scientific Neuromodulation Corporation | A system for an implantable medical device having an external charger coupleable to accessory charging coils |
CN103106294A (en) * | 2012-12-24 | 2013-05-15 | 西安华芯半导体有限公司 | Territory programming method for static random access memory compiler |
CN104376137A (en) * | 2013-08-15 | 2015-02-25 | 天津蓝海微科技有限公司 | Process for constructing storage compiling software |
US20180350144A1 (en) * | 2018-07-27 | 2018-12-06 | Yogesh Rathod | Generating, recording, simulating, displaying and sharing user related real world activities, actions, events, participations, transactions, status, experience, expressions, scenes, sharing, interactions with entities and associated plurality types of data in virtual world |
CN209897359U (en) * | 2019-01-18 | 2020-01-03 | 东莞市怡德电子科技有限公司 | PCB layout structure of programmable logic controller |
Non-Patent Citations (2)
Title |
---|
DARVINDER SINGH 等: "On-The-Fly Donut Formation in Compiled Memory", 《2015 28TH INTERNATIONAL CONFERENCE ON VLSI DESIGN AND 2015 14TH INTERNATIONAL CONFERENCE ON EMBEDDED SYSTEMS》 * |
李阳: "嵌入式SRAM编译器的设计", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117272916A (en) * | 2023-11-21 | 2023-12-22 | 杭州广立微电子股份有限公司 | Automatic layout generation method, device, equipment and readable storage medium |
CN117272916B (en) * | 2023-11-21 | 2024-04-19 | 杭州广立微电子股份有限公司 | Automatic layout generation method, device, equipment and readable storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6035106A (en) | Method and system for maintaining hierarchy throughout the integrated circuit design process | |
US5838165A (en) | High performance self modifying on-the-fly alterable logic FPGA, architecture and method | |
KR100264487B1 (en) | System-on-chip layout compilation | |
US8959472B1 (en) | Considering compatibility of adjacent boundary regions for standard cells placement and routing | |
CN111433758B (en) | Programmable operation and control chip, design method and device thereof | |
KR20200069300A (en) | Image preprocessing for generalized image processing | |
US20090290444A1 (en) | Semiconductor device | |
KR20030016210A (en) | Method for implementing a physical design for a dynamically reconfigurable logic circuit | |
US20040111690A1 (en) | Method for composing memory on programmable platform devices to meet varied memory requirements with a fixed set of resources | |
US6530071B1 (en) | Method and apparatus for tolerating defects in a programmable logic device using runtime parameterizable cores | |
US8051400B2 (en) | Modifying integrated circuit layout | |
US20080109782A1 (en) | Method and system for pin assignment | |
US20090106716A1 (en) | Various methods and apparatuses for memory modeling using a structural primitive verification for memory compilers | |
US8185851B2 (en) | Memory building blocks and memory design using automatic design tools | |
US8397190B2 (en) | Method for manipulating and repartitioning a hierarchical integrated circuit design | |
CN111916120B (en) | Bandwidth boosted stacked memory | |
US10831960B1 (en) | Selectable reconfiguration for dynamically reconfigurable IP cores | |
Gharsalli et al. | Automatic generation of embedded memory wrapper for multiprocessor SoC | |
US7761829B1 (en) | Graphical specification of relative placement of circuit cells for repetitive circuit structures | |
CN112001136A (en) | Software implementation method for automatically generating memory layout and netlist | |
US7768840B1 (en) | Memory modeling using an intermediate level structural description | |
US6848084B1 (en) | Method and apparatus for verification of memories at multiple abstraction levels | |
US11676675B2 (en) | Contact layer traces to program programmable ROM | |
US7418675B2 (en) | System and method for reducing the power consumption of clock systems | |
US6598207B1 (en) | Software for converting power delivery interconnect modeling connectivity maps to simulation ready input |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20201127 |
|
WD01 | Invention patent application deemed withdrawn after publication |