Export RTL Projects Sources as Software libraries such as C++/Python
Usage: picker export [OPTIONS] file...
Positionals:
file TEXT ... REQUIRED DUT .v/.sv source file, contain the top module
Options:
-h,--help Print this help message and exit
--fs,--filelist TEXT ... DUT .v/.sv source files, contain the top module, split by comma.
Or use '*.txt' file with one RTL file path per line to specify the file list
--sim TEXT [verilator] vcs or verilator as simulator, default is verilator
--lang,--language TEXT:{python,cpp,java,scala,golang,lua} [python]
Build target project with assigned language, default python
--sdir,--source_dir TEXT Template Files Dir, default is ${picker_install_path}/../picker/template
--sname,--source_module_name TEXT ...
Pick the module in DUT .v file, default is the last module in the -f marked file
--tname,--target_module_name TEXT
Set the module name and file name of target DUT, default is the same as source.
For example, -T top, will generate UTtop.cpp and UTtop.hpp with UTtop class
--tdir,--target_dir TEXT Target directory to store all the results. If it ends with '/' or is empty,
the directory name will be the same as the target module name
--internal TEXT Exported internal signal config file, default is empty, means no internal pin
-F,--frequency TEXT [100MHz]
Set the frequency of the **only VCS** DUT, default is 100MHz, use Hz, KHz, MHz, GHz as unit
-w,--wave_file_name TEXT Wave file name, emtpy mean don't dump wave
-c,--coverage Enable coverage, default is not selected as OFF
--cp_lib,--copy_xspcomm_lib BOOLEAN [1]
Copy xspcomm lib to generated DUT dir, default is true
-V,--vflag TEXT User defined simulator compile args, passthrough.
Eg: Using vcs simulator for exporting line coverage, -V '"-cm line -cm_dir /abs_path_to_store_coverage_data"'
-C,--cflag TEXT User defined gcc/clang compile command, passthrough.
Eg: -C '"-O3 -std=c++17 -I./include"'
--verbose Verbose mode
-e,--example Build example project, default is OFF
--autobuild BOOLEAN [1] Auto build the generated project, default is true
Pack uvm transaction as a uvm agent and python class
Usage: picker pack [OPTIONS] file...
Positionals:
file TEXT ... REQUIRED Sv source file, contain the transaction define
Options:
-h,--help Print this help message and exit
-e,--example Generate example project based on transaction, default is OFF
-c,--force Force delete folder when the code has already generated by picker
-r,--rename TEXT ... Rename transaction name in picker generate code
参数解释
export:
file TEXT ... REQUIRED:必须。位置参数,DUT.v/.sv 源文件,包含顶层模块
-h,--help: 可选。打印此帮助信息并退出
--fs,--filelist TEXT ...: 可选。DUT .v/.sv 源文件,包含顶层模块,逗号分隔。或使用 ‘*.txt’ 文件,每行指定一个 RTL 文件路径来指定文件列表
--sim TEXT [verilator]: 可选。使用 vcs 或 verilator 作为模拟器,默认是 verilator
中文 | English
介绍
picker 是一个芯片验证辅助工具,具有两个主要功能:
该工具允许用户基于现有的软件测试框架,例如 pytest、junit、TestNG、go test 等,进行芯片单元测试。
基于 Picker 进行验证的优点
Picker 目前支持的 RTL 仿真器:
使用方法
依赖安装
下载源码
构建并安装
picker 也可以编译为 wheel 文件,通过 pip 安装
通过以下命令把 picker 打包成 wheel 安装包:
编译完成后,wheel 文件位于 dist 目录,然后通过 pip 安装,例如:
安装完成后,执行
picker
命令可以得到以下输出:安装测试
当前 picker 有 export 和 pack 两个子命令。
export 子命令用于将 RTL 设计转换成其他高级编程语言对应的“库”,可以通过软件的方式进行驱动。
pack 子命令用于将 UVM 中的 sequence_item 转换为其他语言,然后通过 TLM 进行通信(目前支持 Python,其他语言在开发中)
参数解释
export:
file TEXT ... REQUIRED
:必须。位置参数,DUT.v/.sv 源文件,包含顶层模块-h,--help
: 可选。打印此帮助信息并退出--fs,--filelist TEXT ...
: 可选。DUT .v/.sv 源文件,包含顶层模块,逗号分隔。或使用 ‘*.txt’ 文件,每行指定一个 RTL 文件路径来指定文件列表--sim TEXT [verilator]
: 可选。使用 vcs 或 verilator 作为模拟器,默认是 verilator--lang,--language TEXT:{python,cpp,java,scala,golang,lua} [python]
: 可选。构建示例项目,默认是 python--sdir,--source_dir TEXT
: 可选。模板文件目录,默认是 ${picker_install_path}/../picker/template--sname,--source_module_name TEXT ...
: 可选。在 DUT .v 文件中选择模块,默认是 -f 标记的文件中的最后一个模块--tname,--target_module_name TEXT
: 可选。设置目标 DUT 的模块名和文件名,默认与源相同。例如,-T top 将生成 UTtop.cpp 和 UTtop.hpp,并包含 UTtop 类--tdir,--target_dir TEXT
: 可选。代码生成渲染文件的目标目录,默认为 DUT 的模块名。如果该参数以’/‘结尾,则在该参数指定的目录中创建以 DUT 模块名的子目录。--internal TEXT
: 可选。导出的内部信号配置文件,默认为空,表示没有内部引脚-F,--frequency TEXT [100MHz]
: 可选。设置 仅 VCS DUT 的频率,默认是 100MHz,可以使用 Hz、KHz、MHz、GHz 作为单位-w,--wave_file_name TEXT
: 可选。波形文件名,空表示不导出波形-c,--coverage
: 可选。启用覆盖率,默认不选择为 OFF--cp_lib,--copy_xspcomm_lib BOOLEAN [1]
: 可选。将 xspcomm 库复制到生成的 DUT 目录,默认是 true-V,--vflag TEXT
: 可选。用户定义的模拟器编译参数,透传。例如: 模拟器使用 vcs 时,导出行覆盖率: ‘-V ‘“-cm line -cm_dir /abs_path_to_store_coverage_data”‘’-C,--cflag TEXT
: 可选。用户定义的 gcc/clang 编译命令,透传。例如: -C ‘“-O3 -std=c++17 -I./include”‘--verbose
: 可选。详细模式-e,--example
: 可选。构建示例项目,默认是 OFF--autobuild BOOLEAN [1]
: 可选。自动构建生成的项目,默认是 true静态多模块支持:
picker 在生成 dut_top.sv/v 的封装时,可以通过
--sname
参数指定多个模块名称和对应的数量。例如在 a.v 和 b.v 设计文件中分别有模块 A 和 B,需要 DUT 中有 2 个 A,3 个 B,生成的模块名称为 C(若不指定,默认名称为 A_B),则可执行如下命令:环境变量:
DUMPVARS_OPTION
: 设置$dumpvars
的 option 参数。例如DUMPVARS_OPTION="+mda" picker ....
开启 vcs 中数组波形的支持。pack:
file
: 必需。待解析的 UVM transaction 文件--example, -e
: 可选。根据 UVM 的 transaction 生成示例项目。--force, -c
: 可选。若已存在 picker 根据当前 transaction 解析出的文件,通过该命令可强制删除该文件,并重新生成--rename, -r
: 可选。配置生成文件以及生成的 agent 的名称,默认为 transaction 名。测试 Examples
编译完成后,在 picker 目录执行以下命令,进行测试:
参考材料
如何基于 picker 进行芯片验证,可参考:https://open-verify.cc/mlvp/docs/