|
Можно ли победить Timing Errors, На глобальном клоке 400МГц |
|
|
|
Jan 24 2012, 10:49
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Задача в общих чертах выглядит так. Есть FPGA Virtex4 11 speed grade. К ней подключен АЦП. С АЦП данные идут на частоте 200МГц (CLK1) и попадают в FIFO. Вся логика дальнейшей обработки данных тактируется внешним генератором 400МГц (CLK2). Так вот по CLK2 при компиляции и фиксируются множественые Timing Errors. В UCF файле на тактовую цепь есть запись NET "CLK" TNM_NET = "CLK"; TIMESPEC "TS_CLK" = PERIOD "CLK" 2.5 ns HIGH 50%; Ошибки не исчезают. И логика обработки данных работает не стабильно, хотя в симуляторе все проверено и отлажено. Возможно ли победить данную проблему и какие пути решения существуют без замены ПЛИС.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
(1 - 52)
|
Jan 24 2012, 13:41
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dm.pogrebnoy @ Jan 24 2012, 07:20)  Аргументируйте. 450MHz = 2.2нс, теперь берем времянку CLB TIF5X 5-input function: F/G inputs to X output 0.49 TCKO FF Clock CLK to XQ/YQ outputs 0.31 TDICK BX/BY inputs 0.4 итого, если бы задержек на трассах не было, то выстроенная в колонну 5 ти входовая логика будет хлопать на (0,49+0,31+0,4) = 1.2нс/833МГц. Казалось бы УРА товарищи, НО 1. Задержки трасс, к сожалению в даташите нет, но сдается мне там наберется как минимум под одну нс. 2. Если логика не вписывается в один слой логики 1LUT/MUXF5/MUXF6/MUXF7, то слоев будет уже два, т.е. помимо задержек логики будет еще бОльшая задержка трасс. 3. проекты редко вытягиваются в одну линию, поэтому длины трасс будут неизбежно расти в большом проекте %) Логика быстрая спору нет, но в реальном проекте при кол-ве слоев логики больше 2/3 выйти на 450 МГц не реально.
--------------------
|
|
|
|
|
Jan 24 2012, 14:06
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dm.pogrebnoy @ Jan 24 2012, 09:04)  А где с ней хорошо?  А то может мне уже на альтеру бежать переучиваться?  не поверите именно там, сам удивляюсь %) недавно квартус меня вообще поразил, разведя рекурсивный фильтр вида y(n) = x(n) + scale_to_18bit(y(n-1)*var), где y/x/var 18 ти битные данные на 120 МГц при 95% забитости кристалла %) а уж как он меня поражает на синтезе комплексных и обычных фиров с выходом до 36-40 бит... %) ЗЫ. все это на "дохлых" и "тормозных" третьих сыклонах i7
--------------------
|
|
|
|
|
Jan 24 2012, 14:53
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dm.pogrebnoy @ Jan 24 2012, 08:29)  Как-то бездоказательно. Говорю о своих умозаключениях, смысла что то доказывать вам не вижу абсолютно никакого, ваше право верить или нет. Практика критерий истины. Сделайте ради примера фильтр приподнятого косинуса со скруглением 0.1, фильтр симметричный 100 коэфиициентов, разрядность входа 16 бит, выхода 16 бит, коэффициентов 14 бит. реализация без ДСП слайсов, фильтр хлопает по clkena, символ за такт %) Чип лучше взять маленький, что бы забитость была ~80% (легко обеспечить коли-ом таких фильтров). Цитата(Мур @ Jan 24 2012, 08:24)  Хочу рассказать о моем изумлении при встрече с одним уникумом, который достигал ошеломительных цифр применяя Матлаб. Он там разрисовывал макроячейку своей микросхемы и вел на основании такого элемента и её маски(для переноса!) моделирование в Матлабе. Он получал и фильтры и ФФТ на 600МГц тактовой. Сам контролировал укладку в чипе всех элементов. Есть два таких человека на форуме, но не будем показывать пальцем. ИМХО гемор, лучше полифазную обработку сделать %) UPD. фильр из корня приподнятного косинуса, иначе из 100 коэффициентов половина будет нулевых %)
--------------------
|
|
|
|
|
Jan 25 2012, 05:59
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dm.pogrebnoy @ Jan 24 2012, 10:30)  Я верю, но хочу разобраться формально - какой именно фактор вызывает такие ощущения? Пока по цифрам в даташитах Xilinx выигрывает. основной фактор в том, что мне удается запихать в маленький чип, нужную функциональность и обеспечить выполнение времянкок(100/200МГц). При этом занятыми оказываются дсп блоки на 90-100%, память на 50-60%, логка и регистры на 95-99%. Тогда как прикидки на хилые чипы, показывают необходимость вставки дополнительных регистров и т.д. Толи квартус на голову выше исе/симплифай синтезирует/оптимизирует математику, толи с трассировочными ресурсами лучше, в общем не понятно. Цитата(bogaev_roman @ Jan 24 2012, 15:34)  Задайте конкретную задачу - создать конкретный фильтр с такими то хар-ми, по такому алгоритму, с испльзованием таких то чипов (только чтоб одна технология). создавайте тему, фильтр прототип и условия тестирования я выложу %)
--------------------
|
|
|
|
|
Jan 25 2012, 12:10
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Распараллелил и упростил все что можно. Количество ошибок сократилось с 800 до 60, сейчас timing score около 11000. Судя по анализу в местах где есть ошибки Levels of Logic колеблется 9-11. Ситуация не улучшилась - проект по прежнему работает не стабильно. При включении питания проект может или сразу нормально работать, или не работать совсем. Да к тому же исправление одних ошибок приводит к появлению других - замкнутый круг. Может надо руками проект на кристалл как-то раскладывать? Не умею я этого, увы.
|
|
|
|
|
Jan 25 2012, 12:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(TABKP @ Jan 25 2012, 16:10)  Количество ошибок сократилось с 800 до 60, сейчас timing score около 11000. Судя по анализу в местах где есть ошибки Levels of Logic колеблется 9-11. Ситуация не улучшилась - проект по прежнему работает не стабильно. Конечно. Проект будет работать стабильно, когда timing score будет равен нулю. Пока у вас будет хоть одна дорожка, не вписывающаяся во времянку - вы будете ловить глюки, хоть возможно и не при любых условиях (в основном температурных). Ставьте дополнительные регистры туда, где 9-11 уровней. Цитата(TABKP @ Jan 25 2012, 16:10)  При включении питания проект может или сразу нормально работать, или не работать совсем. Да к тому же исправление одних ошибок приводит к появлению других - замкнутый круг. Вы, вероятно, двигаете триггеры по проекту, а надо их добавлять. Когда есть места, где 9-11 уровней - можете двигать до посинения, не заработает. И включите retiming, кстати, если не включен - тогда вы сможете добавлять степени конвейеризации в длинные цепочки туда, где это логически удобнее, а синтезатор сам их будет ставить в середину цепи, перераспределяя логику. Цитата(TABKP @ Jan 25 2012, 16:10)  Может надо руками проект на кристалл как-то раскладывать? Не умею я этого, увы. Вообще-то, в столь сложных проектах с этого надо начинать. Ожидать, что ISE по собственной инициативе разложит весь проект на 400MHz - это супероптимистично. Учитесь, это несложно, недаром PlanAhead включили в стандартную поставку.
|
|
|
|
|
Jan 30 2012, 13:28
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Копаю дальше проект. Изменив алгоритм и упростив все что можно сократил ошибки до 3-ех. Timing Score уменьшился до 136. Уровни логики 9. Количество проблемных путей по анализатору равно 9. Замена чипа на 12-ый полностью устраняет ошибки. Все бы хорошо, да помимо куска проекта на 400МГц, есть еще огромный кусок на значительно более низких частотах. И его еще дорабатывать сильно надо, но при добавлении чего-либо в него, количество ошибок снова растет.
Добавлю - проекты на столь больших частотах мне не встречались. Зачастую не требовалось вообще констрейны использовать. Так что прошу извинить за серость, но многих советов я не понимаю.
Теперь по порядку:
Не знаю что такое retiming. Где он включается?
Осознаю, что добавление триггеров увеличивает скорость работы. Но как их добавить? В ручную через FPGAEditor?
"Мультицикловые констрейны и те, которые можно сунуть в игнор" - можно для чайника рассказать что это?
smartexplorer - как его запустить?
Результаты обработки идут далее в низкочастотную часть проекта Данные идут в режиме DDR, поэтому обработка на 400МГц должна быть.
Сообщение отредактировал TABKP - Jan 30 2012, 13:31
|
|
|
|
|
Jan 30 2012, 16:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(TABKP @ Jan 30 2012, 17:28)  И его еще дорабатывать сильно надо, но при добавлении чего-либо в него, количество ошибок снова растет. Еще раз: сделайте в floorplan в PlanAhead, разбейте проект на партиции - вы сможете предотвратить перемещение тех кусков проекта, которые уже размещены правильно. Цитата(TABKP @ Jan 30 2012, 17:28)  Не знаю что такое retiming. Где он включается? Register retiming, в настройках PAR. Цитата(TABKP @ Jan 30 2012, 17:28)  Осознаю, что добавление триггеров увеличивает скорость работы. Но как их добавить? В ручную через FPGAEditor? Нет конечно. У вас есть код типа: Код always @(posedge clk) begin a<=b+c+d+e+f+g+h+i; end То есть много логики в один такт. Вы из него делаете Код always @(posedge clk) begin a1<=b+c; a2<=d+e; a3<=f+g; a4<=h+i; a12<=a1+a2; a34<=a3+a4; a<=a12+a34; end Добавили 2 ступени триггеров. Цитата(TABKP @ Jan 30 2012, 17:28)  "Мультицикловые констрейны и те, которые можно сунуть в игнор" - можно для чайника рассказать что это?? Например, вы знаете, что enable некой группы триггеров у вас по дизайну работает четко не чаще, чем раз в два такта. Вы можете пути между этими триггерами объявить в два цикла, и компилятор будет знать, что эти пути можно укладывать в 5 ns, несмотря на тактовую в 400MHz.
|
|
|
|
|
Feb 1 2012, 08:32
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 16-11-10
Пользователь №: 60 920

