Matriklinumber: 999999-le vastava funktsioonide süsteemi tõeväärtus-tabel oleks järgmine:
0000 1-00 0001 01-0 0010 11-1 0011 0-01 0100 1110 0101 1010 0110 -111 0111 01-0 1000 0011 1001 -10- 1010 -0-1 1011 1001 1100 11-0 1101 0-10 1110 -000 1111 1011
Seda tabelit kirjeldav VHDL-kood oleks järgmine (vt. ka VHDL faili):
library IEEE; use IEEE.std_logic_1164.all;
entity f_system is
port ( x1, x2, x3, x4: in std_logic;
y1, y2, y3, y4: out std_logic );
end entity f_system;
library IEEE; use IEEE.std_logic_1164.all;
architecture tabel of f_system is
begin
process (x1, x2, x3, x4)
variable in_word, out_word: std_logic_vector (3 downto 0);
begin
in_word := x1 & x2 & x3 & x4;
case in_word is
when "0000" => out_word := "1-00";
when "0001" => out_word := "01-0";
when "0010" => out_word := "11-1";
when "0011" => out_word := "0-01";
when "0100" => out_word := "1110";
when "0101" => out_word := "1010";
when "0110" => out_word := "-111";
when "0111" => out_word := "01-0";
when "1000" => out_word := "0011";
when "1001" => out_word := "-10-";
when "1010" => out_word := "-0-1";
when "1011" => out_word := "1001";
when "1100" => out_word := "11-0";
when "1101" => out_word := "0-10";
when "1110" => out_word := "-000";
when "1111" => out_word := "1011";
when others => out_word := "----";
end case;
y1 <= out_word(3); y2 <= out_word(2);
y3 <= out_word(1); y4 <= out_word(0);
end process;
end architecture tabel;
Sünteesi puhul on oluline, et VHDL-fail sisaldaks ainult funktsioonide süsteemi kirjeldust (st. ilma testpingita).
Kõige lihtsam Synopsys'e DC kasutamise juhend oleks alljärgnev
(keerukam juhend on
siin, kuid ei sisalda
kodutöö jaoks vajaliku teegi digsys_hw.db kasutamist):
Enne esmaskasutus luua abikataloog WORK.syn [>mkdir WORK.syn] ja kopeerida
seadete fail [>cp ~/M/Peeter.Ellervee/IAS0150/hw1/.synopsys_dc.setup .],
teek [cp ~/M/Peeter.Ellervee/IAS0150/hw1/digsys_hw.db .] ja selle kasutamise
skript [cp ~/M/Peeter.Ellervee/IAS0150/hw1/digsys_hw.script .]. Need failid
leiab ka
materjalide
veebist (.synopsys_dc.setup on peidetud).
Käsk "cad" abil valida Synopsys 2020 (3).
Käsk "design_vision" paneb süntesaatori tööle.
"File->Execute Script..." abil laadige skript 'digsys_hw.script'.
"File->Read" abil laadige sünteesitav fail (nt. fs1_tabel.vhd).
Kui see ei tööta (programm kukub kokku), proovige käsurealt
sisestada "read_file -format vhdl path/filename.vhd".
Klõps
("Logical Hierarchy" vasakus
servas) valib kompileeritud disainiüksuse (kui seda alamakent ei ole
või puudub disain, saab uue avada menüüst "Hierarchy->New
Logical Hierarchy View"). Paremklõps ja sealt "Schematic View" avab
liidesevaate (pilt all vasakul, kust topeltklõpsuga saab skeemi ennast
vaadata.
Käsk "set_max_area 0" viib võimalikult väikeses keemini
(ei pea kasutama).
"Design->Compile Design..." aktiveerib sünteesi dialoogi. "OK"-le
klõpsates süntees käivitub.
Sünteesi tulemusena saadud skeemi (parempoolne pilt all, vajalik
on "Hiearchy" uus avamine) vaadata käsu "report_qor" abil
(sisestatakse alla käsureale).
Antud skeemi suuruseks on 30 ekvivalentset loogikalüli ja suurim
viide 7.48 ns [*]. Tulemuse saab salvestada "File->Save as..."
abil.
|
|
(*) Süuntesaator ei asenda invertoreid 2-NAND-dega ja selle tõttu on skeem suurem. Samuti võib erineda viide, sest srvestatakse ka loogikaelementide koormatust.
Proovige ka omaenda kodutöö ülesande funktsioonide süsteemi sünteesida.
Viimati muudetud 2.04.2023.