混合过程概述
混仿能够对 进行仿真。
有三种不同的解决方案:
- CustomSim? VCS/VCS MX tool
- FineSim? VCS/VCS MX tool
- HSIM? VCS/VCS MX tool
根据混合信号设计中使用的语言有三种不同的语言flow:
- Verilog-SPICE flow
- VHDL/Verilog-SPICE Flow
- Verilog-AMS-SPICE
三种解决方案部分或全部支持三种解决方案flow,关系如表
解决方案 | Flow #1 | Flow #2 | Flow #3 |
---|---|---|---|
Verilog-SPICE | VHDL/Verilog-SPICE Flow | Verilog-AMS-SPICE | |
VCS AMS | ? | ? | ? |
FineSim VCS Cosim | ? | ? | |
HSIM VCS Cosim | ? | ? |
检查混仿设置
网表相关问题
模块/电路名称一致
:假如有一个模块verilog形式描述,又有SPICE形式描述称为模块 multi-view cell。
对于一个multi-view cell,verilog模块名和SPICE电路名必须相同,管脚的数量和名称必须相同。
大小写敏感
对于一个multi-view cell,verilog模块名和SPICE电路名的大小写必须相同,管脚名的大小写必须相同。需要注意的是HSPICE默认情况下,网表将每个名字视为小写。
馈电电源
在Verilog顶层中例化SPICE电路,需要为SPICE连接馈电。
如果SPICE如果电路中没有馈电引脚,则需要SPICE网表中使用.global
声明连接电源SPICE电路。
// SPICE在网表中定义全局电源和地面 v_vdd vdd 0 1.8 v_vss vss 0 0
.subckt inv in out m1 out in p_tran l=0.25u w=10.0u m2 out in n_tran l=0.25u w=10.0u .ends
// verilog 实例化 inv 无需添加电源和低引脚 module verilog_top(…); … … endmodule
-
使用带
powernet
选项的d2a指令// vcsAD.init hiv=1.2 lov=0 node=top.vdd; hiv=1.2 lov=0 node=top.vss;
如果verilog线网定义为"supply0" 或 “supply1” 线网不需要人工设置d2a powernet,相关设置将自动完成工具。
-
创建一个新的双端口SPICE电路 新创造的SPICE电路为原电路供电
.subckt inv in out m1 out in vdd vdd p_tran l=0.25u w=10.0u m12out in vss vss n_tran l=0.25u w=10.0u .ends
// The spice_pwr_supply subcircuit supplies the vdd and vss power supply signals .subckt spice_pwr_supply v_vdd vdd 0 1.8 v_vss vss 0 0 .ends
module verilog_top (…); … // Power pins included in the inverter instance inv i1 (.in(d_in), .out(d_out), ; … // spice_pwr_supply supplies VDD and VSS for the design spice_pwr_supply s1 (); … endmodule
SPICE电路中有馈电引脚,verilog没有馈电引脚。 需用使用port_connect
连接理想电源的指令。 复杂…举例略。
网表声明
模拟仿真器支持的声明语句必须使用。
仿真时间
模拟时间可以在数字域或模拟域中定义。使用数字域$finish
或$stop
,模拟域使用.tran
。
$finish
或 .tran
执行后,模拟退出;$stop
执行后,模拟停止并进入 Unified Command Line Interface (UCLI) 交互模式;
若数模域同时定义模拟时间,则决定退出时间。 若需要混仿工具报告模拟完成比例,SPICE中必须有.tran
声明。
端口相关问题
端口映射
使用 use_spice , use_verilog or use_vhdl 指令的port_map
端口映射选项。
如果端口数量不一致,则使用 port_connect 说明解决。例如,化子模块有一个电源管脚,但该模块没有,此时可以使用 port_connect 将未连接的管脚连接到其他端口。
SPICE下例化verilog默认采用时。 verilog下例化SPICE时,和。
-
// Verilog instantiation nor1 i1 (out1, in1, in2);
SPICE subckt .subckt nor1 zn a b .ends
-
// Verilog instantiation nor2 i2(.(in1), .(in2), .(out2));
*SPICE subckt .subckt nor2 .ends
:SPICE的bus成员必须(不能在两个bus成员中定义其它信号),且必须与verilog中定义的一致(升序或降序)
// Verilog instantiation addr i3(.a(ai[3:0]), .b(bi[3:0]), .cin(ci), .s(su[3:0]), .cout(co));
*SPICE subckt .subckt addr a[3] a[2] a[1] a[0] +b[3] b[2] b[1] b[0] +cin s[3] s[2] s[1] s[0] +cout .ends
端口重复
SPICE电路中不能使用重复的端口名,电源节点除外。