From f69a20323f2aab55954a10a308a67c21b5d55a8d Mon Sep 17 00:00:00 2001 From: Orlandic Lara Date: Wed, 18 Dec 2024 16:05:42 +0100 Subject: [PATCH 1/3] update mcu-gen to automatically calculate pad offsets --- pad_cfg.hjson | 32 +++++++-- util/mcu_gen.py | 177 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 195 insertions(+), 14 deletions(-) diff --git a/pad_cfg.hjson b/pad_cfg.hjson index b0720c2ec..59ef27643 100644 --- a/pad_cfg.hjson +++ b/pad_cfg.hjson @@ -3,12 +3,12 @@ // SPDX-License-Identifier: SHL-0.51 // Derived from Occamy: https://github.com/pulp-platform/snitch/blob/master/hw/system/occamy/src/occamy_cfg.hjson // -// Pads configuration for core-v-mini-mcu. Read by mcu_gen.py. +// Pad configuration for core-v-mini-mcu. Read by mcu_gen.py. // -// The pads contains the list of all the pads available in the design. +// The pads object contains the list of all the pads available in the design. // Each pad is defined by its name and can have the following attributes: // num: (mandatory) - the number of pads of this type -// type: (mandatory) - the type of the pad +// type: (mandatory) - the type of the pad // num_offset: (optional) - the offset to the first pad of this type (default 0) // mapping: (optional) - the mapping of the pad in the design. Useful for ASICs (default top) // active: (optional) - the active level of the pad (default high) @@ -18,15 +18,33 @@ // keep_internal: (optional) - keep the pad internal to the design (default False) // layout_attributes: (optional) - collection of attributes related to the physical (ASIC) layout of the pads // index: (mandatory) index of the pad on its side of the I/O ring +// cell: (mandatory) - specific cell to use for the pad +// bondpad: (mandatory) - specific bondpad to use // orient: (optional) - orientation of the pad -// cell: (mandatory for type "supply") - specific cell to use if not a default pad cell (ex. for VDD/VSS pads) -// offset: (optional) - offset from edge (in um) -// skip: (optional) - distance from neighboring pad (in um) +// offset: (optional) - offset from edge (in um). If this parameter is not defined, the offsets are calculated automatically using the physical_attributes (see below). +// skip: (optional) - distance from neighboring pad (in um). If this parameter is not defined, the skips are calculated automatically using the physical_attributes (see below). // // Add this field at the same level of pads (not inside) if you want to define PADs attributes // attributes: { // bits: 7:0 -// resval: 0x3 +// }, +// Add this field at the same level of pads (not inside) if you want to define physical design attributes (ex. chip width/length, pad dimensions) in order to calculate pad offsets automatically +// physical_attributes: (optional) { +// floorplan_dimensions: (mandatory) - Dimensions of the design floorplan +// width: (mandatory) - Width of chip (in um) +// length: (mandatory) - Length of chip (in um) +// edge_offset: (mandatory) - Offsets from the edge of the design to the specified objects +// bondpad: (mandatory) - Distance (in um) from edge to bondpad +// pad: (mandatory) - Distance (in um) from edge to pad +// spacing: (mandatory) - Chosen spacing (in um) between objects +// bondpad: (mandatory) - Spacing between bondpads. Make sure the minimum bondpad pitch of the packaging supplier is not violated. +// dimensions: (mandatory) - Dimensions of bondpads and pads in the design. These should exactly match the names in the "cell" field of the "layout_attributes". Found in the respective LEF files of each object. +// bondpad_cell_name_to_find_in_LEF_file: (mandatory) Not the actual name of the attribute, but a placeholder for a bondpad name (ex. PAD...) +// width: (mandatory) - Width in um +// length: (optional) - Length in um +// pad_cell_name_to_find_in_LEF_file: (mandatory) Not the actual name of the attribute, but a placeholder for a pad cell name (ex. PVDD...). +// width: (mandatory) - Width in um +// length: (optional) - Length in um // }, { diff --git a/util/mcu_gen.py b/util/mcu_gen.py index c187bf549..b5a1c11ab 100755 --- a/util/mcu_gen.py +++ b/util/mcu_gen.py @@ -210,7 +210,7 @@ def create_pad_ring_bonding(self): self.pad_ring_bonding_bonding += ' .' + self.signal_name + 'oe_i(' + oe_internal_signals + '),' self.x_heep_system_interface += ' inout wire ' + self.signal_name + 'io,' - def __init__(self, name, cell_name, pad_type, pad_mapping, index, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, has_attribute, attribute_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip): + def __init__(self, name, cell_name, pad_type, pad_mapping, index, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, has_attribute, attribute_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip): self.name = name self.cell_name = cell_name @@ -244,6 +244,7 @@ def __init__(self, name, cell_name, pad_type, pad_mapping, index, pad_active, pa self.layout_index = pad_layout_index self.layout_orient = pad_layout_orient self.layout_cell = pad_layout_cell + self.layout_bondpad = pad_layout_bondpad self.layout_offset = pad_layout_offset self.layout_skip = pad_layout_skip @@ -305,6 +306,140 @@ def write_template(tpl_path, outdir, outfile, **kwargs): else: raise FileNotFoundError +def prepare_pads_for_layout(total_pad_list, physical_attributes): + """ + Separate pads into pad lists for the top, bottom, left, and right pads and order them according to their layout_index attribute, and set their positions on the floorplan. + """ + + # Separate pads according to side + top_pad_list = [] + bottom_pad_list = [] + right_pad_list = [] + left_pad_list = [] + for pad in total_pad_list: + if (pad.pad_mapping == "top"): + top_pad_list.append(pad) + elif (pad.pad_mapping == "bottom"): + bottom_pad_list.append(pad) + elif (pad.pad_mapping == "right"): + right_pad_list.append(pad) + elif (pad.pad_mapping == "left"): + left_pad_list.append(pad) + + # Order pads according to layout index + top_pad_list.sort(key=lambda x: x.layout_index) + bottom_pad_list.sort(key=lambda x: x.layout_index) + left_pad_list.sort(key=lambda x: x.layout_index) + right_pad_list.sort(key=lambda x: x.layout_index) + + # Calculate pad offsets and check whether requested pad configuration fits in the floorplan + top_pad_list, bondpad_offset_top = set_pad_positions(top_pad_list, physical_attributes) + bottom_pad_list, bondpad_offset_bottom = set_pad_positions(bottom_pad_list, physical_attributes) + left_pad_list, bondpad_offset_left = set_pad_positions(left_pad_list, physical_attributes) + right_pad_list, bondpad_offset_right = set_pad_positions(right_pad_list, physical_attributes) + + bondpad_offsets = { + "top": bondpad_offset_top, + "bottom": bondpad_offset_bottom, + "left": bondpad_offset_left, + "right": bondpad_offset_right + } + + return top_pad_list, bottom_pad_list, left_pad_list, right_pad_list, bondpad_offsets + +def set_pad_positions(pad_list, physical_attributes): + """Calculate the `offset` and `skip` attributes of the pads such that the bondpads are centered on each side and the pads are aligned with their respective bondpads. + Perform checks to make sure the pads can all fit on the requested side without violating design constraints or exceeding layout margins. + """ + + # Ensure the physical attributes were properly set in the pad config file + try: + fp_width = float(physical_attributes["floorplan_dimensions"]["width"]) + fp_length = float(physical_attributes["floorplan_dimensions"]["length"]) + edge_to_bp = float(physical_attributes["edge_offset"]["bondpad"]) + edge_to_pad = float(physical_attributes["edge_offset"]["pad"]) + bp_spacing = float(physical_attributes["spacing"]["bondpad"]) + pad_dims = physical_attributes["dimensions"] + except KeyError: + print("ERROR: Please set all of the mandatory fields of the physical_attributes in the pad config file.") + return + + # Determine which dimension we are dealing with + side = pad_list[0].pad_mapping + if ((side == "top") | (side == "bottom")): + side_length = fp_width + else: + side_length = fp_length + + # Calculate space occupied by bondpads on the designated side of the chip + bp_space = 0 + for pad in pad_list: + bp_cell = pad.layout_bondpad + if bp_cell is not None: + # Get bondpad width from physical attributes + try: + bp_width = float(pad_dims[bp_cell]["width"]) + except KeyError: + print("ERROR: Width not defined for bondpad cell {0} of pad {1}".format(bp_cell, pad.cell_name)) + return + else: + print("ERROR: A bondpad cell is not defined for pad {1}".format(pad.cell_name)) + return + bp_space += bp_width + bp_space += bp_spacing*(len(pad_list)-1) + + # Check if the bondpads are able to fit on the side + extra_space = side_length - bp_space - 2*edge_to_bp + if (extra_space<0): + print("ERROR: Bondpads cannot fit on side {0}. Either reduce bondpad spacing or move some pads to another side".format(side)) + + # Calculate distance from edge to first bondpad (i.e. bondpad offset) to center the pads + bp_offset = extra_space/2 + + # Calculate skip parameter between one pad and the next to center the pads + for i, pad in enumerate(pad_list): + + # Get bondpad width from physical attributes + bp_cell = pad.layout_bondpad + bp_width = float(pad_dims[bp_cell]["width"]) + + if (i>0): + last_bp_cell = pad_list[i-1].layout_bondpad + last_bp_width = float(pad_dims[last_bp_cell]["width"]) + + # Get pad width from physical attributes + pad_cell = pad.layout_cell + if pad_cell is not None: + try: + pad_width = float(pad_dims[pad_cell]["width"]) + except KeyError: + print("ERROR: Width not defined for pad cell {0} of pad {1}".format(pad_cell, pad.cell_name)) + return + else: + print("ERROR: A pad cell is not defined for pad {1}".format(pad.cell_name)) + return + + if (i>0): + last_pad_cell = pad_list[i-1].layout_cell + if pad_cell is not None: + try: + last_pad_width = float(pad_dims[last_pad_cell]["width"]) + except KeyError: + print("ERROR: Width not defined for pad cell {0} of pad {1}".format(last_pad_cell, pad_list[i-1].cell_name)) + return + else: + print("ERROR: A pad cell is not defined for pad {1}".format(pad_list[i-1].cell_name)) + return + if (i==0)&(pad.layout_offset is None)& (pad.layout_skip is None): + pad.layout_offset = bp_offset - (edge_to_pad - edge_to_bp) + (bp_width/2) - (pad_width/2) + + # If the layout/skip of the pads is not predefined, calculate automatically + if (pad.layout_offset is None) & (pad.layout_skip is None): + pad.layout_skip = (last_bp_width + bp_width)/2 + bp_spacing - (last_pad_width + pad_width)/2 + + return pad_list, bp_offset + + def main(): parser = argparse.ArgumentParser(prog="mcugen") parser.add_argument("--cfg_peripherals", @@ -682,6 +817,11 @@ def len_extracted_peripherals(peripherals): except KeyError: pad_layout_cell = None + try: + pad_layout_bondpad = pads[key]['layout_attributes']['bondpad'] + except KeyError: + pad_layout_bondpad = None + try: pad_layout_offset = pads[key]['layout_attributes']['offset'] except KeyError: @@ -722,13 +862,13 @@ def len_extracted_peripherals(peripherals): except KeyError: pad_skip_declaration_mux = False - p = Pad(pad_mux, '', pads[key]['mux'][pad_mux]['type'], pad_mapping, 0, pad_active_mux, pad_driven_manually_mux, pad_skip_declaration_mux, [], pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip) + p = Pad(pad_mux, '', pads[key]['mux'][pad_mux]['type'], pad_mapping, 0, pad_active_mux, pad_driven_manually_mux, pad_skip_declaration_mux, [], pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip) pad_mux_list.append(p) if pad_num > 1: for p in range(pad_num): pad_cell_name = "pad_" + key + "_" + str(p+pad_offset) + "_i" - pad_obj = Pad(pad_name + "_" + str(p+pad_offset), pad_cell_name, pad_type, pad_mapping, pad_index_counter, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip) + pad_obj = Pad(pad_name + "_" + str(p+pad_offset), pad_cell_name, pad_type, pad_mapping, pad_index_counter, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip) if not pad_keep_internal: pad_obj.create_pad_ring() pad_obj.create_core_v_mini_mcu_ctrl() @@ -747,7 +887,7 @@ def len_extracted_peripherals(peripherals): else: pad_cell_name = "pad_" + key + "_i" - pad_obj = Pad(pad_name, pad_cell_name, pad_type, pad_mapping, pad_index_counter, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip) + pad_obj = Pad(pad_name, pad_cell_name, pad_type, pad_mapping, pad_index_counter, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip) if not pad_keep_internal: pad_obj.create_pad_ring() pad_obj.create_core_v_mini_mcu_ctrl() @@ -817,6 +957,11 @@ def len_extracted_peripherals(peripherals): pad_layout_cell = external_pads[key]['layout_attributes']['cell'] except KeyError: pad_layout_cell = None + + try: + pad_layout_bondpad = external_pads[key]['layout_attributes']['bondpad'] + except KeyError: + pad_layout_bondpad = None try: pad_layout_offset = external_pads[key]['layout_attributes']['offset'] @@ -858,13 +1003,13 @@ def len_extracted_peripherals(peripherals): except KeyError: pad_skip_declaration_mux = False - p = Pad(pad_mux, '', external_pads[key]['mux'][pad_mux]['type'], pad_mapping, 0, pad_active_mux, pad_driven_manually_mux, pad_skip_declaration_mux, [], pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip) + p = Pad(pad_mux, '', external_pads[key]['mux'][pad_mux]['type'], pad_mapping, 0, pad_active_mux, pad_driven_manually_mux, pad_skip_declaration_mux, [], pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip) pad_mux_list.append(p) if pad_num > 1: for p in range(pad_num): pad_cell_name = "pad_" + key + "_" + str(p+pad_offset) + "_i" - pad_obj = Pad(pad_name + "_" + str(p+pad_offset), pad_cell_name, pad_type, pad_mapping, external_pad_index, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip) + pad_obj = Pad(pad_name + "_" + str(p+pad_offset), pad_cell_name, pad_type, pad_mapping, external_pad_index, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip) pad_obj.create_pad_ring() pad_obj.create_pad_ring_bonding() pad_obj.create_internal_signals() @@ -880,7 +1025,7 @@ def len_extracted_peripherals(peripherals): else: pad_cell_name = "pad_" + key + "_i" - pad_obj = Pad(pad_name, pad_cell_name, pad_type, pad_mapping, external_pad_index, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_offset, pad_layout_skip) + pad_obj = Pad(pad_name, pad_cell_name, pad_type, pad_mapping, external_pad_index, pad_active, pad_driven_manually, pad_skip_declaration, pad_mux_list, pads_attributes!=None, pads_attributes_bits, pad_layout_index, pad_layout_orient, pad_layout_cell, pad_layout_bondpad, pad_layout_offset, pad_layout_skip) pad_obj.create_pad_ring() pad_obj.create_pad_ring_bonding() pad_obj.create_internal_signals() @@ -913,6 +1058,18 @@ def len_extracted_peripherals(peripherals): last_pad.remove_comma_io_interface() total_pad_list.append(last_pad) + # If layout parameters exist in the pad config file, compute the pad offset/skip parameters and order the pads on each side + try: + physical_attributes = obj_pad['physical_attributes'] + top_pad_list, bottom_pad_list, left_pad_list, right_pad_list, bondpad_offsets = prepare_pads_for_layout(total_pad_list, physical_attributes) + except KeyError: + physical_attributes = None + top_pad_list = None + bottom_pad_list = None + left_pad_list = None + right_pad_list = None + bondpad_offsets = None + kwargs = { "xheep" : xheep, "cpu_type" : cpu_type, @@ -945,6 +1102,12 @@ def len_extracted_peripherals(peripherals): "external_pad_list" : external_pad_list, "total_pad_list" : total_pad_list, "total_pad" : total_pad, + "right_pad_list" : right_pad_list, + "left_pad_list" : left_pad_list, + "top_pad_list" : top_pad_list, + "bottom_pad_list" : bottom_pad_list, + "physical_attributes" : physical_attributes, + "bondpad_offsets" : bondpad_offsets, "pad_constant_driver_assign" : pad_constant_driver_assign, "pad_mux_process" : pad_mux_process, "pad_muxed_list" : pad_muxed_list, From 37003ef18cf094d2736ab70797edd98f1d0f6902 Mon Sep 17 00:00:00 2001 From: Orlandic Lara Date: Thu, 19 Dec 2024 12:12:06 +0100 Subject: [PATCH 2/3] update pad config documentation --- docs/source/Configuration/PadConfiguration.md | 154 ++++++++++++++++++ docs/source/images/pad_spacing.png | Bin 0 -> 154367 bytes pad_cfg.hjson | 42 +---- 3 files changed, 155 insertions(+), 41 deletions(-) create mode 100644 docs/source/Configuration/PadConfiguration.md create mode 100644 docs/source/images/pad_spacing.png diff --git a/docs/source/Configuration/PadConfiguration.md b/docs/source/Configuration/PadConfiguration.md new file mode 100644 index 000000000..a330de70c --- /dev/null +++ b/docs/source/Configuration/PadConfiguration.md @@ -0,0 +1,154 @@ +# Pad Configuration +The pads of the design can be configured using `.hjson` files, which are then read by `mcu-gen` and template files to generate the pad ring RTL and back-end pad IO of the design. +An example pad configuration file is `pad_cfg.hjson`. + +## Basic pad configuration +Each pad of the design is defined as an object in the `pads` list. For example, +``` +clk: { + num: 1, + type: input + } +``` +defines a single input pad named `clk`. + +### Mandatory pad attributes +Pad objects must contain the following mandatory attributes: +* `num`: The number of pads to be defined. +* `type`: The type of pad. + +If the `num` attribute is greater than 1, then a group of pads is defined with names `_n`, where `n` is the sum of the index of the pad and the optional `offset` attribute. + +The possible values of `type` are `input`, `output`, `inout`, `bypass_input`, `bypass_output`, `bypass_inout`, and `supply`. The `supply` type is reserved for power pads like VDD and VSS. The `bypass` type pads are meant to be internal signals that are not included in the pad I/O of the top-level design, but are needed internally. For example, these can be pads that are inputs to the Core-V-Mini MCU. This is essentially the same functionality as the `keep_internal` optional parameter described below. + +### Optional pad attributes +Pad objects can contain the following optional attributes: +* `num_offset`: The offset of the naming of the first pad when `num`>1. Default: 0 +* `mapping`: The side of the design on which the pad is located (i.e. `top`, `bottom`, `right`, or `left`). Default: `top` +* `active`: Whether the pad is active-high (`high`) or active-low (`low`). Default: `high` +* `driven_manually`: Whether pads are driven manually or not. Default: `false` +* `mux`: Multiplexing of pads between two signals. +* `skip_declaration`: Whether or not to skip the definition of the pad in the Core-V-Mini MCU interface. Default: `false` +* `keep_internal`: Whether or not to keep the pad internally (i.e. for the MCU) but exclude it from the top-level pad I/O. + +The `driven_manually` attribute is the opposite of the `keep_internal` attribute and `bypass` pad type; it is meant for pads that are part of the top-level I/O interface but not part of the Core-V-Mini MCU interface. + +Multiplexing is when two signals share the same pad, which can save space on the I/O ring of the design. Here is an example of a multiplexed pad design: +``` +i2s_sck: { + num: 1, + type: inout + mux: { + i2s_sck: { + type: inout + }, + gpio_20: { + type: inout + } + } +``` +Please note that if any of the multiplexed signals is of type `inout`, then the global type should also be `inout`. + +### Pad layout attributes +When doing the physical layout of the design, it is useful to define certain attributes to be able to place each pad along the I/O ring of the design. These attributes can be defined in the `layout_attributes` dictionary. They are not mandatory for generating the pad RTL, but can be used, for example, to populate a `.io` file template that is read into the placement and routing tool. + +The `layout_attributes` dictionary of a given pad object contains the following mandatory attributes: +* `index`: The index of the pad on its side of the I/O ring. +* `cell`: Specific cell to use for the pad. You can get the value from the LEF file of the pads in the desired technology. +* `bondpad`: Specific bondpad cell to use. + +Additionally, the following optional attributes can be defined: +* `orient`: Orientation of the pad on the physical layout. Options: `R0|R90|R180|R270|MX|MX90|MY|MY90` +* `offset`: offset from edge (in um). If this parameter is not defined, the offsets are calculated automatically using the physical_attributes (see the Pad spacing section below). +* `skip`: distance from neighboring pad (in um). If this parameter is not defined, the skips are calculated automatically using the physical_attributes (see the Pad spacing section below). + + +### Example pad definition +To put it all together, here is an example of a pad with several of the above attributes defined: +``` +gpio_0: { + num: 1, + type: inout + mapping: left + layout_attributes: { + index: 8 + cell: PAD1 + orient: mx90 + bondpad: BONDPAD1 + } +} +``` + + +## Defining additional RTL inputs for all pad objects +Depending on the technology used, some pads cells require additional I/Os other than the basic input and output ports. The amount of additional information can be defined in the `bits` field of the `attributes` object as follows: +``` +attributes: { + bits: 7:0 +} +``` +Then, users can connect these additional attributes in RTL to the correct I/Os of the pad cell. + +## Physical attributes +An optional dictionary called `physical_attributes` can be added in order to trigger an `mcu-gen` funcionality that automatically calculates the ideal locations of the pads on the I/O ring. In order to compute these locations, the following attributes must be set: + +* `floorplan_dimensions`: Dimensions of the design floorplan (in um) + * `width`: Width of chip (in um) + * `length`: Length of the chip (in um) +* `edge_offset`: Offsets from the edge of the design to the specified objects (in um) + * `bondpad`: Distance (in um) from design edge to bondpad + * `pad`: Distance (in um) from design edge to pad +* `spacing`: Chosen spacing (in um) between objects + * `bondpad`: Spacing between bondpads. Make sure the minimum bondpad pitch of the packaging supplier is not violated. +* `dimensions`: Dimensions of bondpads and pads in the design. These should exactly match the names in the "cell" field of the "layout_attributes". Found in the respective LEF files of each object. + * `insert_cell_name_here`: Not the actual name of the attribute, but a placeholder for a bondpad name (ex. PAD...) + * `width`: Width in um + +The names of the cells in the `dimensions` field should exactly match those of the `layout_attributes`:`cell` or `layout_attributes`:`bondpad` parameter of each cell. Similarly, each `cell` or `bondpad` name defined among all of the pads should have dimensions associated in order for the pad offset calculation to work correctly. The width of the cell can be found in the LEF file of th pads/bondpads. + +Here is an example of the `physical_attributes` definition: +``` + physical_attributes: { + floorplan_dimensions: { + width: 2000 + length: 1500 + }, + edge_offset: { + bondpad: 20 + pad: 90 + }, + spacing: { + bondpad: 25 + }, + dimensions: { + # Bondpads + BONDPAD1: { + width: 50 + }, + BONDPAD2: { + width: 60 + }, + # Pads + PAD1: { + width: 40 + }, + PAD2: { + width: 45 + }, + } + } +``` + +### Pad spacing +The following section describes how the spacing between pads is performed. When placing a pad object along the I/O boundary, the `.io` file needs to know either the offset from the pad to the core ring (i.e. the `offset` parameter of the `layout_attributes` of the `pad` object), or the distance from the pad to its neighbor in the clockwise direction (i.e. the `skip` parameter of the `layout_attributes` of the `pad` object). Therefore, either the `offset` or `skip` attribute needs to be defined for all pads to automatically populate the `.io` file. These parameters can be defined one of two ways: +1. Manually defining the `offset` or `skip` attribute for each pad in its `layout_attributes`. +2. Leaving these attributes empty and allowing `mcu-gen` to calculate them automatically using the global `physical_attributes`. +Please note that a combination of the two can be performed; If a given `skip` or `offset` parameter is defined for a pad, then the calculated values are overwritten. This gives the designer flexibility to modify the pad locations on only one side, for example. + +![Physical attributes and layout attributes illustration](../images/pad_spacing.png) + +The automatic pad placement calculates the pad `offset` and `skip` parameters such that: +1. Bondpads are evenly spaced and centered on their respecitve side +2. Pads are centered with their respective bondpad + +Furthermore, `mcu-gen` displays an error message if the number of pads on a given side and the bondpad spacing cause the bondpads to overflow past the I/O boundary on a given side. A solution could be to move pads to a different side, or reduce the bondpad spacing parameter. However, make sure that the bondpad spacing does not exceed the minimum possible spacing defined by the packaging provider. diff --git a/docs/source/images/pad_spacing.png b/docs/source/images/pad_spacing.png new file mode 100644 index 0000000000000000000000000000000000000000..ea22c219403738dcc85f60187a92cb8596c498ac GIT binary patch literal 154367 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 G2~7aH1dn (mandatory) - the number of pads of this type -// type: (mandatory) - the type of the pad -// num_offset: (optional) - the offset to the first pad of this type (default 0) -// mapping: (optional) - the mapping of the pad in the design. Useful for ASICs (default top) -// active: (optional) - the active level of the pad (default high) -// driven_manually: (optional) - the pad is driven manually (default False) -// mux: (optional) - the muxing options for the pad -// skip_declaration: (optional) - skip the declaration of the pad in the top level (default False) -// keep_internal: (optional) - keep the pad internal to the design (default False) -// layout_attributes: (optional) - collection of attributes related to the physical (ASIC) layout of the pads -// index: (mandatory) index of the pad on its side of the I/O ring -// cell: (mandatory) - specific cell to use for the pad -// bondpad: (mandatory) - specific bondpad to use -// orient: (optional) - orientation of the pad -// offset: (optional) - offset from edge (in um). If this parameter is not defined, the offsets are calculated automatically using the physical_attributes (see below). -// skip: (optional) - distance from neighboring pad (in um). If this parameter is not defined, the skips are calculated automatically using the physical_attributes (see below). -// -// Add this field at the same level of pads (not inside) if you want to define PADs attributes -// attributes: { -// bits: 7:0 -// }, -// Add this field at the same level of pads (not inside) if you want to define physical design attributes (ex. chip width/length, pad dimensions) in order to calculate pad offsets automatically -// physical_attributes: (optional) { -// floorplan_dimensions: (mandatory) - Dimensions of the design floorplan -// width: (mandatory) - Width of chip (in um) -// length: (mandatory) - Length of chip (in um) -// edge_offset: (mandatory) - Offsets from the edge of the design to the specified objects -// bondpad: (mandatory) - Distance (in um) from edge to bondpad -// pad: (mandatory) - Distance (in um) from edge to pad -// spacing: (mandatory) - Chosen spacing (in um) between objects -// bondpad: (mandatory) - Spacing between bondpads. Make sure the minimum bondpad pitch of the packaging supplier is not violated. -// dimensions: (mandatory) - Dimensions of bondpads and pads in the design. These should exactly match the names in the "cell" field of the "layout_attributes". Found in the respective LEF files of each object. -// bondpad_cell_name_to_find_in_LEF_file: (mandatory) Not the actual name of the attribute, but a placeholder for a bondpad name (ex. PAD...) -// width: (mandatory) - Width in um -// length: (optional) - Length in um -// pad_cell_name_to_find_in_LEF_file: (mandatory) Not the actual name of the attribute, but a placeholder for a pad cell name (ex. PVDD...). -// width: (mandatory) - Width in um -// length: (optional) - Length in um -// }, +// For detailed documentation and usage instructions, please refer to docs/Configuration/PadConfiguration.md { From 81b20d0585696f84423352aa9ec9efc76c960a00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Mallas=C3=A9n=20Quintana?= Date: Thu, 19 Dec 2024 16:04:32 +0100 Subject: [PATCH 3/3] Fix path --- pad_cfg.hjson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pad_cfg.hjson b/pad_cfg.hjson index f5bbf0010..77e6763a0 100644 --- a/pad_cfg.hjson +++ b/pad_cfg.hjson @@ -5,7 +5,7 @@ // // Pad configuration for core-v-mini-mcu. Read by mcu_gen.py. // -// For detailed documentation and usage instructions, please refer to docs/Configuration/PadConfiguration.md +// For detailed documentation and usage instructions, please refer to docs/source/Configuration/PadConfiguration.md {