code: def do_load(self, design, init=False):
          # type: (str, bool) -> None
          
          if design:
              filename = self._validated_config_filename(design)
              with open(filename, "r") as f:
                  text = f.read()
              structure = json_decode(text)
          else:
              structure = {}
          # Attributes and Children used to be merged, support this
          attributes = structure.get("attributes", structure)
          children = structure.get("children", structure)
          # Set the layout table
          name, mri, x, y, visible = [], [], [], [], []
          for part_name, d in attributes.get("layout", {}).items():
              name.append(part_name)
              mri.append("")
              x.append(d["x"])
              y.append(d["y"])
              visible.append(d["visible"])
          self.set_layout(LayoutTable(name, mri, x, y, visible))
          # Set the exports table
          source, export = [], []
          for source_name, export_name in attributes.get("exports", {}).items():
              source.append(source_name)
              export.append(export_name)
          self.exports.set_value(ExportTable(source, export))
          # Set other attributes
          our_values = {k: v for k, v in attributes.items()
                        if k in self.our_config_attributes}
          block = self.block_view()
          block.put_attribute_values(our_values)
          # Run the load hook to get parts to load their own structure
          self.run_hooks(
              LoadHook(p, c, children.get(p.name, {}), init)
              for p, c in self.create_part_contexts(only_visible=False).items())
          self._mark_clean(design, init)
docs: Load a design name, running the child LoadHooks.
  
          Args:
              design: Name of the design json file, without extension
              init: Passed to the LoadHook to tell the children if this is being
                  run at Init or not