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.