Ach! That always gets me too. :)
BW


I wondered that but it just throws up loads more errors all over the place :shrug:
Code: Select all
ERROR:Xst:899 - "rtl/main_top.v" line 506: The logic for <data> does not match a known FF or Latch template. The description style you are using to describe a register or latch is not supported in the current software release.
WARNING:Xst:1464 - "rtl/main_top.v" line 125: Exactly equal expression will be synthesized as an equal expression, simulation mismatch is possible.
WARNING:Xst:1464 - "rtl/main_top.v" line 126: Exactly equal expression will be synthesized as an equal expression, simulation mismatch is possible.

Code: Select all
ERROR:Xst:899 - "rtl/main_top.v" line 506: The logic for <data> does not match a known FF or Latch template. The description style you are using to describe a register or latch is not supported in the current software release.

You are declaring a flip flop with an async reset (or preset), but you are not using it. The compiler gets confused and doesn't know which one is the clock and which one is the async.exxos wrote: 18 Apr 2022 22:50 always @(posedge CLK100M, negedge AS30) begin
...Code: Select all
ERROR:Xst:899 - "rtl/main_top.v" line 506: The logic for <data> does not match a known FF or Latch template. The description style you are using to describe a register or latch is not supported in the current software release.

Badwolf wrote: 18 Apr 2022 22:51 Progress at least -- it's down to one error.
Basically it doesn't like your always statement. You've not covered all cases I expect.
Put in an else where you just set data to D?
Code: Select all
always @(posedge CLK100M, negedge AS30) begin
if (BUSEN_IRQ == 1'b1) begin
// data[7:0] <= D[7:0];
// data[5] <= 1'b0; //patch bit 5
data[7:0] <= { D[7:6], 1'b0, D[4:0] };
end
if (BUSEN_IRQ == 1'b0) begin
D[7:0] <= BUSEN_IRQ ? 8'bzzzzzzzz : data[7:0];
end
endCode: Select all
ERROR:HDLCompilers:247 - "rtl/main_top.v" line 510 Reference to vector wire 'D' is not a legal reg or variable lvalue
ERROR:HDLCompilers:106 - "rtl/main_top.v" line 510 Illegal left hand side of nonblocking assignment
ahhhhh.. I'm confused nevermind the compiler :lol:ijor wrote: 18 Apr 2022 22:54 You are declaring a flip flop with an async reset (or preset), but you are not using it. The compiler gets confused and doesn't know which one is the clock and which one is the async.
Assigning multiple times is usually beginning because, depending on the case the language does allow it. But you should be careful and normally avoid it, because it might be confusing. In some cases (not really here) it might be useful.
Not just you, but all of us that are used to "C" style arrays :)


Users browsing this forum: ClaudeBot and 7 guests