2021-08-10

VCS filelist详解

1.基本概念
关于编译综合:编译综合其实就是将我们写的代码转换成编译器可以执行的文件。
VCS的编译综合有两步法和三步法。
以下是官方文档的描述。
在这里插入图片描述

混合语言的主要用的是三步法,但是第1步里又可以细分成 RTL code 和 TB 的编译。

第1步analysis会产生以下两个log(还有sim_lib为elabration准备) ,分别对应DUT和TB的编译log 。可以在这里查看对应的编译错误信息。
第2步elaboration会产生下面这个log(还有可执行文件simv.vdb为simulation准备)。当然,也有一些错误是在elaboration阶段报出的,可以在这个log里看。   
这两步都顺利做完,即我们通常所说的“编译过了”。

2.VCS filelist里的关键字
1.目前我们环境中的filelist里我们通常会看到以下几种关键字

1.  +incdir +directory  指定包含include文件的目录
VCS会在指定的这些目录下搜索 filelist里包含进来的文件 ,注意,VCS并不会递归搜索。
像上面的这个例子,bus_env 目录和bus_env/seq目录都需要指定。
2. -f filename.f
指定文件类型为.f的 源文件列表。
3. +define+macro
这个大家应该比较熟悉,宏定义。可以是Verilog 中需要匹配`ifdef的宏,或者是VIP里的宏定义等
4. -v filename
-v 指定一个.v格式的库文件,VCS会来这个文件中找源代码中例化的但在源代码中找不到的module,这里一个文件可以里面包含很多module。
filelist列表中 -v xxx/xxx/fifo.v 表示该文件里面只有一个module,且module名为fifo。
filelist列表中直接引用 xxx/xxx/fifo.v 则对文件中的module名没有限制。
5、-y directory
-y 指定一个库文件目录,目录下的文件名和module名要一致,且要用+libext+来指定文件类型,这里的.v文件里面就只能放一个和文件名同名的module,VCS会来这个目录下找源代码中例化的但在源代码中找不到的module。
6. +libext+
+libext+ .v+ .svi+ .sv 指定文件类型,VCS只会在指定的目录里搜索这些指定格式的文件。

7. 当然,最多的就是需要编译的 .v / .sv文件了


2.filelist里 的文件顺序

有人可能会问,这么多文件,我以什么顺序写到filelist里呢?

在我看来,其实就是一句话,在一个file里,它要用到的module/class/define等,其对应的文件必须已经在之前include。因为编译就是按include的顺序来执行。

3.debug 方法

vcs脚本支持verbose mode 来debug 。VCS会将编译的flielist的文件名字按编译顺序全部打印出来。

如果怀疑filelist有问题,用这个方法debug会很方便。之前我碰到比较多的是同一个file include多次的问题,就是用这个方法快速顺利的解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值