关于cadence 的混合信号仿真中的一个问题
module A ();
....
endmodule
module B ();
....
endmodule
module C ();
A A1();
B B1()
endmodule
也就是说,我在同一个verilog 文件中定义了 A 和 B 两个子模块,又在C中实例化了这两个模块
但是,candence的编译器竟然说不支持这样做(在modelsim里仿的没问题),
各位可有遇到这种情况,有什么解决办法没?
首先我不能确定是否可以在同一个文件中调用,这个可以查说明文档,好像是可以的。
个人觉得问题出在你调用的方式。上网搜下看看吧
试试做一个顶层文件调用AB吧!
不懂。
不懂。
顶层文件怎么写呀,可以给一个示例吗?
Thanks for ur sharing idea , pls more discuss about cadence ic6.Thans again
我碰到和你一样的问题,说端口需要连接
似乎cadence不能这样调用
在C中只能对A、B进行实例化,不能再有其它的非结构级的代码
以下是我的一个设计的顶层模块代码,只有结构级代码:
// Created by ihdl
module AFCFast(sband, AFCdone, AFCnomatch, Fref, Fcmp, AFCstart, Ncmp);
output [3:0] sband;
outputAFCdone, AFCnomatch;
inputFref, Fcmp, AFCstart;
input [10:0] Ncmp;
wire [11:0] Ncount;// Fcmp counter's output
wire [10:0] Ncmp_eff;// NcmpLoader's output
and (Fcmp_gated, Fcmp, CMPen_n);
and (Fref_gated, Fref, C64_n);
CountFcmpFast CountFcmpInst(.data(Ncount),
.clk(Fcmp_gated), .rst_n(Rst));
CountFrefFast CountFrefInst(.C64(C64), .C64_n(C64_n), .CMPen(CMPen), .CMPen_n(CMPen_n),
.clk(Fref_gated), .rst_n(Rst));
CompareFast CompareInst(.up(up), .proper(proper), .down(down), .noproper_n(noproper_n),
.Ncount(Ncount), .Ncmp(Ncmp_eff), .CMPen(CMPen));
NcmpLoaderFast NcmpLoadInst(.Ncmp_out(Ncmp_eff),
.Fref(Fref), .CMPen(CMPen), .Load_n(Rst), .Ncmp_in(Ncmp));
DFFFast DFFup_Inst(.Qout(up_d1),
.clk(CMPen_d1), .rst_n(AFCstart), .Din(up));
DFFFast DFFproper_Inst(.Qout(proper_d1),
.clk(CMPen_d1), .rst_n(AFCstart), .Din(proper));
DFFFast DFFdown_Inst(.Qout(down_d1),
.clk(CMPen_d1), .rst_n(AFCstart), .Din(down));
DFFFast DFF_C64_Inst(.Qout(C64_d1),
.clk(CMPen_d1), .rst_n(AFCstart), .Din(C64));
DFFFast DFF_CMPen_d1_Inst(.Qout(CMPen_d1),
.clk(Fref), .rst_n(AFCstart), .Din(CMPen));
DFFFast DFF_FSMclk_Inst(.Qout(FSMclk),
.clk(Fref), .rst_n(AFCstart), .Din(CMPen_d1));
FSMFast FSM_Inst(.sband(sband),
.next(gonextband), .done(AFCdone), .nomatch(AFCnomatch),
.clk(FSMclk), .rst_n(AFCstart),
.up(up_d1), .proper(proper_d1), .down(down_d1), .C64(C64_d1));
// generate Rst for counters
and(Rst0, noproper_n, gonextband);
DFFFast DFF_Rst1_Inst(.Qout(Rst1),
.clk(Fref), .rst_n(AFCstart), .Din(Rst0));
DFFFast DFF_Rst2_Inst(.Qout(Rst),
.clk(Fref), .rst_n(AFCstart), .Din(Rst1));
endmodule
1# 211lili
结合你这个帖子,大概明白什么意思了,就是在调用module进行实例化的时候,不能再有其他的行为级操作,比如赋值什么的。
只能有一些rtl级或者实例化的操作。
不知是否正确理解你的意思
老版本的cadence是不能实例化调用的,你只能在schematic中连接各module的symbol,以实现调用。
嗯
10# starriness
最新版本的AMS不再存在这个问题了
学习了,有收获,不过要试试看!