# 1 Náčrt doménové analýzy

Následný text analyzuje doménu popisu číslicových obvodů chováním a strukturou (Gajski 1983) na úrovni hradel. Doménová analýza nepřihlíží podstatně k jednomu účelu a způsobu použití (kontextu použití), nýbrž shromažďuje pojmy a vazby pro doménu podstatné. Zde byl ovšem položen mnohem větší důraz na jemné odlišnosti popisů chovaní, než bývá obvyklé.

## 1.1 Vstupy

### 1.1.1 Jazyky popisu

- [1] Jazyk VHDL
- [2] Jazyk EDIF (Electronic Design Interface Format Version 2 0 0, Recommended Standard EIA-548, Electronic Industries Association 1988)
- [3] Jazyk BLIF (SIS: A Ssystem for Sequential Circuit Synthesis., Appendix A: Berkeley Logic Interchange Formaat (BLIF). Electronics Research Laboratory Memorandum No. UCB/ERL M92/41, 1992)
- [4] Jazyk KISS, tamtéž
- [5] Jazyk CIR
- [6] Jazyk Bench (ISCAS89 format) (F. Brglez, D. Bryan, K. Kozminski: Notes on the ISCAS89 Benchmark Circuits, MCNC, 1989)
- [7] Jazyk PLA (espresso(5): Input file format for Espresso (PLA-file))

### 1.1.2 Předchozí analýzy

- [8] Vlastimil Kozák: Petr Fišer: Převaděč formátů pro specifikaci logických obvodů diplomová práce, Praha, FEL ČVUT 2005
- [9] Jan Schmidt, Michal Servít: Zobrazení reálného světa v systémech CAD, seminář Moderní Programování 1989, MFF UK 1989 (shrnutí předchozích prací z 80. let - systémy MEDIS, SYSDEB, FUGAS, přenosový formát MIF)

### 1.1.3 Experti

- [10] Ing. Petr Fišer
- [11] Ing. Jan Schmidt

### 1.1.4 Články

- [12] Afshin Abdollah, Massoud Pedram, A new canonical form for fast boolean matching in logic synthesis and verification. Proceedings of the 42nd annual conference on Design automation, San Diego, California, USA, pp. 379 - 384 , ACM, 2005

### 1.1.5 Poděkování

- Ing. Bučkovi a Ing. Kubalíkovi za přínosné diskuse

## 1.2 Strukturní popis

- Ve většině tabulek nejsou uváděny jazyky, které nemají strukturní popis (PLA a KISS)

### 1.2.1 Základní pojmy

Circuit Hub (z VHDL) | ustálená česká z 80. let | jiné české termíny | VHDL | EDIF | Ing. Kozák | Význam
instance | blok | buňka, instance | instance | instance | device, hradlo | číslicový obvod
entita | typ bloku | buňka, typ buňky, instance | entity | cell | entita | abstrakce více stejných obvodů
architektura | popis bloku | architektura | architecture | view | architektura |
pohled | pohled |  |  | viewType |  | druh popisu bloku; např. strukturou nebo chováním
port | vývod | pin | port | port | port, prototyp portu (u typu bloku) | místo v bloku (také typu bloku), kam se připojuje spoj
spoj | spoj | vodič, signál | signal (?) | net | drát (?) | množina elektricky spojených vývodů
spojka | spojka | spoj |  |  |  | dvoubodové spojení

### 1.2.2 Hlavní jednotka popisu

- Co popisuje jeden soubor v daném jazyce?

Jazyk | Jednotka popisu | Jméno
PLA | rozhraní a popis chování entity | ne
Bench | rozhraní a strukturní popis entity | ne
CIR | rozhraní a strukturní popis entity | ano
BLIF/KISS | rozhraní, strukturní popis, popis chování (KISS) entity | volitelné; implicitně jméno souboru
EDIF | knihovny + návrhy (odkazy na entity) | ano
VHDL | entita | ano
Circuit Hub | knihovny + návrhy | ano

### 1.2.2 Hierarchie a entity

