Я разрабатываю процессор в VHDL. Я использую ModelSim для моделирования и тестирования. В скрипте симуляции я загружаю программу из двоичного файла в память команд. Теперь я хочу автоматически проверить, помещается ли программа в память, и прервать симуляцию, если это не так. Поскольку память в основном представляет собой массив std_logic_vectors, все, что мне нужно сделать, - это прочитать соответствующий атрибут сигнала для использования в сравнении. Моя проблема: Как я могу получить доступ к атрибуту сигнала VHDL в TCL внутри ModelSim?
Самое близкое, что я получил на данный момент, это использование команды description:
describe sim/:tb:uut:imem:mem_array
который печатает что-то вроде
# Array(0 to 255) [length 256] of
# Array(31 downto 0) [length 32] of
# VHDL standard subtype STD_LOGIC
Теперь, конечно, я могу проанализировать длину оттуда с помощью строковых операций. Но это не было бы очень общим решением. В идеале я хотел бы иметь что-то вроде этого:
set mem_size [get_attribute sim/:tb:uut:imem:mem_array'length]
Я искал stackoverflow, гуглил вверх и вниз и искал команды в справочном руководстве по командам, но не смог найти решение. Я уверен, что должно быть довольно простое решение, и мне просто не хватает правильной формулировки, чтобы успешно его искать. Для меня это не выглядит слишком конкретным, и я уверен, что это может пригодиться во многих случаях при автоматизации тестирования проекта. Я использую версию 10.6.
Я был бы очень признателен, если бы опытный пользователь ModelSim помог мне.