Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Legal net Ivalue error in module call

Status
Not open for further replies.

goldfingermafia

Newbie level 1
Joined
Jun 8, 2009
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,299
Legal net Ivalue error

I keep getting a net Ivalue error in my program. Can someone please help me figure this out, i think it has something to do with the face that data_cpu is not fully populated until 200ns. please help me find a solution to this. If anyone wants the files please email me at goldfingermafia@yahoo.com. Thank you

definition:
input wr;
input [7:0]BE;
input [3:0]address;
inout [63:0]data;
inout[31:0]data_out;
output [3:0]address_out;
output [3:0]be_out;

reg [3:0]be_out;
reg [3:0]address_out;
reg [63:0]data_in;
reg [63:0]data_hold;
reg [63:0]data_cpu=0;
reg [31:0]data_out_in;
reg [63:0]data_out_hold;
reg [63:0]data_decide;


module call:
bitR64 R64(
.wr(wr),.clk(clk),.address(address[3:0]),.BE(BE[7:0]),.data_out(data_out_hold[31:0]),
.address_out(address_out_r[3:0]),.data_cpu(data_cpu[63:0]),.be_out(be_out_r[3:0])
);

module bitR64 R64:
module bitR64(wr,clk,address,BE,data_out,address_out,data_cpu,be_out,
);
//inputs
input wr,clk;
input [3:0]address;
input [7:0]BE;
input [31:0]data_out; // input of read modual
//output
output [3:0]address_out;
output [63:0]data_cpu; //output to CPU
output [3:0]be_out;
//registers
reg [3:0]be_out;
reg [3:0]address_out;
reg [15:0]delay=0;
reg [63:0]data;
reg [63:0]data_cpu=0;




always@(posedge clk)
begin
delay=delay+clk;
end

//set address to address +1 to read data.
always@(negedge clk)
begin
if(~wr)
begin
begin
if(delay < 100)
begin
assign be_out[3:0]=BE[3:0];//output BE, only low
assign data[31:0]=data_out[31:0];
assign address_out[3:0]=address[3:0];//address output
end
else
begin
assign be_out[3:0]=BE[7:4];
assign data[63:32]=data_out[31:0];
if(delay <101)
begin
assign address_out[3:0]=address_out[3:0]+1;//limits so that address only incresses one time
end
end
end
end
end
always@(posedge clk)
begin
if(~wr)
begin
if(delay>101)
begin
assign data_cpu=data;
end
emd
end

endmodule
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top