- Hierarchie: obvod může být popsán jako struktura z obvodů opět strukturně popsaných
- Každý z analyzovaných jazyků, který byl hierarchický, měl strukturní popis pomocí entit a instancí (jediná výjimka je 1:1 struktura Ing. Kozáka).
- Strukturní entita - popsaná strukturou
- Behaviorální entita - popsaná chováním
- Externí entita - popsán jen interface

Jazyk | Hierarchie | Entity | Jméno instance
Bench | ne | vestavěné behaviorální (symetrické komb. fce o lib. počtu vstupů a 1 výstupu, DFF) | ne
CIR | ne | vestavěné behaviorání (symetrické komb. fce o daném počtu vstupů a 1 výstupu, Dflipflop) | ano
BLIF | ano .subckt, .gate | strukturní (.subckt), externí (.gate), popis instance chováním (PLA) | ne
EDIF | ano | strukturní (LIBRARY), externí (EXTERNAL) | ano
VHDL | ano | strukturní, behaviorální, externí | ano
Circuit Hub | ano | strukturní, behaviorální, externí | ano

### 1.2.4 Spoje

- Explicitní popis spoje: existuje jedna ucelená fráze v textu popisu, jmenující spojené porty
- Implicitní popis spoje: jméno spoje je součástí fráze, popisující instanci
- Implicitní hodiny a reset !příp. scan) nejsou explicitně nikde popsány, ale předpokládá se, že existují. Obvod má v tom přípasě jedny hodiny a je synchronní

Jazyk | Jméno spoje | Popis spoje | Identifikace portu | Hodiny | reset, scan
pořadím vstupu | pořadím výstupu | pořadím portu | jménem portu
Bench | ano | implicitní | ano |  |  |  | implicitní | implicitní
CIR | ano | implicitní | ano | ? |  |  | implicitní | implicitní
BLIF | ano | implicitní | ano (.names) |  |  | .subckt, .gate | explicitní (.clock), implicitní (globální) | implicitní
EDIF | ano | explicitní |  |  |  | ano | ne*) | ne*)
VHDL | ano | explictní |  |  | ano | ano | ne*) | ne*}
Circuit Hub | ano | explicitní | ano | ano | ano | ano |  |

*) možnosti externího rozšíření viz níže

### 1.2.5 Parametry instance

- parametry instance jiné než zapojení
- chování instance:
  - BLIF via PLA popis instance
  - EDIF via externí rozšíření
- jiné parametry
  - BLIF - aktivní hrana hodin, reset hodnota
  - CIR - zpoždění
  - potenciálně EDIF - cokoliv via properties
  - potenciálně VHDL - cokoliv via atributy

## 1.3 Popis chování

Jazyk | Sekvenční obvody | Kombinační obvody |
PLA | ---- | PLA |
Bench | symbol DFF - klopný obvod, implicitní hodiny, reset, scan atd. | symbolem označené symetrické kombinační obvody s jedním výstupem a proměnným počtem vstupů |
CIR | implicitní D klopný obvod na výstupu, implicitní hodiny, reset, scan atd. | symbolem označené symetrické kombinační obvody s jedním výstupem a pevným počtem vstupů |
BLIF | .latch: klopný obvod parametrizovaný citlivou hranou a počátečním stavem; implicitní reset | PLA |
KISS | automat | nemá popis kombinačních obvodů |
EDIF | nemá popis chování | nemá popis chování |
VHDL | proces | booleovský výraz z operátorů definovaných v knihovně |
Circuit Hub |  |  |

### 1.3.1 Signály

Většina formalismů používá booleovskou funkci jako model chování; VHDL má modely definované nad všemi vstupními hodnotami

Jazyk | Hodnoty vstupních signálů | Hodnoty výstupních signálů | Vícenásobné buzení signálu a rezoluce
PLA | 0, 1 | 0, 1, X(DC) | ne
Bench | 0, 1 | 0, 1 | ne
CIR | 0, 1 | 0, 1 | ne
BLIF | 0, 1 | 0, 1, X(DC) | ne
KISS | 0, 1 nebo symbolicky*) | 0, 1, X(DC) | ne
EDIF | --- | --- | ---
VHDL | 0, 1, X, L, H, W, Z, U, - | 0, 1, X, L, H, W, Z, U, - | ano
Circuit Hub |  |  |

