Decoding Synplify_pro warning - No driver for fanout pin

Status
Not open for further replies.

atifhashmi

Newbie level 3
Joined
Jun 28, 2013
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Visit site
Activity points
28
Hi all,

I am hoping that this is the right forum to ask this question. I am trying to synthesize the code for a linear feedback shift register. The code is below

Code:
module lfsr_8bit(clk,op,seed,randVal);
	input clk;				  
	input [1:0] op; //defines the operation
   	input [7:0] seed;
	output [7:0] randVal;	
	reg [7:0] randVal;
	
	wire linearFeedback;
	assign linearFeedback = randVal[7]^randVal[5]^randVal[4]^randVal[3];
	
	always@(posedge clk) 
	begin
		case(op)
			2'b00: randVal <= 8'b0; 
			2'b01: randVal <= seed;
			2'b10: randVal <= {linearFeedback,randVal[7:1]};
			default: begin
				//do nothing
			end			
		endcase			
	end	
			
endmodule

When I synthesize this deisgn, I get the following error message, multiple times.

Code:
No driver for fanout pin randVal[7]/D

However, in the above code when I replace

Code:
assign linearFeedback = randVal[7]^randVal[5]^randVal[4]^randVal[3];

with

Code:
assign linearFeedback = randVal[7]^randVal[5];

the warnings go away.

I am trying to understand what the warning is trying to tell me but have been unsuccessful. Is there are problem with using a 4-input xor?

I will really appreciate any comment or suggestion.

Thanks!!
 

You should also shift the bit in from the right hand side in this case. as it stands, you haven't actually defined the feedback function correctly as the highest degree term ([0] for your case) is not used in the feedback function.

The tool is probably doing some global optimization across hierarchy and renaming the nets. Sometimes, the renamed nets are the ones that make it into the error instead of the ones that are really the problem.

Try a quick simulation to at least confirm the correct sequence. Using different parsers can often lead to a variety of error messages where at least one isn't misleading.
 

Thanks for finding the bug in the code. I will fix it.

Secondly, I am not getting an error synthesizing the code using synplify_pro, rather I am getting a warning. Sorry for the confusion. I made the fix. Here is how the code looks like now. Is that correct?

Code:
module lfsr_8bit(clk,op,seed,randVal);
	input clk;				  
	input [1:0] op; //defines the operation
   	input [7:0] seed;
	output [7:0] randVal;	
	reg [7:0] randVal;
	
	wire linearFeedback;
	assign linearFeedback = randVal[7]^randVal[5]^randVal[4]^randVal[3];
	
	always@(posedge clk) 
	begin
		case(op)
			2'b00: randVal <= 8'b0; 
			2'b01: randVal <= seed;
			2'b10: randVal <= {randVal[6:0],linearFeedback};
			default: begin
				//do nothing
			end			
		endcase			
	end			
endmodule
When I synthesize it using synplify_pro, I get the following warnings.
Code:
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:FX894 : lfsr_8bit.v(11) | No driver for fanout pin randVal[0]/D 
@W:MT420 :  | Found inferred clock lfsr_8bit|clk with period 5.58ns. Please declare a user-defined clock on object "p:clk"

I noticed that before I made the fix, I was getting
Code:
No driver for fanout pin randVal[7]/D
as the warning.

Any ideas?

Thanks
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…