system verilog 标准中提到,支持configuration功能。就是当存在两个同名module,但实现却不同,可将他们通过configuration功能混合编进一个design里面。
demo目录文件如下。有两个mod.v,里面实现了一个名为mod的module。top里面想用这两个mod。
1 | demo |
mod1/mod.v如下
1 | module mod; |
mod2/mod.v如下
1 | module mod; |
top.sv如下
1 | module top; |
要支持这个功能,首先需要增加一个libmap.v,用来将两个mod分别放入不同的library里面
1 | library lib1 ./mod1/mod.v |
再增加一个cfg.v,来告诉编译器哪个实例用哪个lib。
1 | config cfg; |
最后在编译参数里面指定-libmap
,指定top为work.cfg
。也可以增加-diag libconfig -libmap_verbose
。
1 | cmp: |
这里采用的是两步法编译,也可以使用vcs推荐的三步法。
参考
system verilog标准第33章P865
vcs user guide P152