|
Цитата(Мур @ Jan 24 2012, 17:24)  Хочу рассказать о моем изумлении при встрече с одним уникумом, который достигал ошеломительных цифр применяя Матлаб. Он там разрисовывал макроячейку своей микросхемы и вел на основании такого элемента и её маски(для переноса!) моделирование в Матлабе. Он получал и фильтры и ФФТ на 600МГц тактовой. Сам контролировал укладку в чипе всех элементов. Интересно, а можно подробнее?
|
|
|
|
|
Feb 1 2012, 11:17
|
Частый гость
 
Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001

|
Если честно, прочитал только завязку дискусии и последнюю страницу, так что может чего и пропустил. Но нет сил просто.. ) Так вот. Всё это, если честно, полный бред. И про 400МГц на V-4, и про 600(это вообще отжиг)) ). И даже фильтры на DSP не работают на таких частота, если их число больше, чем в одном столбце приходится на один фильтр. Для V-4 со скоростью -10 при 85% забитии кристалла максимум, что выжимал(хотя стараля, использовал только 2-х!! входовые мультиплексоры и т.д.) это 270 МГц. Дальше роутер начинает проводить совершенно нереальные соединения, и в итоге, ещё ухудшает времянку. Для -11, ну ещё 50 МГц - это потолок. Так что, поменьше иллюзий.
|
|
|
|
|
Feb 1 2012, 11:44
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Цитата(TRILLER @ Feb 1 2012, 15:17)  Если честно, прочитал только завязку дискусии и последнюю страницу, так что может чего и пропустил. Но нет сил просто.. ) Так вот. Всё это, если честно, полный бред. И про 400МГц на V-4, и про 600(это вообще отжиг)) ). И даже фильтры на DSP не работают на таких частота, если их число больше, чем в одном столбце приходится на один фильтр. Для V-4 со скоростью -10 при 85% забитии кристалла максимум, что выжимал(хотя стараля, использовал только 2-х!! входовые мультиплексоры и т.д.) это 270 МГц. Дальше роутер начинает проводить совершенно нереальные соединения, и в итоге, ещё ухудшает времянку. Для -11, ну ещё 50 МГц - это потолок. Так что, поменьше иллюзий. Тут на самом деле не так все просто. Про 600 МГц я думаю имели ввиду только теоретическую скорость работы небольшой или плотноуложенной схемы. Просто в V4 даже такт такой не завести. Что касается 450 МГц и фильтра на DSP, так он у меня был еще и полностью комплЕксный высокго порядка, и одно умножение занимало 4 DSP48, и 4 столбца сразу было использовано. Но и архитектура этого фильтра была не простой, использующей все возможности архитектуры, другое дело что логики практически никакой больше не было использовано, поэтому и такие цифры. Многое зависит от плотности логики и качества разводочных ресурсов. Ув. des00 утверждает что у Alter'ы с этим получше чем у Xilinx, хотя мы это еще не проверили.
--------------------
|
|
|
|
|
Feb 1 2012, 12:06
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(antsu88 @ Feb 1 2012, 11:32)  Интересно, а можно подробнее? Это было пару лет назад. Знаю, что связывался с альтерой о применении параметров маски , после чего сделал эксперимент для всех вариантов масок, чтобы убедиться в выгодности и преимущества по быстродействию при переносе. Его любимым режимом был тогда ВИЗИВИНГ(как рисую, так и разводится!). Он отслеживал расположение внутренней топологии ФПЖА, чтобы оптимально легли ответственные ножки. Речь о "столбиках"(близко расположенные макроячейки) внутри ПЛИС. Так достигалось предельное быстродействие!.. У меня на это руки не дошли,-занят был, а потом поменял работу и связь только по тлф. По праздникам.... -------- Это бомба! Колюсь... Кстати, он утверждал, что в маске весь секрет! Что пользователю не дают возможности разогнать ячейку до предельного значения быстродействия!!!!!! На самом деле это из недокументированного.... Так что его заявление о 1000МГц при встрече на осенней выставке меня не смутили.
|
|
|
|
|
Feb 1 2012, 13:21
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Цитата(TRILLER @ Feb 1 2012, 15:56)  И что, работал фильтр, занимающий 2 столбца на 400 МГц?! Извините, но не верю. Если можно, киньте усечённый кусочек( чего не жалко) на ZalilovTimur87@gmail.com). Мне было бы очень полезно. Конечно работал, собственно чему там не работать? Все элементы на этой частоте работают по даташиту, все полностью законвейерезировано было, разводочные ресурсы в основном использованы специальные, которые между DSP48 проложены. Выкладывать не буду, лень. Там половина в схематике была сделана - зеленый еще был. Цитата(des00 @ Feb 1 2012, 16:54)  как бы начали проверять в соседней теме, но народ как то не шибко этим интересуется. пример не очень удачный наверно получился у вас, не заработал из коробки. может быть еще появится какой-нибудь, я бы попробовал.
--------------------
|
|
|
|
|
Feb 2 2012, 08:12
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Продолжим. Ошибки побеждены. Минимальный запас по setup есть. Посмотрел как 400МГц часть разложилась на кристалл - схема раскинулась аж на пол кристалла. Есть желание сделать 2 вещи: 1) создать Pblock и указать чтобы вся 400МГц часть располагалась в этом блоке 2) создать partition с 400МГц частью, чтобы раз и навсегда отладить этот кусок и не зависеть от того как будет написана остальная часть проекта
Читаю мануал к PlanAhead. Прочитал Hierarchical_Design_Methodology_Guide и PlanAhead_Tutorial_Design_Preservation. Да, и видео посмотрел с оф. сайта. Вроде все просто, но применить эти знания не могу. Не могу понять как выделить нужные компоненты проекта для создания partition - если коры идут отдельным списком, то компоненты написанные мной на VHDL автоматичеки разбиваются на примитивы. Нужно все примитивы компонента выискивать?
|
|
|
|
|
Feb 2 2012, 15:58
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Разобрался. В настройках компилятора в ISE надо галку поставить keep hierarchy. Создал один единственный компонент внутрь которого запихнул все, что связано с 400МГц. Pblock создал. Плохо что нельзя его создавать произвольным по форме - у меня почти все DSP48 использованы, поэтому блок получился длиной почти на вест кристал. После имплемента получил запас по setup 32пС. Затем этот же модуль назначил как partition. Снова сдела имплемент - и получил запас по setup равным 0. Это почему так? Ну да ладно. Нажал remote partitions. Вроде как должен был создаться компонент для вставки в свой проект, но я так и не понял где он и как его вставить в общий проект. Подскажите!
|
|
|
|
|
Feb 2 2012, 17:09
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(TABKP @ Feb 2 2012, 17:58)  Плохо что нельзя его создавать произвольным по форме - у меня почти все DSP48 использованы, поэтому блок получился длиной почти на вест кристал. После имплемента получил запас по Почему нельзя - все можно - просто задаете несколько прямоугольников для одного pblock (Add Pblock rectange) можно даже не перекрывающихся. Так можно нарисовать какую угодно форму. Причем необязательно чтобы в контур для LUT попадали все DSP или BRAM - это независимые друг от друга контуры Удачи! Rob.
|
|
|
|
|
Feb 3 2012, 06:35
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Так и не понимаю как сформированный partition из PlanAhead вставить обратно в ISE проект
|
|
|
|
|
Feb 3 2012, 07:57
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
В UCF файле появился только констрейм AREA_GROUP, который относится к Pblock. А как с partition то быть. Мне надо чтобы модуль на 400МГц стал черным ящиком с неизменным размещением примитивов на кристалле. Кстати при попытке скомпилировать в ISE тот же проект с новым UCF (добавлен только AREA_GROUP) - ISE выдал что недостаточно ресурсов, в то время как Planahead нормально развел. Чудеса.
|
|
|
|
|
Feb 3 2012, 13:59
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Продолжу монолог. После задания Pblock и Partition на нужный модуль я сделал Export IP. В настройках экспорта указал Physical constraints, галку fixed placement only не ставил. Получил файлы edn и ucf на нужный модуль. Далее последовательно порпустил edn файл через программы EDIF2NGD NGD2SPL и SPL2SYM и получил SYM файл. Поскольку головной файл проекта у меня в схематике сделан. Далее скопировал все полученные файлы в рабочую папку проекта. Добавил в проект edn файл. Вставил SYM файл в схему. Все нормально откомпилировалось. Без ошибок. Глянул в FPGA editor как разложился проект на кристале и ....... проект опять раскидан по всему кристалу. Как будто и не создавал я Pblock и Partition. В чем дело? Что я не правильно делаю? Как мне раз и на всегда зафиксировать на кристалле ответственный высокоскоростной модуль? Я осознаю, что для гуру - все эти вопросы на уровне ликбеза, но я бьюсь уже третий день. Не проходите мимо.
Сообщение отредактировал TABKP - Feb 3 2012, 14:01
|
|
|
|
|
Feb 3 2012, 15:40
|
Знающий
   
Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827