*) podporuje Nova

### 1.3.2 Sekvenční popis

#### Popis chování stavovým strojem (FSM)

- FSM popis je výše než úroneň hradel. Pojem času je spojen s abstraktní událostí "nový vstupní symbol" a nemá souvislost s hodinami nebo jiným časováním obvodu
- FSM popis má pojem počátečního stavu
- FSM má stav, proto jeho realizace může mít diagnostické prostředky spojemé s pamětí, ve které je stav uložen
- Z analyzovaných jazyků KISS má pojem FSM, rovněž tak některé návrhové jazyky, které od počátku byly určeny pro syntézu (klasicky ABEL)
- Existují heuristiky schopné rozpoznat FSM v behaviorálním popisu založeném na procesech (VHDL, Verilog), dodržuje-li takový popis stanovená pravidla

#### Popis sekvenčního obvodu na úrovni hradel pomocí FSM

Má-li obvod, jehož vnitřní chování je popsáno FSM, do obvodu popsaného na úrovni hradel, je třeba doplnit:

- Časování a jeho realizaci. Kdy se zapisuje do paměti stavu, potřebné signály, kódování událostí (hladinová/hranová funkce, aktivní hrana/úroveň).
- Nastavení do počátečního stavu. Potřebné signály, aktivní úroveň.
- Diagnostika. Pozorovatelnost a řiditelnost stavu, případně potřebné signály.

Tyto informace shrneme do pojmu paměťového modelu. Paměťový model je v mnoha situacích implicitní, ale přitom má vliv na rozhraní entity.

#### 1.3.2.1 Klopné obvody

- Klopný obvod má
  - stav, tedy i počáteční stav a paměťový model
  - jeden datový výstup, ke kterému může být vyvedena negace
  - datový vstup nebo vstupy, jejichž druh lze považovat za symbolický FSM popis chování klopného obvodu (D, J, K) nebo jeho modifikaci (CE)
- Jazyky určené primárně pro popis benchmarků (Bench, CIR) a Blif mají pojem klopného obvodu
- Existují heuristiky schopné rozpoznat klopný obvod ve VHDL
- Existují konvence, závislé na knihovně, které mohou rozpoznat klopný obvod v EDIFu
- Text v jazyce Bench a CIR zná D klopné obvody, ale neuvádí paměťový model. Pokud jsou použity D klopné obvody, obvod musí být synchronní (jedny hodiny, žádné kombinační zpětnovazební smyčky).
- Text v BLIF z časového modelu může popisovat časování. Jestliže jsou ve frázích .latch uvedeny pouze povinné informace (což je obvyklé), je situace stejná jako v Bench a CIR.

### 1.3.3 Kombinační popis

- Informace, nesené popisem kombinačního chování:
  - I. Informace, rozlišující každou implementaci dvou popisů (0-stav jedné fce je 1-stavem druhé)
  - II. Informace, rozlišující některé implementace dvou popisů (on-sety anebo off-sety nesouhlasí)
  - III. Informace, nespadající do skupin I a II, ale ovlivňující operace nad popisem, např:
    - jiný počet termů v PLA popisu nebo v rovnici
    - jiná struktura boolské sítě
  - IV. Informace, které mohou ovlivnit operace nad popisem, ale jímž je triviální se vyhnout (jiné pořadí termů v jinak shodné PLA)

#### 1.3.3.1 Informace, nesené popisem kombinačního chování

- kombinační chování je obecně popsáno množinou booleovských funkcí
- tato množina booleovských funcí je reprezentována různými formalismy

- ekvivalence pod pevným uspořádáním vstupů je významná pro převody formátů
- P-ekvivalence je významná pro rozpoznávání obvodů v knihovně
- popis kombinačního chování musí zachovat nejméně ekvivalenci booleovské funkce
- reprezentace může
  - pro všechny ekvivalentní funkce mít jediný tvar - reprezentace je kanonická
  - mezi všemi možnostmi, jak popsat jednu funkci, vybrat jednu např. pro účely srovnávání) -reprezentace má kanonickou formu
