zhajio@ubuntu:~/nvdla/hw$
.
├── cmod # systemc UT TLM 模型,在vp中也用的这个sc模型,在验证环境中需要 `define NVDLA_REFERENCE_MODEL_ENABLE,使能cmod作为参考模型使用。
├── perf # NVDLA_OpenSource_Performance excel文档 http://nvdla.org/primer.html网页 "Example Area and Performance with NVDLA" 章节
├── spec
│ ├── defs # project level macros for multiple projects build
│ ├── manual # 寄存器模型描述的RDL文件,利用开源UVM REG MODEL生成工具,生成
| | #* **regs_v.v**: verilog model
| | #* **regs_ral.sv**: ral class
| | #* **cmod**: c++ model
| | #* **sv**: systemverilog model
│ └── odif # ODIF: Open DLA Interface Definition
├── syn
│ ├── cons # synopsys design constraint 文件
│ ├── script # 综合的脚本
│ └── templates # ???
├── third_party_tools
│ └── uvmc-2.3.0 # UVM Connect是一个基于UVM的开源库(Mentor Graphics),提供SystemC和SystemVerilog UVM模型和组件之间的TLM1和TLM2连接以及对象传递。
├── tools
│ ├── bin # 各种脚本,我有篇博文是讲epython的
│ ├── etc # build config, 定义不同配置对应project需要的资源,数据位宽,verdilog或者sv需要的宏,c++需要的宏等。
│ └── make # build需要的makefile
├── verif # 验证环境目录,下面会细讲
│ ├── coverage
│ ├── protection
│ ├── ral
│ ├── regression
│ ├── testbench
│ ├── tests
│ ├── tools
│ ├── uvm_template
│ ├── verilator
│ └── vip
└── vmod # verilog 源码
├── compile_lint # vcs编译makefile,compile log check 脚本
├── fifos
├── include
├── nvdla
├── plugins # 内嵌perl脚本,模板产生工具
├── rams
└── vlibs
zhajio@ubuntu:~/nvdla/hw/verif$
.
├── coverage # coverage exculde files locate
│ └── elfiles
│ └── nv_small # NVDLA 仅仅给出nv_small配置下的exclude files
├── protection # run protection tests的python 脚本。Protection tests for code commit quality check.
├── ral # Register Abstract Layer, reg adapter,顶层ral,ral pkg等。
├── regression
│ ├── scripts # 回归测试用python脚本
│ └── testplans # testplan
├── testbench
│ ├── trace_generator # CRT用trace format文件生成用的tb. 有自己的nvdla_tg_top, 能单独运行,会生成,trace_player用到的trace format文件和数据
│ │ ├── env
│ │ ├── resources
│ │ └── scenarios
│ └── trace_player # 解析trace format文件,完成配置寄存器,load data to memory,同步,等待中断,以及result memory crc check等。
├── tests
│ ├── nvdla_test
│ ├── python_tests
│ ├── trace_tests # direct test in trace format
│ │ ├── memory_surface_warehouse
│ │ ├── nv_large
│ │ ├── nv_medium_1024_full
│ │ ├── nv_medium_512
│ │ ├── nv_small
│ │ ├── nv_small_256
│ │ └── nv_small_256_full
│ └── uvm_tests #CRT uvm tests
├── tools # 仿真脚本
│ └── surface_generator # trace generator tb用到的Memory Surface File生成用脚本。
├── uvm_template # ???
├── verilator #
└── vip
├── cc_agent # convolution core slave agent, 作为monitor使用
├── csb_agent # 寄存器配置接口对应的master agent,包含driver monitor sequencer等
├── dbb_agent # dbb接口对应的agent
├── dma_agent # 对应dut内部各种dma的slave agent,作为monitor使用
├── dp_agent # cacc to sdp pipeline, sdp to pdp pipeline,数据传递接口的monitor用slave agent
├── mem_man # memory manager
├── mem_model # memory model,作为外设memory使用,即可例化为primary mem也可例化为secondary mem
├── reference_model # cmod作为参考模型的话,必须使用uvmc库,进行一些封装。
│ ├── nvdla_cmod_wrap
│ ├── nvdla_scsv
│ ├── nvdla_top_scsv_adapter
│ ├── rm_nvdla_internal_monitor
│ └── rm_nvdla_top
└── surface_generator # surface generator uvm组件,调用surface_generator.py脚本,根据输入的随机命令行参数,生成Memory Surface File(feature or weight)