Микроэлектроника/Создание библиотеки для синтеза в LeonardoSpectrum: различия между версиями

м
==Использование «собственной» библиотеки в LeonardoSpectrum==
 
После того как скомпилирован исходный текст описания библиотеки элементов, ее можно использовать при синтезе в LeonardoSpectrum. Наиболее простой способ – это выполнить каждый раз Tcl-команду загрузки скомпилированной библиотеки
 
load_library имя_файла>.syn;
[[Категория:Технические руководства]]
 
когда требуется провести синтез в этой библиотеке. Эта команда доступна в командной строке графической оболочки LeonardoSpectrum и может использоваться в Tcl-скрипте. В поле <tt><имя_файла></tt> может содержаться не только имя файла, но и полный путь к нему, если файл библиотеки находится не в рабочем директории.
 
Другой способ – сделать доступной библиотеку в графической оболочке LeonardoSpectrum в окне выбора библиотеки. Для этого необходимо:
 
* переписать скомпилированный файл (в нашем случае это файл bmk.syn) в директорий EXEMPLAR/LIB. Именно в этом директории содержатся служебные файлы с описаниями библиотек синтеза, которые могут использоваться в LeonardoSpectrum.
* в файл devices.ini (в директории EXEMPLAR/LIB) необходимо добавить строку
 
DEVICE_192=BMK_K1574
 
Здесь 192 – это номер библиотеки, для различных версий LeonardoSpectrum он может быть различным; BMK_K1574 – это имя метки, после которой будет дана дополнительная информация о библиотеке. Далее в конец файла devices.ini'' ''добавляется следующая информация:
 
[BMK_K1574]
CONTACT=
DIRECTION=BOTH
FORM=ASIC
LIBRARY_NAME=bmk
FAMILY=bmk
TECHNOLOGY_TYPE=ASIC
MANUFACTURER=BOOK
VENDOR_NAME=Author
 
В результате пользователь увидит созданную библиотеку bmk в разделе ASIC/BOOK (рис. 1.9).
 
<center>[[Image:]]</center>
<center>Рис 1.9. Подключение новой библиотеки bmk</center>
 
==Описание библиотеки на языке VHDL==
 
После того как схема синтезирована в заданной библиотеке элементов, обычно проводится ее моделирование. Для этого в LeonardoSpectrum с помощью команды
 
write -format VHDL -downto PRIMITIVES имя_файла>.vhd;
 
сохраняется структурное описание схемы (netlist) на языке VHDL, которое представляет собой список связей между библиотечными элементами, входящими в схему. Для моделирования схемы в ModelSim (или другой системе моделирования) необходимо иметь VHDL-модели библиотечных элементов. Такие модели можно написать «вручную». Например, VHDL-модель инвертора, описанного в листинге 1.2, представлена в листинге 1.6.
 
'''!'''''При написании VHDL-моделей элементов библиотеки синтеза необходимо '''строгое'''
'''соответствие''' имен портов и реализуемых функций в VHDL-моделях и в описаниях элементов для
программы lGen.''
 
{| class="prettytable"
| Листинг 1.6
|-
| VHDL-модель инвертора для программы моделирования
|-
|<source lang=vhdl>
-- Подключение стандартных пакетов
library IEEE;
use IEEE.STD_LOGIC_1164.all;
 
entity N is
generic(
del : time := 0.160 ns; ); ''-- Задание задержки''
port(
A : in std_ulogic;
Y : out std_ulogic);
end N;
architecture beh of N is
begin
''-- Описание функции элемента''
Y := (not A) after del;
end beh;
</source>
|}
 
Приведенное в листинге 1.6 описание VHDL-модели инвертора является наиболее простым. Параметр del в модели задает задержку сигнала на этом элементе. Такая модель '''''не учитывает''''' зависимость задержки от количества элементов, подключенных к выходу. К тому же, нет различия между задержками для положительного и отрицательного фронтов сигнала. При использовании таких VHDL-моделей для моделирования синтезированной схемы не будет соответствия между задержками логических цепей, полученными в программе синтеза LeonardoSpectrum, и задержками, полученными при моделировании в ModelSim.
 
Существует возможность [26] создания (с помощью LeonardoSpectrum) VHDL-описаний элементов библиотеки синтеза. В листинге 1.7 приведен текст Tcl-скрипта, который создает и сохраняет VHDL-модели элементов библиотеки bmk в файл bmk.vhd. По сути, это перевод информации из одного формата (формата программы ''lGen'') в другой формат – язык VHDL.
 
{| class="prettytable"
| Листинг 1.7
|-
| Tcl-скрипт создания VHDL-моделей элементов библиотеки
|-
|<source lang=tcl>''# выполняется сброс установок''
clean_all
 
''# определяется значение bmk для переменной lib''
set lib bmk
 
''# загрузка библиотеки''
load_library $lib.syn
 
foreach i [list_design -short .$lib] {
present_design .$lib.$i.NETLIST
 
# сохранение VHDL-моделей элементов в файле
write -downto PRIMITIVES -format VHDL - >> $lib.vhd
}
</source>
|}
 
Если приведенный в листинге 1.7 текст сохранен в файле make_vhd.tcl, то его можно выполнить в командной строке LeonardoSpectrum следующим образом:
 
source make_vhd.tcl
 
При этом подразумевается, что данный файл должен находиться в рабочем директории синтеза, иначе нужно указать полный путь к файлу. В VHDL-описании, созданным с помощью скрипта (листинг&nbsp;1.7) не учитываются задержки элементов. При необходимости, в данное VHDL-описание можно добавить параметр generic, как это сделано в листинге 1.6, для учета «какой-либо» задержки. В главе 6 будет рассмотрена возможность моделирования синтезированной схемы с учетом задержек, полученных программой синтеза LeonardoSpectrum. В листинге 1.8 приведен пример VHDL-описания библиотечного элемента И-НЕ (NA2), созданного программой LeonardoSpectrum в результате выполнения скрипта (листинг 1.7).
 
{| class="prettytable"
| Листинг 1.8
|-
| VHDL-описание библиотечного элемента И-НЕ (NA2), созданное программой LeonardoSpectrum
|-
|<source lang=vhdl>
library IEEE;
use IEEE.STD_LOGIC_1164.all;
 
entity NA2 is
port (
Y : OUT std_logic ;
A : IN std_logic ; B : IN std_logic) ;
end NA2 ;
 
architecture NETLIST of NA2 is
signal NOT_B, NOT_A: std_logic ;
begin
NOT_B <= NOT B ; NOT_A <= NOT A ;
Y <= NOT_B OR NOT_A ;
end NETLIST ;
</source>
|}
 
 
[[Категория:Наука]]
[[Категория:Микроэлектроника]]
25

правок