Получение времени или эпохи Unix в VHDL

Чтобы внести некоторую случайность в мой тестовый стенд, я хотел бы использовать псевдослучайные числа, засеянные текущим временем или эпохой Unix. Есть ли для этого функция (несинтезируемая из c) в VHDL? Мне нужно, чтобы он работал в VHDL 2008.

IEEE Std 1076-2019 16.5.4 API даты и времени, но, вероятно, нет симулятора, который мог бы с невозмутимым видом утверждать, что сегодня поддерживает эту версию. EPOCH возвращает REAL, что даст вам 56-битную точность, преобразованную в INTEGER (64 бита в -2019). Мы не настолько близки к концу 64-битного диапазона эпохи UNIX, чтобы быть проблемой. Вы всегда можете передать дженерик в инструмент, поддерживающий дженерики командной строки и совместимый с более ранней версией стандарта. Для повторяемости при возникновении ошибок значение может быть сохранено.

user16145658 22.03.2022 15:46

Обновил вопрос. Стандарт, на который я ориентируюсь, — 2008 год, поэтому функции VHDL 2019 для меня недоступны.

Björn Lindqvist 22.03.2022 16:36

Чтобы сделать это в VHDL-2008, ваши сценарии должны быть в состоянии пройти в универсальном формате с временем UNIX/Epoch. Это, вероятно, лучший способ сделать это в любом случае, поскольку, как только вы заработаете, если / когда вы обнаружите сбой, вам нужно будет повторить тот же тест, который не прошел. Как правило, псевдослучайный подход достаточно хорош для генерации тестовых случаев, однако то, что вы предлагаете, хорошо подходит для запуска новых дополнительных тестов в качестве дополнительного уровня (помимо других ваших проверочных тестов) тестирования дизайна, когда пространство проверки велико.

Jim Lewis 22.03.2022 17:08

Вам удалось избежать указания реализации инструмента VHDL, а передача дженериков зависит от реализации и непереносимости. Можете ли вы задать конкретный вопрос по программированию, чтобы сделать это по теме и избежать рекомендательного вопроса?

user16145658 22.03.2022 17:22

Вы используете их в системе CI? просто передать системное время будет работать, но может вызвать проблемы с повторяемостью. В CI в прошлом я просто передавал номер задания CI в качестве начального числа, так как он всегда разный для каждого запуска и делает повторное создание запуска локально простым поиском номера задания. В противном случае вы можете заставить TCL (или любой другой язык) сгенерировать для вас случайное число в качестве начального числа.

Tricky 22.03.2022 17:44

Можете ли вы показать мне, как это делается? Я просто запускаю свой тестовый стенд с ghdl 1.0 следующим образом: ghdl --elab-run --std=08 tb Я просто хочу, чтобы некоторые случайные числа «оживили» мое тестирование.

Björn Lindqvist 22.03.2022 20:03
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Почему бы просто не передать общее значение параметра в той же командной строке, которую вы используете для запуска моделирования? Пример с bash:

entity foo is
  generic(seed: natural := 0);
end entity foo;

architecture bar of foo is
begin
  assert false report natural'image(seed);
end architecture bar;
$ ghdl -a --std=08 foo.vhd
$ ghdl -r --std=08 foo
foo.vhd:7:3:@0ms:(assertion error): 0
$ ghdl -r --std=08 foo -gseed=$(date +%s)
foo.vhd:7:3:@0ms:(assertion error): 1648027085

Другие вопросы по теме

Похожие вопросы

Как я могу каждый день отправлять случайное сообщение из массива в определенный час на discord.js?
Случайное распределение точек на основе шума Перлина?
Создание случайной выборки большего диапазона
Как мне записать случайного пользователя, который находится на сервере, в переменную «пользователь»?
Как сгенерировать случайное четное число в качестве параметра функции в однострочной команде bash?
Функция, которая генерирует "n" неповторяющихся неотрицательных случайных целых чисел и возвращает их в виде списка
Запрос MySql для возврата случайной строки возвращает неожиданное количество строк
Почему генератор случайных чисел xorshift использует одинаковое «количество» SBR/SBL во всех примерах?
Я сделал генератор случайных чисел, достаточно ли он хорош или я могу сделать его более рандомизированным?
Есть ли более простой способ повторения последовательностей, чтобы они каждый раз имели разный результат?