微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog宏功能模块在modelsim仿真错误

verilog宏功能模块在modelsim仿真错误

时间:10-02 整理:3721RD 点击:
我用verilog的宏功能模块弄了一个12X12有符号的乘法器子模块,然后将生成的代码直接和自己的滤波器代码放在一起仿真,子模块在程序中被实例化调用,但modelsim仿真时出错,找不到原因,求教

代码还可以这样写么?
一个文件里这样写不出错么?
endmodule
module



    额 , 没问题把,主模块和子模块关系没事吧,我verilog编译通过了

不是说的很明白嘛,lpm_mult这个module没有定义。看看filelist是否忘记添加这个模块之类的小错误

QuartusII 是支持一个文件中多个module。不知道modelsim支不支持。
首先当然不是拆分文件,首先看看你的调用。top放到后面去试试



   module mult12X12 (clock,dataa,datab,result);



input
  clock;


input
[11:0]  dataa;


input
[11:0]  datab;


output
[23:0]  result;



wire [23:0] sub_wire0;


wire [23:0] result = sub_wire0[23:0];



lpm_mult
lpm_mult_component (



.clock (clock),



.dataa (dataa),



.datab (datab),



.result (sub_wire0),



.aclr (1'b0),



.clken (1'b1),



.sum (1'b0));


defparam


lpm_mult_component.lpm_hint = "MAXIMIZE_SPEED=5",


lpm_mult_component.lpm_pipeline = 1,


lpm_mult_component.lpm_representation = "SIGNED",


lpm_mult_component.lpm_type = "LPM_MULT",


lpm_mult_component.lpm_widtha = 12,


lpm_mult_component.lpm_widthb = 12,


lpm_mult_component.lpm_widthp = 24;



endmodule


这个就是我那个verilog产生的宏功能模块,这种代码不像verilog,我都看不懂。lpm_mult这个也是模块吗,能详细说一下怎么搞吗,还有你说得那个表在哪



module mult12X12 (clock,dataa,datab,result);



input
  clock;


input
[11:0]  dataa;


input
[11:0]  datab;


output
[23:0]  result;



wire [23:0] sub_wire0;


wire [23:0] result = sub_wire0[23:0];



lpm_mult
lpm_mult_component (



.clock (clock),



.dataa (dataa),



.datab (datab),



.result (sub_wire0),



.aclr (1'b0),



.clken (1'b1),



.sum (1'b0));


defparam


lpm_mult_component.lpm_hint = "MAXIMIZE_SPEED=5",


lpm_mult_component.lpm_pipeline = 1,


lpm_mult_component.lpm_representation = "SIGNED",


lpm_mult_component.lpm_type = "LPM_MULT",


lpm_mult_component.lpm_widtha = 12,


lpm_mult_component.lpm_widthb = 12,


lpm_mult_component.lpm_widthp = 24;



endmodule


这个就是我用verilog产生的宏功能模块,这个我看不懂,都不像verilog,lpm_mult这个也是模块吗,能具体说一下一个怎么做吗



   你意思是不是说不要子模块,把它合并到主模块里面


lpm_mult 这个module的.v文件是否在工程中?


不是,是modelsim比QuartusII 要傻一点。你引用的模块要先声明,要在前面,后面才是你的top。
类似于C语言中,子函数在前面写,主函数man在最后面。



  我把那个子模块放在主模块前面还是不行,还是提示lpm_mult这个,lpm_mult我不知道是怎么,怎么弄



    仿真的时候还需要把altera相应的仿真库加载上,lpm_mult定义是在仿真库文件里面



   我加了220model和altera_mf两个,是这两个吗?然后modelsim仿真我找不到要看的端口名,怎么办,图片在楼下



   就是这样,我加了那两个库,但是却找不到我的输入和输出端口,请问怎么回事

不太清楚具体环境,log里面不就是说
lpm_mult lpm_mult_component(...) 调用有问题么,
说找不到lpm_mult 这个模块,
lpm_mult.v这个文件在哪?


我加了两个库,编译什么的通过的,就是想看波形的时候没有我被测试程序的端口


仿真的时候不要开启优化选项,就是vsim命令需要加上-novopt



   额,我对modelsim不大熟,,你说的这些命令我没见过,也不知道怎么用,可以说详细点吗,谢谢



    你的modelsim仿真是从QuartusII 中启动的,还是另外新建立的modelsim工程呢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top