Wykład 10. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń. 20 grudzień 2017

Podobne dokumenty
Synteza logiczna APSC

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Układy reprogramowalne i SoC Implementacja w układach FPGA

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe. Platforma sprzętowa. Rajda & Kasperek 2014 Katedra Elektroniki AGH 1

napięcie-częstotliwość

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Cyfrowe układy scalone

Liczniki z zastosowaniem

Cyfrowe układy scalone

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

Układy FPGA. Programowalne Układy Cyfrowe dr inż. Paweł Russek

Systemy na Chipie. Robert Czerwiński

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Układy FPGA w przykładach, część 2

Elementy cyfrowe i układy logiczne

FPGA, CPLD, SPLD. Synteza systemów reprogramowalnych 1/27. dr inż. Mariusz Kapruziak pok. 107, tel

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Projektowanie układów FPGA. Żródło*6+.

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Liczniki z zastosowaniem

Laboratorium Podstaw Techniki Cyfrowej

Kierunek Elektronika, III rok Języki Opisu Sprzętu. Platforma sprzętowa. Rajda & Kasperek 2016 Katedra Elektroniki AGH 1

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

Programowalne układy logiczne Wydziałowy Zakład Nanometrologii SEMESTR LETNI

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Projektowanie Systemów Cyfrowych. Październik 2017 Symulacja na różnych poziomach Biblioteki komórek standardowych i modele symulacyjne

Programowalne Układy Logiczne. Wykład III FPGA dr inż. Paweł Russek

Metody optymalizacji soft-procesorów NIOS

Projektowanie Systemów Cyfrowych. Październik 2014 Symulacja na różnych poziomach Biblioteki komórek standardowych i modele symulacyjne

Wykład 4. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Układy reprogramowalne i SoC Język VHDL (część 4)

Cyfrowe układy scalone

Sposoby projektowania systemów w cyfrowych

Modelowanie złożonych układów cyfrowych (1)

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Język opisu sprzętu VHDL

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3

Ogólny schemat inwertera MOS

Wygląd okna aplikacji Project Navigator.

Katedra Mikroelektroniki i Technik Informatycznych

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci RAM w FPGA.

Laboratorium przedmiotu Technika Cyfrowa

Opis przedmiotu zamówienia CZĘŚĆ 1

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Systemy Czasu Rzeczywistego FPGA

Rok akademicki: 2013/2014 Kod: JIS s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

OPTYMALIZACJA MODELI SYMULACYJNYCH ZAMODELOWANYCH W JĘZYKU VERILOG HDL Z WYKORZYSTANIEM INTERFEJSU PLI

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Opisy efektów kształcenia dla modułu

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Szkolenia specjalistyczne

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Realizacja bezpiecznego programowalnego sterownika logicznego z wykorzystaniem języków HDL

Technologia CMOS APSC

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Wykład 3. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Programowalne układy logiczne kod kursu: ETD Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Układy programowalne. Wykład z ptc część 5

Wykład 4. Języki Opisu Sprzętu

Temat: Pamięci. Programowalne struktury logiczne.

(przykład uogólniony)

Cyfrowe układy scalone c.d. funkcje

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Programowalne Układy Logiczne Konfiguracja/Rekonfiguracja

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Opis przedmiotu zamówienia

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Projekt prostego procesora

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Projektowanie Systemów Wbudowanych

Języki opisu sprzętu VHDL Mariusz Rawski

Automatyzacja procesu implementacji układów cyfrowych w technologii prądowych układów FPGA

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

Wykład 2. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Układy programowalne. Wykład z ptc część 5

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

Specyfika projektowania Mariusz Rawski

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

Podstawy elektroniki cz. 2 Wykład 2

Elektronika i techniki mikroprocesorowe

Cyfrowe układy sekwencyjne. 5 grudnia 2013 Wojciech Kucewicz 2

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Opisy efektów kształcenia dla modułu

Transkrypt:

Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Konstrukcje syntezowalne Przegląd syntezatorów Generacja i anotacja przypisów czasowych Warstwa fizyczna projektu układu ASIC Wykład 10 2017 20 grudzień 2017 Architektura i konfiguracja układu Spartan-3AN (XC3S700AN) AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu http://www.fis.agh.edu.pl/~skoczen/hdl

