# 2 Cíle a požadavky

## 2.1 Účel

- A. poskytnout rámec (framework), do kterého budou zasazovány moduly, realizující a testující algoritmy EDA na úrovni hradel
- B. rámec má poskytnout
  - prostředky pro vstup a výstup dat ve zvolených formátech
  - prostředky pro ovládání uživatelským rozhraním a skripty
  - příp. další standardní postupy

## 2.2 Uživatelé, jejich schopnosti a preference

- A. Uživatel umí programovat v C++ do té míry, že zvládne STL a techniky nutné k jejímu použití
- B. Uživatel je schopen přisestavit k rámci vlastní modul

## 2.3 Transparence vůči popisu chování

- A. Při jakémkoli předávání dat přes rámec (vstup, výstup, komunikace mezi moduly) se nesmí ztratit žádná informace, která by nebyla pro daný formalismus popisu označena jako bezvýznamná
- B. Množina podporovaných popisů chování nesmí být uzavřená

## 2.4 Oddělení heuristických a algoritmických postupů

- A. Heuristické postupy v transformacích dat v rámci jsou většinou spojeny s vágně definovanými zvyky a konvencemi v datech, které se mohou měnit. Množina podporovaných heuristik nesmí být uzavřená

## 2.5 Paralelní přístup

- A. v první verzi přistupuje k rámci jeden proces
- B. je žádoucí, nikoli však nutné, aby přístup, který je koncepčně čtením (např. export) byly čtením i technicky (např. označení, že daná entita byla již zpracována, musí být umístěny mimo samotné datové struktury rámce)
- C. pro paralelní přístup je nutná schopnost zajistit
  - atomicitu změn
  - determinismus

## 2.6 Rozšiřování, adaptace

Definice

- Použití rámce technicky znamená sestavit jej s dalšími moduly do spustitelného programu; kód rámce je volán zvenčí. Příklad: minimalizace, která si bere data z datových struktur, celek má formu nového samostatného programu.
- Rozšířením rámce se rozumí přidání kódu, který je volán kódem rámce, nebo dat, využívaných kódem rámce. Příklady:
  - nová funkce, která odhaduje chování ze jmen v EDIFu pro nové FPGA;
  - funkce, která popisuje reprezentaci nově zavedeného popisu chování v exportovaných jazycích.

Požadavky

- A. Pro každou otevřenou množinu (formalismů popisu, heuristik, atd.) má existovat možnost rozšíření.
- B. Implementace rozšíření má mít formu uživatelského modulu.
- C. Začlenění uživatelského modulu do rámce nemá vyžadovat žádnou změnu ve standardních modulech rámce.

## 2.7 Traverzovatelnost

- A. Datová struktura má umožnit sledování každého spoje přes hranice entit