code problem, HELP !

M

Miller2000

Guest
Hi‎ ‎‎!‎
I‎ ‎have‎ ‎problem‎ ‎with‎ ‎the‎ ‎following‎
‎code‎.‎
In‎ ‎the‎ ‎simulation‎ ‎‎(‎with‎
‎ModelSim‎)‎‎ ‎everything‎ ‎is‎ ‎Ok‎.‎‎ ‎
When‎ ‎I‎ ‎try‎ ‎to‎ ‎Synthesis‎ (using Xilinx
navigator),‎‎ ‎I‎ ‎got‎ ‎a‎ ‎‎“‎Low‎
‎Level‎ ‎Synthesis‎”‎‎ ‎Warning‎ ‎‎:‎

WARNING‎:‎Xst‎:‎‎1‎‎7‎‎1‎‎0‎‎ ‎‎-‎‎
‎FF‎/‎Latch‎
‎‎<‎out‎1‎‎6‎‎_‎‎8‎‎>‎‎
‎‎(‎without‎ ‎init‎ ‎value‎)‎‎ ‎has‎ ‎a‎
‎constant‎ ‎value‎ ‎of‎ ‎‎0‎‎ ‎in‎ ‎block‎
‎‎<‎sm‎1‎‎>‎‎.‎
WARNING‎:‎Xst‎:‎‎1‎‎8‎‎9‎‎5‎‎ ‎‎-‎‎
‎Due‎ ‎to‎ ‎other‎ ‎FF‎/‎Latch‎
‎trimming‎,‎‎ ‎FF‎/‎Latch‎
‎‎<‎out‎1‎‎6‎‎_‎‎9‎‎>‎‎
‎‎(‎without‎ ‎init‎ ‎value‎)‎‎ ‎has‎ ‎a‎
‎constant‎ ‎value‎ ‎of‎ ‎‎0‎‎ ‎in‎ ‎block‎
‎‎<‎sm‎1‎‎>‎‎.‎
WARNING‎:‎Xst‎:‎‎1‎‎8‎‎9‎‎5‎‎ ‎‎-‎‎
‎Due‎ ‎to‎ ‎other‎ ‎FF‎/‎Latch‎
‎trimming‎,‎‎ ‎FF‎/‎Latch‎
‎‎<‎out‎1‎‎6‎‎_‎‎1‎‎0‎‎>‎‎
‎‎(‎without‎ ‎init‎ ‎value‎)‎‎ ‎has‎ ‎a‎
‎constant‎ ‎value‎ ‎of‎ ‎‎0‎‎ ‎in‎ ‎block

And‎ ‎at‎ ‎the‎ ‎‎“‎FIT‎”‎‎ ‎process‎
‎I‎ ‎got‎:‎
WARNING‏:‏Cpld‎:‎‎1‎‎0‎‎0‎‎6‎‎ ‎‎-‎‎
‎Design‎ ‎‎'‎sm‎1‎‎'‎‎ ‎has‎ ‎no‎ ‎inputs

Please‎ ‎Help‎ ‎‎!‎
‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎
The‎ ‎code‎:‎
‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎‎=‎

