diff --git a/periscope/src/backend/periscopex/protocol_catalog.py b/periscope/src/backend/periscopex/protocol_catalog.py index 800119a..0df4b5d 100644 --- a/periscope/src/backend/periscopex/protocol_catalog.py +++ b/periscope/src/backend/periscopex/protocol_catalog.py @@ -588,12 +588,16 @@ DOC_USB_PD_VSAFE = ( DOC_IEEE_8023 = "IEEE 802.3 (clause for this variant; not on file)" DOC_IEEE_2012 = "IEEE Std 802.3-2012 IEEE Standard for Ethernet" REV_IEEE_2012 = "2012" +DOC_IEEE_2015 = "IEEE Std 802.3-2015 IEEE Standard for Ethernet" +REV_IEEE_2015 = "2015" ORG_IEEE = "IEEE" DOC_IEEE_S1_C14 = ( - "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single " + "number here; 100 Ω is twisted-pair link-segment / 100 Ω test load, not PCB Zdiff)" ) DOC_IEEE_S3_C40 = ( - "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); " + "need 802.3 Section Three" ) DOC_IEEE_S3_C36 = ( "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)" @@ -1209,6 +1213,72 @@ def build_m0_catalog() -> dict[str, Any]: ], )) continue + if lid == "10base-t" and p == "data_rate": + out.append(_num( + pid, p, 10.0, "Mb/s", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.1.1", page="374", + conditions=["type 10BASE-T including 10BASE-Te", "Section One Clause 14"], + )) + continue + if lid == "10base-t" and p == "maximum_channel_length": + out.append(_num( + pid, p, 100.0, "m", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.1.1", page="374", + source_type="CABLE", + conditions=[ + "0 m to at least 100 m of twisted pair without a repeater", + "100 m is the design objective (14.1.1.3); longer permitted if 14.4 is met", + "not a PCB trace length", + ], + )) + continue + if lid == "10base-t" and p == "cable_channel": + out.append(_num( + pid, p, 100.0, "ohm", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.4.2.2", page="399", + source_type="CABLE", + conditions=[ + "twisted-pair differential characteristic impedance 100 Ω ± 15 Ω (1–16 MHz)", + "3 m pair: 85–111 Ω at 5.0–10 MHz", + "not a PCB trace differential impedance", + "not 1000BASE-T (Clause 40 is not in Section One)", + ], + )) + continue + if lid == "10base-t" and p == "insertion_loss": + out.append(_num( + pid, p, 11.5, "dB", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.4.2.1", page="399", + source_type="CABLE", + conditions=[ + "simplex link segment maximum, 5.0–10 MHz", + "10BASE-T MAU that is not 10BASE-Te (Te max is 8.5 dB)", + ], + )) + continue + if lid == "10base-t" and p == "return_loss": + out.append(_num( + pid, p, 15.0, "dB", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.3.1.2.2", page="394", + source_type="PCB", + conditions=[ + "MAU TD circuit: reflection at least 15 dB below incident", + "5.0–10 MHz, vs simplex link in 14.4.2.2 range", + "not a PCB trace Zdiff number", + ], + )) + continue + if lid == "10base-t" and p in { + "differential_impedance", "impedance_tolerance", "termination", + }: + nd = DOC_IEEE_S1_C14 + out.append(_c(pid, p, "UNKNOWN", needed_document=nd)) + continue if lid == "100base-fx" and p == "data_rate": out.append(_num( pid, p, 100.0, "Mb/s", @@ -1251,6 +1321,45 @@ def build_m0_catalog() -> dict[str, Any]: "1500 V rms at 50 Hz to 60 Hz for 60 s", ], )) + if lid == "10base-t": + out.append(_num( + pid, "isolation_after_test", 2.0e6, "ohm", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.3.1.1", page="389", + conditions=[ + "MAU MDI that is not a PI", + "resistance after isolation test, measured at 500 V dc", + "minimum 2 MΩ", + ], + )) + out.append(_num( + pid, "isolation_rms", 1500.0, "V", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.3.1.1 a", page="388", + mandatory="OPTIONAL", + conditions=[ + "one of three allowed isolation tests", + "1500 V rms at 50 Hz to 60 Hz for 60 s", + ], + )) + out.append(_num( + pid, "peak_differential_output", 2.2, "V", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.3.1.2.1", page="390", + source_type="PCB", + conditions=[ + "TD circuit peak differential, 100 Ω resistive load", + "10BASE-T that is not 10BASE-Te: 2.2–2.8 V", + "10BASE-Te is 1.54–1.96 V (not packed here)", + ], + )) + out.append(_num( + pid, "link_segment_delay_max", 1000.0, "ns", + document=DOC_IEEE_2015, organization=ORG_IEEE, + revision=REV_IEEE_2015, section="14.4.2.4", page="400", + source_type="CABLE", + conditions=["maximum propagation delay of a link segment", "pair also ≤ 5.7 ns/m"], + )) return out def _hdmi_cons(pid: str) -> list[dict[str, Any]]: @@ -1461,10 +1570,10 @@ def build_m0_catalog() -> dict[str, Any]: ETH_CHECKS, _eth_cons(pid, lid), connector=conn, hints=hints, notes=( + "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and " "IEEE 802.3-2012 Section Two (Clauses 21–33) on file. " - "10BASE-T is Clause 14 (Section One, not here). " "1000BASE-T is Clause 40 (Section Three, not here). " - "100 Ω in Clause 25 is cabling/link-segment, not PCB Z. " + "100 Ω in Clause 14/25 is cabling/link-segment, not PCB Z. " "Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct." ), incomplete=True, diff --git a/periscope/src/backend/periscopex/protocol_data/catalog.json b/periscope/src/backend/periscopex/protocol_data/catalog.json index 892895f..fb987f5 100644 --- a/periscope/src/backend/periscopex/protocol_data/catalog.json +++ b/periscope/src/backend/periscopex/protocol_data/catalog.json @@ -4157,17 +4157,26 @@ { "id": "10base-t-mdi-data_rate", "parameter": "data_rate", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", "source_type": "STANDARD", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 10.0, + "unit": "Mb/s", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.1.1", + "table": null, + "page": "374" + }, + "conditions": [ + "type 10BASE-T including 10BASE-Te", + "Section One Clause 14" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "typical": false }, { "id": "10base-t-mdi-signaling", @@ -4182,7 +4191,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-differential_impedance", @@ -4197,7 +4206,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-impedance_tolerance", @@ -4212,7 +4221,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-intra_pair_skew", @@ -4227,7 +4236,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-pair_to_pair_skew", @@ -4242,52 +4251,81 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-maximum_channel_length", "parameter": "maximum_channel_length", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "CABLE", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 100.0, + "unit": "m", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.1.1", + "table": null, + "page": "374" + }, + "conditions": [ + "0 m to at least 100 m of twisted pair without a repeater", + "100 m is the design objective (14.1.1.3); longer permitted if 14.4 is met", + "not a PCB trace length" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "typical": false }, { "id": "10base-t-mdi-insertion_loss", "parameter": "insertion_loss", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "CABLE", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 11.5, + "unit": "dB", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.4.2.1", + "table": null, + "page": "399" + }, + "conditions": [ + "simplex link segment maximum, 5.0\u201310 MHz", + "10BASE-T MAU that is not 10BASE-Te (Te max is 8.5 dB)" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "typical": false }, { "id": "10base-t-mdi-return_loss", "parameter": "return_loss", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "PCB", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 15.0, + "unit": "dB", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.3.1.2.2", + "table": null, + "page": "394" + }, + "conditions": [ + "MAU TD circuit: reflection at least 15 dB below incident", + "5.0\u201310 MHz, vs simplex link in 14.4.2.2 range", + "not a PCB trace Zdiff number" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "typical": false }, { "id": "10base-t-mdi-crosstalk", @@ -4302,7 +4340,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-magnetics_requirements", @@ -4332,7 +4370,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-common_mode", @@ -4347,7 +4385,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-connector_requirements", @@ -4362,7 +4400,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-phy_requirements", @@ -4392,7 +4430,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-vias", @@ -4407,7 +4445,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-topology", @@ -4422,25 +4460,134 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One Clause 14 (this 10BASE-T PCB field is not a single number here; 100 \u03a9 is twisted-pair link-segment / 100 \u03a9 test load, not PCB Zdiff)" }, { "id": "10base-t-mdi-cable_channel", "parameter": "cable_channel", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "CABLE", + "source_class": "NORMATIVE", + "value": 100.0, + "unit": "ohm", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.4.2.2", + "table": null, + "page": "399" + }, + "conditions": [ + "twisted-pair differential characteristic impedance 100 \u03a9 \u00b1 15 \u03a9 (1\u201316 MHz)", + "3 m pair: 85\u2013111 \u03a9 at 5.0\u201310 MHz", + "not a PCB trace differential impedance", + "not 1000BASE-T (Clause 40 is not in Section One)" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "10base-t-mdi-isolation_after_test", + "parameter": "isolation_after_test", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", "source_type": "STANDARD", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 2000000.0, + "unit": "ohm", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.3.1.1", + "table": null, + "page": "389" + }, + "conditions": [ + "MAU MDI that is not a PI", + "resistance after isolation test, measured at 500 V dc", + "minimum 2 M\u03a9" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section One Clause 14 (10BASE-T; not in Section Two)" + "typical": false + }, + { + "id": "10base-t-mdi-isolation_rms", + "parameter": "isolation_rms", + "value_kind": "NUMERIC", + "mandatory": "OPTIONAL", + "source_type": "STANDARD", + "source_class": "NORMATIVE", + "value": 1500.0, + "unit": "V", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.3.1.1 a", + "table": null, + "page": "388" + }, + "conditions": [ + "one of three allowed isolation tests", + "1500 V rms at 50 Hz to 60 Hz for 60 s" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "10base-t-mdi-peak_differential_output", + "parameter": "peak_differential_output", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 2.2, + "unit": "V", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.3.1.2.1", + "table": null, + "page": "390" + }, + "conditions": [ + "TD circuit peak differential, 100 \u03a9 resistive load", + "10BASE-T that is not 10BASE-Te: 2.2\u20132.8 V", + "10BASE-Te is 1.54\u20131.96 V (not packed here)" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "10base-t-mdi-link_segment_delay_max", + "parameter": "link_segment_delay_max", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "CABLE", + "source_class": "NORMATIVE", + "value": 1000.0, + "unit": "ns", + "source": { + "document": "IEEE Std 802.3-2015 IEEE Standard for Ethernet", + "organization": "IEEE", + "revision": "2015", + "section": "14.4.2.4", + "table": null, + "page": "400" + }, + "conditions": [ + "maximum propagation delay of a link segment", + "pair also \u2264 5.7 ns/m" + ], + "value_origin": "SPEC", + "typical": false } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -4841,7 +4988,7 @@ "typical": false } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -4891,7 +5038,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-signaling", @@ -4906,7 +5053,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-differential_impedance", @@ -4921,7 +5068,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-impedance_tolerance", @@ -4936,7 +5083,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-intra_pair_skew", @@ -4951,7 +5098,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-pair_to_pair_skew", @@ -4966,7 +5113,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-maximum_channel_length", @@ -4981,7 +5128,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-insertion_loss", @@ -4996,7 +5143,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-return_loss", @@ -5011,7 +5158,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-crosstalk", @@ -5026,7 +5173,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-magnetics_requirements", @@ -5056,7 +5203,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-common_mode", @@ -5071,7 +5218,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-connector_requirements", @@ -5086,7 +5233,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-phy_requirements", @@ -5116,7 +5263,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-vias", @@ -5131,7 +5278,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-topology", @@ -5146,7 +5293,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" }, { "id": "1000base-t-mdi-cable_channel", @@ -5161,10 +5308,10 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (1000BASE-T; not in Section Two)" + "needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -5486,7 +5633,7 @@ "needed_document": "IEEE 802.3bz / later 802.3 2.5GBASE-T clause (not in 2012 Section Two)" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -5807,7 +5954,7 @@ "needed_document": "IEEE 802.3bz / later 802.3 5GBASE-T clause (not in 2012 Section Two)" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -6128,7 +6275,7 @@ "needed_document": "IEEE Std 802.3-2012 Section Four Clause 55 (10GBASE-T; not in Section Two)" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -6449,7 +6596,7 @@ "needed_document": "SGMII is not an IEEE 802.3 MDI clause in 2012 Section Two" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -6771,7 +6918,7 @@ "needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -7102,7 +7249,7 @@ "needed_document": "ISO/IEC 9314-3:1990 fiber-PMD (incorporated by IEEE 802.3-2012 Clause 26; optical MDI, not copper PCB ohms)" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { @@ -7424,7 +7571,7 @@ "needed_document": "IEEE 802.3 10GBASE-R clauses (not in 2012 Section Two)" } ], - "notes": "IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 10BASE-T is Clause 14 (Section One, not here). 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", + "notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T) and IEEE 802.3-2012 Section Two (Clauses 21\u201333) on file. 1000BASE-T is Clause 40 (Section Three, not here). 100 \u03a9 in Clause 14/25 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.", "incomplete": true }, { diff --git a/periscope/src/frontend/content/changelog.md b/periscope/src/frontend/content/changelog.md index 6c155b5..cfa3e4f 100644 --- a/periscope/src/frontend/content/changelog.md +++ b/periscope/src/frontend/content/changelog.md @@ -2,6 +2,13 @@ What's new in Periscope. +## 2.77.0 — 2026-09-22 — 10BASE-T from IEEE 802.3-2015 Section One + +IEEE Std 802.3-2015 Section One Clause 14 fills 10BASE-T: 10 Mb/s, 100 m design-objective link, cable 100 Ω ± 15 Ω, 11.5 dB link insertion loss, MAU TD return loss 15 dB, isolation 2 MΩ / 1500 V rms, TD peak 2.2 V. Cable 100 Ω is **CABLE**, not L2 PCB Zdiff. 1000BASE-T (Clause 40) is not in this volume. + +- [Changed] `protocol_catalog.py` + `catalog.json`. +- [Changed] pytest `tests/pcb/test_protocol_pdf_pack.py`, `test_protocol_m6_m7.py`. + ## 2.76.0 — 2026-09-22 — Type-C CabCon R2.0 hole-fill (CC shall-detect; VBUS from R2.5) USB Type-C Cable and Connector Specification Release 2.0 (August 2019) fills Source CC shall-detect voltages that R2.5 only illustrates as variance examples (Table 4-32 p.240: vRd 1.50 V, vOPEN 1.65 V, vRa 0.15 V). Type-C Current charger VBUS 4.75–5.5 V no-load / 4.0–5.5 V at 3 A, zOPEN 126 kΩ, tCCDebounce 100–200 ms, and tVBUSON 275 ms stay on newer CabCon R2.5 (Figure 4-39 / Tables 4-30, 4-32, 4-34). Rp/Rd/Ra unchanged. vSafe5V volt range still needs USB PD. diff --git a/periscope/src/frontend/package.json b/periscope/src/frontend/package.json index 473706a..9e04408 100644 --- a/periscope/src/frontend/package.json +++ b/periscope/src/frontend/package.json @@ -1,6 +1,6 @@ { "name": "periscope-web", - "version": "2.76.0", + "version": "2.77.0", "private": true, "scripts": { "sync-version": "node scripts/sync-version.mjs", diff --git a/tests/pcb/test_protocol_m6_m7.py b/tests/pcb/test_protocol_m6_m7.py index 049be70..b22340b 100644 --- a/tests/pcb/test_protocol_m6_m7.py +++ b/tests/pcb/test_protocol_m6_m7.py @@ -209,7 +209,7 @@ def test_mini_hdmi_is_connector_not_protocol_id(): def test_ethernet_hdmi_skeletons_unknown_needed_document(): cat = load_catalog() for lid in ( - "10base-t", "1000base-t", "2.5gbase-t", "5gbase-t", + "1000base-t", "2.5gbase-t", "5gbase-t", "10gbase-t", "sgmii", "1000base-x", "10gbase-r", "hdmi-1.4", "hdmi-2.0", "hdmi-frl", ): diff --git a/tests/pcb/test_protocol_pdf_pack.py b/tests/pcb/test_protocol_pdf_pack.py index b88ecf1..d797076 100644 --- a/tests/pcb/test_protocol_pdf_pack.py +++ b/tests/pcb/test_protocol_pdf_pack.py @@ -190,13 +190,23 @@ def test_ieee8023_section2_100base_tx_not_10base_or_1000(): assert z.value_kind == "UNKNOWN" assert "TP-PMD" in (z.needed_document or "") ten = next(p for p in cat.physical_interfaces if p.id == "10base-t-mdi") - tdr = next(c for c in ten.constraints if c.parameter == "data_rate") - assert tdr.value_kind == "UNKNOWN" - assert "Clause 14" in (tdr.needed_document or "") + tby = {c.parameter: c for c in ten.constraints} + _cite_ok(tby["data_rate"]) + assert tby["data_rate"].value == 10.0 + assert tby["data_rate"].source.revision == "2015" + assert tby["data_rate"].source.section == "14.1.1" + assert tby["data_rate"].source.page == "374" + _cite_ok(tby["cable_channel"]) + assert tby["cable_channel"].value == 100.0 + assert tby["cable_channel"].source_type == "CABLE" + assert tby["cable_channel"].source.section == "14.4.2.2" + assert tby["differential_impedance"].value_kind == "UNKNOWN" + assert "PCB" in (tby["differential_impedance"].needed_document or "") gbe = next(p for p in cat.physical_interfaces if p.id == "1000base-t-mdi") gdr = next(c for c in gbe.constraints if c.parameter == "data_rate") assert gdr.value_kind == "UNKNOWN" assert "Clause 40" in (gdr.needed_document or "") + assert gdr.value is None fx = next(p for p in cat.physical_interfaces if p.id == "100base-fx-pcb") fxr = next(c for c in fx.constraints if c.parameter == "data_rate") _cite_ok(fxr)