Jump to content
    

Помогите разобраться с библиотеками (VHDL)

Это что-ли наезд на gnu-HDL? Его поведение совершенно аналогично поведению vcom (ModelSim). А уж укладывается ли поведение vcom в IEEE-1076 - Вам виднее. Безусловно, там есть возможность связать любую физическую библиотеку с логическим именем. Но, те, что собраны под определенным именем, в рабочей директории проекта сразу под такими именами доступны, без дополнительных настроек.

 

Вообще, опять же в этой части стандарт запутан неоправданно. Мне, по причине недостаточной емкости моей памяти (по причине слабости умственных способностей если хотите) неудобно чтобы одна и та же библиотека фигурировала под разными именами.

 

Если провести аналогию с C, то требование стандарта звучит так, чтобы не было строгой привязки, то есть в

одной программе пишем:

 

#include <stdio.h>

 

а в другой пишем

#include <xyz.h>

 

а имеем в виду одно и тоже. Да на том же VHDL у Вас в одих модулях написаное:

library ieee;

use ieee.std_logic_1164.all;

 

а в других надо думать:

 

library xyz;

use xyz.std_logic_1164.all;

 

Нет, надо думать. Так что требования стандарта сводятся к тому, что на практике, библиотека хранится в каком-то файле или директории на файловой системе, и, можно подменить одну библиотеку другой, а также то, что сама библиотека не должна быть привязана к своем собственном имени.

 

Вообщем, намерения авторов были как всегда сделать как лучше, а уж что получилось... Но можно понять - плоское пространство имен символов, как в C, это неудобно - то, что нельзя заменить одну библиотеку на другую, и если в разных библиотеках определен один и тот же символ, то при сборке позникает потенциальный конфликт (хотя сборщик должен использовать первое определение, которое он находит для неопределенного символа, и дальше не смотреть).

 

Обычно не нужно, чтобы логические имена библиотек отличались от физических. Но можно. Стандарт почти ничего не пишет и среде исполнения - Вы, конечно, скажете, что это его недостаток, я частично с Вами соглашусь, но нельзя объять необъятное. Стандарт всего-лишь говорит, что логическое имя библиотеки не обязано совпадать с его физическим. В некоторых случаях это может быть критично. Например, при переносе кода в среду исполнения, работающую под MS-DOS, или какой-нибудь другой операционкой, которая накладывает ограничения на имена файлов, неожиданные для первоначального разработчика.

 

p.s. Делаю, специально для Вас, чтобы на эту тему не дискутировать

 

VHDL стандарт это самый лучший, самый справедливый стандарт в мире, те, кому что-то в нем не нравится - профессионально не пригодны, читать и перечитывать до просветления.

 

Это Ваше личное мнение - я такого не писал. Приведите конкретную цитату из стандарта, которая Вам не нравится - будет предмет спора по поводу стандарта. До сих пор спор был только о реализациях и о неправильном понимании стандарта. ;)

 

P.S. Кстати, vcom - безусловно, не пример безупречной реализации VHDL. То есть он конечно поддерживает язык лучше, чем большинство синтезаторов. Но ряд не совсем тривиальных конструкций у меня отказывались в нем работать. IMHO если бы MSVC так поддерживал плюсы - компанию-разработчика бы растерзали.

 

P.P.S Кстати, это интересный вопрос - что произойдет с Вашим примером в моделсиме, если не отмаппировать предварительно логическое имя библиотеки xyz в физическую библиотеку xyz при помощи vmap, или если указать в качестве аргумента vcom -work имя физической библиотеки, начинающееся с цифры, но предварительно отмаппировать xyz в эту библиотеку. Я лично так никогда не пытался делать. Подозреваю, что в первом случае библиотека xyz будет все-таки не найдена, а во втором - будет все нормально.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...