Synteza logiczna Konstrukcje Veriloga rozumiane przez narzędzia syntezy logicznej (1/4): Konstrukcja Słowo kluczowe Uwagi Porty input, inout, output dozwolone Parametry parameter dozwolone Definicje modułów Konkretyzacje Typy danych (sygnały, zmienne) Moce sterowania module endmodule Urealnienia modułów i komórek pierwotnych wire wand wor reg integer tri triand trior supply. real, time, event tri0, tri1 trireg, small, medium, large dozwolone dozwolone skalary i wektory są dozwolone niedozwolone niedozwolone Encounter RTL Compiler, Cadence

Synteza logiczna Konstrukcje Veriloga rozumiane przez narzędzia syntezy logicznej (2/4): Konstrukcja Słowo kluczowe Uwagi Wbudowane komórki pierwotne Definiowane komórki pierwotne Funkcje i zadania Procedury and or nand... not buf tran... tranif... pmos nmos... pullup pulldown primitive table function task always if then else case casex casez initial dozwolone niedozwolone niedozwolone konstrukcje czasowe (np. # ) są ignorowane zadania systemowe są ignorowane niektóre funkcje systemowe są dozwolone z dokładnie jednym @ dozwolone niedozwolony Encounter RTL Compiler, Cadence

Synteza logiczna Konstrukcje Veriloga rozumiane przez narzędzia syntezy logicznej, ciąg dalszy (3/4): Konstrukcja Słowo kluczowe Uwagi Operatory i wyrażenia + - / % * ~ & ^ -^! && ==!= < > {} {N{}} dozwolone ===!== niedozwolone Bloki Przypisania ciągłe begin end blok z nazwą wraz z disable fork join assign dozwolone niedozwolony Opóźnienia czasowe (np. # ) są ignorowane Encounter RTL Compiler, Cadence

Synteza logiczna Konstrukcje Veriloga rozumiane przez narzędzia syntezy logicznej, ciąg dalszy (4/4): Konstrukcja Słowo kluczowe Uwagi Przypisania proceduralne = <= Dozwolone assign deassign force release Niedozwolone Pętle Sterowanie zdarzeń for while forever repeat event or wait delay Wewnątrz przypisań Wyzwalanie zdarzeń -> stałe ograniczenia, tylko operacje + i - na indeksach warunek zakończenia musi być znany podczas elaboracji stałe ograniczenia; warunek zakończenia musi być znany podczas elaboracji musi zawierać disable ze stałą liczbą powtórzeń dozwolone ignorowane niedozwolone Encounter RTL Compiler, Cadence

Przegląd syntezatorów Synplify Przemysłowy standard do tworzenia wysokiej wydajności, ekonomicznych projektów w układach FPGA. Unikalny algorytm o nazwie Behavior Extracting Synthesis Technology (B.E.S.T. ) wykonuje optymalizację wysokiego poziomu przed przeprowadzeniem syntezy kodu RTL do konkretnego układu FPGA. Takie podejście pozwala na szczególnie wysoką optymalizację dla układów FPGA, dużą szybkość pracy i zdolność do obsługi bardzo dużych projektów. RTL Complier Genus Szybkie i pojemne narzędzie syntezy dla wymagających projektów układów scalonych ASIC. Opatentowane jądro technologiczne znane pod nazwą global focused synthesis generuje doskonałą logikę i strukturę połączeń dla nanometrowej skali (65nm i 45nm) projektów fizycznych i routing-u. Jest elementem większego pakietu o nazwie Encounter Digital Implementation, który jest pakietem dostarczającym zintegrowanego rozwiązania dla automatycznego projektowania od RTL do GDSII. Synteza RTL następnej generacji i narzędzie syntezy fizycznej projektów układów scalonych ASIC. Zunifikowany z narzędziem Innovus Implementation System poprzez program GigaPlace służący do obliczania opóźnień, ekstrakcji pasożytniczej i globalnego routowania opartego na czasowej funkcji celu. Czas i długość połączeń między narzędziami są skorelowane z dokładnością do 5%. Połączony interfejsem także z narzędziem Tempus Timing Signoff.

Przegląd syntezatorów Precision Oferuje wysoką jakość wyników, unikatowe w branży EDA funkcje oraz integrację w ramach pakietu narzędzi dla układów FPGA. Pakiet ten jest obecnie największym zestawem narzędzi oferowanym przez producenta EDA niezależnego od dostawców układów FPGA.

Przegląd syntezatorów XST (Xilinx Synthesis Technology) aplikacja do syntezy kodu HDL RTL tworząca pliki NGC zawierające netlistę (EDIF) i ograniczenia projektu (NCF). Jest dostępna w środowisku projektowym ISE Xilinx. XST User Guide for Virtex-4, Virtex-5, Spartan-3, and Newer CPLD Devices (UG627) https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/xst.pdf Syntezator XST przyjmuje ograniczenia projektowe na wiele sposobów (w kolejności priorytetu): Plik PCF ( Physical Constraints File) Plik UCF (User Constraint File) plik ASCII tworzony przez użytkownika Plik NCF ( Netlist Constraints File ) plik ASCII zwykle generowany przez syntezator Atrybuty w kodzie HDL RTL Plik XCF ( Xilinx Constraint File) Constraints Guide (UG625 v14.5 2013) https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/cgd.pdf

Przegląd syntezatorów Vivado synthesis Przekształca kod sporządzony w HDL RTL do netlisty bramek przyjmując za podstawowe kryterium szybkość pracy projektowanego układu (timing-driven). Optymalizowane jest zużycie pamięci i szybkość pracy syntezatora. Wspiera syntezowalny podzbiór konstrukcji języków: SystemVerilog, Verilog, VHDL, VHDL 2008 a także umożliwia łączenie tych języków (mixed language). O graniczenia projektowe za pomocą pliku XDC opartego na SDC. Vivado Design Suite User Guide ; Synthesis (UG901 v2017.32017) https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_3/ug901-vivado-synthesis.pdf

Generacja przypisów czasowych HDL RTL Biblioteka czasowa dla komórek stanadrdowych Liberty Ograniczenia czasowe projektu SDC Syntezator Kalkulator opóźnień HDL gate level SDF Biblioteka komórek stanadrdowych (Verilog z blokami specify) Legenda: Opis projketu przygotowany przez projektanta Symulator Opis projektu generowany automatycznie auto-layout Opis komórek stanadardowych dosatrczany przez technolgów

Format zapisu parametrów czasowych SDF Standard Delay Format IEEE-1497 opisuje informację czasową wraz z ograniczeniami projektowymi. (DELAYFILE (SDFVERSION "OVI 3.0") (DESIGN "convbcd_ex3") (DATE "Thu Jan 06 22:58:05 CET 2011") (VENDOR "Cadence, Inc.") (PROGRAM "Encounter(R) RTL Compiler") (VERSION "v07.10-s021_1") (DIVIDER.) (VOLTAGE ::3.3) (PROCESS "::1.0") (TEMPERATURE ::25.0) (TIMESCALE 1ps) (CELL (CELLTYPE "OAI222")... (CELL (CELLTYPE "IMUX21")... Służy do wymiany informacji czasowej pomiędzy narzędziami projektowymi w procesie tworzenia układu scalonego. Jest to plik tekstowy, umożliwiający jego czytanie w celach debagowania.

Format zapisu parametrów czasowych (CELL (CELLTYPE "NAND22") (INSTANCE g268) (DELAY (ABSOLUTE (PORT A (::0.0)) (PORT B (::0.1)) (IOPATH (posedge A) Q () (::76)) (IOPATH (negedge A) Q (::159) ()) (IOPATH (posedge B) Q () (::70)) (IOPATH (negedge B) Q (::188) ()) ) ) ) Zastąp istniejące opóźnienia tymi umieszczonymi poniżej. Opóźnienia połączeń modelowane jako opóźnienia wejściowych portów. Opóźnienia pomiędzy wejściem, a wyjściem.

Format zapisu parametrów czasowych (CELL (CELLTYPE "DFC3") (INSTANCE state_reg\[0\]) (DELAY (ABSOLUTE (PORT RN (::0.0)) (PORT C (::0.0)) (PORT D (::0.0)) (IOPATH (negedge RN) Q () (::297)) (IOPATH (posedge C) Q (::930) (::1067)) (IOPATH (negedge RN) QN () (::393)) (IOPATH (posedge C) QN (::1109) (::954)) ) ) (TIMINGCHECK (REMOVAL (posedge RN) (posedge C) (::1543)) (RECOVERY (posedge RN) (posedge C) (::1)) (SETUP (negedge D) (posedge C) (::1)) (SETUP (posedge D) (posedge C) (::16)) (HOLD (negedge D) (posedge C) (::179)) (HOLD (posedge D) (posedge C) (::226)) ) )

Przykład anotacji czasowej przerzutnika // Description : DFF with rising edge clock,low clear,q and qb outputs module DFC3 (input C, D, output Q, QN, input RN); `ifdef functional ncelab: *W,SDFNL1 (s/ams_v4.00/verilog/c35b4/c35_corelib.v,1429 6): Attempt to annotate a negative value to a 1 limit timing check in U_FD_P_RB_NO (buf_q,d,c,rn,1'b1); instance (test.x.\state_reg[1]), setting to 0 <./automat.sdf, line 87>. `else reg notifier; (CELL U_FD_P_RB_NO (buf_q,d,c,rn,notifier); (CELLTYPE "DFC3") `endif (INSTANCE state_reg\[1\]) buf (Q,buf_Q); (DELAY (ABSOLUTE not (QN,buf_Q); (PORT RN (::0.0)) `ifdef functional (PORT C (::0.0)) `else (PORT D (::0.0)) specify (IOPATH RN Q () (::214)) (C => Q) = (1,1); (IOPATH C Q (::833) (::981)) (C => QN) = (1,1); (IOPATH RN QN () (::438)) (IOPATH C QN (::1149) (::988)) (RN => Q) = (1,1); ) (RN => QN) = (1,1); ) $setup(posedge D, posedge C, 0, notifier); (TIMINGCHECK $setup(negedge D, posedge C, 0, notifier); (REMOVAL (posedge RN) (posedge C) (::1543)) $recovery(posedge RN, posedge C, 0, notifier); (RECOVERY (posedge RN) (posedge C) (::1)) $hold(posedge C, negedge D, 0, notifier); (SETUP (negedge D) (posedge C) (::1)) $hold(posedge C, posedge D, 0, notifier); (SETUP (posedge D) (posedge C) (::-39)) $hold(posedge C, posedge RN, 0, notifier); (HOLD (negedge D) (posedge C) (::179)) $width(posedge C, 1, 0, notifier); (HOLD (posedge D) (posedge C) (::226)) $width(negedge C, 1, 0, notifier); ) $width(negedge RN, 1, 0, notifier); ) endspecify `endif endmodule ncelab: *W,SDFNET: Unable to annotate to non-existent timing check (REMOVAL (posedge RN) (posedge C) (1543)) of instance test.x.\state_reg[1] of module DFC3 <./automat.sdf, line 84>.

Przebieg projektu ASIC RTL GDS II Biblioteka czasowa HDL RTL Constraints Syntezator HDL GL Constraint Place & Route Signoff GDS II Do fabryki Biblioteka fizyczna

Biblioteki fizyczne LEF Pliki Library Exchange Format (LEF) zawierają informacje dotyczące: warstw (layer), połączeń metalx-metaly (via) i metal-polikrzem lub -krzem (con), pozycjonowania (placement site), definicje komórek standardowych (macro cell definitions). Pliki LEF są plikami ASCII. Zwykle informacje te są podzielone na dwa pliki: LEF-technologiczny informacje o warstwach i reguły projektowe (design rules) układania i łączenia (routing), LEF-biblioteka komórek standardowych. Dla technologii AMS CMOS 0,35μm plik technologiczny LEF definiuje: Dwie warstwy polikrzemu POLY1, POLY2, Cztery warstwy metalu MET1, MET2, MET3, MET4, Trzy warstwy połączeń metali VIA1, VIA2, VIA3.

>10µm >0,8µm >0,45µm >0,66µm >0,5µm Biblioteki fizyczne LEF Opis warstwy pierwszego metalu w technologii AMS CMOS 0,35μm : LAYER MET1 TYPE ROUTING ; WIDTH 0.5 ; SPACING 0.45 ; SPACING 0.8 RANGE 10 10000 ; PITCH 1.3 ; OFFSET 0 ; DIRECTION HORIZONTAL ; CAPACITANCE CPERSQDIST 0.000119 ; RESISTANCE RPERSQ 0.150000 ; EDGECAPACITANCE 0.000154 ; THICKNESS 0.665000 ; ANTENNASIDEAREARATIO 400 ; END MET1

Biblioteki fizyczne LEF MACRO NAND20 CLASS CORE ; FOREIGN NAND20 0.000 0.000 ; ORIGIN 0.000 0.000 ; SIZE 4.200 BY 13.000 ; SYMMETRY X Y ; SITE standard ; PIN A DIRECTION INPUT ; ANTENNAGATEAREA 0.630000 LAYER MET1 ; PORT LAYER MET1 ; RECT 1.650 7.350 2.550 8.250 ; END END A PIN Q DIRECTION OUTPUT ; PORT LAYER MET1 ; RECT 1.950 9.000 2.450 10.650 ; RECT 1.750 9.950 2.450 10.650 ; RECT 3.100 2.300 3.600 9.500 ; RECT 1.950 9.000 3.600 9.500 ; RECT 3.100 2.300 3.800 3.000 ; RECT 3.050 4.750 3.950 5.650 ; END END Q PIN gnd! DIRECTION INOUT ; USE GROUND ; SHAPE ABUTMENT ; PORT LAYER MET1 ; RECT 0.400 0.000 1.100 3.000 ; RECT 0.000 0.000 4.200 1.800 ; END END gnd! Opis komórki NAND20 w technologii AMS CMOS 0,35μm: PIN B DIRECTION INPUT ; ANTENNAGATEAREA 0.630000 LAYER MET1 ; PORT LAYER MET1 ; RECT 0.250 4.750 1.150 5.650 ; END END B PIN vdd! DIRECTION INOUT ; USE POWER ; SHAPE ABUTMENT ; PORT LAYER MET1 ; RECT 0.400 9.950 1.100 13.000 ; RECT 3.100 9.950 3.800 13.000 ; RECT 0.000 11.200 4.200 13.000 ; END END vdd! OBS LAYER MET1 ; RECT 0.225 6.300 1.000 9.300 ; RECT 0.225 8.900 1.300 9.300 ; RECT 1.800 2.300 2.400 6.700 ; RECT 1.750 2.300 2.450 4.100 ; RECT 0.225 3.650 2.450 4.100 ; RECT 0.225 6.300 2.450 6.700 ; END END NAND20

Technologia CMOS NMOS PMOS

Technologia CMOS V DD V DD M2 M4 V in V out V out2 M1 M3

Format GDS II GDSII (Graphic Database System) binarny format (stream format) służący do wymiany danych o topografii układu scalonego. Pliki zawierają kształty płaskich figur geometrycznych, tekstowe etykiety i różne inne informacje o topografii układu scalonego w hierarchicznej formie. Pliki używane są do tworzenia masek technologicznych, przenoszenia projektu topografii układu pomiędzy narzędziami, rekonstrukcji całości lub części projektu w celu współdzielenia go z inną topografią.

Maski procesu CMOS n-well Maska NTUB FOX P-substrate N-well Maska TOX FOX P-substrate N-well

Maski procesu CMOS n-well Maska POLY1 FOX P-substrate N-well Maska NPLUS (pozytyw) FOX P-substrate N-well

Maski procesu CMOS n-well Maska NPLUS (negatyw) FOX P-substrate N-well P-substrate N-well Ostatnia maska definiuje przebieg połączeń metalowych. Potem całość układu jest zabezpieczana szkliwem (pasywacja) i wykonywane są otwory do bondowania padów.

AMS 0,35μm CMOS proces C35 P-substrate; n-well; 21 masek; 4 metale; 2 poly; 3,3V 1000nm 900nm 1000nm 1000nm 1000nm 645nm 290nm - field 7,6nm - gate

Spartan-3AN FPGA Family Data Sheet; DS557 June 12, 2014 (123 str.) Spartan-3 Generation FPGA User Guide; (512 str.) Extended Spartan-3A, Spartan-3E, and Spartan-3 FPGA Families; UG331 (v1.8) June 13, 2011 Spartan-3 Generation Configuration User Guide, Extended Spartan-3A; Spartan-3E, and Spartan-3 FPGA Families; UG332 (v1.7) January 27, 2015 (354 str.) Spartan-3AN FPGA In-System Flash User Guide; For Spartan -3AN FPGA applications that read or write data to or from the In-System Flash memory after configuration; (98 str.) UG333 (v2.4) June 11, 2015 26

Extended Spartan-3A Rodzina/Platforma Grupa układów Spartan-3x Spartan-3x jest grupą układów FPGA przeznaczoną do zastosowań w szerokim zakresie elektroniki użytkowej: dostęp szerokopasmowy, sieci domowe, wyświetlacze-projektory, urządzenia telewizji cyfrowej. Obejmuje ona 25 modeli układów w pięciu rodzinach stanowiących linię rozwojową: Opis Liczba modeli w grupie Spartan-3 pierwszy przemysłowy FPGA w technologii 90nm 8 Spartan-3E z dodanymi cechami zwiększającymi wydajność i redukującymi koszt konfiguracji Spartan-3A kolejne polepszenie konfiguracji i redukcja zużycia mocy 5 Spartan-3AN Spartan-3A DSP wyposażony w nie-ulotną pamięć i dużą ilość pamięci typu flash dostępnej dla użytkownika posiada zasoby wymagane dla cyfrowego przetwarzania sygnałów (DSP48A) 5 5 2 Najmniejszy z tych układów zawiera 50 000 bramek systemowych, a największy 5 milionów. 27

Architektura układów Spartan-3x Architektura opiera się na pięciu podstawowych programowalnych elementach funkcjonalnych: CLBs IOBs BRAM MBs DCMBs Configurable Logic Blocks Input/Output Blocks Block RAM Multiplier Blocks Digital Clock Manager Blocks Złożony z czterech SLICE, z których każdy zawiera dwie elastyczne pamięci podręczne LUT, które implementują logikę, dwa multipleksery i dwa elementy pamięciowe używane jako przerzutnik lub zatrzask oraz logikę arytmetyczną z przeniesieniem. Sterują przepływem danych między pinami I/O i wewnętrzną logiką układu. Są dwukierunkowe i trójstanowe. Wspierają wiele standardów sygnałów, a wśród nich kilka wysokowydajnych standardów różnicowych. Dostępne są także rejestry typu DDR. Magazyn danych w postaci bloków 18-kbityowych o podwójnych portach. Akceptują 18-bitowe liczby binarne jako dwa argumenty i obliczają ich iloczyn. Układy rodziny Spartan-3A DSP posiadają także specjalne bloki mnożąco-akumulujące DSP. Całkowicie cyfrowy, samokalibrujący się układ dystrybucji, opóźniania, mnożenia, dzielenia i przesuwania fazy sygnałów zegarowych. Objaśnienia: LUT Look-Up Table DDR Double Data-Rate DSP Digital Signal Processing 28

Architektura układów Spartan-3x 29

W centrum znajduje się regularna tablica CLBs-ów. Dookoła umieszczony jest podwójny pierścień naprzemiennie ułożonych IOBs-ów. Pamięć BRAM zorganizowana jest w dwie kolumny, z których każda składa się z kilku bloków o pojemności 18-kbitów (wyjątek stanowi XC3S50AN, który ma tylko jedna kolumnę). Każdy blok BRAMu związany jest z multiplikatorem. Układy zarządzania zegarem DCM-y umieszczone są w środku, dwa u góry i dwa na dole. (w układzie XC3S50AN tylko u góry, a w XC3S700AN i XC3S1400AN dodano jeszcze po dwa w środku obu kolumn RAM-multiplikatory). Bogata sieć ścieżek łączy pięć podstawowych bloków funkcjonalnych przesyłając między nimi sygnały. Każdy element funkcjonalny związany jest z matrycą przełączników zabezpieczających przed wielokrotnymi połączeniami. 30

Architektura CLB układów Spartan-3x SLICEM umożliwiają tworzenie: funkcji logicznych (LUT) rejestrów przesuwnych (SR) pamięci rozporoszonych (DRAM) SLICEL umożliwiają tworzenie: funkcji logicznych (LUT) 31

SLICE Składa się z dwóch komórek logicznych LC (logic cell). W szczególności SLICE składa się z: Dwóch przerzutników D (konfigurowalne także jako zatrzaski) kolor niebieski, Dwóch 4-o wejściowych pamięci podręcznych LUT (funkcje F i G) kolor zielony, Logika arytmetyczna i przeniesienia kolor brązowy, Dwa szerokie multipleksery F5MUX i FiMUX (i=6, 7, 8) kolor czerwony. 32

Architektura SLICE ów Spartan a-3x Look-Up Table (LUT) jest generatorem funkcji logicznych zbudownym w oparciu o pamięć RAM. Ponieważ ma cztery wejścia to nadaje się do funkcji 4-ech zmiennych. Dalszą rozbudowę umożliwiają multipleksery Fi(5)MUX. W przypadku SLICE ów M, LUT-y można skonfigurować jako 16-bitowe bloki rozproszonej pamięci (Distributed RAM) lub rejestrów przesuwnych (SRL). 33

LUT może być połączony do: Multipleksera F5MUX, Logiki arytmetyki i przeniesienia, Bezpośrednio do wyjścia CLB, Do elementu sekwencyjnego FFX(Y). i adres 6 X0Y0, X1Y0 7 X0Y1 8 X1Y1 Każdy SLICE ma 2 multipleksery: F5MUX w dolnej części, FiMUX w górnej części. F5MUX multipleksuje wyjścia dwóch LUT-ów. FiMUX multipleksuje bezpośrednio wejścia CLB. Wejścia te mogą być połączone z wyjściami Fi(5)MUX tego samego lub innego SLICE. 34

Sekwencyjny element pamięciowy, programowalny do pracy jako przerzutnik typu D lub wrażliwy na poziom przeźroczysty zatrzask, dostarcza sposobu synchronizacji danych do zegara. Element ten dodatkowo zaopatrzony jest w multiplekser na wejściu D, który umożliwia ominięcie elementu sekwencyjnego i wykorzystanie wyjścia kombinacyjnego. Synchroniczne kasowanie i ustawianie 35

Rodzina układów Spartan-3AN System Gates Equivalent Logic Cells CLBs Slices Distributed RAM Bits Block RAM Bits XC3S50AN 50k 1584 176 704 11k 54k XC3S200AN 200k 4032 448 1792 28k 288k XC3S400AN 400k 8064 896 3584 56k 360k XC3S700AN 700k 13248 1472 5888 92k 360k XC3S1400AN 1400k 25344 2816 11264 176k 576k Multiplkatory DCM Maksymalna liczba linii I/O Maksymalna liczba par I/O Rozmiar strumienia bitów In-System Flash Bits XC3S50AN 3 2 108 50 427k 1M XC3S200AN 16 4 195 90 1 168k 4M XC3S400AN 20 4 311 142 1 842k 4M XC3S700AN 20 8 372 165 2 669k 8M XC3S1400AN 32 8 502 227 4 644k 16M DCM Digital Clock Manager układ zarządzania sygnałem zegara 36

BRAM Multiplikator BRAM Multiplikator IO Bank 3 IO Bank 1 BRAM Multiplikator BRAM Multiplikator IO Bank 0 DCM DCM DCM DCM Matryca CLB DCM DCM DCM DCM IO Bank 2 Ogólna jednorodna architektura FPGA Architektura Spartan-3AN model XC3S700AN 37

Liczba CLB: n CLB = 1 472 szt. Jeden CLB składa się z czterech SLICE-ów: Liczba SLICE: n SLICE = n CLB 4 = 5 888 szt. XC3S700AN Jeden SLICE składa się z dwóch komórek logicznych LC: Liczba LC: n LC = n SLICE 2 = 11 776 szt. Równoważna komórka logiczna ELC jest obliczana ze współczynnikiem 1,125: Liczba ELC: n ELC = 1,125 n LC = 13 248 szt. Liczba bramek systemowych wynika ze skomplikowanych przeliczeń poszczególnych elementów układu na dwuwejściowe bramki NAND i ma charakter raczej marketingowy. Maksymalny rozmiar pamięci rozproszonej DRAM konfigurowalny na LUT-ch SLICE-ów M: s DRAM = 2 2 n CLB 16 bitów = 94 208 bitów = 92 kbity gdyż cztery LUT-y na CLB mają własność konfigurowalności do DRAM. Liczba bloków BRAM: n BRAM = 20 szt. czyli rozmiar pamięci blokowej: s BRAM = n BRAM 18kbitów = 360 kbitów gdyż jeden blok ma rozmiar 18kbitów. 38

Konfiguracja układów Spartan-3AN Programowanie odbywa się przez załadowanie danych konfiguracyjnych do reprogramowalnych zatrzasków CCL (CMOS Configuration Latches), które zbiorowo sterują wszystkimi funkcjami elementów i zasobów je łączących. Komórki CCL są reprogramowalne jak pamięć SRAM ale zaprojektowane są dla zachowania integralności danych a nie wydajności. Dane w CCL-sach są zapisywane tylko w czasie konfiguracji i pozostają niezmienione aż do kolejnej rekonfiguracji. Dane konfiguracyjne przechowywane są w: układzie (on-chip) w pamięci nieulotnej Flash lub zewnętrznie w układzie PROM lub w jakimś innym rodzaju nieulotnego (NVM) nośnika danych (na płycie lub poza nią). W wewnętrznej pamięci Flash możliwe jest przechowywanie wielu plików konfiguracyjnych. Jest to własność MultiBoot. 39

Konfiguracja układów Spartan-3AN Po włączeniu zasilania dane konfiguracyjne są przepisywane do CCL-i wewnątrz FPGA używając jednego z siedmiu trybów: z wewnętrznej pamięci SPI Flash (M2M1M0 = 011), łącze szeregowe do Xilinx Platform Flash PROM (M2M1M0 = 000), Serial Peripheral Interface (SPI) z zewnętrznej pamięci SPI Flash (M2M1M0 = 001), Byte Peripheral Interface (BPI) z zewnętrznej pamięci równoległej NOR Flash (M2M1M0 = 010), Slave Serial, ładowane z procesora (M2M1M0 = 111), Slave Parallel, ładowane z procesora (M2M1M0 = 110), Boundary-Scan (JTAG), ładowane z procesora lub testera systemowego (M2M1M0 = 101). 3,3V Wskazują chwilę zakończenia konfiguracji 40

Strumień bitowy konfiguracji Plik strumienia bitowego jest binarnym plikiem zawierającym dane konfiguracyjne do przepisania do konfiguracyjnej pamięci SRAM. Konfiguracja może być: Statyczna (static reconfiguration) załadowanie konfiguracji gdy aplikacja nie działa i rebootowanie urządzenia, Dynamiczna (dynamic reconfiguration) konfiguracja jest częścią aplikacji tzn. sprzęt może być adaptowany do potrzeb w czasie wykonania. Chwila przeprowadzenia częściowej rekonfiguracji jest ukryta, gdyż pozostała część układu pracuje. Strumień bitowy może być pełny lub częściowy: Pełny (full) pełna konfiguracja układu w projekcie statycznym lub początkowa konfiguracja w projekcie typu dynamicznego. Częściowy (partial) - konfiguracja części układu lub jedna z rekonfiguracji w podejściu dynamicznym. 41