Forum Discussion
Altera_Forum
Honored Contributor
18 years ago --- Quote Start --- Is there any other way (tool) to transfer my code in FPGA ?? --- Quote End --- I don't think it would help with this error, but you can use any synthesis tool that is compatible with Quartus. Quartus particularly supports the third-party tools listed at "Assignments --> EDA Tool Settings --> Design Entry/Synthesis --> Tool name". When you get an error or warning that you don't understand, right click the message and select "Help". The help isn't always helpful, but in this case it tells you what you need to know. Also right click the error and select "Locate --> Locate in Design File". (This menu option is in bold text, which means you can activate it by double clicking the message instead of right clicking.) The error locates to:
if load'event then ---- depend on the switch The help page, copied below, is saying that synthesis considers "load" to be a clock signal because of the 'event, but you didn't specify whether to clock on the rising edge or the falling edge. The FPGA registers require you to use just one clock edge. If you intended to do an asynchronous load, then you need to code it differently. In the Quartus handbook, see Volume 1, Section II, Chapter 6. Asynchronous load is illustrated in "Example 6–31. VHDL D-Type Flipflop (Register) with ena, aclr and aload Control Signals". An asynchronous load requires that the registers still have some clock. If you intended to use a latch without a clock, then there is an acceptable way to code that, but clocked registers should be used instead of latches whenever possible. --- Quote Start --- VHDL Case Statement or If Statement error at <location>: can't synthesize condition that contains an isolated 'EVENT predefined attribute -------------------------------------------------------------------------------- CAUSE: In a Case Statement or If Statement at the specified location in a VHDL Design File (.vhd), you used an isolated 'EVENT predefined attribute on a variable or signal, that is, you did not combine the predefined attribute with another, level-test condition to form an explicit clock edge. Quartus II Integrated Synthesis cannot synthesize conditions based on isolated 'EVENT predefined attributes. For example, in the following code, an If Statement uses an isolated 'EVENT predefined attribute to test for an event on the signal clk: my_dff : PROCESS (clk, rst)BEGIN IF rst = '1' THEN q <= '0'; ELSIF clk'EVENT THEN q <= data; END IF;END PROCESS; The Process Statement containing the If Statement may be attempting to create a register that is sensitive to both the positive and negative edges of clk. However, Quartus II Integrated Synthesis cannot generate logic to implement a dual-edge register in a device. ACTION: Modify the Case or If Statement so that it represents a valid clock edge, or remove the isolated 'EVENT predefined attribute. For the previous example, you can rewrite the If Statement so that it infers a positive edge-triggered register: my_dff : PROCESS (clk, rst)BEGIN IF rst = '1' THEN q <= '0'; ELSIF clk'EVENT and clk = '1' THEN q <= data; END IF;END PROCESS; --- Quote End ---