Skip to content

Commit

Permalink
🔧 Get precommit to pass
Browse files Browse the repository at this point in the history
  • Loading branch information
daquintero committed Jun 2, 2024
1 parent 0b450e4 commit 52757f7
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 1,772 deletions.
21 changes: 19 additions & 2 deletions gplugins/hdl21/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,19 @@
from .netlist import *
from .sky130 import *
from .netlist import (
ParsedProtoVLSIR,
generate_raw_netlist_dict_from_module,
generate_raw_yaml_from_module,
)
from .sky130 import (
filter_port,
find_most_relevant_gds,
hdl21_module_to_schematic_editor,
)

__all__ = [
"filter_port",
"find_most_relevant_gds",
"hdl21_module_to_schematic_editor",
"generate_raw_yaml_from_module",
"generate_raw_netlist_dict_from_module",
"ParsedProtoVLSIR",
]
46 changes: 20 additions & 26 deletions gplugins/hdl21/netlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@
import hdl21 as h
import yaml

__all__ = [
'ParsedProtoVLSIR',
'generate_raw_netlist_dict_from_module',
'generate_raw_yaml_from_module'
]

ParsedProtoVLSIR = dict


Expand Down Expand Up @@ -72,16 +66,18 @@ def _parse_connections(proto_dict: ParsedProtoVLSIR) -> dict:
target_signal = connection["target"][0]["sig"]
connection_key = f"{instance_name},{portname}"
# Find the target instance and port
target_instance_port = _find_target_instance_port(proto_dict, target_signal, instance_name)
target_instance_port = _find_target_instance_port(
proto_dict, target_signal, instance_name
)
if target_instance_port:
connections[connection_key] = target_instance_port

return connections


def _find_target_instance_port(proto_dict: ParsedProtoVLSIR,
target_signal,
current_instance_name):
def _find_target_instance_port(
proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name
):
"""
Find the target instance and port of the target signal in the proto_dict.
"""
Expand Down Expand Up @@ -114,9 +110,9 @@ def _generate_top_level_connections(proto_dict: ParsedProtoVLSIR):
top_level_connections = {}

# Iterate over the top-level module ports
for module in proto_dict.get('modules', []):
for port in module.get('ports', []):
port_signal = port['signal']
for module in proto_dict.get("modules", []):
for port in module.get("ports", []):
port_signal = port["signal"]
connection = _find_port_connection(proto_dict, port_signal)
if connection:
top_level_connections[port_signal] = connection
Expand Down Expand Up @@ -148,17 +144,16 @@ def _extract_instance_parameters(proto_dict: ParsedProtoVLSIR):
for instance in module.get("instances", []):
instance_name = instance["name"]
instance_info = {

'component': _extract_component_name(instance),
'info': {},
'settings': {}
"component": _extract_component_name(instance),
"info": {},
"settings": {},
}

# Extract parameters into the settings
for parameter in instance.get('parameters', []):
param_name = parameter['name']
param_value = _extract_parameter_value(parameter['value'])
instance_info['settings'][param_name] = param_value
for parameter in instance.get("parameters", []):
param_name = parameter["name"]
param_value = _extract_parameter_value(parameter["value"])
instance_info["settings"][param_name] = param_value

# Extract connections and add to settings
instance_info["settings"]["ports"] = {}
Expand All @@ -178,10 +173,9 @@ def _extract_component_name(instance):
"""
external_modules = instance.get("module", [])
if external_modules:
domain = external_modules[0].get('external', [{}])[0].get('domain', '')
name = external_modules[0].get('external', [{}])[0].get('name', '')
name = external_modules[0].get("external", [{}])[0].get("name", "")
return f"{name}"
return 'unknown_component'
return "unknown_component"


def _extract_parameter_value(value):
Expand All @@ -208,13 +202,13 @@ def _generate_raw_netlist_dict_from_proto_dict(proto_dict: ParsedProtoVLSIR):
raw_netlist_dict["name"] = proto_dict["modules"][0].get("name", "")

# Generate instances information
raw_netlist_dict['instances'] = _extract_instance_parameters(proto_dict)
raw_netlist_dict["instances"] = _extract_instance_parameters(proto_dict)

# Generate connections
raw_netlist_dict["connections"] = _parse_connections(proto_dict)

# Generate top-level connections
raw_netlist_dict['ports'] = _generate_top_level_connections(proto_dict)
raw_netlist_dict["ports"] = _generate_top_level_connections(proto_dict)

return raw_netlist_dict

Expand Down
5 changes: 1 addition & 4 deletions gplugins/hdl21/sky130.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from collections.abc import Callable
from difflib import get_close_matches

import hdl21 as h
import sky130
Expand All @@ -9,10 +10,6 @@
_parse_module_to_proto_dict,
)

__all__ = ["hdl21_module_to_schematic_editor", "find_most_relevant_gds", "filter_port"]

from difflib import get_close_matches

custom_mapping_dict = {
"sky130_fd_pr__nfet_01v8": "sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15",
"sky130_fd_pr__pfet_01v8": "sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15",
Expand Down
Loading

0 comments on commit 52757f7

Please sign in to comment.