1.PCIe
https://olegkutkov.me/2021/01/07/writing-a-pci-device-driver-for-linux/
https://wiki-osdev-org.translate.goog/PCI?_x_tr_sl=en&_x_tr_tl=zh-CN&_x_tr_hl=en&_x_tr_pto=wapp#Class_Codes
https://blog.csdn.net/u010872301/article/details/78519371
https://blog.csdn.net/qq_39815222/article/details/122128036?spm=1001.2101.3001.6650.1
https://www.kernel.org/doc/html/latest/PCI/
Synopsis driver: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/pci/controller/dwc/pcie-designware.c
■PCI Express Base Specification, Revision 5.0, Version 1.0Access to this specification requires membership in PCI-SIG.Download site: http://pcisig.com/specifications ■PIPE Specification for PCI Express, Version 4.4.1, Version 5.1.1Download site:http://www.intel.com/technology/pciexpress/devnet/resources.htm
PCIe教程:http://blog.chinaaet.com/justlxy/p/5100053251
CXL 2.0: https://www.youtube.com/watch?v=FaIK_SFe_i8
2. System Verilog
SystemVerilog 开始合并许多不相交的验证语言,例如 Vera 和e ,它们被构建为 Verilog 和 VHDL 之上的一个层。这些语言中的每一种都有自己的专有方法(RVM 和 eRM),它们提供了一个可重用的框架来构建、配置和执行测试。
SystemVerilog 成立后,它需要自己的方法论,Mentor 在 2006 年创建了源自 SystemC 概念的 AVM(高级验证方法)。Synopsys 将其基于 Vera 的 RVM(重用验证方法)库转换为 SystemVerilog,并将其称为 VMM(验证方法手册),但并未公开发布。Mentor 和 Cadence 于 2008 年联合创建了 OVM(开放验证方法),这是现有 AVM 与e RM 概念的合并。
最终到 2011 年,Mentor、Cadence 和 Synopsys 通过 Accellera 联合起来,创建了 UVM(通用验证方法)。寄存器抽象层源自 VMM。
人们可以整天争论不同方法之间的差异以及谁先做了什么,但它们都有相同的目的 - 提供基于软件编程中常见设计模式的标准方法。采用最简单的概念之一——报告。这些方法为您提供了致命、错误、警告和信息报告的标准以及过滤这些消息的方法。任何查看代码的人都将能够理解报告是如何生成和控制的,并且每个项目都是一样的。
2.1 System verilog
https://www.asic-world.com/systemverilog/tutorial.html
//SystemVerilog语言简介: https://blog.51cto.com/u_15346322/4931766
//always_ff:表示时序逻辑的过程;always_comb:表示组合逻辑的过程;always_latch:表示锁存逻辑的过程。fork-join, process, macro(`), unique/requires, break/continue/return.
Altera Quartus or Xilinx ISE/Vivado。Xilinx+Modelsim:https://cseweb.ucsd.edu/classes/fa05/cse140L/Xilinx_install/XilinxInstall.html Altera的官网也可下载适合fpga的modelsim ,在安装时选择starter edition就免费。
2.2 System C
4 UVM
https://www.verifasttech.com/learn-systemverilog-uvm/?