S
Simon
Guest
Was wondering if anyone would be kind enough to help me out here - I've been
struggling with a synthesis problem in Webpack, and would appreciate being
pointed in the right direction
XST is telling me:
WARNING:Xst:528 - Multi-source in Unit <cpu> on signal <data<31>> not
replaced by logic
Sources are: data<31>5:data<31>, data<31>4:data<31>, data<31>3:data<31>,
data<31>2:data<31>, data<31>1:data<31>, data<31>:data<31>
WARNING:Xst:528 - Multi-source in Unit <ramController> on signal
<dataOut<31>> not replaced by logic
Sources are: I181_0:O, I180_0:O
WARNING:Xst:528 - Multi-source in Unit <soc> on signal <_n0017> not replaced
by logic
Sources are: c:data<31>, rc:dataOut<31>, mul:data<31>, timer1:data<31>
.... I'm not sure what the syntax data<31>5:data<31> means, but there are 6
of them, and the only direct manipulation of 'data' (it's a module port) is:
assign data = `ADDSUB ? addsub : `MSB'bz;
assign data = `MULTIPLY ? multiply : `MSB'bz;
assign data = `DIVIDE ? divide : `MSB'bz;
assign data = `LOGIC ? logic : `MSB'bz;
assign data = `SHIFT ? shift : `MSB'bz;
assign data = `JAL ? pc : `MSB'bz;
.... which (coincidentally?) has 6 assign statements... The definitions of
the `PARAMETERS are as follows:
`define ADDSUB (opMajor == 4'b0001)
`define MULTIPLY (opMajor == 4'b0100 & opMinor[1] == 1'b1)
`define DIVIDE (opMajor == 4'b0100 & opMinor[1] == 1'b0)
`define LOGIC (opMajor == 4'b0011)
`define SHIFT (opMajor == 4'b0111)
`define JAL ((opMajor == 4'b0000) & (opMinor == 4'b0000))
.... which seem orthogonal. Is the synthesis tool complaining because there
are conflicts between the modules, then ? Icarus verilog seemed to handle it
all in its' stride while simulating (though I know that's no guarantee I
was under the impression that a port declared inout could be assigned
multiple times, if it only has one driver at a time, and if all others drive
it to Z. Presumably I'm not managing to keep it to one driver across all the
modules, then ?
Cheers,
Simon
struggling with a synthesis problem in Webpack, and would appreciate being
pointed in the right direction
XST is telling me:
WARNING:Xst:528 - Multi-source in Unit <cpu> on signal <data<31>> not
replaced by logic
Sources are: data<31>5:data<31>, data<31>4:data<31>, data<31>3:data<31>,
data<31>2:data<31>, data<31>1:data<31>, data<31>:data<31>
WARNING:Xst:528 - Multi-source in Unit <ramController> on signal
<dataOut<31>> not replaced by logic
Sources are: I181_0:O, I180_0:O
WARNING:Xst:528 - Multi-source in Unit <soc> on signal <_n0017> not replaced
by logic
Sources are: c:data<31>, rc:dataOut<31>, mul:data<31>, timer1:data<31>
.... I'm not sure what the syntax data<31>5:data<31> means, but there are 6
of them, and the only direct manipulation of 'data' (it's a module port) is:
assign data = `ADDSUB ? addsub : `MSB'bz;
assign data = `MULTIPLY ? multiply : `MSB'bz;
assign data = `DIVIDE ? divide : `MSB'bz;
assign data = `LOGIC ? logic : `MSB'bz;
assign data = `SHIFT ? shift : `MSB'bz;
assign data = `JAL ? pc : `MSB'bz;
.... which (coincidentally?) has 6 assign statements... The definitions of
the `PARAMETERS are as follows:
`define ADDSUB (opMajor == 4'b0001)
`define MULTIPLY (opMajor == 4'b0100 & opMinor[1] == 1'b1)
`define DIVIDE (opMajor == 4'b0100 & opMinor[1] == 1'b0)
`define LOGIC (opMajor == 4'b0011)
`define SHIFT (opMajor == 4'b0111)
`define JAL ((opMajor == 4'b0000) & (opMinor == 4'b0000))
.... which seem orthogonal. Is the synthesis tool complaining because there
are conflicts between the modules, then ? Icarus verilog seemed to handle it
all in its' stride while simulating (though I know that's no guarantee I
was under the impression that a port declared inout could be assigned
multiple times, if it only has one driver at a time, and if all others drive
it to Z. Presumably I'm not managing to keep it to one driver across all the
modules, then ?
Cheers,
Simon