diff --git a/board_config.zen b/board_config.zen index 61fb497..f587956 100644 --- a/board_config.zen +++ b/board_config.zen @@ -351,7 +351,7 @@ BASE_2L_STACKUP = Stackup( materials=[FR4_CORE], thickness=1.6, symmetric=True, - copper_finish="HAL SnPb", + copper_finish="ENIG", silk_screen_color="White", solder_mask_color="Black", layers=[ @@ -376,7 +376,7 @@ BASE_4L_STACKUP = Stackup( materials=[FR4_CORE, BASE_PREPREG], thickness=1.6, symmetric=True, - copper_finish="HAL SnPb", + copper_finish="ENIG", silk_screen_color="White", solder_mask_color="Black", layers=[ @@ -458,7 +458,7 @@ BASE_6L_STACKUP = Stackup( ], thickness=1.6, symmetric=True, - copper_finish="HAL SnPb", + copper_finish="ENIG", silk_screen_color="White", solder_mask_color="Black", layers=[ @@ -546,7 +546,7 @@ BASE_8L_STACKUP = Stackup( ], thickness=1.6, symmetric=True, - copper_finish="HAL SnPb", + copper_finish="ENIG", silk_screen_color="White", solder_mask_color="Black", layers=[ diff --git a/interfaces.zen b/interfaces.zen index 52cc791..852d071 100644 --- a/interfaces.zen +++ b/interfaces.zen @@ -1,4 +1,4 @@ -load("units.zen", "VoltageRange") +load("units.zen", "VoltageRange", "Impedance") Power = builtin.net_type( "Power", @@ -15,6 +15,12 @@ Analog = builtin.net_type("Analog") Pwm = builtin.net_type("Pwm") Gpio = builtin.net_type("Gpio") +DiffPair = interface( + P=Net(), + N=Net(), + impedance=field(Impedance | None, default=None), +) + Can = interface( CAN_H=Net(), CAN_L=Net(), @@ -26,116 +32,77 @@ CanTtl = interface( ) Csi = interface( - CLK_P=Net(), - CLK_N=Net(), - D0_P=Net(), - D0_N=Net(), - D1_P=Net(), - D1_N=Net(), - D2_P=Net(), - D2_N=Net(), - D3_P=Net(), - D3_N=Net(), -) - -DiffPair = interface( - P=Net("_P"), - N=Net("_N"), + CLK=DiffPair(impedance=Impedance(100)), + D0=DiffPair(impedance=Impedance(100)), + D1=DiffPair(impedance=Impedance(100)), + D2=DiffPair(impedance=Impedance(100)), + D3=DiffPair(impedance=Impedance(100)), ) DisplayPort = interface( - AUX_P=Net(), - AUX_N=Net(), - ML0_P=Net(), - ML0_N=Net(), - ML1_P=Net(), - ML1_N=Net(), - ML2_P=Net(), - ML2_N=Net(), - ML3_P=Net(), - ML3_N=Net(), + AUX=DiffPair(impedance=Impedance(100)), + ML0=DiffPair(impedance=Impedance(100)), + ML1=DiffPair(impedance=Impedance(100)), + ML2=DiffPair(impedance=Impedance(100)), + ML3=DiffPair(impedance=Impedance(100)), HPD=Net(), ) Dsi = interface( - CLK_P=Net(), - CLK_N=Net(), - D0_P=Net(), - D0_N=Net(), - D1_P=Net(), - D1_N=Net(), - D2_P=Net(), - D2_N=Net(), - D3_P=Net(), - D3_N=Net(), + CLK=DiffPair(impedance=Impedance(100)), + D0=DiffPair(impedance=Impedance(100)), + D1=DiffPair(impedance=Impedance(100)), + D2=DiffPair(impedance=Impedance(100)), + D3=DiffPair(impedance=Impedance(100)), ) Edp = interface( - AUX_P=Net(), - AUX_N=Net(), - TX0_P=Net(), - TX0_N=Net(), - TX1_P=Net(), - TX1_N=Net(), - TX2_P=Net(), - TX2_N=Net(), - TX3_P=Net(), - TX3_N=Net(), + AUX=DiffPair(impedance=Impedance(100)), + TX0=DiffPair(impedance=Impedance(100)), + TX1=DiffPair(impedance=Impedance(100)), + TX2=DiffPair(impedance=Impedance(100)), + TX3=DiffPair(impedance=Impedance(100)), ) Emmc = interface( - CLK=Net(), - CMD=Net(), - DAT0=Net(), - DAT1=Net(), - DAT2=Net(), - DAT3=Net(), - DAT4=Net(), - DAT5=Net(), - DAT6=Net(), - DAT7=Net(), - DS=Net(), + CLK=Net(impedance=Impedance(50)), + CMD=Net(impedance=Impedance(50)), + DAT0=Net(impedance=Impedance(50)), + DAT1=Net(impedance=Impedance(50)), + DAT2=Net(impedance=Impedance(50)), + DAT3=Net(impedance=Impedance(50)), + DAT4=Net(impedance=Impedance(50)), + DAT5=Net(impedance=Impedance(50)), + DAT6=Net(impedance=Impedance(50)), + DAT7=Net(impedance=Impedance(50)), + DS=Net(impedance=Impedance(50)), RST_N=Net(), ) Ethernet = interface( - TX_P=Net(), - TX_N=Net(), - RX_P=Net(), - RX_N=Net(), + TX=DiffPair(impedance=Impedance(100)), + RX=DiffPair(impedance=Impedance(100)), ) Ethernet_Phy = interface( - TR0_P=Net(), - TR0_N=Net(), - TR1_P=Net(), - TR1_N=Net(), - TR2_P=Net(), - TR2_N=Net(), - TR3_P=Net(), - TR3_N=Net(), + TR0=DiffPair(impedance=Impedance(100)), + TR1=DiffPair(impedance=Impedance(100)), + TR2=DiffPair(impedance=Impedance(100)), + TR3=DiffPair(impedance=Impedance(100)), ) Ethernet_1000BaseT = interface( - BI_DA_P=Net(), - BI_DA_N=Net(), - BI_DB_P=Net(), - BI_DB_N=Net(), - BI_DC_P=Net(), - BI_DC_N=Net(), - BI_DD_P=Net(), - BI_DD_N=Net(), + BI_DA=DiffPair(impedance=Impedance(100)), + BI_DB=DiffPair(impedance=Impedance(100)), + BI_DC=DiffPair(impedance=Impedance(100)), + BI_DD=DiffPair(impedance=Impedance(100)), ) Hdmi = interface( - CLK_P=Net(), - CLK_N=Net(), - D0_P=Net(), - D0_N=Net(), - D1_P=Net(), - D1_N=Net(), - D2_P=Net(), - D2_N=Net(), + CLK=DiffPair(impedance=Impedance(100)), + D0=DiffPair(impedance=Impedance(100)), + D1=DiffPair(impedance=Impedance(100)), + D2=DiffPair(impedance=Impedance(100)), CEC=Net(), SCL=Net(), SDA=Net(), @@ -199,14 +166,10 @@ Lcd = interface( ) Lvds = interface( - CLK_P=Net(), - CLK_N=Net(), - DATA0_P=Net(), - DATA0_N=Net(), - DATA1_P=Net(), - DATA1_N=Net(), - DATA2_P=Net(), - DATA2_N=Net(), + CLK=DiffPair(impedance=Impedance(100)), + DATA0=DiffPair(impedance=Impedance(100)), + DATA1=DiffPair(impedance=Impedance(100)), + DATA2=DiffPair(impedance=Impedance(100)), ) Mdio = interface( @@ -215,14 +178,10 @@ Mdio = interface( ) Mdi = interface( - A_P=Net(), - A_N=Net(), - B_P=Net(), - B_N=Net(), - C_P=Net(), - C_N=Net(), - D_P=Net(), - D_N=Net(), + A=DiffPair(impedance=Impedance(100)), + B=DiffPair(impedance=Impedance(100)), + C=DiffPair(impedance=Impedance(100)), + D=DiffPair(impedance=Impedance(100)), ) Mii = interface( @@ -244,16 +203,11 @@ Mii = interface( ) Mipi = interface( - CLK_P=Net(), - CLK_N=Net(), - DATA0_P=Net(), - DATA0_N=Net(), - DATA1_P=Net(), - DATA1_N=Net(), - DATA2_P=Net(), - DATA2_N=Net(), - DATA3_P=Net(), - DATA3_N=Net(), + CLK=DiffPair(impedance=Impedance(100)), + DATA0=DiffPair(impedance=Impedance(100)), + DATA1=DiffPair(impedance=Impedance(100)), + DATA2=DiffPair(impedance=Impedance(100)), + DATA3=DiffPair(impedance=Impedance(100)), ) @@ -277,81 +231,64 @@ OscPair = interface( ) Pcie = interface( - TX_P=Net(), - TX_N=Net(), - RX_P=Net(), - RX_N=Net(), - REFCLK_P=Net(), - REFCLK_N=Net(), + TX=DiffPair(impedance=Impedance(85)), + RX=DiffPair(impedance=Impedance(85)), + REFCLK=DiffPair(impedance=Impedance(85)), PERST=Net(), WAKE=Net(), ) PcieGen3x1Lane = interface( - TX_P=Net(), - TX_N=Net(), - RX_P=Net(), - RX_N=Net(), - REFCLK_P=Net(), - REFCLK_N=Net(), + TX=DiffPair(impedance=Impedance(85)), + RX=DiffPair(impedance=Impedance(85)), + REFCLK=DiffPair(impedance=Impedance(85)), RESET_N=Net(), WAKE_N=Net(), CLK_REQ_N=Net(), ) PcieGen3x2Lane = interface( - TX0_P=Net(), - TX0_N=Net(), - RX0_P=Net(), - RX0_N=Net(), - TX1_P=Net(), - TX1_N=Net(), - RX1_P=Net(), - RX1_N=Net(), - REFCLK_P=Net(), - REFCLK_N=Net(), + TX0=DiffPair(impedance=Impedance(85)), + RX0=DiffPair(impedance=Impedance(85)), + TX1=DiffPair(impedance=Impedance(85)), + RX1=DiffPair(impedance=Impedance(85)), + REFCLK=DiffPair(impedance=Impedance(85)), RESET_N=Net(), WAKE_N=Net(), CLK_REQ_N=Net(), ) QLink = interface( - CLK_P=Net(), - CLK_N=Net(), - L0_P=Net(), - L0_N=Net(), - L1_P=Net(), - L1_N=Net(), - L2_P=Net(), - L2_N=Net(), - L3_P=Net(), - L3_N=Net(), - L4_P=Net(), - L4_N=Net(), + CLK=DiffPair(impedance=Impedance(100)), + L0=DiffPair(impedance=Impedance(100)), + L1=DiffPair(impedance=Impedance(100)), + L2=DiffPair(impedance=Impedance(100)), + L3=DiffPair(impedance=Impedance(100)), + L4=DiffPair(impedance=Impedance(100)), ) Qspi = interface( - CS=Net(), - CLK=Net(), - IO0=Net(), - IO1=Net(), - IO2=Net(), - IO3=Net(), + CS=Net(impedance=Impedance(50)), + CLK=Net(impedance=Impedance(50)), + IO0=Net(impedance=Impedance(50)), + IO1=Net(impedance=Impedance(50)), + IO2=Net(impedance=Impedance(50)), + IO3=Net(impedance=Impedance(50)), ) Rgmii = interface( - TXD0=Net(), - TXD1=Net(), - TXD2=Net(), - TXD3=Net(), - TX_CTL=Net(), - TXC=Net(), - RXD0=Net(), - RXD1=Net(), - RXD2=Net(), - RXD3=Net(), - RX_CTL=Net(), - RXC=Net(), + TXD0=Net(impedance=Impedance(50)), + TXD1=Net(impedance=Impedance(50)), + TXD2=Net(impedance=Impedance(50)), + TXD3=Net(impedance=Impedance(50)), + TX_CTL=Net(impedance=Impedance(50)), + TXC=Net(impedance=Impedance(50)), + RXD0=Net(impedance=Impedance(50)), + RXD1=Net(impedance=Impedance(50)), + RXD2=Net(impedance=Impedance(50)), + RXD3=Net(impedance=Impedance(50)), + RX_CTL=Net(impedance=Impedance(50)), + RXC=Net(impedance=Impedance(50)), ) Rmii = interface( @@ -377,45 +314,39 @@ Rs232 = interface( ) Rs422 = interface( - TX_P=Net("TX_P"), - TX_N=Net("TX_N"), - RX_P=Net("RX_P"), - RX_N=Net("RX_N"), - RTS_P=Net("RTS_P"), - RTS_N=Net("RTS_N"), - CTS_P=Net("CTS_P"), - CTS_N=Net("CTS_N"), + TX=DiffPair(impedance=Impedance(100)), + RX=DiffPair(impedance=Impedance(100)), + RTS=DiffPair(impedance=Impedance(100)), + CTS=DiffPair(impedance=Impedance(100)), ) Rs485 = Rs422 Sata = interface( - TX_P=Net(), - TX_N=Net(), - RX_P=Net(), - RX_N=Net(), + TX=DiffPair(impedance=Impedance(100)), + RX=DiffPair(impedance=Impedance(100)), ) Sdio = interface( - CLK=Net(), - CMD=Net(), - DAT0=Net(), - DAT1=Net(), - DAT2=Net(), - DAT3=Net(), + CLK=Net(impedance=Impedance(50)), + CMD=Net(impedance=Impedance(50)), + DAT0=Net(impedance=Impedance(50)), + DAT1=Net(impedance=Impedance(50)), + DAT2=Net(impedance=Impedance(50)), + DAT3=Net(impedance=Impedance(50)), ) Sdmmc = interface( - CLK=Net(), - CMD=Net(), - DAT0=Net(), - DAT1=Net(), - DAT2=Net(), - DAT3=Net(), - DAT4=Net(), - DAT5=Net(), - DAT6=Net(), - DAT7=Net(), + CLK=Net(impedance=Impedance(50)), + CMD=Net(impedance=Impedance(50)), + DAT0=Net(impedance=Impedance(50)), + DAT1=Net(impedance=Impedance(50)), + DAT2=Net(impedance=Impedance(50)), + DAT3=Net(impedance=Impedance(50)), + DAT4=Net(impedance=Impedance(50)), + DAT5=Net(impedance=Impedance(50)), + DAT6=Net(impedance=Impedance(50)), + DAT7=Net(impedance=Impedance(50)), ) SmBus = I2c @@ -468,41 +399,28 @@ def UsartPair(name_a: str, name_b: str) -> (Usart, Usart): Ufs = interface( REFCLK=Net(), RESET_N=Net(), - L0_RX_P=Net(), - L0_RX_N=Net(), - L0_TX_P=Net(), - L0_TX_N=Net(), - L1_RX_P=Net(), - L1_RX_N=Net(), - L1_TX_P=Net(), - L1_TX_N=Net(), + L0_RX=DiffPair(impedance=Impedance(100)), + L0_TX=DiffPair(impedance=Impedance(100)), + L1_RX=DiffPair(impedance=Impedance(100)), + L1_TX=DiffPair(impedance=Impedance(100)), ) Usb2 = interface( - DP=Net("D_P"), - DM=Net("D_N"), + D=DiffPair(impedance=Impedance(90)), ) Usb3 = interface( - DP=Net(), - DM=Net(), - SSTX_N=Net(), - SSTX_P=Net(), - SSRX_N=Net(), - SSRX_P=Net(), + D=DiffPair(impedance=Impedance(90)), + SSTX=DiffPair(impedance=Impedance(90)), + SSRX=DiffPair(impedance=Impedance(90)), ) UsbTypeC = interface( - DP=Net("D_P"), - DM=Net("D_N"), - SSTX0_P=Net(), - SSTX0_N=Net(), - SSRX0_P=Net(), - SSRX0_N=Net(), - SSTX1_P=Net(), - SSTX1_N=Net(), - SSRX1_P=Net(), - SSRX1_N=Net(), + D=DiffPair(impedance=Impedance(90)), + SSTX0=DiffPair(impedance=Impedance(90)), + SSRX0=DiffPair(impedance=Impedance(90)), + SSTX1=DiffPair(impedance=Impedance(90)), + SSRX1=DiffPair(impedance=Impedance(90)), SBU1=Net(), SBU2=Net(), CC1=Net(),