Hsim混合仿真没办法替代逻辑器件
时间:10-02
整理:3721RD
点击:
因为要做spectre + verilog的混合仿真,所以想用hsim来做。因为规模大,所以没有用spectreverilog这个工具。按照网上推荐的流程,我先拿一个简单电路做实验,就是方波经过RC滤波之后,送到一个verilog描述的反相器。网表如下:
global 0 vdd!
XI4 (vinvin vout) invv
C0 (vinvin 0 ) capacitor c=1p
R0 (vdd! vinvin) resistor r=100K
V0 (vdd! 0 ) vosource type=pulse val0=0 val1=1.8 period=1u width=500n rise=10p fall=10p
include "./invv.scs"
tran tran stop=20u
其中,"invv.scs" 是spectre格式的子电路,如下:
subckt invv a z
R1 (a z) resistor r=100K
ends invv
这里我用了一个电阻直接短接输入输出,应该没有问题,反正它要被verilog代码替代的。事实上我开始用的是真实的电路描述,但是结果一样,这里偷懒就没有一个一个的写了。
"invv.v"的代码是 :
`timescale 1ns/10ps
module invv(a,z)
input a;
output z;
assign z=~a;
endmodule
然后再写 "cosim.cfg " 为:
set_args -spectre input.scs
digital_cell invv
verilog_file invv.v
万事俱备,开始执行指令: hsim -cscfg cosim.cfg
指令成功完成,log文件说一个instance被成功替代。
然后,走ISO流程:ncvlog, ncelab和 ncsim 。跑完仿真之后输出一个hsim.fsdb文件,打开一看没有vout这个节点波形,再看hsim.conn,它说vout没有任何连接,就是这个节点没有练到电路当中的任何位子。
于是我很困惑,不知道哪位高手能解答这个问题,灰常感谢!
global 0 vdd!
XI4 (vinvin vout) invv
C0 (vinvin 0 ) capacitor c=1p
R0 (vdd! vinvin) resistor r=100K
V0 (vdd! 0 ) vosource type=pulse val0=0 val1=1.8 period=1u width=500n rise=10p fall=10p
include "./invv.scs"
tran tran stop=20u
其中,"invv.scs" 是spectre格式的子电路,如下:
subckt invv a z
R1 (a z) resistor r=100K
ends invv
这里我用了一个电阻直接短接输入输出,应该没有问题,反正它要被verilog代码替代的。事实上我开始用的是真实的电路描述,但是结果一样,这里偷懒就没有一个一个的写了。
"invv.v"的代码是 :
`timescale 1ns/10ps
module invv(a,z)
input a;
output z;
assign z=~a;
endmodule
然后再写 "cosim.cfg " 为:
set_args -spectre input.scs
digital_cell invv
verilog_file invv.v
万事俱备,开始执行指令: hsim -cscfg cosim.cfg
指令成功完成,log文件说一个instance被成功替代。
然后,走ISO流程:ncvlog, ncelab和 ncsim 。跑完仿真之后输出一个hsim.fsdb文件,打开一看没有vout这个节点波形,再看hsim.conn,它说vout没有任何连接,就是这个节点没有练到电路当中的任何位子。
于是我很困惑,不知道哪位高手能解答这个问题,灰常感谢!
自己顶顶,哪位大哥指点一下吧!
友情帮顶
不懂帮顶
global 0 vdd!
XI4 (vinvin vout) invv
C0 (vinvin 0 ) capacitor c=1p
R0 (vdd! vinvin) resistor r=100K
V0 (vdd! 0 ) vosource type=pulse val0=0 val1=1.8 period=1u width=500n rise=10p fall=10p
include "./invv.scs"
tran tran stop=20u
.print v(*)