很久之前写过一个非常简单的uvm_model
文章地址
但是没有提编译的一些细节:
这里面一部分是封装在package中的,一部分则是直接在.f文件直接加载的。
组件主要是通过package封装的,至于case以及sequence则采用,直接加载的方式。
这样做的原因是,如果case以及sequence也采用package封装的话,会给调用rtl中的hierarchy造成很多的麻烦。
1 2 3 4 5 6 7 8
| ../tc/vcs_pkg.svh ../tc/user_plus.sv ../tc/seq/base_sequence.sv ../tc/seq/sequence_normal.sv ../tc/tc_base.sv ../tc/tc_normal.sv ../tc/tc_direct.sv ../tc/tc_random.sv
|
以上是tc.f文件
1 2 3
| import uvm_pkg::*; import base_utils_pkg::*; import env_pkg::*;
|
以上是vcs_pkg.svh的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| +incdir+../env +incdir+../harness +incdir+../reg +incdir+../tc +incdir+../utils +incdir+../utils/tx_utils +incdir+../utils/rx_utils +incdir+../utils/base_utils ../comm/sv_define.sv ../comm/glb_plus.sv ../utils/base_utils/my_interface.sv ../utils/base_utils/base_utils_pkg.svh ../utils/tx_utils/tx_utils_pkg.svh ../utils/rx_utils/rx_utils_pkg.svh ../env/env_pkg.svh -f ../tc/tc.f ../harness/harness.sv
|
以上是tb.f的相关内容。