XST does not currently support the declaration of parameters inside a function. You can work around this by either using constants in the function or by declaring the parameters in the module in which the function resides.
You can change the following default XST synthesis settings to allow the synthesis of your design: - Change the FSM option from "Auto" to "None" - Enable the "Keep Hierarchy" option as follows: 1. Select Edit -> Preferences. 2. Select the Processes tab. 3. Change the Property Display Level from "Standard" to "Advanced". 4. Click the "OK" button. 5. Right-click on the "Synthesis" process. 6. Select "Properties". 7. Under the Synthesis Options tab, select "Keep Hierarchy".
XST reports the fatal/internal error under the following record/array-type conditions: - The port of a black box is an array of records (which is correctly supported when this is not a black box). To work around this, do not set ports to black boxes as record types. - The port of an entity is a record, and one of the record fields is multi-dimensional. To work around this, change the record type so that one of the records is not multi-dimensional. - The port of a module is receiving a vector of an array: : wire [7:0] sig [3:0]; :
my_mod u0 (.data(sig, ...); :
To work around this, use a temporary net that connects to the vector and then use that net in the instantiation. : wire [7:0] sig [3:0]; wire [7:0] sig_temp; assign sig_temp = sig; :
my_mod u0 (.data(sig_temp, ...); :
If you are inferring RAM, XST reports an error if the RAMs are cascaded together (i.e., if the output of one RAM feeds the input of another RAM).
To work around this problem, use CORE Generator to generate your cascaded RAMs.
XST reports this error if a CORE Generator component or a primitive (either in the HDL code or from schematic entry) is instantiated, but is not properly connected. In XST, a proper connection is defined as follows: - All ports are connected (a connection to a signal/wire that goes nowhere will not work) - All ports are of the proper type (width, direction)
XST also fails if the underlying core has no logic.
If you cannot connect your CORE Generator core properly, turn "off" the "Read Cores" option in the Synthesize properties under the Synthesis Options tab.
XST errors can also be caused by an order dependency of the process/always blocks. If one process/always block is dependent on the results of another process/always block, move the dependent block so that it is placed after the other block.
Under certain circumstances, an improperly declared alias causes a fatal error in XST.