【VCS】VCS的libmap使用方法

1. 概要

本文介绍VCS的libmap特性使用场景、方法。可用于解决重名module编译问题,以及用于仿真加速。

2. libmap解决重名module问题

平常工作中可能会遇到这道这种情况:我们需要将两个IP集成到同一个top中,但是这两个IP中有相同的module名,仿真器在编译时会报重复定义的错误。当然,我们可以通过修改模块名来解决这个问题,但是继承性和维护性较差。VCS提供的libmap方法可以解决这个问题。
如下工作目录,有两个同名的mod模块需要在top中实例化:

demo
|__ mod1
	 |__ mod.v
|__ mod2
	 |__ mod.v
|__ top.v
|__ top_cfg.v
|__ libmap.v

top文件如下:

module top();
	mod mod1();
	mod mod2();
endmodule

如果我们直接编译的话,库文件里会存在两个相同名字的mod,top中实例化时显然不知道该用哪个,仿真器会报错。
SV使用手册指出,可以将为设计模块指定编译到哪个lib,然后再指定哪个实例使用哪个lib。各家EDA工具都支持这个特性,本文介绍VCS怎么使用libmap方法。

VCS的编译默认情况下是将编译结果放到work这个库里,这是默认的库名。编译器会使用的synopsys_sim.setup来指定库名。

2.1 定义libmap文件

为重名的module单独指定lib,格式为library lib_name file_path;,lib名自己定义,文件路径可使用相对路径和通配符。
可一次性将过个文件制定编译到一个lib中,文件名之间使用逗号,分隔。
libmap.map

library lib1 mod1/mod.v;
library lib2 mod2/mod.v;
//未指定的文件则自动编译到work库

2.2 定义config文件

config文件中为每一个实例指定使用的lib。

config top_cfg;
	design top; //此处需要指定仿真平台的顶层名称。
	instance top.mod1 liblist lib1;
	instance top.mod2 liblist lib2;
	//未指定的实例仍然使用work库
endconfig

2.3 添加编译选项

vcs -full64 -sverilog 
./mod1/mod.v ./mod2/mod.v ./top.v top_cfg.v #源文件或列表
-libmap libmap.map #libmap文件
-top top_cfg #必须指定top_cfg为top

3 使用libmap将部分模块做成black_box,加速仿真

如果一个module被实例化了4次,U0-U4,其功能实现完全一样,我们验证的 时候无需使用其全部实例,那么也可以利用libmap的方法,将这些无需使用的实例做成黑盒,仅保留接口信号,屏蔽内部实现(也称DUMMY),这样可以加快编译和仿真速度。

demo
|__ mod
	 |__ mod.v
|__ dummy_mod
	 |__ dummy_mod.v
|__ top.v
|__ top_cfg.v
|__ libmap.map

top文件如下:

module top();
	mod mod_u0();
	mod mod_u1();
    mod mod_u2();
	mod mod_u3();
endmodule

mod在top中例化了多次,但是我们想仅测试U0实例,屏蔽其他实例。可按如下步骤。

3.1 编写dummy文件

编写一个dummy_mod.v文件,其module名也为mod,并且接口信号列表,参数列表(如果有)都完全一样,但是没有其他内容,也就是一个空壳文件。

3.2 编写libmap文件

将用于替换的文件指定到DUMMY库。
libmap.map

library DUMMY dummy_mod/dummy_mod.v 
//未指定的文件则自动编译到work库

3.3 编写config文件

config文件中为每一个实例指定使用的lib。
top_cfg.v

config top_cfg;
	design top; //此处需要指定仿真平台的顶层名称。
	instance top.mod_u1 liblist DUMMY;//实例u1、u2、u3使用DUMMY库
	instance top.mod_u2 liblist DUMMY;
	instance top.mod_u3 liblist DUMMY;
	//未指定的实例仍然使用work库
endconfig

3.4 添加编译选项

vcs -full64 -sverilog 
./mod1/mod.v ./dummy_mod/dummy_mod.v ./top.v  top_cfg.v #源文件或列表
-libmap libmap.map #libmap文件
-top top_cfg #必须指定top_cfg为top

参考文章

https://www.francisz.cn/2019/09/03/vcs-configration/
https://blog.csdn.net/u012678323/article/details/130502237?spm=1001.2014.3001.5506

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值