VCS 是IC从业者常用软件,该篇文章是一个学习记录,会记录在使用过程中各种概念及options。
VCS Flow 可以分为Two-step Flow和Three-step Flow两类。
两步法只支持Verilog HDL和SystemVerilog的design,两步法主要包括以下两步:
三步法支持Verilog HDL/VHDL/mixed HDL design,三步法包括以下三步:
Elaboration 是simulation的第二步,在这步VCS会创建二进制文件simv,在这步可以有两种mode可选
tb会根据seed来进行随机仿真中随机变量,VCS有两种设置top-level random number。
如果+ntb_random_seed和+ntb_random_seed_automatic同时存在VCS会报warning message并使用+ntb_random_seed指定的seed。
flow中先判断是否有用户指定seed,如果有则使用第一种(这种场景一般在复现case时使用),否则自动产生。
选项说明:
| 选项 | 功能 |
|---|---|
| v2k | 支持Verilog-2001标准 |
| sverilog | 支持sverilog-2009标准 |
| full64 | 生成64bit可执行文件 |
| o | 输出可执行文件名 |
| timescale | 为未指定timescale的module指定timescale |
| nbt_opts | 导入uvm 库 |
| l | 指定输出log名 |
| CFLAGS | 在与c联合仿真时指定 gcc的选项 |
| DVCS | |
| kdb | 在两步法中kdb选项会生成verdi 的Knowledge Database |
| lca | lca 可以缩短仿真时间 |
| -y | 指定编译器查找module或者UDP(User-defined Primitives)的路径,在不同的路径中有多个同名的module或者UDP则使用第一个-y指定路径下的module或者UDP |
| +libext | 指定编译器在查找库函数时的文件或者文件类型 |
| +vcs+lic+wait | 如果没有license,则等待license不要退出 |