Перейти к содержанию
    

des00

Модератор
  • Постов

    9 579
  • Зарегистрирован

  • Победитель дней

    4

Весь контент des00


  1. хмм может быть я что-то не понимаю, но сделано стандартное расширение разрядности шины данных. Почему бы в параметрах DDR Controller IP не установить нужную разрядность шины данных и правильно назначить пины ? все равно чипы памяти будут работать синхронно (CS то у них общий). Удачи !
  2. Одно время плотно интересовался этой темой, но описания решения "easy addition of register stages to provide timing closure." в доках так и не нашел. В отличие от Wishbone и Avalon ST в котором описано как реализовывать дополнительные ступени конвейера. Для меня эта тема все еще актуальна, если вам не сложно выложите dw_axi_rs или дайте прямой линк чтобы не искать :) Спасибо
  3. ну наконец то !!!! 1. решили проблему с грамотным использованием пакетов %) осталось только дождаться поддержки от производителей синтезатоов новых улучшений %)) 2. ввели таки $sformatf, правда блин почему бы не сделать имя функции как $psprintf, как в моделсиме. а то код подправить придеться. И главное скорее бы уже появилась поддержка всего этого добра к симуляторах, а пока надо тратить время на освоение OVM %)))
  4. в таком случае я делал скрипт который расчитывает таблицу синусов и генерит на выходе поведенческое описание для моделирования и обертку компонента DPROM (альтера) с нужным файлом инициализации. В проекте используемый компонент выбирается по макросу MODEL_TECH.
  5. Господа а никто не знает как можно перенести настройки профиля слика при смене его версии ? Интересуют не настройки цвета, алиасов и т.д. А настройки горячих клавиш. А то поставил 13 ый вместо 12.0.3 и надо по новой все хот кии забивать %(. И это не смотря на то что при установке слик копировал настройки 12 го. Спасибо.
  6. В предыдущем посте ошибка auto_refresh это последовательность act + pre, без команды read ест-о по поводу обязательного закрывания банков нормируется минимальная и максимальная величина между командами act - pre. для сдрам чипов от микрона максимум составляет 120мкс. После этого времени банк нужно обязательно закрыть, иначе заряд утечет и пойдут ошибки. Т.е. можно не закрывать банк после каждого обращения. И если идет последовательное обращение к памяти в этот же банк в тот же ряд это может увеличить полосу пропускания памяти на 30% (кста в доке я подробно описывал почему %)) как вы будете соблюдать интервал в 120мкс остается на ваш выбор. Если вы "перебираете" банки за это время то проблемы нет. Если пользуете равномерно распределенный auto_refresh то проблемы нет тем более. т.к. его интервал для сдрам памяти 15.625 мкс По поводу полосы пропускания памяти для конкретных применений вам решать, я показывал что в зависимости от последовательности обращения к сдрам памяти и размеру бурста полоса пропускания может изменяться от ~11 до ~99 % от максимальной полосы памяти
  7. кхм. простите великодушно, при всем уважении к вам, но это бред. На форуме уже обсуждалось Зачем нужна регенерация : поддержание заряда на затворах транзисторов в памяти. Что есть регенерация - холостое чтение строки банка памяти (т.к. чтение в сдрам разрушающее, там потом идет перезаряд емкостей). AUTO REFRESH - это по сути комбинированная команда чтения банка act-read-pre. В которой адрес банка и строки берется со счетчика внутри памяти. команда ставиться контроллером. SELF REFRESH - это режим работы микросхемы памяти. В котором она сама, без контроллера генерит команды и клоки на рефреш. При чем выход из этого режима занимает дополнительное время Режим используется для хранения данных, когда нет активности контроллера памяти ( ушли в sleep mode например) теперь нужна ли вообще регенерация : для сдрам памяти, в том случае если вы пробегаете свои адреса чаще чем раз в 64 мс, то нет не нужна. для ддр сдрам памяти, у микрона черным по белому написано что команда AUTO_REFRESH обязанна быть выставлена не позднее чем в течении 8 периодов авто-рефреша. если хотите со стороны системы забыть про рефреш то делается это элементарно : арбитр на команды от системы + счетчик периода рефреша. можете еще сделать запросы к рефрешу с разным приоритетом. ЗЫ. А постоянно закрывать строки с которыми работаете не есть хорошо. сильно падает полоса пропускания. Если интересно можете посмотреть результаты измерений полосы пропускания контроллера в различных режимах в доке на мой контроллер, выложенный на опенкорес.
  8. http://disk.tom.ru/qz6ff4b на фтп лежит, но т.к. он лежит то попробуйте забрать с томского файлообменника это стиль описания, когда большая часть функционала модуля/библиотеки понята без комментариев, банальным прочтением кода так называемые naming convention и design rules это простые правила которых нужно придерживаться при создании кода. Примеры для ХДЛ есть на этом форуме, в сети, в книгах Ben Cohen, Janic Bergeron а и т.д. Если придерживаться этих правил тогда смена разработчика будет происходить менее болезненно. обертка - wrapper, black-box. модуль созданный по принятым соглашениям, в котором ядро вставлено как под-модуль. Облегчает понимание, переход между архитектурами и т.д. Еще раз повторюсь : если это ваши коллеги то тут поможет только начальство, но краткое руководство пользователя ИМХО быть должно. Если это ваши аутсорсеры (суб-подрядчики) : 1. вы покупаете у них готовую разработку то полное руководство пользователя и пример использования IP (ad-hoc testbench) быть обязано!!! Спрашивайте манагеров почему купили IP с никакой поддержкой и документацией. 2. вы заказали разработку с покупкой кода и они ведут себя так, то сами виноваты. Спрашивайте манагеров почему подписали договор на таких условиях!!! Это по сути деньги выкинули в трубу, гарантий саппорта никаких, в случае смены платформы, модернизации почти полная переписка. Рекомендации : с такими командами аутсорсеров не работать. В вашем положении постараться донести перспективы до начальства и договориться с аутсорсерами по хорошему, ну и манагеров потрясти (за что они свой хлеб едят). Удачи!!!
  9. если не против, добавлю свои 5 капель Если с константами и макросами синтеза еще нужно согласиться, то переменные и сигналы это бред Временная диаграмма работы нужна только для внешних интерфейсов, для внутренних ИМХО пустая трата времени. Особенно если есть тестбенчи. В подробном описании не вижу смысла, достаточно краткого описания интерфейса внутреннего модуля. Да и то если модуль тривиальный (мультиплексор, сумматор переносом и т.д.) или код самодокументированый то смысла в этом вообще нет. ИМХО полный бред, владеть хдл и при этом рисовать ? И это при наличии функциональной схемы ? Насчет ядер : завернуть ядро в обертку и описать что делает обертка. Этого достаточно. ИМХО в свое описании вы упускаете цель разработки. Решите что вы покупаете : готовое ядро или разработку с кодом. Если покупаете ядро, то все что касается его внутренностей вам не важно. Главное что бы работало и соответствовало ТЗ. (при этом разработчик вообще может пропустить код через обфускатор для сокрытия тайны). Примеры документации можете посмотреть в описании коммерческих/открытых IP А вот если покупаете разработку с кодом, то здесь действительно нужно в договоре отразить все места, для того, что бы дальнейшую поддержку или модернизацию кода, можно было вести самостоятельно без разработчика. Но тут все зависит от условий : 1. если вы покупаете готовую разработку то насчет кода поезд уже ушел, можно требовать только документацию ( и то скорее всего за создание дополнительной документации, нужно будет заплатить) 2. если вы заказываете разработку то тут : ИМХО нужно в обязательном порядке оговорить соглашение об именах, правилах и принципах проектирования !!! это позволит заранее оговорить вопросы и заставить разработчика писать самодокументированый код. Также требуется тщательная разработка и документирование функциональности и параметров модуля, утверждение плана и методов верификации с описанием тестовых случаев и coner case. Ну ИМХО вот так в кратце. Ну и дополнительное пожелание : все вносите на бумагу с подробным описанием. Иначе разрабочик легко отвертится (конечно в будущем ему с вами может быть и не работать, но в текущем бабло получит). Поэтому не верьте записям в договоре вида "предоставить все документацию, которая использовалась для разработки." Вы думаете что сюда будут входить мини ad-hoc тестбенчи и другая документация об архитектуре подмодулей, а разработчик предоставит функциональную схему высокого уровня абстракции. Также не рекомендую принимать работу в виде проектов CAD с визуализаторами (HdlDesigner) например. Во первых ваша фирма может не использовать данный софт, будут проблемы переносимости кода между разработчиками которые его не используют ну и по хорошему нужно его лицензировать. Удачи !!!
  10. Извините, если вам не сложно раскройте пожалуйста термин "существенно сокращает". Что это в вашем понятии. Все что они делают так это декларируют пустой модуль и вставляют инстанс uut с сигналами ? Не знаю у кого как, у меня на это уходит, секунд 30 в слике, для систем верилога . Гораздо больше времени уходит на разработку классов драйверов, агентов, мониторов, скоребордов и на увязку всего это го в enviroment :)) по сабжу лучший софт для вашей цели : любимый текстовый редактор Удачи !!!
  11. постсинтетический - нетлист после синтеза, отображения на примитивы целевой ФПГА и разводки по чипу. RTFM!!! Если бы такие задержки были синтезируемы, то все кто пишет о том, как правильно делать устройства на фпга, были бы не нужны. я не знаю ни одного синтезатора, который может синтезировать такие задержки для фпга. задержки были введены в HDL только для моделирования поведения железки, но не для синтеза (!!!) Удачи!
  12. А кто говорил про обращения к русскому дистрибьютору альдека? когда чаша терпения была переполнена, я зарегистрировался на сайте и оставил запрос на саппорт за номером "CaseID:16686" в котором написал несколько багов альдека с поддержкой стандарта систем верилог. После этого я переписывался с инженером саппорта, выслал ему тестовые коды на которых альдек валиться в ступор и в последнем письме он сказал что да такой баг имеет место быть. сделать ничего не можем. ждите релиза новой версии (месяца через 2-3) или попробуйте риверу (тогда только новая вышла). Имя инженера уже не помню, почту почистил. Потом еще было письмо от русского дистрибьтора (похоже от робота, но подпись в письме была не ваша)ю мол "спасибо что проявляете интерес к продукту".
  13. Занятные результаты. По стандарту вызов функции $finish с параметром 2 должен выкинуть в лог сообщение о : Насчет отключения файлового и консольного ввода вывода провел несколько замеров, но что бы время симуляции было не нулевое модернизировал тест initial begin // repeat (10000000) @(posedge CLK); repeat (1000000) @(posedge CLK); $finish(2); end результаты 1. отключено все + 25 % aldec win 2. включен вывод в файл + 16 % aldec win 3. включен вывод в консоль + время моделирования уменьшено в 10 раз + 140 % aldec win 4. включено оба канала вывода + 130 % aldec win Если я правильно трактую результаты то выводы в консоль из тестбенчей зло, лучше тогда уже в файл писать. Ну и похоже что оптимизатор у альдека все же получше чем у квесты. ЗЫ. Замеры были на машине Pentium D 2.8GHz + 2 планки по 512MB в двухканальном режиме. Весь софт работал в GUI режиме.
  14. Добрый день господа!!! Наконец то докурил до конца доку по VMM, последние главы SYSTEM-LEVEL VERIFICATION и PROCESSOR INTEGRATION VERIFICATION вводят в основы технологии XVС (EXTENSIBLE VERIFICATION COMPONENTS). И если с софтовой частью все более, менее понятно, то раздел HARDWARE-ASSISTED VERIFICATION ставит в тупик. А именно как модель для моделирования переноситься в железо? Насколько я понимаю данный процесс должен быть простым и однозначным, иначе потребуется верификация самого блока для тестирования, но с другой стороны для симуляции нет смысла делать его в RTL виде и при этом отказываться от современных возможностей HVL. Разбирался ли ли кто нибудь с технологиями XVC ? Если да то не могли бы прояснить технологию предлагаемую авторами данной методики от синопсиса ? Спасибо.
  15. ну дождемся выхода журнала, после него надеюсь электронная версия станет доступна. Меня интересует вот какой вопрос : затрагиваете ли вы, в ваших статьях, вопросы синтеза ассертов ? После курения раздела VMM -> CHAPTER 7 ASSERTIONS FOR FORMAL TOOLS и описания техники разработки синтезируемых ассертов я и как то потерялся в этой теме. Хотелось бы внести ясность. Что происходит с синтезируемыми ассертами, после того как мы проходим формальные проверки ? Они остаются в коде ? Если да, то тогда как все это влияет на ресурс и производительность результирующего кода ? Ведь макросами/тегам синтеза тут уже не отделаешься. Спасибо.
  16. Ради спортивного интереса взял альдековский стандартный пример HEX2BIN. чуть поправил файл тестбенча заменил строку #11200 $finish; на #112000 $finish(2); + чуть поправил скрипты итоги работы альдек 7.3 квеста 6.3f на данном примере альдек более чем в 2 раза обошел квесту. Ндя если топ продукт тормозит, то что же с OEM будет. примеры прилагаю, можете у себя попробывать ЗЫ. у кого есть ривера, нц верилог, вцс и верилятор, если не ломает, сообщите результат запуска теста. modelsim.zip aldec.zip
  17. Похоже на блок вывода данных на сдрам %)) ИМХО рекомендую : 1. перейти на работу по одному фронту. проиграете в латентности, выиграете в стабильности при более высоких тактовых + не потребуется констрейнить путь. Если будут проблемы с фазировкой данных проинвертируйте клок на сдрам. 2. убрать сброс по по данным 3. и похоже самое главное, перейти на использование one-hot/one-cold счетчика. потеряете в ресурсе 4 триггера но выиграете в комбинационном пути по логике. Удачи !!!
  18. 1. Ответ найден верно 2. Не верно. Никакой ошибки не будет, если бы это было ошибкой тогда мой проект http://opencores.com/projects.cgi/web/hssdrc/overview в принципе бы не работал (примеры кода по ссылке CVS->browse) %))) Все дело в глобальном пространстве имен, ответ ищите в IEEE1800 -> Standard for SystemVerilog – Unified Hardware Design, Specification, and Verification Language -> 19.3 Compilation unit support И все таки рекомендую посимулять %)) ЗЫ. int это кстати тип локального параметра
  19. По сабжу из своей жизни Вопрос поступать или нет был решен еще до поступления в вуз, поступил. Но когда я был "молодым, подающим надежды ученым" и увидев какое это бл....во современная бесплатная аспирантура, занялся практикой : освоил программирование МК, ПЛИС + конструирование РЭА и в итоге свалил по собственному желанию, через 1.5 года. ИМХО поступать в аспирантуру нужно только в том случае если 100% тема тебе интересна, ты будешь делать дисер и защищаться, иначе это пустая трата времени. И наблюдая как некоторые "кандидаты технических наук" консультируются у обычных инженеров по ламерским вопросам и как им тяжело с практикой, я думаю что сделал правильный выбор. Удачи !!!
  20. Приношу свои извинения, но вчера был слишком голословен естественно это не относиться к типам данных, определенных пользователем и к параметрам от которых зависят типы данных (ширина регистров и т.д.) в этом случае, как и в ВХДЛ, потребуется рекомпиляция модуля.
  21. похоже таки надо взяться за ниос и куда нибудь его пристроить. интересно а хотя бы средний ниос они без лицензий отдадут, как латексы например.
  22. такс, пакет в SV и VHDL по сути одно и тоже. и тот и тот компилируется как отдельный модуль, в рабочую библиотеку. просто в вхдл мы подключаем его как use work.pkg.all, а в SV как import pkg::*; но местоположение импорта пакета может быть разное, в глобальном пространстве имен (с некоторой оговоркой на весь проект) или в локальном пространстве имен (модуль, интерфейс, класс). Посмотреть в чем разница легко. Модернизируем пример: файл tst.v module pipa (); import pipa_pkg :: *; initial begin $display(cPIPA, cPOPA); end endmodule файл pkg_tst.v package pipa_pkg; localparam int cPIPA = 0; localparam int cPOPA = 1; //localparam int cPOPA = 32; endpackage 1. компилируем оба файла vlog -sv pkt_tst.v tst.v 2. запускаем на симуляцию vsim work.pipa 3. run-all смотрим результат. 4. меняем значение параметра в пакета 5. компилируем один файл vlog -sv pkt_tst.v 6. заново симулим restart -all -force 7. run-all смотрим изменение результата. сидим и думаем что же изменилось и почему, ведь изменили константу в пакете, а она поменялась в модуле который не трогали. ЗЫ. Сравните с результатами того же, но без пакетов файл tst.v `include "inc.vh" module pipa (); initial begin $display(cPIPA, cPOPA); end endmodule файл inc.vh localparam int cPIPA = 0; localparam int cPOPA = 1; //localparam int cPOPA = 32; сделайте выводы что тут не так. PPS. Пакет используется БЕЗ каких либо инклудов !!! Зачем вам постоянно его перекомпилировать. Поковыряйте симулятор и все станет понятно Удачи !!!
  23. цены известны ? или как обычно только с кулоном 4 придет к нам счастье ? :)
  24. кхм, а по рабоче колхозному не получается ? package pipa_pkg; localparam int cPIPA = 0; localparam int cPOPA = 1; function automatic int max (input int a,b ); if (a >=b ) max = a; else max = b; endfunction endpackage module pipa_ver0(output logic c); assign c = pipa_pkg::max(pipa_pkg::cPIPA, pipa_pkg::cPOPA); endmodule module pipa_ver1 (output logic c); import pipa_pkg :: *; assign c = max(cPIPA, cPOPA); endmodule Не совсем корректно. В СВ введено понятие глобального пространства имен, поэтому никто не мешает делать нормальные, честные include файлы (т.е. с инклудом вне модулей). Но тут есть неудобные подводные камни : 1. понятие compilation unit и его реализация в некоторых CAD. Что может приводить к несовместимости казалось бы одинаковых типов (не упакованные структуры в квесте, без -mfcu ключа не дают симуляться). 2. пространство все таки глобальное и разные типы с одним именем, пусть и не пересекающиеся в одном файле будут пересекаться в глобальном пространстве Вот как раз что бы косяков с глобальным пространством не было и введено понятие пакетов. Кстати пакет компилируется и видится как отдельный объект (по крайней мере в квесте) из которого "динамически" импортируются переменные, функции и т.д. И в случае например изменения какого нить параметра, нет смысла перекомпилировать модули, которые ссылаются на содержимое пакета. Это ИМХО сильно отличается от технологии заголовочных файлов, тут я бы сказал ближе концепция импорта из языка Python. Удачи !!!
  25. да вы правы. В верилоге заложена возможность чтения бинарных файлов, но не их записи. Единственное что можно сделать в верилоге, систем верилоге, без применения DPI, PLI это вот это : module tb; initial begin : main int fp; fp = $fopen("tst.txt", "w"); for (bit [7:0] i = 0; i < 10; i++) $fwrite(fp,"%u",i); // ищи ответ в разделе 17.1.1.2 Format specifications $fclose(fp); $stop; end endmodule но при этом размер слова приводиться к размеру слова системы, в моем случае это было 32 бита. Если мне память не изменяет в вхдл будет тоже самое. Варианты решения проблемы вижу 2 : 1. Сделать класс бинарного ввода/вывода для вывода чисел с разрядностью != слову ОС. 2. import "DPI"/PLI и все что с этим связано и импортировать сишные функции Удачи !!!
×
×
  • Создать...