если не против, добавлю свои 5 капель
Цитата(Maverick @ Jun 4 2008, 07:10)

• Файл/документ, содержащий описание всех констант, переменных, сигналов.
• Описание работы функциональной модели (схема, конечный автомат состояний (диаграмма состояний конечного автомата), и временная диаграмма работы (скриншоты с ModelSim).
• TEST BENCH файл/документ с описанием для возможности моделирования работы.
Если с константами и макросами синтеза еще нужно согласиться, то переменные и сигналы это бред
Временная диаграмма работы нужна только для внешних интерфейсов, для внутренних ИМХО пустая трата времени. Особенно если есть тестбенчи.
Цитата
• Подробное описание всех входных и выходных сигналов с предъявляемыми к ним требованиями (например потенциальная или импульсная команда(ее длительность)).
В подробном описании не вижу смысла, достаточно краткого описания интерфейса внутреннего модуля. Да и то если модуль тривиальный (мультиплексор, сумматор переносом и т.д.) или код самодокументированый то смысла в этом вообще нет.
Цитата
• На начальном уровне соединение всех функциональных блоков производить в Schematic Editor (например, Синхрогенератор <=> Модуль связи УПСОС-ПК) (может заменить функциональную/структурную схему).
• При использовании ядер из CoreGenerator описать процесс создания.
ИМХО полный бред, владеть хдл и при этом рисовать ? И это при наличии функциональной схемы ?
Насчет ядер : завернуть ядро в обертку и описать что делает обертка. Этого достаточно.
ИМХО в свое описании вы упускаете цель разработки. Решите что вы покупаете : готовое ядро или разработку с кодом.
Если покупаете ядро, то все что касается его внутренностей вам не важно. Главное что бы работало и соответствовало ТЗ. (при этом разработчик вообще может пропустить код через обфускатор для сокрытия тайны). Примеры документации можете посмотреть в описании коммерческих/открытых IP
А вот если покупаете разработку с кодом, то здесь действительно нужно в договоре отразить все места, для того, что бы дальнейшую поддержку или модернизацию кода, можно было вести самостоятельно без разработчика.
Но тут все зависит от условий :
1. если вы покупаете готовую разработку то насчет кода поезд уже ушел, можно требовать только
документацию ( и то скорее всего за создание дополнительной документации, нужно будет заплатить)
2. если вы заказываете разработку то тут :
ИМХО нужно в обязательном порядке оговорить соглашение об именах, правилах и принципах проектирования !!!
это позволит заранее оговорить вопросы
Цитата
• Файл/документ, содержащий описание всех констант, переменных, сигналов.
• По возможности большую программу/схему разбивать на подпрограммы/подсхемы.
• В исходном коде программы должны присутствовать комментарии, облегчающие понимание программы
• При написании исходного кода программы максимально использовать механизм настраиваемых параметров Generic (например, для разрядности данных, адресов и т. д.).
и заставить разработчика писать самодокументированый код.
Также требуется тщательная разработка и документирование функциональности и параметров модуля, утверждение плана и методов верификации с описанием тестовых случаев и coner case.
Ну ИМХО вот так в кратце.
Ну и дополнительное пожелание : все вносите на бумагу с подробным описанием. Иначе разрабочик легко отвертится (конечно в будущем ему с вами может быть и не работать, но в текущем бабло получит).
Поэтому не верьте записям в договоре вида "предоставить все документацию, которая использовалась для разработки." Вы думаете что сюда будут входить мини ad-hoc тестбенчи и другая документация об архитектуре подмодулей, а разработчик предоставит функциональную схему высокого уровня абстракции.
Также не рекомендую принимать работу в виде проектов CAD с визуализаторами (HdlDesigner) например. Во первых ваша фирма может не использовать данный софт, будут проблемы переносимости кода между разработчиками которые его не используют ну и по хорошему нужно его лицензировать.
Удачи !!!