Jump to content

    

TamRazZ

Участник
  • Content Count

    31
  • Joined

  • Last visited

Community Reputation

0 Обычный

About TamRazZ

  • Rank
    Участник
  • Birthday 02/11/1989

Recent Profile Visitors

637 profile views
  1. AlteraEdition накладывает некоторые ограничения на проект (использование разных языков, размер исходников), что в некоторых ситуациях критично, поэтому чтобы не искать ошибок в будущем осваиваю оригинальный МС. В этом и проблема... Я не прописывал путей к скомпилированным библиотекам. Quartus, как я понимаю, сам правит ini файл МС и все изменения, которые я пытаюсь сотворить с ним вручную теряют смысл. Видимо в Квартусе стоят какие-то опции, влияющие на запуск МС из под Ква и надо править их, но какие это опции я пока не вкурил...
  2. С запуском ModelSim из Qurtus разобрался! Спасибо! Компилируется и симмулится как надо. НО... При запуске ModelSim (именно ModelSim а не AlteraEdition) из Quartus происходит компиляция множества библиотек под конкретный кристалл, занимает изрядное количество времени и процедура бесполезная т.к. я запускаю функциональную симуляцию. Не понятно куда деваются эти библиотеки однажды откомпиленные, почему это происходит при каждом запуске симулятора (только из Quartus, при запуске ModelSim как самостоятельное приложение такого не происходит)? Каждый запуск ModelSim из Quartus сопровождется обновлением *.ini файла, из чего делаю вывод, что именно в Quartus-gui надо искать-отключать настройки. Перерыл все настройки связанные с запуском EDA Tools пока ничего не нашел. Помогите, кто с этим сталкивался...
  3. Понятно... В моделсиме я более менее разобрался, вопрос, как их подружить с квартусом. Но спасибо за ваш скрипт, некоторые команды взял на вооружение
  4. Спасибо! Как вы запускаете этот скрипт из Quartus? Или вся отладка у вас в интерфейсе ModelSim происходит?
  5. Добрый день! Прошу помощи у опытных пользователей. Опишите подробно ваш флоу создания и отладки проекта под альтеровскую ПЛИСу. Я не часто этим занимаюсь и мой процесс выглядит следующим образом: 1. Написание исходников в текстовом редакторе с поддержкой синтаксиса SV (обычно это встроенный Qurtus текстовый редактор). 2. Создание проекта под ModelSim, в котором происходит функциональная симуляция и исправление логических ошибок. 3. Создание проекта под Qurtus II на основе отлаженных исходников, где происходит оптимизация по затраченным ресурсам и создание Netlist для следующего этапа. 4. Создание нового проекта (или модификация созданного) под ModelSim для временной отладки. 5. TimeQuest, написание констрейнов при необходимости. Понятно, что такой рабочий процесс как минимум не оптимален и не логичен. Известно, что есть способы подружить Quartus II и ModelSim (иначе не было бы в интерфейсе Quartus настроек Nativelink для ModelSim). Но как это грамотно осуществить я не разобрался, и хотелось бы узнать как выглядит рабочий процесс у профессионалов. ЗЫ: Чтобы не показалось, что я сам ничего не пытался сделать и хочу, чтоб мне на шару расписали, что куда нажимать, приведу пример того, как я делаю на, мой взгляд, "не так": 1. Создаю проект в квартусе, пишу исходники на SV и тестбенч. 2. Компилирую библиотеки Altera для своего кристалла. 3. В настройках Simulation в Quartus выбираю ModelSim (прописываю путь к екзешнику), указываю выходную директорию для файлов симуляции, настраиваю тестбенч (картинка в аттаче). 4. В Nativelink указываю путь к скомпилированным библиотекам. 3. Далее при запуске функционального моделирования запускается ModelSim и начинает перекомпилировать все библиотеки и мапить их в указанную директорию. При повторном запуске происходит ровно тоже самое, несмотря на то, что все папки созданы и лежат на своих местах. Выполняется это согласно автоматически созданному скрипту, в котором написано: transcript on if ![file isdirectory verilog_libs] { file mkdir verilog_libs } vlib verilog_libs/altera_ver vmap altera_ver ./verilog_libs/altera_ver vlog -vlog01compat -work altera_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_primitives.v} vlib verilog_libs/lpm_ver vmap lpm_ver ./verilog_libs/lpm_ver vlog -vlog01compat -work lpm_ver {c:/altera/13.1/quartus/eda/sim_lib/220model.v} vlib verilog_libs/sgate_ver vmap sgate_ver ./verilog_libs/sgate_ver vlog -vlog01compat -work sgate_ver {c:/altera/13.1/quartus/eda/sim_lib/sgate.v} vlib verilog_libs/altera_mf_ver vmap altera_mf_ver ./verilog_libs/altera_mf_ver vlog -vlog01compat -work altera_mf_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_mf.v} vlib verilog_libs/altera_lnsim_ver vmap altera_lnsim_ver ./verilog_libs/altera_lnsim_ver vlog -sv -work altera_lnsim_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_lnsim.sv} vlib verilog_libs/cycloneiii_ver vmap cycloneiii_ver ./verilog_libs/cycloneiii_ver vlog -vlog01compat -work cycloneiii_ver {c:/altera/13.1/quartus/eda/sim_lib/cycloneiii_atoms.v} Но как мне его изменить или заменить, чтобы каждый раз он не компилил то, что и так скомпилено. Или может я совсем все не так делаю и мой флоу изначально не верен, расскажите, как действуете вы.
  6. Нужно именно синтезируемое. Пока Хэмминг для тренировки, в будущем, конечно, LDPC=) сделать шаблон через функцию в параметризуемом интерфейсе Можно поподробнее не совсем понял, терминология у меня хромает пока...
  7. Добрый день! Подскажите, пожалуйста, простой и доступный способ реализации на SV функции генерации единичной матрицы. Вот набросок моего видения этой функции: function automatic logic[size-1:0][size-1:0] eye (input int size); for (int i = 0; i < size; i++) for (int j = 0; j < size; j++) eye[i][j] = (i == j); endfunction Понятно, что компилятор не видит size в шапке объявляемой функции. Не понятно, как описать функцию, у которой размерность выходного аргумента зависит входного аргумента.
  8. Добрый день! Возникла проблема при гателевел симуляции проекта. Netlist Writer при компиляции не создает необходимых *.sdo и *.svo файлов (пишу на System Verilog). Из-за этого не запускается симуляция. Причем данный эффект возникает при симуляции под Arria V при выборе плисы Cyclone III для этого же проекта, необходимые файлы генерируются и симуляция проходит нормально. В чем дело? ЗЫ: Версии САПРов в описании темы..
  9. С шинами вроде разобрался! Спасибо! Подобная же проблема с параметризируемыми модулями... При создании квартусом *.svo или *.vo файла из модуля верхнего уровня пропадают параметры, и когда тестбенч передает значения параметра топ-левел модулю возникает ошибка. Как быть в такой ситуации... В настройках нетлист врайтера ничего подобного не обнаружил...
  10. т.е. structural verilog не поддерживает мультиразмерные сигналы, в принципе? или есть способ "правильного" описания сигнала? Подскажите, как должна выглядеть декларация сигнала out_a в таком случае.
  11. Доброго времени суток! Пытаюсь просимулировать с помощью ModelSim (Altera Edition) проект, созданный в Quartus 13.1. Модули проекта написаны на SystemVerilog. Передача данных от одного модуля к другому осуществляется за счет мультиразмерных packed массивов. RTL симуляция проходит нормально, но когда дело доходит до GateLevel ModelSim выдает ошибку, ругается на эти сигналы. Причина в том, что Quartus создает файл для симуляции *.vo (с временными задержками и тд). При генерации этого файла все мои многоразмерные сигналы вида: output logic [7:0] [255:0] out_a; Превращаются в: out_a_0_0 out_a_0_1 ... и тд. ModelSim эти сигналы не обнаруживает и выдает ошибку. Как быть в таких ситуациях?
  12. Цитата(des00 @ Dec 27 2013, 18:56) никак. одно кодовое слово, заменилось на другое кодовое слово. ЗЫ. тема кстати обсуждалась на форуме многократно Странный какой-то алгоритм, в классическом БМ декодер четко определяет может он декодировать принятую комбинацию или нет, а тут получается неизвестно восстановлена последовательность или нет..(
  13. Цитата(barabek @ Dec 27 2013, 04:43) Если повезет и ошибка будет обнаружимой то в процедуре Ченя будет найдено ошибок меньше, чем степень полинома. Только так. Насколько я понял, степень полинома у нас всегда t. Как же отличить ситуацию, когда произошло ошибок <t и когда >t, если и в том и в другом случае Чень найдет корней меньше t
  14. Использую следующий алгоритм для поиска полинома локаторов: Возник вопрос... Судя по последней строке псевдокода, функция всегда будет возвращать вектор размером t вне зависимости от кол-ва случившихся ошибок, следовательно в случае, когда ошибок > t вернется полином степени не больше t, а значит Чень сможет найти корней не больше t. Как в такой ситуации оценить, сможет декодер восстановить данный пакет или нет.?
  15. Цитата(des00 @ Dec 21 2013, 19:43) ну как бы добить нулями и стартануть алгоритм с нужной точки ? Похоже я вообще не правильно воспринял алгоритм декодирования укороченных кодов... Т.е. даже если я имею укороченный код с N=127 я должен его добить нулями до 255 и прогнать БМА по стандартной программе для обычных кодов.?