TDPLL
T-DPLL configuration and management
- TDPLL
Configure the T-DPLL (time and frequency digital PLL) firmware: DPLL instances, input and output clocks, reference monitoring and selection, switching, holdover and SyncE ESMC. T-DPLL runs as firmware on an embedded core, on top of the PTP stack (see PTP).
On SONiC Trident 3 switches that firmware is not running. Every form that reads DPLL or clock state fails with
<function>() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable, followed by the SAI shell’sFailed to execute the diagnostic command. Error: Operation failed.; table forms print their header line first. Onlytdpll monitor getandtdpll select getanswer, from the shell’s own copy of the settings: all thresholds 0 andBest : 0 (GPIO0). These values do not mean a reference is in use.The first word selects the area:
INSTance,INputclk,OUTputclk,MONitor,SELect,NOTIfication,SWitch,ESMCorHOLDover(each can be abbreviated to its capital letters). Every area acceptsHELPto print its part of the usage. An unknown word prints the usage.The built-in help does not list
NOTIfication, which takesConTRoL CallBackENable=<y/n>. It showsTDPLL HOLDover RESET <output>; the shell actually takesTDPLL HOLDover RESET INDeX=<output>.Safety:
showandGetforms are read-only.Set,ConTRoL,RegisterandRESETchange the synchronisation firmware and can disturb SyncE or PTP time distribution if it is in use.Hardware-validated
drivshell> tdpll instance show # GP0 GP1 GP2 GP3 GP4 GP5 SE1 SE2 1588 BS0 BS1 S-PLL M-PLL BW PBO bcm_common_tdpll_dpll_reference_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
- TDPLL INSTance [show [<index>] | Get <index> | Set <index> [INputMaSK=<hex>] [OUTputMaSK=<hex>] [PHaseMODE=<mode>] [PHaseOFFSET=<n>] [DPLLBandWidth=<bw>]]
Show or configure DPLL instances. Values of
PHaseMODEandDPLLBandWidthare names (see the built-in help).Hardware-validated
drivshell> tdpll instance get 0 bcm_common_tdpll_dpll_bindings_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
- TDPLL INputclk [show [<index>] | Get <index> | Set <index> [L1MUX=<n>] [L1PORT=<port>] [MAC=<mac>] [ENable=<y/n>] [FREQuency=<n>] [TSFREQuency=<n>] [QL=<QL>] [PRIOrity=<n>] [LOCKout=<y/n>]]
Show or configure an input clock (
GPIO0–GPIO5,SyncE1,SyncE2,1588-Freq,1588-Phase).Hardware-validated
drivshell> tdpll inputclk show ID En? Offset Valid QL Prio LkO Mux DPLLS GPIO0 bcm_common_tdpll_input_clock_enable_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
- TDPLL OUTputclk <Get <index> | Set <index> [ENable=<y/n>] [FREQuency=<n>] [TSFREQuency=<n>] [DerivFREQuency=<n>]>
Show or configure an output clock (
BroadSync0/1,SerDesLCPLL,MasterLCPLL,1588-Hybrid,GPIO0–GPIO5).Hardware-validated
drivshell> tdpll outputclk get BroadSync0 bcm_common_tdpll_output_clock_enable_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
- TDPLL MONitor <ConTRoL CallBackENable=<y/n> | Get | Set [INTERVAL=<s>] [SoFTWaRN=<ppb>] [HaRDACCept=<ppb>] [HaRDREJect=<ppb>]>
Reference monitoring: callback control, thresholds.
Hardware-validated
drivshell> tdpll monitor get T-DPLL Input Clock Monitoring Parameters and Thresholds. Unit: 0 Stack: 0 -------------------------------------------------------------------------------- Interval : 0 sec Soft-Warn : 0 ppb Hard-Accept: 0 ppb Hard-Reject: 0 ppb
- TDPLL SELect <ConTRoL CallBackENable=<y/n> | Get <dpll_index> | Set <dpll_index> QLENabled=<y/n>>
Reference selection.
Hardware-validated
drivshell> tdpll select get 0 T-DPLL Reference Selection Configuration and State Data. Unit: 0 Stack: 0 -------------------------------------------------------------------------------- DPLL : 0 Modes : QL-Enabled [ ] Best : 0 (GPIO0)
- TDPLL NOTIfication ConTRoL CallBackENable=<y/n>
Enable or disable the notification callback. Not in the built-in help.
Unvalidated
drivshell> tdpll notification control callbackenable=y
- TDPLL SWitch <ConTRoL ENable=<y/n> | Get <dpll_index> | Set <dpll_index> REVertive=<y/n>>
Reference switching.
Hardware-validated
drivshell> tdpll switch get 0 bcm_common_tdpll_dpll_reference_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
- TDPLL ESMC <Get <dpll_index> | Set <dpll_index> … | Register <dpll_index> G8273PhaseTransientEnable=<y/n>>
SyncE ESMC (G.8264) configuration.
Setkeys:MAC,QL,HoldoverQL,G781,RXENable,TXENable,RXPortBitMaP,TXPortBitMaP(port bitmaps, see Ports and port bitmaps),G8264ESSMCode.Hardware-validated
drivshell> tdpll esmc get 0 bcm_common_tdpll_esmc_mac_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
- TDPLL HOLDover <Get <output> | Set <output> [FREQuency=<ppt>] [Mode=<mode>] | RESET INDeX=<output>>
Holdover configuration.
Hardware-validated
drivshell> tdpll holdover get BroadSync0 bcm_common_tdpll_output_clock_holdover_data_get() FAILED: bcm_common_ptp_clock_port_identity_get() returned -16 : Feature unavailable Failed to execute the diagnostic command. Error: Operation failed.
Built-in help
Usages: TDPLL INSTance <subcommand> [...] TDPLL INSTance [show] [<index>] I/i: Enabled/Disabled Input O/o: Enabled/disabled output *: Selected TDPLL INSTance Get <index> TDPLL INSTance Set <index> INputMaSK=<hex> OUTputMaSK=<hex> PHaseMODE=<|NONE|PBO|PHaseSLEW|> PHaseOFFSET=<value> DPLLBandWidth=<bandwidth> where <bandwidth> = | 0.01Hz | 0.05Hz | 0.1Hz | 0.5Hz | | 1Hz | 5Hz | 10Hz | TDPLL INputclk <subcommand> [...] TDPLL INputclk [show] [<index>] TDPLL INputclk Get <index> where <index> = | GPIO0 | GPIO1 | GPIO2 | GPIO3 | | GPIO4 | GPIO5 | SyncE1 | SyncE2 | | 1588-Freq | 1588-Phase | TDPLL INputclk Set <index> L1MUX=<mux> L1PORT=<port> MAC=<mac> FREQuency=<value> TSFREQuency=<value> ENable=<y/n> QL=<QL> PRIOrity=<value> LOCKout=<y/n> where <QL> = | QL-PRC | QL-SSU-A | QL-SSU-B | (Option I) | QL-SEC | QL-DNU | (Option I) | QL-STU | QL-PRS | QL-TNC | (Option II) | QL-ST2 | QL-ST3 | QL-SMC | (Option II) | QL-ST3E | QL-PROV | QL-DUS | (Option II) | QL-UNK | QL-SEC | (Option III) TDPLL OUTputclk <subcommand> [...] TDPLL OUTputclk Get <index> where <index> = | BroadSync0 | BroadSync1 | | SerDesLCPLL | MasterLCPLL | | 1588-Hybrid | GPIO0 | GPIO1 | | GPIO2 | GPIO3 | GPIO4 | GPIO5 | TDPLL OUTputclk Set <index> ENable=<y/n> FREQuency=<value> TSFREQuency= <value> DerivFREQuency=<value> TDPLL MONitor <subcommand> [...] TDPLL MONitor ConTRoL CallBackENable=<y/n> TDPLL MONitor Get TDPLL MONitor Set INTERVAL=<value-sec> SoFTWaRN=<value-ppb> HaRDACCept=<value-ppb> HaRDREJect=<value-ppb> TDPLL SELect <subcommand> [...] TDPLL SELect ConTRoL CallBackENable=<y/n> TDPLL SELect Get <dpll_index> TDPLL SELect Set <dpll_index> QLENabled=<y/n> TDPLL SWitch <subcommand> [...] TDPLL SWitch ConTRoL ENable=<y/n> TDPLL SWitch Get <dpll_index> TDPLL SWitch Set <dpll_index> REVertive=<y/n> TDPLL HOLDover <subcommand> [...] TDPLL HOLDover Get <output> where <output> = | BroadSync0 | BroadSync1 | | SerDesLCPLL | MasterLCPLL | | 1588-Hybrid | TDPLL HOLDover Set <ouput> [FREQuency=<freqppt>] [Mode=<mode>] where <mode> = | INSTantaneous | ONEsecond | MANual | | FASTaverage | SLOWaverage | TDPLL HOLDover RESET <output> TDPLL ESMC <subcommand> [...] TDPLL ESMC Get <dpll_index> TDPLL ESMC Set <dpll_index> MAC=<mac> QL=<QL> HoldoverQL=<QL> G781=<OPTionI|OPTionII|OPTionIII> RXENable=<y/n> TXENable=<y/n> RXPortBitMaP=<port bitmap> TXPortBitMaP=<port bitmap> G8264ESSMCode=<essm_code> TDPLL ESMC Register <dpll_index> G8273PhaseTransientEnable=<y/n> where <QL> = | QL-PRC | QL-SSU-A | QL-SSU-B | (Option I) | QL-SEC | QL-DNU | (Option I) | QL-STU | QL-PRS | QL-TNC | (Option II) | QL-ST2 | QL-ST3 | QL-SMC | (Option II) | QL-ST3E | QL-PROV | QL-DUS | (Option II) | QL-UNK | QL-SEC | (Option III) NOTE: G781 and RXENable are global attributes, which apply to all T-DPLL instances. where <essm_code> = <0 - bcmEsmcEssmCodeNone> | <0xff - bcmEsmcEssmCodeEEC>Further reading