锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

第1章:混仿概览

时间:2022-10-19 14:30:00 m12a电源连接器

混合过程概述

混仿能够对 有些电路用模拟方法描述,有些电路用数字方法描述 进行仿真。

有三种不同的解决方案:

  • 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 ? ?

检查混仿设置

网表相关问题

模块/电路名称一致

multi-view 的概念:假如有一个模块verilog形式描述,又有SPICE形式描述称为模块 multi-view cell。

对于一个multi-view cell,verilog模块名和SPICE电路名必须相同,管脚的数量和名称必须相同。

大小写敏感

对于一个multi-view cell,verilog模块名和SPICE电路名的大小写必须相同,管脚名的大小写必须相同。需要注意的是HSPICE默认情况下,网表将每个名字视为小写。

馈电电源

在Verilog顶层中例化SPICE电路,需要为SPICE连接馈电。

方法1:SPICE和verilog中没有馈电引脚时
如果SPICE如果电路中没有馈电引脚,则需要SPICE网表中使用.global声明连接电源SPICE电路。

// SPICE在网表中定义全局电源和地面
v_vdd vdd 0 1.8
v_vss vss 0 0
.global vdd vss

.subckt inv in out
m1 out in vdd vdd p_tran l=0.25u w=10.0u
m2 out in vss vss n_tran l=0.25u w=10.0u
.ends

// verilog 实例化 inv 无需添加电源和低引脚
module verilog_top(…);

inv i1 (.in(d_in), .out(d_out));

endmodule

方法2:SPICE和verilog当有馈电引脚时

  • 使用带powernet选项的d2a指令

    // vcsAD.init
    d2a powernet hiv=1.2 lov=0 node=top.vdd;
    d2a powernet hiv=1.2 lov=0 node=top.vss;

    如果verilog线网定义为"supply0" 或 “supply1” 线网不需要人工设置d2a powernet,相关设置将自动完成工具。

  • 创建一个新的双端口SPICE电路
    新创造的SPICE电路为原电路供电

    .subckt inv in out vdd vss
    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 vdd vss
    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), .vdd(vdd_wire), .vss(vss_wire));

    // spice_pwr_supply supplies VDD and VSS for the design
    spice_pwr_supply s1 (.vdd(vdd_wire), .vss(vss_wire));

    endmodule

方法3:混合馈电引脚
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(.a(in1), .b(in2), .zn(out2));

    *SPICE subckt
    .subckt nor2 zn a b
    .ends

映射bus端口
要求: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电路中不能使用重复的端口名,电源节点除外。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章