- není-li reprezentace kanonická, je každá konverze do této reprezentace nejednoznačná
- booleovská funkce (jako matematický objekt) má kanonickoé repreyentace - uspořádané součty minternů a součiny maxtermů
- žádá se, aby byla zachována ekvivalence popisu
  - přesná definice není
  - přerovnání termů v PLA nenarušuje ekvivalenci popisu
  - popis funkce pomocí různých množin (offset, onset, DC-set) není ekvivalentní
  - strukturní informace, obsažená v booleovské síti, se považuje za významnou; různé booleovské sítě nejsou ekvivalentní mezi sebou ani s libovolným dvojúrovňovým popisem

#### 1.3.3.2 Symetrie

- Symetrie (ekvivalence, záměnnost vstupů) zjednodušuje většinu algoritmů
- Hierarchická symetrie: ekvivalence skupin vstupů
- Popis, který je kanonický při pevném uspořádání vstupů, je pro plně symetrickou funkci kanonický i vzhledem k permutaci vstupů
- Kombinační funkce, používané v Bench a CIR (AND, NAND, OR, NOR, XOR, XNOR, INV, BUF) jsou plně symetrické

#### 1.3.3.3 Symbolická reprezentace

- Symbolický popis: výčet známých funkcí + parametry
- Jeden výstup
- Parametry
  - u funkcí symetrických vzhledem k permutaci proměnných: počet vstupů (úplná symetrie 1. řádu); např: NAND4 (symbol i parametrr v jednom řetězu)
  - u funkcí symetrických vzhledem k permutaci skupin proměnných: počet vstupů v jednotlivých skupinách (úplná symetrie vyššíh řádu); např. AOI23 (symbol i parametrr v jednom řetězu)
  - u obecných funkcí s jedním výstupem lze za "poarametr" považovat i reprezentaci funkce uspřádanou pravdivostní tabulkou (Ing. Kozák), např. LUT4_04FA (symbol i parametrr v jednom řetězu)
- Přiřazení vstupů musí být dáno konvencí
  - u funkcí symetrických vzhledem k permutaci proměnných: je triviální
  - u funkcí symetrických vzhledem k permutaci skupin proměnných: vyplývá ze symetrie

#### 1.3.3.4 Souhrn

Reprezentace | Princip | je kanonická vzhledem k pevnému uspořádání vstupů | má kanonický tvar vzhledem k pevnému uspořádání vstupů | má kanonický tvar vzhledem k permutaci vstupů | za ekvivelentní reprezentaci se považuje
PLA | SOP | ne | ano *) | ano*) | permutace termů
uspořádaná tabulka | ano | => ano | ano*) | ---
symbolická | výčet funkcí | ano | => ano | ano *) | ---
ROBDD | BDD | ano | => ano | ??? | ???
booleovská síť | DAG | ne | ne | ne | ???

*) netriviální výpočet

### 1.3.4 Vazba popisu chování na strukturní popis - identifikace signálů

Reprezentace | Uspřádání vstupů | Uspořádání výstupů
PLA | ano | ano
uspořádaná tabulka | ano | jeden výstup
symbolická | konvence s využitím symetrií | jeden výstup
ROBDD | ano - může být dynamické | ne
booleovská síť | ne | ne

## 1.4 Vnější návaznost popisu

Popis obvodu nemusí být vždy úplný pro daný účel:

- pro chybějící prostředky použitého jazyka
- protože daný kontext použití považuje tzto informace za standardní nebo obecně známé.

Při převodu do jiného kontextu použití je pak nutno takové informace doplnit, neboť nástroje v novém kontextu implicitní informace nemají zabudovány.

### 1.4.1 Externí knihovny

Jméno externí knihovny má zprostředkovat vazbu na existující knihovnu, kde je možno nalézt potřebné informace, např. popis chování. V mnoha kontextech použití nejsou tyto knihovny dostupné nebo jejich formát je proporietární. Pak jméno knihovny nese informaci externí k jazyku a v podstatě označuje, jaké entity je možno v knihovně očekávat a jakou heuristiku použít pro odhadování jejich funkce.

