在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2317|回复: 7

[求助] 数字代码含有调用如何做AMS数模混仿

[复制链接]
发表于 2023-1-14 09:49:49 | 显示全部楼层 |阅读模式
50资产
各位前辈好,我主要做模拟,现在需要做数字模拟混合仿真 ,其中数字代码顶层为A,其内容是调用的B和C,仅包含端口,B和C又是两个独立的verilog文件,这种情况可以做AMS仿真吗?我按照普通的AMS方式,将A、B、C都导入为functional,建立A的testbench仿真,会报错:ncelab: *E,CUVMUR
instance 'testbench.I0@A<module>.inst_slave' of design unit B' is unresolved in 'worklib.A:v'.
instance 'testbench.I0@A<module>.inst_slave' of design unit C' is unresolved in 'worklib.A:v'.

这种问题能否在现有的基础上修改,是否必须要数字代码整合成一个?感谢指教!


最佳答案

查看完整内容

需要建立testbench电路的config view,里面指定ABC的netlist view都用functional,然后再启动ADE-L,选用ams作为仿真器,就可以了。 方法1:B和C的 verilog代码也可以通过在A的代码里面用include语句带入进来,需要全路径。不过这样组织有点乱 方法2:ABC的verilog代码放到一个文件里面,用一个functional view 方法3,建立A的schematic,里面调用B和C的symbol,靠AMS的netlister去找B和C的functional 定义 ...
发表于 2023-1-14 09:49:50 | 显示全部楼层
本帖最后由 amodaman 于 2023-1-14 11:17 编辑

需要建立testbench电路的config view,里面指定ABC的netlist view都用functional,然后再启动ADE-L,选用ams作为仿真器,就可以了。
方法1:B和C的 verilog代码也可以通过在A的代码里面用include语句带入进来,需要全路径。不过这样组织有点乱
方法2:ABC的verilog代码放到一个文件里面,用一个functional view
方法3,建立A的schematic,里面调用B和C的symbol,靠AMS的netlister去找B和C的functional 定义
 楼主| 发表于 2023-1-16 11:32:58 | 显示全部楼层


amodaman 发表于 2023-1-14 11:14
需要建立testbench电路的config view,里面指定ABC的netlist view都用functional,然后再启动ADE-L,选用am ...


非常感谢您的回复! 方法三中“靠AMS的netlister去找B和C的functional 定义”,这个netlister在哪里可以找到? 或者有哪些guide可以查找吗?因为AMS仿真都是师兄师姐整理的按部就班的文档。
发表于 2023-1-16 12:43:28 | 显示全部楼层
ADE-L里面的网表产生就是通过菜单操作 Create/Re-Create netlist或者Netlist & Run来进行的。当然在Virtuoso平台上有单独列出来的CDL netlist的产生界面,那个跟仿真流程无关,是拿来做流程间的数据交换的。

产生网表是基于instance实例化来做的,每一个instance产生网表中的一行。在简单的ADE-L纯模拟仿真中,每个instance用哪一个Model取决于ADE-L的switch view list和stop view list环境设置来决定,比如找到schematic view就进入下一层级(这就是switch),找到spectre view就stop(因为是底层器件了,仿真器知道最底层的器件是啥)。 在复杂的混合信号仿真中,这个过程是由config view来决定的,那么你在config view的那张表格里面自己挑选什么instance用什么view来放入网表就行了。所以你现在要琢磨的是config view。 只要在config view里面找到每一个functional 的定义,这个网表就可以顺利产生。
 楼主| 发表于 2023-1-28 11:46:48 | 显示全部楼层


amodaman 发表于 2023-1-16 12:43
ADE-L里面的网表产生就是通过菜单操作 Create/Re-Create netlist或者Netlist & Run来进行的。当然在Virtuos ...


您好,非常感谢您的耐心回复。关于“只要在config view里面找到每一个functional 的定义,这个网表就可以顺利产生。”我还有一些不理解,因为我的ABC都是functional view,在stop list这里将原本默认的spectre改为funtional,我理解仿真的时候就会去找底层的也就是B和C的functional,但是同样报错,这里不是您说的找functional定义是吗?
我在netlist中creat netlist,出现的都是successful,我以为网表生成成功可以仿真了。

微信图片_20230128114011.png
微信图片_20230128114100.png
发表于 2023-1-28 14:13:35 | 显示全部楼层


Rino_Y 发表于 2023-1-28 11:46
您好,非常感谢您的耐心回复。关于“只要在config view里面找到每一个functional 的定义,这个网表就可以 ...


stop view里面能放入什么view, 取决于你认为仿真器(spectre,APS或者ncvlog(xmvlog)) 需不需要顺着实例化去找子单元的定义。如果没有下一层级的子单元定义来辅助,那么这个view就可以放在stop view里面。
一般来说,functional view似乎不是放在stop view list中,而是在switch view list中,除非(as said),这个functional view是self-contained的了,不需要其他任何的子单元,也可以。spectre一般是放在stop view里面的。


发表于 2023-1-28 14:16:30 | 显示全部楼层
View Found这一项里面出现了红字的**NONE**,其实没什么大不了的,仅仅说明在你config view表格上部定义的那些Global Bindings里面,系统没有找到自动可以决定的view来用,你可以手动设置去选取哪一个view参与netlist,或者干脆修一下你的global bindings,使得系统可以自动找到。global binding仅仅是在你不做手动设定的时候,帮你找一个view来用的而已,没什么大不了的。
发表于 2023-1-28 14:19:03 | 显示全部楼层
“我在netlist中creat netlist,出现的都是successful,我以为网表生成成功可以仿真了。”

很不幸,这个netlist应该是只针对模拟网表来说成功了就是成功了。数字Verilog里面如果用一个include <PATH>/文件 来引用下一个子单元时,而路径如果不对的话,这个网表生成的过程也不会报错,只是在compile或者elaborate的时候会报错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-27 16:53 , Processed in 0.021241 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表