AMS数模混合仿真时遇到libadsptolemy_vpi.so读取错误

今天实验室的博士在进行数模混合仿真的时候,报错了,而前一天还是可以的,错误如下:

依据错误提示,应该是libadsptolemy_vpi.so读取错误了。其出现错误有三种可能,文件不存在,目录不存在,或者是不是一个合法的ELFCLASS64库。首先我们先找一下这个文件是在哪里的,搜索一下,是在/eda/agilent/ADS2011_10/adsptolemy/lib.linux_x86下的,x86的目录,说明这个动态库是ELFCLASS32的,所以问题出在了这个.so不是一个ELFCLASS64上。

这里可以选说一下.so文件是什么,摘抄一下网友对些的理解:

linux下何谓.so文件:1. 用过windows的同学应该都知道 .dll文件吧, 这二者有什么共通之处呢,其实 .so文件就跟.dll文件差不多.
2.一般来说.so文件就是常说的动态链接库, 都是C或C++编译出来的。与Java比较就是:它通常是用的Class文件(字节码).
3.Linux下的.so文件时不能直接运行的,一般来讲,.so文件称为共享库.
4.那么.so文件是怎么用的呢?
for example:(1)动态库的编译
这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so
参考2:都是由C或C++编译出来的
-shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
(2)动态库的链接
这里有个程序源文件 test.c 与动态库 libtest.so 链接生成执行文件 test:
命令:$ gcc test.c -L. -ltest -o test
注:测试是否动态连接,如果列出libtest.so,那么应该是连接正常了
-L.:表示要连接的库在当前目录中
-ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称
命令:$ ldd test
(注:执行test,可以看到它是如何调用动态库中的函数的。

所以对于.so的最简单的理解可以相对于Windows的DLL文件。查看文件属性的话可以使用如下命令:

如果我们把ads目录下的32的.so拷贝到x86_64下面,就什么报:

说白了也就是同一问题。而CentOS64位是支持32位的。

服务器上出现了这一问题,然后我在自己在电脑上也装了一套设计环境,并没有问题。需要找到了上述的原因,但是如何去解决还是没有头绪。不过搜索一下,可以看到Cadence社区有人也有一样的问题,http://community.cadence.com/cadence_technology_forums/f/38/t/33823,其中有人回答如下:

Error: Failed to elaborate(“Library Name” “Cell Name” “config”) – Custom IC Design – Cadence Technology Forums – Cadence Community

The first error is related to a non-Cadence tool (from Keysight – formerly Agilent) and you’ve not given enough details for the second. I assume this is an AMS simulation? Which simulator are you using? Which version of the simulator?

不过从回答上看,还是不能解决问题。

9-8日更新:今天晚上终于解决问题了,原来问题不在于这个,而是博士的激励文件写错了。确实,仔细分析起来,这个ADS的动态链接库本来就不应该对仿真造成影响才对,而这个问题是在博士修改电路后出现的,修改了电路同样也需要修改代码。修改还是应该从代码入手才对。回顾一下这个问题的处理过程,我们应该这样分析,这个问题是什么时候出现的?前一天还可以正常运行,今天为什么不正常了,在这不正常之前我做了什么事?我把这些修改改回来可以吗?我发现了一个可能的问题,这个问题真的会导致问题发生吗?问题的发生是有原因 的,其中有没有什么因果关联?还有就是,即使有一点点希望也要努力尝试,与其什么都不做,还不去尝试一些新方法。

未经允许不得转载:TacuLee » AMS数模混合仿真时遇到libadsptolemy_vpi.so读取错误

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址