微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 继续请教:verilog里如何调用LPM宏单元库

继续请教:verilog里如何调用LPM宏单元库

时间:10-02 整理:3721RD 点击:
:em25: 我用的软件是Maxplus2,应该支持库管理功能啊,我是在综合项目文件时,选择了options/user libraries,添加了max2lib\mega_lpm。这样的话应该可以直接使用lpm_ram_qd了吧。可还是编译出错啊。
module ram(data,address,we,inclock,outclock,q);
input[7:0] data;
input[7:0] address;
input we,inclock,outclock;
output[7:0] q;
lpm_ram_qd myram(.q(q),.data(data),.address(address),.we(we),.inclock(inclock),.outclock(outclock));
defparam myram.lpm_width=8;
defparam myram.lpm_widthad=8;
endmodule
编译出错
错误信息:verilog HDL syntax error: "lpm_ram_qd" must be a module,task,function or block statement
多谢各位大虾,请继续指点啊

继续请教:verilog里如何调用LPM宏单元库
暂时不理解,先问一下,你的feature都用上了么?在licence设置中

继续请教:verilog里如何调用LPM宏单元库
我用crack的,应该所有功能都有的

继续请教:verilog里如何调用LPM宏单元库
我查了,都有了

继续请教:verilog里如何调用LPM宏单元库

module lpm_ram_dq 没有定义啊,拷一个到你的工程里面,它只定义IO,里面不需要内容,相当于black_box
看我的用法,既可仿真,又可综合
module lpm_ram_dq ( q, data, we, address );
parameter lpm_type = "lpm_ram_dq";
parameter lpm_width = 1;
parameter lpm_widthad = 1;
parameter lpm_numwords = 1 << lpm_widthad;
parameter lpm_indata = "REGISTERED";
parameter lpm_address_control = "REGISTERED";
parameter lpm_outdata = "REGISTERED";
parameter lpm_file = "UNUSED";
parameter lpm_hint = "UNUSED";
input[lpm_width-1:0] data;
input[lpm_widthad-1:0] address;
inputwe;
output [lpm_width-1:0] q;
// synopsys translate_off
// 用于仿真
// 定义存储器
reg[7:0] mem[0:127];
// 初始化存储器
always @(we or data or address)
if(we) mem[address]=data;
assign q =mem[address] ;
// synopsys translate_on
endmodule // lpm_ram_dq

继续请教:verilog里如何调用LPM宏单元库
多谢wj1973!
不过还是不行啊,是不是我的软件有问题啊
我用的maxplus10.0,应该支持verilogHDL的阿
编译有新的错误了:
unsupported verilog HDL feature error:Memory
是对reg[7:0] mem[0:127]这一句报错的
我去掉这几句:
reg[7:0] mem[0:127];
// 初始化存储器
always @(we or data or address)
if(we) mem[address]=data;
assign q =mem[address] ;
后,编译还是产生原来的错误
真是搞不懂了

继续请教:verilog里如何调用LPM宏单元库
我试了一下,确实不行,编译通不过
我一直用其它软件做综合,转成EDIF文件,然后到MAXPLUSII编译
MAXPLUSII支持VERILOG很差的

继续请教:verilog里如何调用LPM宏单元库
module ram(address,inclock,we,data,q);
input[7:0]address;
inputinclock;
inputwe;
input[7:0]data;
output[7:0]q;
wire [7:0] sub_wire0;
wire [7:0] q = sub_wire0[7:0];
lpm_ram_dqlpm_ram_dq_component (
.address (address),
.inclock (inclock),
.data (data),
.we (we),
.q (sub_wire0));
defparam
lpm_ram_dq_component.lpm_width = 8,
lpm_ram_dq_component.lpm_widthad = 8,
lpm_ram_dq_component.lpm_indata = "REGISTERED",
lpm_ram_dq_component.lpm_address_control = "REGISTERED",
lpm_ram_dq_component.lpm_outdata = "UNREGISTERED",
lpm_ram_dq_component.lpm_hint = "USE_EAB=ON";
endmodule

继续请教:verilog里如何调用LPM宏单元库
module ram(data,address,we,inclock,outclock,q);
input[7:0] data;
input[7:0] address;
input we,inclock,outclock;
output[7:0] q;
lpm_ram_dq myram(.q(q),.data(data),.address(address),.we(we),.inclock(inclock),.outclock(outclock));
defparam myram.lpm_width=8;
defparam myram.lpm_widthad=8;
endmodule
lpm_ram_dq! 你写成lpm_ram_qd了,粗心~~

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

网站地图

Top