Vadim 0 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба В VHDL пакеты компилят в какую-нибудь библиотеку, а потом ссылаются на нее и на пакет. Сейчас курю стандарт SV, и не могу найти ничего про библиотеки. Использовать пакет у меня получается, только, если я его `include в исходник, и далее по стандарту. А как используют пакеты взрослые пацаны? Сильно не пинайте, только начал изучать verilog. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба В VHDL пакеты компилят в какую-нибудь библиотеку, а потом ссылаются на нее и на пакет. Сейчас курю стандарт SV, и не могу найти ничего про библиотеки. Использовать пакет у меня получается, только, если я его `include в исходник, и далее по стандарту. А как используют пакеты взрослые пацаны? Сильно не пинайте, только начал изучать verilog. В Верилоге ничего нельзя объявлять/определять вне модулей. Поэтому какие-то общие вещи (например, ту же clog2) выносить с уровня модулей технически затруднительно. Пакеты СВ решают эту задачу - можно в них определить все, что нужно, а потом уже в модулях импортировать. Логически это аналогия технологии заголовочных файлов в С/С++. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба Спасибо за ответ, Логически это аналогия технологии заголовочных файлов в С/С++. - теперь все стало на свои места. Не буду больше пытаться компилить пакеты в библиотеку :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба Использовать пакет у меня получается, только, если я его `include в исходник, и далее по стандарту. А как используют пакеты взрослые пацаны кхм, а по рабоче колхозному не получается ? 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 В Верилоге ничего нельзя объявлять/определять вне модулей. Поэтому какие-то общие вещи (например, ту же clog2) выносить с уровня модулей технически затруднительно. Пакеты СВ решают эту задачу - можно в них определить все, что нужно, а потом уже в модулях импортировать. Логически это аналогия технологии заголовочных файлов в С/С++. Не совсем корректно. В СВ введено понятие глобального пространства имен, поэтому никто не мешает делать нормальные, честные include файлы (т.е. с инклудом вне модулей). Но тут есть неудобные подводные камни : 1. понятие compilation unit и его реализация в некоторых CAD. Что может приводить к несовместимости казалось бы одинаковых типов (не упакованные структуры в квесте, без -mfcu ключа не дают симуляться). 2. пространство все таки глобальное и разные типы с одним именем, пусть и не пересекающиеся в одном файле будут пересекаться в глобальном пространстве Вот как раз что бы косяков с глобальным пространством не было и введено понятие пакетов. Кстати пакет компилируется и видится как отдельный объект (по крайней мере в квесте) из которого "динамически" импортируются переменные, функции и т.д. И в случае например изменения какого нить параметра, нет смысла перекомпилировать модули, которые ссылаются на содержимое пакета. Это ИМХО сильно отличается от технологии заголовочных файлов, тут я бы сказал ближе концепция импорта из языка Python. Удачи !!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба кхм, а по рабоче колхозному не получается ? Конечно, же, получается. Мне был непонятен смысл использования пакетов что по-колхозному. что с include. Думал, как в VHDL - скомпилили и используем без инклюдов и колхозов :) ... Мне стыдно, но я почти ничего не понял. Все-таки пока буду считать пакеты чем-то вроде хедеров в C++. Так мне будет спокойнее :) А там посмотрим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба Конечно, же, получается. Мне был непонятен смысл использования пакетов что по-колхозному. что с include. Думал, как в VHDL - скомпилили и используем без инклюдов и колхозов :) Мне стыдно, но я почти ничего не понял. Все-таки пока буду считать пакеты чем-то вроде хедеров в C++. Так мне будет спокойнее :) А там посмотрим. такс, пакет в 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. Пакет используется БЕЗ каких либо инклудов !!! Зачем вам постоянно его перекомпилировать. Поковыряйте симулятор и все станет понятно Удачи !!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 мая, 2008 Опубликовано 21 мая, 2008 · Жалоба Приношу свои извинения, но вчера был слишком голословен пакет компилируется и видится как отдельный объект (по крайней мере в квесте) из которого "динамически" импортируются переменные, функции и т.д естественно это не относиться к типам данных, определенных пользователем и к параметрам от которых зависят типы данных (ширина регистров и т.д.) в этом случае, как и в ВХДЛ, потребуется рекомпиляция модуля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 21 мая, 2008 Опубликовано 21 мая, 2008 · Жалоба Вчера думал над вашими примерами :) На симуляцию не запускал. Придумал такое: 1. сидим и думаем что же изменилось и почему, ведь изменили константу в пакете, а она поменялась в модуле который не трогали. Чего тут думать, ведь модуль берет константу из пакета, а мы ее там изменили и откомпилили пакет. Вот если бы мы пакет забыли откомпилилить, а константа все равно в модуле поменялась, тогда и нужно удивляться. 2. Повторюсь, на симуляцию не запускал, чисто предположение :) : Будет error. Мол, у cPIPA и cPOPA и тип неизвестен, и значение. Ну и правильно - мы ж включили файл с определением констант не в тело модуля. Промазали. И из модуля их не видно. ЗЫ Если не прав, дайте знать, тогда не поленюсь, посимуляю. И Вам удачи!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 мая, 2008 Опубликовано 21 мая, 2008 · Жалоба ЗЫ Если не прав, дайте знать, тогда не поленюсь, посимуляю. 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 это кстати тип локального параметра Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 21 мая, 2008 Опубликовано 21 мая, 2008 · Жалоба 2. Не верно. :crying: http://opencores.com/projects.cgi/web/hssdrc/overview Лучше один раз увидеть, чем один услышать. Спасибо, почитаем. Все дело в глобальном пространстве имен, ответ ищите в IEEE1800 -> Standard for SystemVerilog – Unified Hardware Design, Specification, and Verification Language -> 19.3 Compilation unit support И это почитаем :) Я сейчас как раз в этом ковыряюсь, но в другом разделе, про интерфейсы. Забрел туда в поисках аналога record в vhdl. Оказался монстр, однако :07: И все таки рекомендую посимулять %)) Куда же деваться-то теперь? Сгораю от стыда. Конечно, посимуляю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ecos-rtos.in.ua 0 8 июля, 2008 Опубликовано 8 июля, 2008 · Жалоба 1. Ответ найден верно 2. Не верно. Никакой ошибки не будет, если бы это было ошибкой тогда мой проект http://opencores.com/projects.cgi/web/hssdrc/overview Немного не по теме У вас в TODO находится Test in hardware with Altera Cyclone II/III and Xilinx Spartan3e FPGA Возник вопрос в чем можно синтезировать вашу корку для Xilinx Spartan3e? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 8 июля, 2008 Опубликовано 8 июля, 2008 · Жалоба Немного не по теме У вас в TODO находится Test in hardware with Altera Cyclone II/III and Xilinx Spartan3e FPGA Возник вопрос в чем можно синтезировать вашу корку для Xilinx Spartan3e? вообще тема посвященная контроллерам памяти находиться здесь http://electronix.ru/forum/index.php?showt...mp;#entry375576 насчет TODO все никак руки не доходят обновить и новые модули выложить. Контроллер протестирован в рабочем приборе на циклоне 2 (133 МГц), скоро придет плата на циклоне 3 (133 МГц). На спартане 3 ем плата лежит дома, но пока никак не могу заняться ей вплотную. Буду использовать ментор прецижен с поддержкой систем верилога. Других путей собрать под ксайлинкс нет. Если еще будут вопросы, чтобы не флудить давайте в личку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться