Cadence数模混合仿真怎么搭?建digital cell写Verilog再加config文件

发布于 更新于
2
详情介绍
智行者IC社区持续更新技术干货、实操教程、案例分享与常见问题解答,为学习者提供实用的学习参考资料。

模数混合电路既要跑数字时序又要跑模拟仿真,纯SPICE或者纯Verilog都搞不定。Virtuoso里用digital cell加config文件,把数字模块和模拟电路连起来跑。

建digital cell

先在Virtuoso里新建一个cell,作为数字模块的接口层。把数字IO口全部列出来,不用写具体逻辑,只要端口定义。这个cell相当于数字电路的外壳。

Virtuoso建digital cell定义数字接口

然后写Verilog行为模型。在digital cell下面建一个view,用Verilog描述数字逻辑。简单的组合逻辑直接assign就行,时序逻辑写always块。这个Verilog模型会被ncsim加载跑。

写config文件

config文件是用来告诉仿真器:模拟部分用什么网表,数字部分用哪个Verilog。新建一个config view,里面把电路层次结构列清楚,模拟模块用spectre网表,数字模块指向Verilog模型。

config文件配置数模混合仿真层次

配置完之后启动AMS仿真,spectre跑模拟,ncsim跑数字,两边在接口点交换数据。这样整个混合电路就能一起仿真了。

踩坑记录

第一个坑:数字模型和模拟接口的电平对不上。Verilog里默认0/1,模拟电路里是0V/1.8V。config里要设好电平转换,不然数字部分读不到模拟输出。

第二个坑:仿真时间步长不匹配。模拟步长ps级,数字步长ns级。AMS接口会自动插值,但跑慢了就调时间。别两个都设ps,那仿真要跑到天荒地老。

第三个坑:忘了保存Verilog编译。改完Verilog模型没重新编译,仿真还是老逻辑。每次改完数字代码记得run ncsim编译一次。

常见问题(FAQ)

digital cell里要写具体逻辑吗?
不用。digital cell只是数字模块的接口层,只要把IO口定义出来就行。具体数字逻辑写在Verilog行为模型里,用always块或者assign描述。digital cell本身是空的外壳。
config文件是干嘛的?
config文件告诉仿真器:模拟模块用spectre网表,数字模块用哪个Verilog模型。它把整个电路的层次结构组织好,让ams spectre和ncsim知道怎么对接。
0 / 600
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
学硬件设计・来智行者 IC 社区
相关文章