Kodutöö #2 süntees (ASIC)

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

Kasutada tuleb espresso tulemust, sest 'z' sünteesitakse täiendava puhvrina. Vastav SystemVerilog-kood on järgmine (vt. ka SystemVerilog faili):

module fs_espresso (input x1, x2, x3, x4, output y1, y2, y3, y4);
  assign y1 = ((!x1) & x2 & (!x3) & x4) |
              (x2 & (!x3) & (!x4)) |
              ((!x1) & (!x4)) | (x1 & x3);
  assign y2 = !( ((!x1) & x2 & (!x3) & x4) |
                 (x1 & (!x2) & (!x4)) | (x1 & x3) );
  assign y3 = (x2 & (!x3) & (!x4)) | (x2 & x4) |
              ((!x1) & x3 & (!x4)) | (x1 & (!x2) & (!x4));
  assign y4 = (x1 & x3 & x4) | ((!x2) & x3) |
              ((!x1) & x3 & (!x4)) | (x1 & (!x2) & (!x4));
endmodule

Sünteesi puhul on oluline, et SystemVerilog-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/hw2/.synopsys_dc.setup .], teek [cp ~/M/Peeter.Ellervee/IAS0150/hw2/digsys_hw.db .] ja selle kasutamise skript [cp ~/M/Peeter.Ellervee/IAS0150/hw2/digsys_hw.script .]. Need failid leiab ka materjalide veebist (.synopsys_dc.setup on peidetud).

Käsk "cad" abil valida Synopsys 2025 (3.1).

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. fs_espr.sv).
Kui see ei tööta (programm kukub kokku), proovige käsurealt sisestada "read_file -format verilog path/filename.sv".

Klõps yksus ("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 võib olla "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.

liides skeem

(*) 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 18.05.2026.