- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am attempting programmatic generation of an FP_FUNCTIONS IP from within a QSYS component _hw.tcl script. I am doing this because the legacy Altera FP IP supported VHDL generics based parameterized instantiation, but the new FP_FUNCTIONS IP has omitted that feature.
Unfortunately I see some "unattainable latency" related error messages despite setting a proper and appropriate latency for the device of 5 when I run QSYS generate. Looking in the log file for the IP generate it appears that the root problem is that the "target" command line flag to cmdPolyEval.sh is being passed an empty string inconsistent with my "Arria 10" DEVICE_FAMILY QSYS system, Quartus Project, and qsys-generate explicit setting? Does anyone have any suggestions on how to fix this type of problem?
Here is the command line error from qsys-generate.
(/ZZZZ/fpga/altera/pro_22.4/quartus/sopc_builder/bin/qsys-generate ../../../top/ioc/YYYY.qsys --search-path="../../../pins, ../../../top, ../../../top/ioc, .., $" --family="Arria 10" --part=10AX066K4F40E3SG --synthesis=VHDL --clear-output-directory --jvm-max-heap-size=32g --quartus-project=FCM2_805 --rev=XXXX || echo "cmd-fail-status" $? || rm YYYY) |& perl ../../../../../../../build-sys/filter_quartus.pl qsysgen YYYY_qsys_gen_failed.log
2025.04.01.10:18:07 Error: fixedToFloat: Could not achieve the requested latency at any frequency.
2025.04.01.10:18:07 Error: fixedToFloat: Cannot generate for specified latency
2025.04.01.10:18:07 Error: Generation failed with exit code 1: 2 Errors, 0 Warnings
In the IP generation log file.
Info: fcm2_ctrl_FloatConverter_0: "Generating: fixedToFloat"
Info: fcm2_ctrl_FloatConverter_0: "Generating: YYYY_FloatConverter_0_altera_fp_functions_1914_dr7scby"
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 400 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 200 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 100 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 50 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 25 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 12 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 5 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Info: fixedToFloat: /ZZZ/fpga/altera/pro_22.4/ip/altera/dsp/altera_fp_functions/source//cmdPolyEval.sh /ZZZ/fpga/altera/pro_22.4/quartus/dspba/backend/linux64 -target {} -frequency 1 -name none -noChanValid -enable -enableHardFP 1 -printMachineReadable -noFileGenerate FXPToFP 16 0 1 8 23
Error: fixedToFloat: Could not achieve the requested latency at any frequency.
Error: fixedToFloat: Cannot generate for specified latency
In my INSTANTIATE_IN_SYSTEM_MODULE set true mode TCL script elaborate callback.
#
# Add Altera fp functions IP configured to convert from fixedpoint
# to floating point
#
add_hdl_instance fixedToFloat altera_fp_functions 19.1.4
set_instance_parameter_value fixedToFloat {FUNCTION_FAMILY} {CONVERT}
set_instance_parameter_value fixedToFloat {CONVERT_function} {FXP_FP}
set_instance_parameter_value fixedToFloat {enable_hard_fp} {1}
set_instance_parameter_value fixedToFloat {faithful_rounding} {0}
set_instance_parameter_value fixedToFloat {forceRegisters} {1111}
# add clock enable signal
set_instance_parameter_value fixedToFloat {gen_enable} {1}
set_instance_parameter_value fixedToFloat {manual_dsp_planning} {1}
set_instance_parameter_value fixedToFloat {rounding_mode} {nearest with tie breaking away from zero}
set_instance_parameter_value fixedToFloat {performance_goal} {latency}
set_instance_parameter_value fixedToFloat {report_resources_to_xml} {0}
set latencyTarget [ get_parameter_value LATENCY_TARGET ]
set floatFormat [ get_parameter_value FLOAT_FORMAT ]
set_instance_parameter_value fixedToFloat {latency_target} $latencyTarget
set_instance_parameter_value fixedToFloat {fp_format} $floatFormat
set_instance_parameter_value fixedToFloat {fp_out_format} $floatFormat
set_instance_parameter_value fixedToFloat {scale_by_pi} {0}
if { $floatFormat == {single} } {
set_instance_parameter_value fixedToFloat {fp_exp} {8}
set_instance_parameter_value fixedToFloat {fp_out_exp} 8
set_instance_parameter_value fixedToFloat {fp_man} {23}
set_instance_parameter_value fixedToFloat {fp_out_man} 23
} else {
set_instance_parameter_value fixedToFloat {fp_exp} {11}
set_instance_parameter_value fixedToFloat {fp_out_exp} 11
set_instance_parameter_value fixedToFloat {fp_man} {52}
set_instance_parameter_value fixedToFloat {fp_out_man} 52
}
set_instance_parameter_value fixedToFloat {fxpt_sign} $fixedFormat
set_instance_parameter_value fixedToFloat {fxpt_width} $symSize
set_instance_parameter_value fixedToFloat {fxpt_fraction} $fracSize
set fpExpSize [ get_instance_parameter fixedToFloat {fp_out_exp} ]
set fpMantize [ get_instance_parameter fixedToFloat {fp_out_man} ]
set fpSymbolSize [ expr "$fpExpSize + $fpMantize + 1" ]
set_parameter_value FLOAT_SYMBOL_SIZE $fpSymbolSize
add_interface_port avs_src AS_SRC_DATA data Output $fpSymbolSize
# not certain if these are required and or differ from a default
set_instance_parameter_value fixedToFloat {ALL_function} {ADD}
set_instance_parameter_value fixedToFloat {ARITH_function} {ADD}
set_instance_parameter_value fixedToFloat {COMPARE_function} {MIN}
set_instance_parameter_value fixedToFloat {EXP_LOG_function} {EXPE}
set_instance_parameter_value fixedToFloat {ROOTS_function} {SQRT}
set_instance_parameter_value fixedToFloat {TRIG_function} {SIN}
set_instance_parameter_value fixedToFloat {divide_type} {0}
set_instance_parameter_value fixedToFloat {exponent_width} {23}
set_instance_parameter_value fixedToFloat {fp_in_exp} {8}
set_instance_parameter_value fixedToFloat {fp_in_format} {single}
set_instance_parameter_value fixedToFloat {fp_in_man} {23}
set_instance_parameter_value fixedToFloat {frequency_target} {200}
set_instance_parameter_value fixedToFloat {trig_no_range_reduction} {0}
set_instance_parameter_value fixedToFloat {number_of_inputs} {2}
set_instance_parameter_value fixedToFloat {select_signal_enable} {0}
- Tags:
- FP_FUNCTIONS
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I fixed my issue by adding some TCL code like as follows. Some of the details are not particularly well documented so I have to dig around looking in the Altera provided IP to solve this type of issue.
set deviceFamily [ get_parameter_value DEVICE_FAMILY ]
set_instance_system_info_value $inst {DEVICE_FAMILY} "" $deviceFamily

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page