采用VerilogA和analogLib方法生成模拟IC电路模型之对比

在模拟IC设计和仿真中,有时会需要一个电路模型(如运放、D触发器),配合主要电路来进行行为或电路仿真,这个电路模型不是用具体工艺的mos管等搭建,而是用VerilogA代码生成,或者用Cadence中analogLib搭建,本文用全差分放大器和D触发器举例说明搭建过程,并比较二者的不同。

1 运行环境

操作系统运行环境: Linux (RHEL6.x, RHEL7.x)

EDA环境:Cadence IC617, Spectre15.1

2 全差分放大器的比较

2.1 用VerilogA生成

在Cadence/Virtuoso内,用VerilogA代码就可以生成全差分放大器,做成symbol,就可以被其他电路测试使用(Cadence操作过程站内参考文章很多,这里不详述)。

这里参考一下Cadence Virtuoso内ahdlLib库里diffamp的VerilogA代码:

`include "discipline.h"

`include "constants.h"

//   differential amplifier (aka opamp)

// sigin_p,sigin_n:   (val,flow)

// sigout:         (val,flow)

// INSTANCE parameters

//    gain          = amplifier differential gain (val)

//    sigin_offset  = input offset (val)

// MODEL parameters

//    {none}

// 'sig_out' is 'gain' times the adjusted input differential signal.

// The adjusted input differential signal is the differential input

// minus 'sigin_offset'

module diffamp(sigin_p, sigin_n, sigout);

input sigin_p, sigin_n;

output sigout;

electrical sigin_p, sigin_n, sigout;

parameter real gain = 1;

parameter real sigin_offset = 0;

   analog

      V(sigout) <+ (V(sigin_p, sigin_n) - sigin_offset) * gain;

endmodule

从代码这里可以看出放大器的省缺自身增益设成了1,offset设成了0,这些参数可以在调用时按照你的需求来重新设定。

2.2 用Cadence/Virtuoso analogLib内器件来生成

用analogLib里vccs、理想电阻等,可以生成一个全差分放大器电路,如下:

(*来自Baker的CMOS Circuit Design, Layout, and Simulation, 3rd Ed之配套代码)

做成symbol,就可以被其他电路仿真测试使用,下面是仿真参考电路:

VerilogA与AnalogLib两种方法比较:

可以看到VerilogA方法可以控制的参数更多,模型可以功能更全;AnalogLib的方法可以更快捷。

3  D触发器的比较

3.1用VerilogA生成

一种VerilogA的D触发器参考代码如下:

//DFF 来源:网络

`include "disciplines.h"

module dff(d,q,clk);

input d,clk;

output q;

electrical d,q,clk;

parameter real td=0.5n from[0:inf];

parameter real tr=0.5n from[0:inf];

parameter integer dir=1 from[-1:1] exclude 0;

parameter real vdd=3.3 from[0:inf];

real state;

analog begin

@(cross(V(clk)-vdd/2,dir)) begin

if (V(d)>vdd/2)

state=vdd;

else

state=0;

        end

V(q)<+ transition(state,td,tr);

end

endmodule

3.2用Cadence/Virtuoso analogLib内器件来生成

(*来自Baker的CMOS Circuit Design, Layout, and Simulation, 3rd Ed之配套代码)

用analogLib库里的relay、vcvs、S/H子电路,生成了一个D触发器:

其中子电路S/H(Sample_and_Hold)如下,其内包含的子电路IdealAmp不再展示:

VerilogA与AnalogLib两种方法比较:

可以看到VerilogA方法编程方法简洁高效;AnalogLib的方法比较繁琐。

总之,有些情况下,特别是功能比较简单情况下,用AnalogLib会比较快捷;电路逻辑比较复杂情况下,VerilogA方法会更好。

  • 39
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

joe446

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值