‎`‎timescale‎ ‎‎1‎ns‎ ‎‎/‎‎ ‎‎1‎ns

module‎ ‎sm‎1‎‎(‎in‎8‎‎,‎‎
‎latch‎8‎‎,‎‎ ‎latch‎8‎tag‎,‎‎
‎latch‎1‎‎6‎‎,‎‎ ‎reset‎,‎‎
‎out‎1‎‎6‎‎)‎‎;‎
‎ ‎input‎ ‎‎[‎‎7‎‎:‎‎0‎‎]‎‎
‎in‎8‎‎;‎
‎ ‎input‎ ‎latch‎8‎‎;‎
‎ ‎input‎ ‎latch‎8‎tag‎;‎
‎ ‎input‎ ‎latch‎1‎‎6‎‎;‎
‎ ‎input‎ ‎reset‎;‎
‎ ‎output‎ ‎‎[‎‎1‎‎5‎‎:‎‎0‎‎]‎‎
‎out‎1‎‎6‎‎;‎

‎ ‎wire‎ ‎‎[‎‎7‎‎:‎‎0‎‎]‎‎
‎in‎8‎‎;‎
‎ ‎wire‎ ‎reset‎;‎

‎ ‎reg‎ ‎‎[‎‎1‎‎5‎‎:‎‎0‎‎]‎‎
‎out‎1‎‎6‎‎;‎
‎ ‎reg‎ ‎‎[‎‎7‎‎:‎‎0‎‎]‎‎
‎ff‎1‎‎;‎
‎ ‎reg‎ ‎‎[‎‎7‎‎:‎‎0‎‎]‎‎
‎ff‎2‎‎;‎
‎ ‎ ‎ ‎
‎ ‎reg‎ ‎‎[‎‎1‎‎:‎‎0‎‎]‎‎
‎current‎_‎state‎;‎
‎ ‎parameter‎ ‎‎[‎‎1‎‎:‎‎0‎‎]‎‎
‎idle‎=‎‎2‎‎'‎b‎0‎‎0‎‎,‎‎
‎st‎1‎‎=‎‎2‎‎'‎b‎0‎‎1‎‎,‎‎
‎st‎2‎‎=‎‎2‎‎'‎b‎1‎‎0‎‎;‎

always‎ ‎@‎(‎negedge‎ ‎reset‎)‎
begin
‎ ‎if‎ ‎‎(‎‎!‎reset‎)‎
‎ ‎begin
‎ ‎current‎_‎state‎<‎‎=‎idle‎;‎
‎ ‎end
end

always‎ ‎@‎(‎posedge‎ ‎latch‎8‎‎)‎
begin
if‎ ‎‎(‎current‎_‎state‎ ‎‎=‎‎=‎‎
‎idle‎)‎
begin
ff‎1‎‎=‎in‎8‎‎;‎
current‎_‎state‎<‎‎=‎st‎1‎‎;‎
end
end

always‎ ‎@‎(‎negedge‎ ‎latch‎8‎tag‎)‎
begin
if‎ ‎‎(‎current‎_‎state‎ ‎‎=‎‎=‎‎
‎idle‎)‎
begin
ff‎1‎‎=‎in‎8‎‎;‎
current‎_‎state‎<‎‎=‎st‎1‎‎;‎
end
end


always‎ ‎@‎(‎negedge‎ ‎latch‎8‎‎)‎
begin
if‎ ‎‎(‎current‎_‎state‎ ‎‎=‎‎=‎‎
‎st‎1‎‎)‎
begin
ff‎2‎‎=‎in‎8‎‎;‎
current‎_‎state‎<‎‎=‎st‎2‎‎;‎
end
end

always‎ ‎@‎(‎posedge‎ ‎latch‎8‎tag‎)‎
begin
if‎ ‎‎(‎current‎_‎state‎ ‎‎=‎‎=‎‎
‎st‎1‎‎)‎
begin
ff‎2‎‎=‎in‎8‎‎;‎
current‎_‎state‎<‎‎=‎st‎2‎‎;‎
end
end

always‎ ‎@‎(‎posedge‎ ‎latch‎1‎‎6‎‎ ‎‎)‎
begin
if‎ ‎‎(‎current‎_‎state‎ ‎‎=‎‎=‎‎
‎st‎2‎‎)‎
begin
out‎1‎‎6‎‎[‎‎7‎‎:‎‎0‎‎]‎‎=‎ff‎1‎‎[‎‎7‎‎:‎‎0‎‎]‎‎;‎
out‎1‎‎6‎‎[‎‎1‎‎5‎‎:‎‎8‎‎]‎‎=‎ff‎2‎‎[‎‎7‎‎:‎‎0‎‎]‎‎;‎
current‎_‎state‎<‎‎=‎idle‎;‎
end
end

endmodule
 
Hi,

I would suggest that you understand the basic mechanism how FSM and
adjacent logic are created using Verilog. Yes, you can develop your own

style here, but there are some ground rules that may help. Here is an
earlier post that I made on this newsgroup for your reference:

<URL:http://groups-beta.google.com/group/comp.lang.verilog/browse_frm/thread/be1397bb9215d765?tvc=1&q=swapnajit+current_state>

HTH
- Swapnajit.
--
SystemVerilog, DPI, Verilog PLI and all other good stuffs.
Project VeriPage: http://www.project-veripage.co--m
Get information on new articles:
<URL: http://www.project-veripage.co---m/list/?p=subscribe&id=1>
 

Welcome to EDABoard.com

Sponsor

Back
Top