vcs syscan gcc uvmc uvm dpi 静态库动态库

最近被VCS的编译选项搞的有点发疯,记录一下,让同行少踩坑。

如果你的设计是sc+sv+uvmc的,而且sc里面包含有一个静态库或者动态库函数,想想这东西怎么才能编到一起。

坑1. 首先,不要把syscan和gcc想象成一个玩意!最大区别就是syscan编译之后的文件放在了csrc里面,而gcc默认放在当前路径。虽然你可以在sysan里面通过选项-cpp -cc来选择使用什么版本的g++或者gcc,但是二者真不是一个东西,你可以在sysan后面加上-full64,-tlm2等。

坑2. 如果你觉得双顶层和sv例化sc没啥大区别,那就又错了。双顶层的模式不支持-partcomp,搞过soc的人都知道这个选项的含金量。所以uvmc和uvm-ml给出的examples里面,都使用的是sv例化sc_module模式,而非双顶层。

坑3. 记着坑2再挖一个坑,你如果想在sv里面例化sc_module,需要在syscan编译top层的时候这样写:syscan  ...   top.cpp:top 。这冒号的意思是说,要把sc的顶层变成Verilog格式的wrapper,才能被sv顶层例化。这是什么脑洞?歪果仁的奇葩之处不得不佩服。你生成库的时候,一个带sc一个带v,难死你么?

坑4. 如果你想用vlogan编译自己的verilog,那就又入坑了。想想vlogan,只能吃verilog,不能吃C。那也就解释了为什么你加了ntb_opts之后,仍然不起作用。原因就是ntb_opts不但引入uvm库,同时引入当前uvm版本下面的dpi.cc文件。环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

elec_zxm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值