Автор |
Сообщение |
18.09.2006 10:46:46
Тема: Вопросы и ответы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Если возникают какие-то проблемы с использованием C-MPA, то спрашивайте здесь.
Установка Windows на MacOS
Работа в Linux
Кракозябры вместо русских букв в Windows 10
Как изменить шрифт в редакторе Winter +1
Как добавить в редактор Ctrl+C, Ctrl+V
Работа с битами
Решение задачи с памятью
+2
+6
Две монетки
Решение задачи с памятью +1 +2 +4 +5 +6
Сохраняйте значения входных при решении задач с памятью +1
Контакты большой размерности +1
Инициализация массива значениями переменных
Отладка программ с массивами
Видео - отладка программ условного вычисления выражений
Инициализация массива символов +1 +2
Массив символов(строка) как входной параметр
Нет символа # в конце выходной строки
Максимальный размер массива
Объявление двумерного массива
Индекс массива должен быть целочисленной переменной
Переполнение при вычислении промежуточных результатов +1 +2
Приоритеты операций & и ==
Использовать ! а не ~ для отрицания битовых переменных
Не объявлена переменная a (отправлена не та программа)
Переполнение промежуточных вычислений
По таблицам истинности
Сортирующие сети
"Решение проходит в отладчике, но не проходит тестирование":
Возьмите с DL и подключите тесты!
Скорей всего, Вы совершили одну из следующих ошибок:
0. Присваивание входным переменным значений +1 +2
1. НЕсоответствие названия выходной переменной условию задачи.
2. НЕсоответствие размерности элементов массива условиям задачи.
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=44129#44129
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=45926#45926
3. Неверный тип переменных (использовался int вместо unsigned)
http://dl.gsu.by/NForum/posts/topicshow/1792.dl?postid=46192#46192
4. Неинициализированная переменная
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=55874#55874
"Решение проходит в Winter-е, но не проходит в HLCCAD":
1. Возьмите тесты из HLCCAD и подключите в Winter - прогоните программу на них.
2. Подключите тесты к сгенерированному проекту в HLCCAD - прогоните схему на них
Это позволит Вам диагностировать ситуацию:
Перечень возможных причин ситуации
1. Время, установленное в тесте для HLCCAD, недостаточно для выполнения Вашей микропрограммы.
- по истории изменения значений во время моделирования можно установить, в какое время на выходах Вашей схемы появляются правильные значения. И сравнить его со временем контроля этих же значений в тесте.
Если возможно оптимизировать программу, сделайте это
http://dl/NForum/posts/topicshow/46.dl?postid=98943#98943
http://dl.gsu.by/NForum/posts/topicshow/1642.dl?postid=98586#98586
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=105387#105387
Если Вы считаете невозможным написать программу, работающую быстрее - сообщите нам
(в теме "Ошибка в установке задачи - 201х")
или Вам подскажут как это сделать
или время на тест будет увеличено
2. В программе используются не синтезируемые (на текущий момент) конструкции:
- массивы
об этом выдается ПРЕДУПРЕЖДЕНИЕ во время синтеза - будьте внимательны!
Синтезируемые конструкции
3. В программе используются конструкции, которые требуют для обработки (генерации схемы) существенно больше времени, чем СЕЙЧАС отводится:
- сдвиг на переменное число разрядов
такие ситуации описываются в форуме, возможно в скором будущем они также будут протоколироваться во время синтеза
http://dl/NForum/posts/topicshow/46.dl?postid=3761#3761
4. Неоднократное занесение значений на выходные контакты.
https://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=117002#117002
http://dl/NForum/posts/topicshow/46.dl?postid=224#224
http://dl/NForum/posts/topicshow/46.dl?postid=1937#1937
http://dl/NForum/posts/topicshow/46.dl?postid=3550#3550
http://dl/NForum/posts/topicshow/46.dl?postid=34228#34228
http://dl/NForum/posts/topicshow/46.dl?postid=44944#44944
http://dl/NForum/posts/topicshow/46.dl?postid=77048#77048
http://dl/NForum/posts/topicshow/46.dl?postid=92167#92167
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=93833#93833
http://dl/NForum/posts/topicshow/46.dl?postid=100583#100583
http://dl/NForum/posts/topicshow/46.dl?postid=100585#100585
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=114235#114235
Присваивание значений на входных контактах.
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=98584#98584
5. Асинхронная работа с входными контактами
http://dl/NForum/posts/topicshow/46.dl?postid=3646#3646
6. Ошибка в тестах
- если Вы это обнаружите и докажете, мы исправим
7. Объявление внутренних переменных контактами
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=97948#97948
|
19.09.2006 12:47:43
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
8. В WINTER отлаживается одна программа, а схема генерируется по другой (например не сохранив программу)
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=97949#97949
http://dl.gsu.by/NForum/posts/topicshow/46.dl?postid=113894#113894
Ограничения реализации
Рекурсивные функции не поддерживаются
Многократный вызов функции в одном выражении не поддерживается +1
#define max(a, b) (((a) < (b)) ? (a) : (b)) - так нельзя
Ошибка в сдвиге на 0 битов
Unsupported node types
Нельзя складывать указатели на строки
Неправильная инициализация строки
Неправильная константа символа
Присваивание строки массиву ВНЕ ОБЪЯВЛЕНИЯ МАССИВА +1
Внутренняя ошибка WChecker: не удается открыть report.txt
Объявлять массивы не более 500 байт
Например, тестирующая система выдает такие ошибки:
"Device ... not found" - Имя устройства не соответствует условиям задачи (например, "Logic.mpa" вместо "Logic"). Переименовать устройство можно в инспекторе проектов (кликнув один раз по имени устройства).
"Incorrect model type" - Устройство имеет неправильный тип модели. Исправлять это нужно так: в редакторе устройств на закладке "Корпус", необходимо нажать кнопку "Тип модели..." и в появившемся диалоговом окне установить флажок "схема".
Нерешенные (пока) проблемы
Чекер снят по [абсолютному] времени
Мультиплексор 256 -> 1 (из 32->1) 0 / 1 Чекер снят по времени (>69 sec) nina.prd
Объявлен слишком большой массив
Внутренняя ошибка компилятора - Unsupported node type
Неоптимальная генерация условных вычислений
Секретный тест не прошел - Winter
Не пройден секретный тест - HLCCAD
|
20.09.2006 12:57:49
Тема: Re:Вопросы по C-MPA
|
Евгений Гацуков
Темы: 1
Сообщений: 6
Мой профиль
|
Даже и не знаю, как правильно задать вопрос... Вообщем, пробую отсылать задачу (даже с исходным примером, который к ней прилагается), выдает "Error: Not equal OUT_0:0=1 [2 ns]". Я так понимаю, что это не правильный ответ... В чем может быть причина?
И еще, иногда, при попытке Make Scheme вылетает ошибка "Can't get scheme (source corpus)", хотя схема вроде как создается... А вот уже после того, как к схеме прикрутить все контакты и снова сделать Make Scheme, все проходит без ошибок. Может быть ответ на предыдущий вопрос вытекает из этого?...
|
20.09.2006 16:24:48
Тема: Re:Вопросы по C-MPA
|
Евгений Гацуков
Темы: 1
Сообщений: 6
Мой профиль
|
Хм... тоже самое сделал в университете, тоже была ошибка со схемой, НО "All tests passed". Видно дома что-то с дистрибутивом HLCCAD... будем разбираться...
|
20.09.2006 16:30:41
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Видимо ты у себя дома изменил проект стандартных устройств (файл standard.prj). Можешь забрать его из SPRL.
Перед первым построением схемы (Make Scheme) необходимо сохранить устройство (кнопка с дискетой) и все будет работать правильно.
|
06.10.2006 10:41:29
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Часто делают следующую ошибку: выводят результаты промежуточнх вычислений на выходные контакты.
Например, нужно возвести X в степень Y.
unsigned __in __bits(8) X;
unsigned __in __bits(8) Y;
unsigned __oout __bits(8) R;
void main()
{
R = 1;
for (unsigned i = 0; i < Y; i++) R *= X;
}
Такое устройство будет выдавать на выход R: 1, X, X^2, ..., X^Y, 1, X, X^2, ...
Таким образом значение на выходном контакте будет постоянно меняться. И соответственно чаще всего будет неверным.
Правильно делать так:
unsigned __in __bits(8) X;
unsigned __in __bits(8) Y;
unsigned __oout __bits(8) R;
void main()
{
unsigned __bits(8) t = 1;
for (unsigned i = 0; i < Y; i++) t *= X;
Y = t;
}
Здесь для промежуточных вычислений используется t. На выходной контакт Y значение подается только тогда, когда мы вычислили конечный результат.
|
12.10.2006 16:07:34
Тема: Re:Вопросы по C-MPA
|
Ольга Яловенко
Темы: 0
Сообщений: 3
Мой профиль
|
Было бы хорошо, если бы в условии задачи был указан тип данных. ведь из условия это не всегда ясно.
______________________
Яловенко Оля
|
12.10.2006 16:10:30
Тема: Re:Вопросы по C-MPA
|
Ольга Яловенко
Темы: 0
Сообщений: 3
Мой профиль
|
А ещё, на контрольных занятиях у всех проблемы с некоторыми определёнными задачами, а с остальными - всё ОК. Непонятно...
______________________
Яловенко Оля
|
12.10.2006 17:19:06
Тема: Re:Вопросы по C-MPA
|
Евгений Гацуков
Темы: 1
Сообщений: 6
Мой профиль
|
Сказал бы так, не понятно не то как РЕШАТЬ, а не понятно то как в некоторых местах ведет себя c-mpa Иногда кажется, что все написано верно, но задачу приходится отправлять по 10 раз.
|
12.10.2006 18:54:13
Тема: Re:Вопросы по C-MPA
|
Вера Корникова
Темы: 0
Сообщений: 3
Мой профиль
|
В Контроль практики (Р/О)\Проектирование\1\4 - "Умножить и сложить" приведено решение на C-MPA:
int __in __bits(4) a;
int __in __bits(4) b;
int __in __bits(4) c;
int __in __bits(4) d;
int __out __bits(8) res;
void main()
{ res = a * d + b * c;}
Однако оно не проходит. Если же ввести дополнительные переменные, то все ОК.
int __in __bits(4) a;
int __in __bits(4) b;
int __in __bits(4) c;
int __in __bits(4) d;
int __out __bits(8) res;
void main()
{ int __bits(8) sum1, __bits(8) sum2;
sum1=a*d;
sum2=b*c;
res=sum1+sum2;}
:!: И это не единственный случай
|
12.10.2006 18:55:30
Тема: Re:Вопросы по C-MPA
|
Вера Корникова
Темы: 0
Сообщений: 3
Мой профиль
|
Аналогичные проблемы были и в Контроль практики \Проектирование\5\6 - "Абсолютная погрешность"
|
12.10.2006 19:58:07
Тема: Re:Вопросы по C-MPA
|
Михаил Долинский
Темы: 2072
Сообщений: 49881
Мой профиль
|
Ребята не нужно писать "НЕКОТОРЫЕ" - это не дает НИКАКОЙ информации !!!
Пишите КОНКРЕТНО, какие задачи, в какой контрольной, КАКИЕ решения !!!
Игорь Викторович - ПРОВЕРЬТЕ, пожалуйста, ВСЕ несданные студентами задачи !!! В первую очередь теми студентами, которые высказались в форуме ...
|
13.10.2006 10:23:48
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Вера Корникова:
В Контроль практики (Р/О)\Проектирование\1\4 - "Умножить и сложить" приведено решение на C-MPA:
int __in __bits(4) a;
int __in __bits(4) b;
int __in __bits(4) c;
int __in __bits(4) d;
int __out __bits(8) res;
void main()
{ res = a * d + b * c;}
Однако оно не проходит.
Оно проходит. Видимо на тестирование было отправлена не совсем последняя версия (или допущена другая ошибка).
Попробуйте сделать все еще один раз, но очень аккуратно.
|
13.10.2006 10:27:59
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Все кто считает, что они сдавали правильно решенную задачу, но тестирующая система не засчитала ее, пишите мне в почту номер задачи, дату и время сдачи (из протокола) + исходный текст решения на Си.
|
26.10.2006 11:30:41
Тема: Re:Вопросы по C-MPA
|
Игорь Коршунов
Темы: 7
Сообщений: 2198
Мой профиль
|
Если тестирующая система выдает "Ошибка в исходном тексте", то это означает, что посланное решение не компилируется. Ошибки можно найти и исправить используя WInter.
|
|