HDMI 2.0+ TI layout uses source_type VENDOR (2.82.0).

Add VENDOR to SourceType. HDMI 2.0/FRL fill TMDS1204 PCB numbers as VENDOR RECOMMENDED; TMDS1204-specific skew/vias/data_rate/SIGDET stay PHY_DEPENDENT. HDMI 1.4 TMDS remains UNKNOWN. Not HDMI Forum STANDARD.
This commit is contained in:
2026-09-22 18:25:26 +02:00
parent 3c0b3e14dc
commit bb83f63114
7 changed files with 421 additions and 230 deletions
@@ -60,6 +60,7 @@ SourceType = Literal[
"STANDARD", "STANDARD",
"CONNECTOR", "CONNECTOR",
"PHY", "PHY",
"VENDOR",
"CONTROLLER", "CONTROLLER",
"MEMORY", "MEMORY",
"COMPONENT", "COMPONENT",
@@ -1496,12 +1497,12 @@ def build_m0_catalog() -> dict[str, Any]:
return out return out
def _hdmi_cons(pid: str, *, hdmi20_plus: bool = False, frl: bool = False) -> list[dict[str, Any]]: def _hdmi_cons(pid: str, *, hdmi20_plus: bool = False, frl: bool = False) -> list[dict[str, Any]]:
ti_layout = { # HDMI 2.0+ Michele exception: TI layout as source_type VENDOR.
"differential_impedance", "intra_pair_skew", "inter_lane_skew", # TMDS1204-specific limits (role/chip) stay PHY_DEPENDENT with no number.
"vias", "ac_coupling", "crosstalk", ti_numeric = {"differential_impedance", "ac_coupling", "crosstalk"}
} ti_phy_dep = {"intra_pair_skew", "inter_lane_skew", "vias"}
if frl: if frl:
ti_layout.add("data_rate") ti_phy_dep.add("data_rate")
out = [] out = []
for p in HDMI_CHECKS: for p in HDMI_CHECKS:
if p == "cec": if p == "cec":
@@ -1518,7 +1519,7 @@ def build_m0_catalog() -> dict[str, Any]:
], ],
)) ))
continue continue
if hdmi20_plus and p in ti_layout: if hdmi20_plus and p in (ti_numeric | ti_phy_dep):
continue continue
out.append(_c(pid, p, "UNKNOWN", needed_document=DOC_HDMI_ADOPTER)) out.append(_c(pid, p, "UNKNOWN", needed_document=DOC_HDMI_ADOPTER))
out.append(_num( out.append(_num(
@@ -1573,46 +1574,78 @@ def build_m0_catalog() -> dict[str, Any]:
if hdmi20_plus: if hdmi20_plus:
ti = dict( ti = dict(
document=DOC_TMDS1204, organization=ORG_TI, revision=REV_TMDS1204, document=DOC_TMDS1204, organization=ORG_TI, revision=REV_TMDS1204,
source_type="PHY", source_class="VENDOR", mandatory="RECOMMENDED", source_type="VENDOR", source_class="VENDOR", mandatory="RECOMMENDED",
) )
def _ti_dep(
parameter: str,
*,
section: str,
page: str,
note: str,
table: str | None = None,
document: str = DOC_TMDS1204,
revision: str = REV_TMDS1204,
) -> dict[str, Any]:
table_bit = f" {table}" if table else ""
return _c(
pid, parameter, "PHY_DEPENDENT",
source_type="VENDOR", source_class="VENDOR",
mandatory="RECOMMENDED",
source=_cite(
document=document, organization=ORG_TI, revision=revision,
section=section, table=table, page=page,
),
needed_document=(
f"{document} {revision} §{section}{table_bit} p.{page}; "
"TMDS1204-specific PHY_DEPENDENT — not HDMI Forum STANDARD"
),
conditions=[
"TMDS1204-specific",
"not HDMI Forum STANDARD",
"not HDMI 1.4 Adopter",
note,
],
)
out.append(_num( out.append(_num(
pid, "differential_impedance", 90.0, "ohm", pid, "differential_impedance", 90.0, "ohm",
section="8.3.1", table="Table 8-6", page="63", section="8.3.1", table="Table 8-6", page="63",
conditions=[ conditions=[
"TMDS1204 sink ZPCB_AB/CD min 90 Ω max 110 Ω", "TMDS1204 sink ZPCB_AB/CD min 90 Ω max 110 Ω",
"VENDOR layout for HDMI 2.0+ with TMDS1204 — not HDMI Forum STANDARD", "VENDOR layout for HDMI 2.0+ — not HDMI Forum STANDARD",
"not HDMI 1.4 Adopter Zdiff", "not HDMI 1.4 Adopter Zdiff",
], ],
**ti, **ti,
)) ))
out.append(_num( out.append(_ti_dep(
pid, "intra_pair_skew", 2.0, "mil", "intra_pair_skew",
section="8.3.1", table="Table 8-6", page="63", section="8.3.1", table="Table 8-6", page="63",
conditions=["TMDS1204 sink LINTRA max", "PHY-specific"], note="sink LINTRA 2 mil vs source Table 8-2 5 mil",
**ti,
)) ))
out.append(_num( out.append(_ti_dep(
pid, "inter_lane_skew", 0.10, "inch", "inter_lane_skew",
section="8.3.1", table="Table 8-6", page="63", section="8.3.1", table="Table 8-6", page="63",
conditions=["TMDS1204 sink LINTER-PAIR max", "PHY-specific"], note="sink LINTER-PAIR 0.10 in vs source Table 8-2 1.0 in",
**ti,
)) ))
out.append(_num( out.append(_ti_dep(
pid, "vias", 1.0, "count", "vias",
section="8.3.1", table="Table 8-6", page="63", section="8.3.1", table="Table 8-6", page="63",
conditions=["TMDS1204 sink VIAAB max receptacle to chip", "PHY-specific"], note="sink VIAAB max 1 vs source Table 8-2 max 2",
**ti,
)) ))
out.append(_num( out.append(_num(
pid, "crosstalk", -24.0, "dB", pid, "crosstalk", -24.0, "dB",
section="8.3.1", table="Table 8-6", page="63", section="8.3.1", table="Table 8-6", page="63",
conditions=["TMDS1204 XTALK max ≤ 3 GHz", "PHY-specific"], conditions=[
"TMDS1204 XTALK max ≤ 3 GHz (Table 8-6 and Table 8-2)",
"VENDOR — not HDMI Forum STANDARD",
],
**ti, **ti,
)) ))
out.append(_num( out.append(_num(
pid, "ac_coupling", 8.0, "nF", pid, "ac_coupling", 8.0, "nF",
section="5.5", page="13", section="5.5", page="13",
conditions=["TMDS1204 CTX_AC min 8 nF", "PHY-specific"], conditions=["TMDS1204 CTX_AC min 8 nF", "VENDOR — not HDMI Forum STANDARD"],
**ti, **ti,
)) ))
out.append(_num( out.append(_num(
@@ -1622,29 +1655,38 @@ def build_m0_catalog() -> dict[str, Any]:
**ti, **ti,
)) ))
if frl: if frl:
out.append(_num( out.append(_ti_dep(
pid, "data_rate", 12.0, "Gbps", "data_rate",
section="5.5", page="10", section="5.5", page="10",
conditions=[ note="TMDS1204 DR_RX maximum 12 Gbps — chip, not HDMI Forum FRL CTS",
"TMDS1204 DR_RX maximum 12 Gbps FRL",
"VENDOR PHY — not HDMI Forum Adopter CTS",
],
**ti,
)) ))
out.append(_c(
pid, "sigdet_wakeup", "PHY_DEPENDENT",
source_type="VENDOR", source_class="VENDOR", mandatory="RECOMMENDED",
source=_cite(
document=DOC_SLLA633, organization=ORG_TI,
revision=REV_SLLA633, section="3", page="4",
),
needed_document=(
f"{DOC_SLLA633} {REV_SLLA633} §3 p.4 SIGDET_OUT; "
"TMDS1204-specific — not HDMI Forum STANDARD"
),
conditions=["SIGDET_OUT wakeup method", "no layout ohms in SLLA633"],
))
return out return out
def _tmds1204_cons(pid: str, role: str) -> list[dict[str, Any]]: def _tmds1204_cons(pid: str, role: str) -> list[dict[str, Any]]:
"""TI TMDS1204 layout/electrical. VENDOR/PHY only — not HDMI Forum STANDARD.""" """TI TMDS1204 layout/electrical. source_type VENDOR — not HDMI Forum STANDARD."""
kw = dict( kw = dict(
document=DOC_TMDS1204, organization=ORG_TI, revision=REV_TMDS1204, document=DOC_TMDS1204, organization=ORG_TI, revision=REV_TMDS1204,
source_type="PHY", source_class="VENDOR", mandatory="RECOMMENDED", source_type="VENDOR", source_class="VENDOR", mandatory="RECOMMENDED",
) )
out = [ out = [
_c( _c(
pid, p, "PHY_DEPENDENT", pid, p, "PHY_DEPENDENT",
source_type="PHY", source_class="VENDOR", mandatory="RECOMMENDED", source_type="VENDOR", source_class="VENDOR", mandatory="RECOMMENDED",
needed_document=( needed_document=(
"TI TMDS1204 datasheet SLLSF57A (vendor PHY). " "TI TMDS1204 datasheet SLLSF57A (source_type VENDOR). "
"Not HDMI Forum Adopter STANDARD." "Not HDMI Forum Adopter STANDARD."
), ),
) )
@@ -1790,7 +1832,11 @@ def build_m0_catalog() -> dict[str, Any]:
)) ))
out.append(_c( out.append(_c(
pid, "sigdet_wakeup", "PHY_DEPENDENT", pid, "sigdet_wakeup", "PHY_DEPENDENT",
source_type="PHY", source_class="VENDOR", mandatory="RECOMMENDED", source_type="VENDOR", source_class="VENDOR", mandatory="RECOMMENDED",
source=_cite(
document=DOC_SLLA633, organization=ORG_TI,
revision=REV_SLLA633, section="3", page="4",
),
needed_document=( needed_document=(
f"{DOC_SLLA633} {REV_SLLA633} §3 p.4 SIGDET_OUT; " f"{DOC_SLLA633} {REV_SLLA633} §3 p.4 SIGDET_OUT; "
"vendor detection method, not HDMI Forum STANDARD" "vendor detection method, not HDMI Forum STANDARD"
@@ -2024,9 +2070,9 @@ def build_m0_catalog() -> dict[str, Any]:
)) ))
for hid, lid, conn, note in ( for hid, lid, conn, note in (
("hdmi-2.0-tmds-type-a", "hdmi-2.0", "HDMI-A", ("hdmi-2.0-tmds-type-a", "hdmi-2.0", "HDMI-A",
"HDMI 2.0 TMDS on Type A. TMDS layout from TI TMDS1204 is VENDOR/PHY, not HDMI Forum. CEC from HDMI 1.3."), "HDMI 2.0 TMDS on Type A. TMDS layout from TI TMDS1204 is source_type VENDOR, not HDMI Forum STANDARD. CEC from HDMI 1.3."),
("hdmi-2.0-tmds-type-c-mini", "hdmi-2.0", "HDMI-C-mini", ("hdmi-2.0-tmds-type-c-mini", "hdmi-2.0", "HDMI-C-mini",
"Mini HDMI connector + HDMI 2.0 TMDS. TI layout VENDOR/PHY. Not a separate protocol id."), "Mini HDMI connector + HDMI 2.0 TMDS. TI layout source_type VENDOR. Not a separate protocol id."),
): ):
physical.append(_iface( physical.append(_iface(
hid, lid, "SERIAL", "SERIAL_DIFFERENTIAL", "YES", HDMI_CHECKS, hid, lid, "SERIAL", "SERIAL_DIFFERENTIAL", "YES", HDMI_CHECKS,
@@ -2041,7 +2087,7 @@ def build_m0_catalog() -> dict[str, Any]:
HDMI_CHECKS, _hdmi_cons("hdmi-frl-pcb", hdmi20_plus=True, frl=True), HDMI_CHECKS, _hdmi_cons("hdmi-frl-pcb", hdmi20_plus=True, frl=True),
connector="HDMI-A", connector="HDMI-A",
hints=["FRL", "HDMI2.1", "HDMI_FRL"], hints=["FRL", "HDMI2.1", "HDMI_FRL"],
notes="HDMI FRL. TI TMDS1204 layout/data_rate are VENDOR/PHY, not HDMI Forum STANDARD.", notes="HDMI FRL. TI TMDS1204 layout is source_type VENDOR; TMDS1204-specific data_rate is PHY_DEPENDENT. Not HDMI Forum STANDARD.",
incomplete=True, incomplete=True,
)) ))
physical.append(_iface( physical.append(_iface(
@@ -2050,8 +2096,8 @@ def build_m0_catalog() -> dict[str, Any]:
connector="HDMI-A", connector="HDMI-A",
hints=["TMDS1204"], hints=["TMDS1204"],
notes=( notes=(
"TI TMDS1204 sink redriver layout (Table 8-6). VENDOR/PHY. " "TI TMDS1204 sink redriver layout (Table 8-6). source_type VENDOR. "
"Not HDMI Forum STANDARD. Do not copy onto generic hdmi-*." "Not HDMI Forum STANDARD. HDMI 2.0+ may overlay common VENDOR layout; chip-specific stays here."
), ),
incomplete=True, incomplete=True,
)) ))
@@ -2061,8 +2107,8 @@ def build_m0_catalog() -> dict[str, Any]:
connector="HDMI-A", connector="HDMI-A",
hints=["TMDS1204"], hints=["TMDS1204"],
notes=( notes=(
"TI TMDS1204 source redriver layout (Table 8-2). VENDOR/PHY. " "TI TMDS1204 source redriver layout (Table 8-2). source_type VENDOR. "
"Not HDMI Forum STANDARD. Do not copy onto generic hdmi-*." "Not HDMI Forum STANDARD. HDMI 2.0+ may overlay common VENDOR layout; chip-specific stays here."
), ),
incomplete=True, incomplete=True,
)) ))
File diff suppressed because it is too large Load Diff
@@ -266,6 +266,7 @@
"STANDARD", "STANDARD",
"CONNECTOR", "CONNECTOR",
"PHY", "PHY",
"VENDOR",
"CONTROLLER", "CONTROLLER",
"MEMORY", "MEMORY",
"COMPONENT", "COMPONENT",
@@ -2,6 +2,13 @@
What's new in Periscope. What's new in Periscope.
## 2.82.0 — 2026-09-22 — HDMI 2.0+ TI fields use source_type VENDOR
Michele exception: HDMI 2.0 and FRL electrical/PCB numbers from TMDS1204 / SLLA633 use `source_type=VENDOR` (not HDMI Forum STANDARD). TMDS1204-specific limits (skew, vias, FRL data_rate, SIGDET) are PHY_DEPENDENT with a document/rev/section cite and no number. HDMI 1.4 TMDS stays UNKNOWN. pcbsync.com not packed.
- [Changed] `SourceType` includes `VENDOR`; `protocol_catalog.py` + `catalog.json`.
- [Changed] pytest `tests/pcb/test_protocol_pdf_pack.py`.
## 2.81.0 — 2026-09-22 — Protocol PDF archive + HDMI 2.0/FRL TI VENDOR overlay ## 2.81.0 — 2026-09-22 — Protocol PDF archive + HDMI 2.0/FRL TI VENDOR overlay
On-disk archive `standards/protocol-specs/` (PDFs gitignored). INDEX.md lists cites. HDMI 2.0 and FRL take TMDS1204 Table 8-6 layout as VENDOR/PHY RECOMMENDED — not HDMI Forum STANDARD. HDMI 1.4 TMDS Zdiff stays UNKNOWN. pcbsync.com not packed. On-disk archive `standards/protocol-specs/` (PDFs gitignored). INDEX.md lists cites. HDMI 2.0 and FRL take TMDS1204 Table 8-6 layout as VENDOR/PHY RECOMMENDED — not HDMI Forum STANDARD. HDMI 1.4 TMDS Zdiff stays UNKNOWN. pcbsync.com not packed.
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "periscope-web", "name": "periscope-web",
"version": "2.81.0", "version": "2.82.0",
"private": true, "private": true,
"scripts": { "scripts": {
"sync-version": "node scripts/sync-version.mjs", "sync-version": "node scripts/sync-version.mjs",
+3 -3
View File
@@ -4,7 +4,7 @@ PDFs live **on disk** in this folder. They are **not** committed to GitHub/Gitea
Mirror: agent-store `internal/protocol-specs/`. Mirror: agent-store `internal/protocol-specs/`.
TI files are **VENDOR / PHY**, never HDMI Forum STANDARD. `https://pcbsync.com/hdmi-pcb-layout/` is a blog — **not packed**. TI files are **source_type VENDOR**, never HDMI Forum STANDARD. `https://pcbsync.com/hdmi-pcb-layout/` is a blog — **not packed**.
| Filename | Title | Revision | Cited by (physical / notes) | Class | | Filename | Title | Revision | Cited by (physical / notes) | Class |
|---|---|---|---|---| |---|---|---|---|---|
@@ -18,8 +18,8 @@ TI files are **VENDOR / PHY**, never HDMI Forum STANDARD. `https://pcbsync.com/h
| `802.3-2015_SECTION1.pdf` | IEEE Std 802.3-2015 IEEE Standard for Ethernet (Section One) | 2015 | `10base-t-mdi` Clause 14 | STANDARD | | `802.3-2015_SECTION1.pdf` | IEEE Std 802.3-2015 IEEE Standard for Ethernet (Section One) | 2015 | `10base-t-mdi` Clause 14 | STANDARD |
| `802.3-2012_section3.pdf` | IEEE Std 802.3-2012 IEEE Standard for Ethernet (Section Three) | 2012 | `1000base-t-mdi` Clause 40; `1000base-x-pcb` Clause 36 | STANDARD | | `802.3-2012_section3.pdf` | IEEE Std 802.3-2012 IEEE Standard for Ethernet (Section Three) | 2012 | `1000base-t-mdi` Clause 40; `1000base-x-pcb` Clause 36 | STANDARD |
| `CEC_HDMI_Specification.pdf` | High-Definition Multimedia Interface Specification | Version 1.3, June 22, 2006 | HDMI `cec*` fields (Supplement 1 + Table 4-27). **Not** used for TMDS/FRL Zdiff | STANDARD (CEC only) | | `CEC_HDMI_Specification.pdf` | High-Definition Multimedia Interface Specification | Version 1.3, June 22, 2006 | HDMI `cec*` fields (Supplement 1 + Table 4-27). **Not** used for TMDS/FRL Zdiff | STANDARD (CEC only) |
| `tmds1204.pdf` | TMDS1204 12Gbps HDMI Hybrid Redriver | SLLSF57A August 2022 / revised April 2024 | `tmds1204-hdmi-sink`, `tmds1204-hdmi-source`; also HDMI **2.0 / FRL** layout as VENDOR/PHY | **VENDOR / PHY** | | `tmds1204.pdf` | TMDS1204 12Gbps HDMI Hybrid Redriver | SLLSF57A August 2022 / revised April 2024 | `tmds1204-hdmi-sink`, `tmds1204-hdmi-source`; HDMI **2.0 / FRL** common layout `source_type=VENDOR` | **VENDOR** |
| `slla633.pdf` | TMDS_CLOCK/FRL_Data Detection Design in HDMI Sink Applications TMDS1204 | SLLA633 May 2024 | `tmds1204-*` `sigdet_wakeup` PHY_DEPENDENT (no layout ohms) | **VENDOR / PHY** | | `slla633.pdf` | TMDS_CLOCK/FRL_Data Detection Design in HDMI Sink Applications TMDS1204 | SLLA633 May 2024 | HDMI 2.0+/`tmds1204-*` `sigdet_wakeup` PHY_DEPENDENT (no layout ohms) | **VENDOR** |
| `HDMI-FRL-Software-Datasheet-61W6169600.pdf` | HDMI 2.1 FRL Compliance Test Solution Datasheet (Tektronix) | (on file; 4 pages) | **not packed** — test-equipment datasheet, not HDMI Forum Adopter | archived only | | `HDMI-FRL-Software-Datasheet-61W6169600.pdf` | HDMI 2.1 FRL Compliance Test Solution Datasheet (Tektronix) | (on file; 4 pages) | **not packed** — test-equipment datasheet, not HDMI Forum Adopter | archived only |
Duplicates on Desktop (same MD5, not stored twice here): `USB2_Electrical_Compliance.pdf`, `DVI_Spec_v1.0.pdf`, `USB_TypeC_Functional_Test.pdf`. Duplicates on Desktop (same MD5, not stored twice here): `USB2_Electrical_Compliance.pdf`, `DVI_Spec_v1.0.pdf`, `USB_TypeC_Functional_Test.pdf`.
+21 -3
View File
@@ -158,10 +158,22 @@ def test_dvi_not_hdmi_numeric_from_dvi_10():
_cite_ok(z20) _cite_ok(z20)
assert z20.value == 90.0 assert z20.value == 90.0
assert z20.source_class == "VENDOR" assert z20.source_class == "VENDOR"
assert z20.source_type == "PHY" assert z20.source_type == "VENDOR"
assert z20.mandatory == "RECOMMENDED" assert z20.mandatory == "RECOMMENDED"
assert "TMDS1204" in z20.source.document assert "TMDS1204" in z20.source.document
assert z20.source_class != "NORMATIVE" assert z20.source_class != "NORMATIVE"
assert z20.source_type != "STANDARD"
skew20 = next(c for c in h20.constraints if c.parameter == "intra_pair_skew")
assert skew20.value_kind == "PHY_DEPENDENT"
assert skew20.value is None
assert skew20.source_type == "VENDOR"
assert skew20.source and "SLLSF57A" in (skew20.source.revision or "")
sig20 = next(c for c in h20.constraints if c.parameter == "sigdet_wakeup")
assert sig20.value_kind == "PHY_DEPENDENT"
assert sig20.source_type == "VENDOR"
assert "SLLA633" in (sig20.source.revision or "")
h14_skew = next(c for c in hdmi.constraints if c.parameter == "intra_pair_skew")
assert h14_skew.value_kind == "UNKNOWN"
hby = {c.parameter: c for c in hdmi.constraints} hby = {c.parameter: c for c in hdmi.constraints}
_cite_ok(hby["cec"]) _cite_ok(hby["cec"])
assert hby["cec"].value == 27000.0 assert hby["cec"].value == 27000.0
@@ -184,15 +196,18 @@ def test_dvi_not_hdmi_numeric_from_dvi_10():
fz = next(c for c in frl.constraints if c.parameter == "differential_impedance") fz = next(c for c in frl.constraints if c.parameter == "differential_impedance")
assert fz.value == 90.0 assert fz.value == 90.0
assert fz.source_class == "VENDOR" assert fz.source_class == "VENDOR"
assert fz.source_type == "VENDOR"
fdr = next(c for c in frl.constraints if c.parameter == "data_rate") fdr = next(c for c in frl.constraints if c.parameter == "data_rate")
assert fdr.value == 12.0 assert fdr.value_kind == "PHY_DEPENDENT"
assert fdr.value is None
assert fdr.source_class == "VENDOR" assert fdr.source_class == "VENDOR"
assert fdr.source_type == "VENDOR"
sink = next(p for p in cat.physical_interfaces if p.id == "tmds1204-hdmi-sink") sink = next(p for p in cat.physical_interfaces if p.id == "tmds1204-hdmi-sink")
assert sink.logical_protocol_id == "tmds1204" assert sink.logical_protocol_id == "tmds1204"
sby = {c.parameter: c for c in sink.constraints} sby = {c.parameter: c for c in sink.constraints}
_cite_ok(sby["differential_impedance"]) _cite_ok(sby["differential_impedance"])
assert sby["differential_impedance"].value == 90.0 assert sby["differential_impedance"].value == 90.0
assert sby["differential_impedance"].source_type == "PHY" assert sby["differential_impedance"].source_type == "VENDOR"
assert sby["differential_impedance"].source_class == "VENDOR" assert sby["differential_impedance"].source_class == "VENDOR"
assert sby["differential_impedance"].mandatory == "RECOMMENDED" assert sby["differential_impedance"].mandatory == "RECOMMENDED"
assert sby["differential_impedance"].source.table == "Table 8-6" assert sby["differential_impedance"].source.table == "Table 8-6"
@@ -204,6 +219,9 @@ def test_dvi_not_hdmi_numeric_from_dvi_10():
assert rby["differential_impedance"].value == 75.0 assert rby["differential_impedance"].value == 75.0
assert rby["differential_impedance"].source.table == "Table 8-2" assert rby["differential_impedance"].source.table == "Table 8-2"
assert rby["differential_impedance"].source_class == "VENDOR" assert rby["differential_impedance"].source_class == "VENDOR"
assert rby["differential_impedance"].source_type == "VENDOR"
assert sby["sigdet_wakeup"].value_kind == "PHY_DEPENDENT"
assert sby["sigdet_wakeup"].source_type == "VENDOR"
g = DesignGraph( g = DesignGraph(
components={ components={
"J3": Component( "J3": Component(