### 1.4.2 Chování a synchronicita obvodů

- Jazyky Bench a CIR mají popis kloipných obvodů omezen na zapojení datového (D) vstupu a výstupu. Je tedy třeba v některých kontextech doplnit pro klopné obvody [6]
  - hodinový vstup, připojený na centrální hodiny
  - diagnostické vstupy a výstupy, patřičně zapojené
  - počáteční stav a obvody pro jeho realizaci
- V běžném kontextu použití textů v jazycích Bench a CIR se předpokládá, že popsaný obvod je synchronní
- Pro strukturně popsané obvody v jazycích Bench a CIR tedy z požadavku synchronicity klopných obvodů a z požadavku funkčnosti obvodu plyne
  - existuje hodinový rozvod a hodinový vstup obvodu
  - pokud byly doplněny diagnostické prostředky, existují jejich spoje a porty obvodu
  - pokud byly doplněny prostředky pro realizaci počátečního stavu, existují jejich spoje a porty obvodu
- Jazyk Blif zná pojem počátečního stavu, avšak nepopisuje prostředky pro jeho nastavení, platí tedy totéž, co pro nastavení počátečního stavu v jazycích Bench a CIR
- Jazyk KISS nechává synchronicitu jako externí informaci, pro nastavení platí totéž, co pro Blif

### 1.4.3 Odhad chování podle jména entity

- Existují jazyky, které nemají popis chování [1.2.2]
- Externí entity v takových textech mívají jména, dešifrovatelná člověkem
- Tam, kde existuje pojem externí knihovny, význam jména může záviset na knihovně (příklad: FDE je jméno entity klopného obvodu, který je součástí FPGA řady Virtex a Spartan a které se tudíž vyskytuje v externích knihovnách XCV, XCVE, XC2S a dalších; FLIP_FLOP_D_RESET je jméno entity klopného obvodu, generovaného syntézními nástroji Synopsys pravděpodobvně pro ASIC a charakteristické pro knihovnu pdt2)
- Takové konvence jsou vždy externí k danému jazyku (kdyby nebyly, byly by součástí jeho definice) a tudíž jejich výskyt a vývoj je nepředvídatelný
- Pro klopné obvody existují zvykově ustálená jména portů:
  - datových, podle kterých je možno odhadnout chování klopného obvodu (D, J, K, R, S)
  - hodinových 9C, G, CLK, CLOCK), ze ketrých lze usoudit na přítomnost hodinového vstupu, resp. jeho chování (G)
  - nastavovacích (RST, SET)
  - dalších (CE)
- Tato konvence je silnější a více ustálená než jména entit klopných obvodů samotných (FLIP_FLOP_RESET, FDCE)
- Konvence pro jména hodin a nastavovacích signálů platí i pro strukturně popsané synchronní obvody

### 1.4.4 Vlastnosti (properties)

- Jazyky EDIF a VHDL jumožňují připojit k objektům jako jsou entity, instance, spoje, porty atd. dvojice (jméno, hodnota), případně vybavené dalšími údaji (vlastník). Sémantika těchto údajů je pak plně dána kontextem použití, tedy nástrojem, který tyto informace vyprodukoval. Nepřímo je možné tuto informacio odhadnout podle jména knihovny EDIFu.

### 1.4.5 Souhrn

Jazyk | Mechanismus | Konvence | Informace |
PLA |  |  |
Bench | externí informace |  | hodiny, diagnostika, nastavení; synchronicita obvodu, spoje, porty |
CIR | externí informace |  | hodiny, diagnostika, nastavení; synchronicita obvodu, spoje, porty |
BLIF | externí informace |  | nastavení; spoje, porty obvodu |
EDIF | Instance properties | Xilinx | instance LUT - rovnice a pravd. tabulka hodinový spoj |
jméno ext. entity | různé | chování entity |
properties | různé | jakýkoli parametr entity, spoje, portu, instance |
VHDL | attributes |  | cokoliv |
generic map |  | parametry instance |
Circuit Hub |  |  |