Fill 1000BASE-T from IEEE 802.3-2012 Section Three Clause 40 (2.78.0).

Cable 100 Ω / 100 m / 570 ns / 50 ns skew stay CABLE. MDI 16 dB and 0.67 V are PHY. L2 PCB Zdiff UNKNOWN. 1000BASE-X 1000 Mb/s from Clause 36.
This commit is contained in:
2026-09-22 18:03:44 +02:00
parent 8a93ffc1c5
commit d32af5627a
6 changed files with 396 additions and 101 deletions
@@ -596,11 +596,12 @@ DOC_IEEE_S1_C14 = (
"number here; 100 Ω is twisted-pair link-segment / 100 Ω test load, not PCB Zdiff)"
)
DOC_IEEE_S3_C40 = (
"IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); "
"need 802.3 Section Three"
"IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single "
"number here; 100 Ω is Class D link-segment / 100 Ω test load, not PCB Zdiff)"
)
DOC_IEEE_S3_C36 = (
"IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is "
"Clause 38; 1000BASE-CX copper is Clause 39 — this PCB field is not a single number"
)
DOC_IEEE_TP_PMD = (
"ANSI X3.263:1995 TP-PMD (incorporated by IEEE 802.3-2012 Clause 25; not on file. "
@@ -1279,6 +1280,84 @@ def build_m0_catalog() -> dict[str, Any]:
nd = DOC_IEEE_S1_C14
out.append(_c(pid, p, "UNKNOWN", needed_document=nd))
continue
if lid == "1000base-t" and p == "data_rate":
out.append(_num(
pid, p, 1000.0, "Mb/s",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.1", page="179",
conditions=["1000BASE-T PHY over four pairs", "Section Three Clause 40"],
))
continue
if lid == "1000base-t" and p == "maximum_channel_length":
out.append(_num(
pid, p, 100.0, "m",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.7.2", page="265",
source_type="CABLE",
conditions=[
"Class D link segment of up to at least 100 m",
"4-pair Category 5 / Class D as in 40.7",
"not a PCB trace length",
],
))
continue
if lid == "1000base-t" and p == "cable_channel":
out.append(_num(
pid, p, 100.0, "ohm",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.7.2.2", page="265",
source_type="CABLE",
conditions=[
"nominal differential characteristic impedance of each duplex channel",
"100 Ω, 1 MHz to 100 MHz, including cords and connecting hardware",
"not a PCB trace differential impedance",
],
))
continue
if lid == "1000base-t" and p == "return_loss":
out.append(_num(
pid, p, 16.0, "dB",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.8.3.1", page="270",
source_type="PHY",
conditions=[
"MDI differential: reflection attenuated at least 16 dB",
"1.0 MHz to 40 MHz vs 100 Ω ± 15% cabling",
"40100 MHz is a frequency-dependent formula (not packed)",
"not a PCB trace Zdiff number",
],
))
continue
if lid == "1000base-t" and p == "pair_to_pair_skew":
out.append(_num(
pid, p, 50.0, "ns",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.7.4.2", page="267",
source_type="CABLE",
conditions=["link-segment pair-to-pair skew maximum, 2100 MHz"],
))
continue
if lid == "1000base-t" and p in {
"differential_impedance", "impedance_tolerance", "termination",
"insertion_loss",
}:
out.append(_c(pid, p, "UNKNOWN", needed_document=DOC_IEEE_S3_C40))
continue
if lid == "1000base-x" and p == "data_rate":
out.append(_num(
pid, p, 1000.0, "Mb/s",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="36.1.1", page="53",
conditions=["1000BASE-X family PCS/PMA", "Section Three Clause 36"],
))
continue
if lid == "1000base-x" and p == "differential_impedance":
out.append(_c(
pid, p, "NOT_APPLICABLE",
mandatory="INFORMATIONAL", source_type="STANDARD",
conditions=["optical 1000BASE-X PMD is Clause 38; 1000BASE-CX copper is Clause 39"],
))
continue
if lid == "100base-fx" and p == "data_rate":
out.append(_num(
pid, p, 100.0, "Mb/s",
@@ -1360,6 +1439,45 @@ def build_m0_catalog() -> dict[str, Any]:
source_type="CABLE",
conditions=["maximum propagation delay of a link segment", "pair also ≤ 5.7 ns/m"],
))
if lid == "1000base-t":
out.append(_num(
pid, "isolation_after_test", 2.0e6, "ohm",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.6.1.1", page="243",
conditions=[
"PHY 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_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.6.1.1 a", page="243",
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", 0.67, "V",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.6.1.2.1", page="251",
source_type="PHY",
conditions=[
"MDI peak at template points A and B in test mode 1",
"0.670.82 V (0.75 V ± 0.83 dB)",
"transmitter test fixture 1, no intervening cable",
],
))
out.append(_num(
pid, "link_segment_delay_max", 570.0, "ns",
document=DOC_IEEE_2012, organization=ORG_IEEE,
revision=REV_IEEE_2012, section="40.7.4.1", page="267",
source_type="CABLE",
conditions=["maximum propagation delay of a link segment, 2100 MHz"],
))
return out
def _hdmi_cons(pid: str) -> list[dict[str, Any]]:
@@ -1570,10 +1688,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 2133) on file. "
"1000BASE-T is Clause 40 (Section Three, not here). "
"100 Ω in Clause 14/25 is cabling/link-segment, not PCB Z. "
"IEEE 802.3-2015 Section One (Clause 14 10BASE-T), "
"IEEE 802.3-2012 Section Two (Clauses 2133), and "
"IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. "
"100 Ω in Clause 14/25/40 is cabling/link-segment, not PCB Z. "
"Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct."
),
incomplete=True,
@@ -4587,7 +4587,7 @@
"typical": false
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -4988,7 +4988,7 @@
"typical": false
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -5028,17 +5028,26 @@
{
"id": "1000base-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": 1000.0,
"unit": "Mb/s",
"source": {
"document": "IEEE Std 802.3-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.1",
"table": null,
"page": "179"
},
"conditions": [
"1000BASE-T PHY over four pairs",
"Section Three Clause 40"
],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"typical": false
},
{
"id": "1000base-t-mdi-signaling",
@@ -5053,7 +5062,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-differential_impedance",
@@ -5068,7 +5077,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-impedance_tolerance",
@@ -5083,7 +5092,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-intra_pair_skew",
@@ -5098,37 +5107,55 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-pair_to_pair_skew",
"parameter": "pair_to_pair_skew",
"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": 50.0,
"unit": "ns",
"source": {
"document": "IEEE Std 802.3-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.7.4.2",
"table": null,
"page": "267"
},
"conditions": [
"link-segment pair-to-pair skew maximum, 2\u2013100 MHz"
],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"typical": false
},
{
"id": "1000base-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-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.7.2",
"table": null,
"page": "265"
},
"conditions": [
"Class D link segment of up to at least 100 m",
"4-pair Category 5 / Class D as in 40.7",
"not a PCB trace length"
],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"typical": false
},
{
"id": "1000base-t-mdi-insertion_loss",
@@ -5143,22 +5170,33 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-return_loss",
"parameter": "return_loss",
"value_kind": "UNKNOWN",
"value_kind": "NUMERIC",
"mandatory": "MANDATORY",
"source_type": "STANDARD",
"source_type": "PHY",
"source_class": "NORMATIVE",
"value": null,
"unit": null,
"source": null,
"conditions": [],
"value": 16.0,
"unit": "dB",
"source": {
"document": "IEEE Std 802.3-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.8.3.1",
"table": null,
"page": "270"
},
"conditions": [
"MDI differential: reflection attenuated at least 16 dB",
"1.0 MHz to 40 MHz vs 100 \u03a9 \u00b1 15% cabling",
"40\u2013100 MHz is a frequency-dependent formula (not packed)",
"not a PCB trace Zdiff number"
],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"typical": false
},
{
"id": "1000base-t-mdi-crosstalk",
@@ -5173,7 +5211,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-magnetics_requirements",
@@ -5203,7 +5241,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-common_mode",
@@ -5218,7 +5256,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-connector_requirements",
@@ -5233,7 +5271,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-phy_requirements",
@@ -5263,7 +5301,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-vias",
@@ -5278,7 +5316,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-t-mdi-topology",
@@ -5293,25 +5331,132 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 40 (this 1000BASE-T PCB field is not a single number here; 100 \u03a9 is Class D link-segment / 100 \u03a9 test load, not PCB Zdiff)"
},
{
"id": "1000base-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-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.7.2.2",
"table": null,
"page": "265"
},
"conditions": [
"nominal differential characteristic impedance of each duplex channel",
"100 \u03a9, 1 MHz to 100 MHz, including cords and connecting hardware",
"not a PCB trace differential impedance"
],
"value_origin": "SPEC",
"typical": false
},
{
"id": "1000base-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-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.6.1.1",
"table": null,
"page": "243"
},
"conditions": [
"PHY 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-2015 Section One does not contain Clause 40 (1000BASE-T); need 802.3 Section Three"
"typical": false
},
{
"id": "1000base-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-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.6.1.1 a",
"table": null,
"page": "243"
},
"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": "1000base-t-mdi-peak_differential_output",
"parameter": "peak_differential_output",
"value_kind": "NUMERIC",
"mandatory": "MANDATORY",
"source_type": "PHY",
"source_class": "NORMATIVE",
"value": 0.67,
"unit": "V",
"source": {
"document": "IEEE Std 802.3-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.6.1.2.1",
"table": null,
"page": "251"
},
"conditions": [
"MDI peak at template points A and B in test mode 1",
"0.67\u20130.82 V (0.75 V \u00b1 0.83 dB)",
"transmitter test fixture 1, no intervening cable"
],
"value_origin": "SPEC",
"typical": false
},
{
"id": "1000base-t-mdi-link_segment_delay_max",
"parameter": "link_segment_delay_max",
"value_kind": "NUMERIC",
"mandatory": "MANDATORY",
"source_type": "CABLE",
"source_class": "NORMATIVE",
"value": 570.0,
"unit": "ns",
"source": {
"document": "IEEE Std 802.3-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "40.7.4.1",
"table": null,
"page": "267"
},
"conditions": [
"maximum propagation delay of a link segment, 2\u2013100 MHz"
],
"value_origin": "SPEC",
"typical": false
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -5633,7 +5778,7 @@
"needed_document": "IEEE 802.3bz / later 802.3 2.5GBASE-T clause (not in 2012 Section Two)"
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -5954,7 +6099,7 @@
"needed_document": "IEEE 802.3bz / later 802.3 5GBASE-T clause (not in 2012 Section Two)"
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -6275,7 +6420,7 @@
"needed_document": "IEEE Std 802.3-2012 Section Four Clause 55 (10GBASE-T; not in Section Two)"
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -6596,7 +6741,7 @@
"needed_document": "SGMII is not an IEEE 802.3 MDI clause in 2012 Section Two"
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -6635,17 +6780,26 @@
{
"id": "1000base-x-pcb-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": 1000.0,
"unit": "Mb/s",
"source": {
"document": "IEEE Std 802.3-2012 IEEE Standard for Ethernet",
"organization": "IEEE",
"revision": "2012",
"section": "36.1.1",
"table": null,
"page": "53"
},
"conditions": [
"1000BASE-X family PCS/PMA",
"Section Three Clause 36"
],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"typical": false
},
{
"id": "1000base-x-pcb-signaling",
@@ -6660,22 +6814,23 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-differential_impedance",
"parameter": "differential_impedance",
"value_kind": "UNKNOWN",
"mandatory": "MANDATORY",
"value_kind": "NOT_APPLICABLE",
"mandatory": "INFORMATIONAL",
"source_type": "STANDARD",
"source_class": "NORMATIVE",
"value": null,
"unit": null,
"source": null,
"conditions": [],
"conditions": [
"optical 1000BASE-X PMD is Clause 38; 1000BASE-CX copper is Clause 39"
],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"typical": false
},
{
"id": "1000base-x-pcb-impedance_tolerance",
@@ -6690,7 +6845,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-intra_pair_skew",
@@ -6705,7 +6860,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-pair_to_pair_skew",
@@ -6720,7 +6875,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-maximum_channel_length",
@@ -6735,7 +6890,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-insertion_loss",
@@ -6750,7 +6905,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-return_loss",
@@ -6765,7 +6920,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-crosstalk",
@@ -6780,7 +6935,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-magnetics_requirements",
@@ -6810,7 +6965,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-common_mode",
@@ -6825,7 +6980,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-connector_requirements",
@@ -6840,7 +6995,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-phy_requirements",
@@ -6870,7 +7025,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-vias",
@@ -6885,7 +7040,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-topology",
@@ -6900,7 +7055,7 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
},
{
"id": "1000base-x-pcb-cable_channel",
@@ -6915,10 +7070,10 @@
"conditions": [],
"value_origin": "SPEC",
"typical": false,
"needed_document": "IEEE Std 802.3-2012 Section Three (1000BASE-X; not in Section Two)"
"needed_document": "IEEE Std 802.3-2012 Section Three Clause 36 (1000BASE-X PCS/PMA). Optical PMD is Clause 38; 1000BASE-CX copper is Clause 39 \u2014 this PCB field is not a single number"
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -7249,7 +7404,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-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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -7571,7 +7726,7 @@
"needed_document": "IEEE 802.3 10GBASE-R clauses (not in 2012 Section Two)"
}
],
"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.",
"notes": "IEEE 802.3-2015 Section One (Clause 14 10BASE-T), IEEE 802.3-2012 Section Two (Clauses 21\u201333), and IEEE 802.3-2012 Section Three (Clause 40 1000BASE-T; Clause 36 1000BASE-X) on file. 100 \u03a9 in Clause 14/25/40 is cabling/link-segment, not PCB Z. Not auto from RJ45. IEEE vs PHY vs PCB vs magnetics are distinct.",
"incomplete": true
},
{
@@ -2,6 +2,13 @@
What's new in Periscope.
## 2.78.0 — 2026-09-22 — 1000BASE-T from IEEE 802.3-2012 Section Three
IEEE Std 802.3-2012 Section Three Clause 40 fills 1000BASE-T: 1000 Mb/s, 100 m Class D link, cable 100 Ω, MDI return loss 16 dB (140 MHz), pair skew 50 ns, isolation 2 MΩ / 1500 V rms, MDI peak 0.67 V, link delay 570 ns. Cable 100 Ω is **CABLE**; L2 PCB Zdiff stays UNKNOWN. Clause 36 fills 1000BASE-X 1000 Mb/s (optical Zdiff N/A). Insertion-loss formula not packed as a single dB.
- [Changed] `protocol_catalog.py` + `catalog.json`.
- [Changed] pytest `tests/pcb/test_protocol_pdf_pack.py`, `test_protocol_m6_m7.py`.
## 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.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "periscope-web",
"version": "2.77.0",
"version": "2.78.0",
"private": true,
"scripts": {
"sync-version": "node scripts/sync-version.mjs",
+2 -2
View File
@@ -209,8 +209,8 @@ def test_mini_hdmi_is_connector_not_protocol_id():
def test_ethernet_hdmi_skeletons_unknown_needed_document():
cat = load_catalog()
for lid in (
"1000base-t", "2.5gbase-t", "5gbase-t",
"10gbase-t", "sgmii", "1000base-x", "10gbase-r",
"2.5gbase-t", "5gbase-t",
"10gbase-t", "sgmii", "10gbase-r",
"hdmi-1.4", "hdmi-2.0", "hdmi-frl",
):
ifaces = [p for p in cat.physical_interfaces if p.logical_protocol_id == lid]
+19 -4
View File
@@ -203,10 +203,25 @@ def test_ieee8023_section2_100base_tx_not_10base_or_1000():
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
gby = {c.parameter: c for c in gbe.constraints}
_cite_ok(gby["data_rate"])
assert gby["data_rate"].value == 1000.0
assert gby["data_rate"].source.revision == "2012"
assert gby["data_rate"].source.section == "40.1"
assert gby["data_rate"].source.page == "179"
_cite_ok(gby["cable_channel"])
assert gby["cable_channel"].value == 100.0
assert gby["cable_channel"].source_type == "CABLE"
assert gby["cable_channel"].source.section == "40.7.2.2"
assert gby["differential_impedance"].value_kind == "UNKNOWN"
_cite_ok(gby["peak_differential_output"])
assert gby["peak_differential_output"].value == 0.67
assert gby["peak_differential_output"].source_type == "PHY"
x = next(p for p in cat.physical_interfaces if p.id == "1000base-x-pcb")
xr = next(c for c in x.constraints if c.parameter == "data_rate")
_cite_ok(xr)
assert xr.value == 1000.0
assert xr.source.section == "36.1.1"
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)