Article ID: 000087667 Content Type: Error Messages Last Reviewed: 03/14/2023

Why does an internal error occur when using the Fast Register assignment on bidirectional pins of Intel Agilex® 7 FPGA?

Environment

    Intel® Quartus® Prime Pro Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

Due to a problem in the Intel® Quartus® Prime Pro Edition Software version 21.3 and prior, you might observe an internal error when using bidirectional pins with Fast Input Register, Fast Output Register, or Fast Output Enable Register assignment. If any of the fast registers is enabled, you are required to enable all of them.

 

An example of a failing case:

The input register is assigned to Fast Input Register, but OE/Output registers are not assigned as Fast OE Register and Fast Output Register. The following internal error message is generated:

 

Internal Error: Sub-system: U2B2_GENERIC, File: /quartus/db/u2b2_generic/u2b2_generic_translator.cpp, Line: 353

Could not find a solution for pio_1_1

Rule: fmgpio_reg::io_gpio_reg_rule @ pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg.mode != BIDIR_MODE || pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg.xio_gpio_ireg.mode != REG_MODE || pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg.xio_gpio_oreg.mode inside {DDR_MODE_FR,SDR_MODE}

Input variables and their values:

pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg.xio_gpio_ireg.mode == REG_MODE

pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg.xio_gpio_oreg.mode == COMBI_MODE

pio_1_1.x0.fmio96_core_inst.fmio48tile_bot.x3.u1_0.x0.ioereg_top_5_.gpio_wrapper_0.gpio_reg.mode == BIDIR_MODE

 

Resolution

Option 1:

Do not set any of the registers to Fast * Register.

 

Option 2:

Assign all Input/OE/Output to Fast * Register. For example, add the following lines in the .qsf file:

Input register packing: set_instance_assignment -name FAST_INPUT_REGISTER ON -to <path to register>

Output register packing: set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to <path to register>

Output enable register packing: set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to <path to register>

 

Option 3:

Use the following assignment to pack all the registers. Add the following line to the .qsf file:

set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING “PACK ALL IO REGISTERS”

 

This is already fixed in Intel® Quartus® Prime Pro Edition Software version 21.3.

Related Products

This article applies to 1 products

Intel Agilex® 7 FPGAs and SoC FPGAs

1