点击查看精选 PCIe 系列文章
点击进入【芯片设计验证】社区,查看更多精彩内容
声明:
- 作者主页:【MangoPapa的CSDN主页】。
- ⚠️ 本文首发于CSDN,转载或引用请注明出处【点击查看原文】。
- ⚠️ 本文为非盈利性质,目的为 个人学习记录 及 知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
- ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
- 欢迎大家指出文章错误,欢迎同行与我交流 ~
- 邮箱:[email protected]
本配置适用于 SNPS 家 PCIe 5.0 Controller 及 VIP。
Note: 无需配置 skip_interval (SYMBOL_FILTER_1_OFF 寄存器的 SKP_INT_VAL 字段),配了也不起作用,该字段仅在非 SRIS mode 下有效。
参考 pcie_svt_uvm_user_guide chapter 6.7
PL config 中配置如下:
示例代码如下
// 配置 gen1~gen5 的 ssc_mode,支持 down spread, center spread,no up spread
xxx.pcie_cfg.pl_cfg_ssc_mode[0] = svt_pcie_pl_configuration::SSC_MODE_DOWN_SPREAD;
xxx.pcie_cfg.pl_cfg_ssc_mode[1] = svt_pcie_pl_configuration::SSC_MODE_DOWN_SPREAD;
xxx.pcie_cfg.pl_cfg_ssc_mode[2] = svt_pcie_pl_configuration::SSC_MODE_DOWN_SPREAD;
xxx.pcie_cfg.pl_cfg_ssc_mode[3] = svt_pcie_pl_configuration::SSC_MODE_DOWN_SPREAD;
xxx.pcie_cfg.pl_cfg_ssc_mode[4] = svt_pcie_pl_configuration::SSC_MODE_DOWN_SPREAD;
// set max spread of ssc, default 5000 ppm
xxx.pipe_cfg.pl_cfg.ssc_max_spread = 5000;
// set ssc modulation rate, default 33 KHz
xxx.pcie_cfg.pl_cfg.ssc_modulation_rate = 2’b11; // default use 33 KHZ
// set tx rx osc fre , -300 ~ 300 ppm
xxx.pcie_cfg.pl_cfg.fixed_ppm_due_to_tx_rx_xo = 300; // should be -300 ~ 300
// set tx skp interval, max should less than 153
xxx.pcie_cfg.pl_cfg.min_tx_skp_interval_in_symbol_times = 153;
xxx.pcie_cfg.pl_cfg.max_tx_skp_interval_in_symbol_times = 153;
xxx.pcie_cfg.pl_cfg.min_tx_skp_interval_in_blocks = 37;
xxx.pcie_cfg.pl_cfg.max_tx_skp_interval_in_blocks = 37;
// set rx side skip interval to check received skip symbol
xxx.pcie_cfg.pl_cfg.min_rx_skp_interval_in_symbol_times = 1;
xxx.pcie_cfg.pl_cfg.max_rx_skp_interval_in_symbol_times = 153;
xxx.pcie_cfg.pl_cfg.min_rx_skp_interval_in_blocks = 1;
xxx.pcie_cfg.pl_cfg.max_rx_skp_interval_in_blocks = 37;
// enlarge clock tolerance, 5600 ppm, SER_GEN_0 means lane0
defparam spd_0.SVT_PCIE_UI_SERIAL_CLK_TOLERANCE = 0.005600;
defparam spd_0.m_ser.port0.SER_GEN_0.serdes.CLK_TOLERANCE = 0.005600;
defparam spd_0.m_ser.port0.SER_GEN_1.serdes.CLK_TOLERANCE = 0.005600;
defparam spd_0.m_ser.port0.SER_GEN_2.serdes.CLK_TOLERANCE = 0.005600;
defparam spd_0.m_ser.port0.SER_GEN_3.serdes.CLK_TOLERANCE = 0.005600;
...
// allow clock width adjustment
defparam spd_0.m_ser.port0.SER_GEN_0.serdes.ALLOW_CLK_WIDTH_ADJUSTMENT = 1;
defparam spd_0.m_ser.port0.SER_GEN_1.serdes.ALLOW_CLK_WIDTH_ADJUSTMENT = 1;
defparam spd_0.m_ser.port0.SER_GEN_2.serdes.ALLOW_CLK_WIDTH_ADJUSTMENT = 1;
defparam spd_0.m_ser.port0.SER_GEN_3.serdes.ALLOW_CLK_WIDTH_ADJUSTMENT = 1;
...
|
精选往期 PCIe 协议系列文章
- 【最新技术早知道】PCIe Gen5 还没用上,Gen6 就来了?PCIe 6.0 系列文章之:《PCIe 6.0,到底 6 在哪?》
- 【PCIe 6.0】颠覆性技术!你NRZ相守20年又怎样?看我PAM4如何上位PCIe 6.0 !
- PCIe事务排序(Transaction Ordering)
- PCIe地址转换服务(ATS)详解
- PCIe访问控制服务(ACS)
- PCIe锁定事务(Locked Transactions)介绍
- PCIe TLP Prefix & PASID TLP Prefix介绍
点击进入【芯片设计验证】社区,查看更多精彩内容
⬆️ 返回顶部 ⬆️