模数混合电路既要跑数字时序又要跑模拟仿真,纯SPICE或者纯Verilog都搞不定。Virtuoso里用digital cell加config文件,把数字模块和模拟电路连起来跑。
建digital cell
先在Virtuoso里新建一个cell,作为数字模块的接口层。把数字IO口全部列出来,不用写具体逻辑,只要端口定义。这个cell相当于数字电路的外壳。

然后写Verilog行为模型。在digital cell下面建一个view,用Verilog描述数字逻辑。简单的组合逻辑直接assign就行,时序逻辑写always块。这个Verilog模型会被ncsim加载跑。
写config文件
config文件是用来告诉仿真器:模拟部分用什么网表,数字部分用哪个Verilog。新建一个config view,里面把电路层次结构列清楚,模拟模块用spectre网表,数字模块指向Verilog模型。

配置完之后启动AMS仿真,spectre跑模拟,ncsim跑数字,两边在接口点交换数据。这样整个混合电路就能一起仿真了。
踩坑记录
第一个坑:数字模型和模拟接口的电平对不上。Verilog里默认0/1,模拟电路里是0V/1.8V。config里要设好电平转换,不然数字部分读不到模拟输出。
第二个坑:仿真时间步长不匹配。模拟步长ps级,数字步长ns级。AMS接口会自动插值,但跑慢了就调时间。别两个都设ps,那仿真要跑到天荒地老。
第三个坑:忘了保存Verilog编译。改完Verilog模型没重新编译,仿真还是老逻辑。每次改完数字代码记得run ncsim编译一次。










