Проверьте сгенерированный код из собственной плавающей точки

HDL Coder™ собственная технология с плавающей точкой может сгенерировать независимый от цели HDL-код из вашего проекта с плавающей точкой. Синтезировать проект с плавающей точкой можно на любых типовых FPGA или ASIC. Проекты с плавающей точкой имеют лучшую точность, более высокую динамическую область значений и более короткий цикл разработки, чем проекты с фиксированной точкой. Если ваш проект имеет сложные математические и тригонометрические операции, используйте собственную технологию с плавающей точкой.

При представлении бесконечно вещественных чисел с конечным количеством бит могут быть ошибки округления с правильной областью значений округления значений, который задает IEEE-754 стандарт. Чтобы измерить ошибки округления, можно задать проверку допуска с плавающей точкой на основе relative error или ulp error. Для получения дополнительной информации об этих ошибках округления см. «Относительная точность» и «Факторы ULP».

Задайте стратегию допуска

Перед генерацией теста задайте проверку допуска с плавающей точкой для проверки сгенерированного кода.

Чтобы задать проверку допусков в диалоговом окне Параметры конфигурации (Configuration Parameters):

  1. На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code.

  2. Нажмите Settings. На панели HDL Code Generation > Testbench для Floating point tolerance check based on задайте relative error или ulp error.

  3. Введите Tolerance Value и нажмите Apply. Если вы выбираете relative error, по умолчанию является значением допуска 1e-07. Если вы выбираете ulp error, значение допуска по умолчанию является нулем. Дополнительные сведения см. в разделе «Числовые факторы с собственной плавающей точкой».

Чтобы задать стратегию допуска в командной строке, используйте:

  1. Задайте настройку проверки допуска с плавающей точкой при помощи FPToleranceStrategy.

    % check for floating-point tolerance based on relative error 
    hdlset_param('sfir_single', 'FPToleranceStrategy', 'Relative'); 
    
    % check for floating-point tolerance based on the ULP error
    hdlset_param('sfir_single', 'FPToleranceStrategy', 'ULP'); 
  2. На основе FPToleranceStrategy установка, введите значение допуска при помощи FPToleranceValue.

     % if using relative error, enter custom tolerance value
    hdlset_param('FP_test_16a', 'FPToleranceValue', 1e-06); 
    
    % if using ULP error, enter tolerance value greater 
    % than or equal to 1
    hdlset_param('FP_test_16a', 'FPToleranceValue', 1); 

Проверьте сгенерированный код с HDL- Испытательного стенда

Чтобы сгенерировать HDL- испытательного стенда для проверки сгенерированного кода:

  1. В диалоговом окне Configuration Parameters, на панели HDL Code Generation > Test Bench, в разделе Test Bench Generation Output, выберите HDL test bench.

  2. В разделе Configuration убедитесь, что Use file I/O to read/write test bench data включено. Чтобы сгенерировать испытательный стенд, которая использует константы вместо файла ввода-вывода, очистите Use file I/O to read/write test bench data.

  3. Нажмите Apply, а затем нажмите Generate Test Bench.

Для получения дополнительной информации о том, как работает поколение испытательного стенда HDL, смотрите Испытательный стенд Generation.

Проверьте сгенерированный код с косимуляцией

Чтобы сгенерировать модель косимуляции для проверки сгенерированного кода:

  1. В диалоговом окне Параметры конфигурации на панели HDL Code Generation > Test Bench, для Cosimulation model for use with, выберите инструмент косимуляции.

  2. Нажмите Apply, а затем нажмите Generate Test Bench.

  3. После генерации испытательного стенда сохраните модель косимуляции. В модели дважды кликните Compare подсистема.

  4. Если вы дважды кликните Assert_Out1 блок, параметры блоков показывают ToleranceValue, которые вы задаете.

  5. Чтобы заглянуть внутрь Assert_Out1 щелкните маску. Если вы задаете проверку допуска с плавающей точкой на основе ulp error, модель показывает ULPChecker блок.

    The ULPChecker имеет блок MATLAB Function, который показывает, как HDL Coder учитывает ошибку ULP при проверке на числовую точность.

    Если вы задаете проверку допуска с плавающей точкой на основе relative error, модель показывает RelErrCheck блок.

    RelerrCheck имеет блок MATLAB Function, который показывает, как HDL Coder учитывает относительную погрешность при проверке на числовую точность.

  6. В Simulink® Редактор модели, запустите симуляцию. В конце косимуляции проверяйте compare: Out1 возможности.

    Эти возможности сравнивают различие между сигналом результата от блока косимуляции и опорного сигнала от DUT.

См. также «Генерация модели косимуляции».

Ограничение

При проверке сгенерированного кода конструкции, которые используют стандарты IEEE до VHDL-2008, не поддерживаются с собственной плавающей точкой.

См. также

Руководства по моделированию

Функции

Похожие примеры

Подробнее о