|
Почему не работает case, но работает if-else |
|
|
|
Jan 30 2017, 10:51
|
Группа: Участник
Сообщений: 8
Регистрация: 25-01-17
Из: Russia
Пользователь №: 95 152

|
Здравствуйте, меня интересует почему не работает следующий код: Код case cmd is when C_ADD => q <= (f_op + s_op); when C_SUB => q <= (f_op - s_op); when others => null; end case; Но при этом если переписать под if-else, то будет работать. Код if (cmd = C_ADD) then q <= (f_op + s_op); elsif (cmd = C_SUB) then q <= (f_op - s_op); end if; А самое интересное то, что при компиляции ошибок нет, но в ModelSim он отказывается симулировать схему, а именно загружать файл симуляции (не знаю как его правильно назывют - al_vhd_tst, который по тестбенчу работает), пишет: # ** Error: (vsim-3173) Entity '/home/user/Development/freyacpu/cpu/simulation/modelsim/rtl_work.alu' has no architecture. # Load interrupted # Error loading design
И список сигналов соответственно не открывается. С if-else всё работает. Возможно это одна из не синтезируемых конструкций? Прошу помощи у опытных людей!
Сообщение отредактировал unixwz - Jan 30 2017, 10:52
|
|
|
|
|
 |
Ответов
|
Jan 30 2017, 11:53
|
Группа: Участник
Сообщений: 8
Регистрация: 25-01-17
Из: Russia
Пользователь №: 95 152

|
Цитата(iosifk @ Jan 30 2017, 14:28)  Поддерживаю. А зачем Вам АЛУ для светофора? Я так полагаю это случай так называемого сарказма. Как мне выявить данную ошибку? В варнингах ничего особенного нет. UPD: Всё спасибо, если скомпилировать vhd файлы по отдельности в ModelSIM, то будут показаны ошибки. Буду разбираться.
Сообщение отредактировал unixwz - Jan 30 2017, 11:53
|
|
|
|
|
Jan 30 2017, 12:36
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(unixwz @ Jan 30 2017, 14:53)  Я так полагаю это случай так называемого сарказма. Как мне выявить данную ошибку? В варнингах ничего особенного нет.
UPD: Всё спасибо, если скомпилировать vhd файлы по отдельности в ModelSIM, то будут показаны ошибки. Буду разбираться. Modelsim не всегда все ошибки находит. Например я компилирую проект в Quartus'е и он находит ошибки там, где Modelsim их пропустил. UPD: Вернее правильнее сказать, что есть некоторые недочёты, которые могут и не являться ошибками, которые ModelSIM не отмечает. Например неправильная передача сигналов между клоковыми доменами, неуказанный процесс в списке чувствительности, создание защёлки, несинхронизированный асинхронный сброс, и пр.
Сообщение отредактировал Flip-fl0p - Jan 30 2017, 12:53
|
|
|
|
|
Jan 31 2017, 05:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Flip-fl0p @ Jan 30 2017, 15:36)  UPD: Вернее правильнее сказать, что есть некоторые недочёты, которые могут и не являться ошибками, которые ModelSIM не отмечает. Например неправильная передача сигналов между клоковыми доменами, неуказанный процесс в списке чувствительности, создание защёлки, несинхронизированный асинхронный сброс, и пр. Моделсим не телепат и не знает, что вы пишете. Он поддерживает все возможности языка, включая, разумеется, несинтезируемые конструкции, которые активно используются при написании тестбенчей. А вот то, что вы перечислили, является недочетами с точки зрения реализации в железе, но не с точки зрения языка. Тут вы сами должны понимать, что вы делаете.
|
|
|
|
Сообщений в этой теме
unixwz Почему не работает case, но работает if-else Jan 30 2017, 10:51     Flip-fl0p Цитата(andrew_b @ Jan 31 2017, 08:28) Мод... Jan 31 2017, 06:15      Александр77 Цитата(Flip-fl0p @ Jan 31 2017, 09:1... Jan 31 2017, 16:01 Александр77 Несколько раз натыкался на то, что конструкцию cas... Jan 30 2017, 18:15 iosifk Цитата(Александр77 @ Jan 30 2017, 21:15) ... Jan 30 2017, 19:08  Александр77 Цитата(iosifk @ Jan 30 2017, 22:08) Давай... Jan 30 2017, 19:46 iosifk Цитата(unixwz @ Jan 30 2017, 13:51) Возмо... Jan 31 2017, 07:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|