Pull to refresh

Comments 17

Спасибо. Если будут идеи того что можно еще завизуализировать пишите. В принципе можно добавить любые сценарии от конвейера процессора до нейронных сетей. Так как все это все равно работает на симуляторе то все по сути дела написано на верилоге.

cocotb может забирать значения переменных из верилога и питоном отрисовывать псевдографикой. При этом rtl не меняется.

На самом деле тут самое большое спасибо и респект создателям cocotb. :-)

1). В bash скрипте нужно установить кастомный размер терминального окна минимум 120 символов по горизонтали и 32 по вертикали. Иначе любой сценарий при типично дефолтном разрешении 80х24 вылетит со специфическом руганью питоновского интерпретатора, в которой вообще говоря не каждый плисовод разбирается.

2). На текущих версиях Cocotb, хоть установленных по инструкции из pip репозитория, хоть самой новой непосредственно с гитхаба крэшатся примеры номер 2 и номер 5.

Проверял на Минт 20.04 с Python 3.8

Спасибо за обратную связь:

Пока отвечу по поводу пункта два на счет краша сценариев 2 и 5:

Перед запуском этих сченариев попробуйте развернуть терминальное окно на весь экран. И уже в развернутом окне попробовать запустить сценарии 2 и 5.

Тут проблема скорее всего в том что псевдографика отрисовывается при помощи curses и если curses пытается рисовать за пределами терминального окна то отрабатывает exception и скрипт вылетает. При этом на экране мы ошибки можем не увидеть так как сам экран "захвачен" curses.

Если увеличение размера терминального окна не помогает то можете запустить проблемные сченарии с перенаправлением stdout в файл следующим образом:

Для сценария2:

foo@debian:~$ make -B -f ./Makefile_sc2 >> ./outfile

Для сценария5:

foo@debian:~$ make -B -f ./Makefile_sc5 >> ./outfile

Это даст возможность увидеть какая ошибка приведа в крашу посмотрев в outfile.

По поводу пункта один могу уточнить?

То есть если у меня терминальное окно скажем 85x20 (я его мышкой раздвинул до этих размеров). Далее я запускаю bash скрипт в ктором стоит размер 120x32 то что произойдет? Скрипт ведь не сможет раздвинуть терминальное окно до 120x32?

Хотя тут есть очень интересная идея, проверять размер терминального окна непосредственно из bash скрипта до запуска cocotb и питона. Если терминальное окно маленькое и недостаточное для отображения сценария то выдавать ошибку с рекомендацией увеличить окно и перезапустить bash скрипт.

Опечатка, лишний символ

#!/usr/bin/env bash

В первой строке

А что дает resize?

У меня в линуксе его нет по умолчанию. Говорит поставьте xterm.

Тем не менее я в start.bash скрипт добавил проверку размера терминала.

Крэш 2 и 5 сценариев от размера окна совсем не зависит и ругается на другое:

vvp: vthread.cc:3405: bool of_LOAD_DAR_VEC4(vthread_t, vvp_code_t): Проверочное утверждение «darray» не выполнено.
make[1]: *** [/usr/local/lib/python3.8/dist-packages/cocotb/share/makefiles/simulators/Makefile.icarus:95: results.xml] Аварийный останов (сделан дамп памяти)
make[1]: выход из каталога «/home/aax/tmp/hdlgadgets-main»
make: *** [/usr/local/lib/python3.8/dist-packages/cocotb/share/makefiles/Makefile.inc:40: sim] Ошибка 2

Опс, а какая у вас версия икаруса, не 12я случаем?

Я меня 11я.

В 12й версии поменяли многое в отношении $queue. На основе этого $queue отрисовывается очередь модели. Это как раз сценарии 2 и 5 где эта model присутствует и визуализируется.

У меня такой набор:

python v3.11

cocotb v1.8.0

icarus_verilog v11.0

Тут кстати еще возможна несовместимость старой версии икаруса и cocotb.

У вас есть возможность проверить на 11й версии икаруса?

Команда resize, по меньшей мере в системах полностью поддерживающих синтаксис bash, поскольку это часть его синтаксиса, устанавливаем кастомный размер текущего окна терминала ВхШ в символах.

У меня Линукс Минт 20.04 с простым xcfe, графическим окружением и дефолтный терминал из xcfe, он такую команду понимает сразу.

То что совместимость cocotb с iverilog тоже довольно избирательная это увы подтверждены факт, у себя нынешний cocotb c 11-м iverilog на днях проверю отпишусь(на основной системе не получится, в свою очередь 11-й Икар требует более высокую версию libc, чем совместимые с моей основной системой) .

У себя до того iverilog использовал в связке с gtkwave и рукописными тестбенчами для стимуляции verilog конфигураций написанных под реальное железо. Каких либо несовместимостей ни с системным окружением, ни с конкретными конфигурация и на verilog ни разу не наблюдал.

Тут насколько понимаю основной вопрос к cocotb, написанной так сказать в тестовом стиле без оглядки на распространённые варианты системного окружения вне компьютера разработчика, включая несколько применяемых версий Икара, распостраненного куда как более чем cocotb.

Недавнее обновление моего LTS ЛинуксМинт 20.04 повысило libc до версии совместимой с 11-м iverilog. Установил себе 11-й iverilog из исходников(в репозиториях все так же iverilog 10.3), теперь все шесть Ваших примеров работают.

Sign up to leave a comment.

Articles