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.

Why cann't my unit be synthesized in top level

Status
Not open for further replies.

Chinix

Newbie level 5
Joined
Mar 2, 2005
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,367
I create a module then synthesize it.Everything goes well.
But when I call it in upper block,my synthesis tool tell me there is some logic cannot be synthesized.
I do all my work in ISE6.3i.
Why does this happen?
And how should I deal with it
thx
 

nge

Junior Member level 1
Joined
Mar 31, 2003
Messages
16
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
95
Could you give us more info or sample of your code if it's not big?
 

Renjith

Full Member level 3
Joined
Jan 3, 2005
Messages
173
Helped
15
Reputation
30
Reaction score
6
Trophy points
1,298
Location
India
Activity points
1,710
do u want to tell that ur independent modules are correctly getting synthesised. but when u integrate it, itz giving problems?

whatz the exact error itz giving?

plz try to detail the problem.
 

Chinix

Newbie level 5
Joined
Mar 2, 2005
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,367
yeah
i write a frequency division module(name it "pre_freq_div") in order to output different frequency related to the division coefficient input,and the coefficient may be large(14-bit).
this module get synthesized correctly independently. i also simulate it in modelsim se 6.0, the wave is perfect, i think.
But when this module is getting into use from top level design,the systhesis tool tell me:
Synthesizing Unit <pre_freq_div>.
Related source file is pre_freq_div.v.
Register <counter> equivalent to <freq_out> has been removed
ERROR:Xst:739 - Failed to synthesize logic for signal <freq_out>.
ERROR:Xst:1431 - Failed to synthesize unit <pre_freq_div>.
 

nand_gates

Advanced Member level 3
Joined
Jul 19, 2004
Messages
893
Helped
175
Reputation
350
Reaction score
51
Trophy points
1,308
Activity points
6,843
Can you post ur code for pre_freq_div.v here... if you dont mind!
 

Chinix

Newbie level 5
Joined
Mar 2, 2005
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,367
Here is my freq div module below.
I wish it does not make too much trobule


module pre_freq_div(clk,_reset,div_coef,freq_out);
input clk,_reset;
input [13:0] div_coef;
output freq_out;
reg freq_out;
reg [13:0] counter;

always @ (posedge clk)
begin
if(_reset==0)
begin
freq_out=0;
counter=0;
end
else
begin
if(div_coef==14'b0) freq_out=0;
else
begin
if(counter!=div_coef)
begin
counter=counter+1;
freq_out=freq_out;
end
else
begin
counter=0;
freq_out=~freq_out;
end
end
end
end

endmodule
 

jelydonut

Full Member level 4
Joined
Dec 27, 2002
Messages
239
Helped
3
Reputation
6
Reaction score
0
Trophy points
1,296
Activity points
1,730
everything looks ok.. cept of the _reset thing.. im not sure if thats valid or not.. cause i never use that naming style.. (perfer rst_n)..

i don't have anything installed to compile/synth it.. to see what it says.. but i cleaned it up to how i would format it.. try it and see if that makes a difference.. if so it could just be syntax..

im assuming your instantiating that module.. so it could be something on the next module up..

jelydonut
 

nand_gates

Advanced Member level 3
Joined
Jul 19, 2004
Messages
893
Helped
175
Reputation
350
Reaction score
51
Trophy points
1,308
Activity points
6,843
Here I have modified ur code aq little bit. Hope you were not using
freq_out as clk for other modules. I changed this signal to single clock
pulses, use this one as clk enable in other modules!
Hope this sloves ur problem.

Code:
module pre_freq_div(clk,
                    reset_n,
                    div_coef,
                    freq_out);
   input clk, reset_n;
   input [13:0] div_coef;
   output      freq_out;
   reg         freq_out;
   reg [13:0]  counter;
   
   always @ (posedge clk) begin
      if (!reset_n) begin
         freq_out <= 1'b0;
         counter  <= 0;
      end else begin
         if (div_coef == 14'b0)
           freq_out <= 1'b0;
         else begin
            if (counter == div_coef) begin
               counter <= 0;
               freq_out <= 1'b1;
            end else begin
               freq_out <= 1'b0;
               counter <= counter+1;
            end
         end
      end
   end
endmodule // pre_freq_div
 

visualart

Advanced Member level 1
Joined
Dec 21, 2001
Messages
467
Helped
28
Reputation
56
Reaction score
4
Trophy points
1,298
Activity points
3,333
It is right!
You ought write your always procedure using the non-block assign (<=), Not using bl;ock assign (=).
 

Chinix

Newbie level 5
Joined
Mar 2, 2005
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,367
visualart said:
It is right!
You ought write your always procedure using the non-block assign (<=), Not using bl;ock assign (=).

this influences synthesis procedure so much?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top