|
Цитата(TABKP @ Feb 3 2012, 17:59)  Как мне раз и на всегда зафиксировать на кристалле ответственный высокоскоростной модуль? Зачем вам неизменность размещения? Вы ведь добились хорошего размещения в PlanAhead? Примените найденные хорошие настройки к рабочему проекту, и он (возможно, какое-то время) будет собираться. Достаточно рамки AREA_GROUP и правильных настроек инструментов, при которых проект хорошо складывается. Эти экспортно-импортные дела не всегда работают. Например, у меня 13.1 не кушает ядро, которое сам же сделал, подавай ему от 11.5. >Получил файлы edn и ucf на нужный модуль. Далее последовательно порпустил edn файл через программы EDIF2NGD NGD2SPL и SPL2SYM и получил SYM файл. Полученный ucf файл как использовали?
|
|
|
|
|
Feb 3 2012, 16:22
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Да сейчас добился нормального размещения в PlanAhead. Но проект только в начале, а уже сейчас добавление любого модуля приводит к появлению ошибок. Не хочу заниматься шаманством на каждой компиляции.
ucf файл просто скопировал в папку проекта. Никак его не использую.
|
|
|
|
|
Feb 3 2012, 16:50
|
Знающий
   
Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827

|
Цитата(TABKP @ Feb 3 2012, 20:22)  Да сейчас добился нормального размещения в PlanAhead. Но проект только в начале, а уже сейчас добавление любого модуля приводит к появлению ошибок. Не хочу заниматься шаманством на каждой компиляции.
ucf файл просто скопировал в папку проекта. Никак его не использую. Скопировать, наверное, мало. Надо добавить констрейны на размещение модуля в ucf проекта, соблюдая иерархию уровней в проекте. А макрос ваш - без ucf, он данных о размещении не содержит. Сделайте макрос, используя ucf.
|
|
|
|
|
Feb 6 2012, 05:53
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Так в том то и дело, что и в ucf файле топология не прописана. Там собраны временные констрены, размер Pblock-а и его состав. Все. Добавив содержимое ucf файла в головной ucf - макрос-то раскладывается естественно в границах Pblock-a, но те так как это было сделано в PlanAhead.
|
|
|
|
|
Feb 6 2012, 07:24
|
Знающий
   
Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827

|
Цитата(TABKP @ Feb 6 2012, 08:53)  Так в том то и дело, что и в ucf файле топология не прописана. Там собраны временные констрены, размер Pblock-а и его состав. Все. Добавив содержимое ucf файла в головной ucf - макрос-то раскладывается естественно в границах Pblock-a, но те так как это было сделано в PlanAhead. Когда вы макрос без констрейнов размещения импортируете, конечно, не так раскидывается, как было в PlanAhead. Есть у вас в UCF к макросу констрейны SLICE_ или RLOC_?
|
|
|
|
|
Feb 6 2012, 09:44
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Цитата(jojo @ Feb 6 2012, 11:24)  Есть у вас в UCF к макросу констрейны SLICE_ или RLOC_? Нету в сгенеренном PlanAhead UCF файле таких констрейнов. Может где галку в настройках PlanAhead ставить надо?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|