Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevily v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
Po velmi dlouhé pauze způsobené zraněním a návalem práce jsem se konečně dostal k dokončení kapitoly věnované vývojovým prostředkům pro programovatelné logické obvody. Text opět plynule navazuje na předchozí díly, které najdete zde, zde a zde.
Implementační nástroje zahrnují syntézu, vlastní implementaci, generování programovacích souborů a další podpůrné nástroje používané pro generování pomocných souborů, konfigurování IP jader, vytváření constraints, generování implementačních skriptů a podobně. Výsledkem implementačního procesu je soubor určený pro konfiguraci programovatelného logického obvodu. Ten by měl po nakonfigurování realizovat funkci definovanou popisem použitým jako vstup pro implementaci.
Nástroje pro implementaci je možné rozdělit na front-end, back-end a ostatní podpůrné nástroje. Mezi front-end nástroje patří především syntéza a pak také různé vysokoúrovňové kompilátory a konvertory. Back-end reprezentují implementační nástroje, které překládají výstup syntézy do výsledného konfiguračního souboru. Podpůrné nástroje slouží pro pomocné úlohy související s implementací.
Pro front-end nástroje je typická poměrně dobrá a dostupná specifikace, takže není problém narazit na nástroje různých výrobců a vývojář nemusí být nezbytně závislý na nástrojích dodavatele programovatelných logických obvodů. Vstupem syntézy je například plně standardizovaný HDL a výstupem je netlist opět ve standardním souborovém formátu. Netlist smí obsahovat pouze komponenty výsledného programovatelného logického obvodu, ale ty jsou na této úrovni velmi dobře specifikovány a zdokumentovány přímo výrobcem. Nástroje pro vysokoúrovňové jazyky mají opět k dispozici přesné specifikace jak vstupního HLL, tak výstupního HDL.
Co se týče back-end nástrojů, je uživatel odkázán na výrobce programovatelné logiky. Specifikace skutečné vnitřní struktury PLD, která je pro vývoj back-end nástrojů nutná je přísně střeženým tajemstvím. Situace trochu připomíná back-end nástroje pro návrh integrovaných obvodů. Samotné nástroje jsou sice do jisté míry nezávislé na výrobci konkrétních ASIC, ale ke své funkci potřebují knihovny dodávané právě výrobcem. Kromě interní struktury používané programovatelné součástky musí back-end nástroje znát i charakterizační data obvodu.
Pomocné nástroje slouží pro podporu implementačního procesu. Velmi důležitou skupinu tvoří nástroje pro tvorbu omezujících podmínek – constraints – pro syntézu a implementaci. Tyto nástroje obvykle umožňují jednoduchou formou vyplňováním formulářů nebo pomocí grafického editoru vytvářet různé typy constraints, které pak ukládají ve formátu použitelném implementačními nástroji jako například UCF, SDC nebo XDC. Další skupinou pomocných nástrojů bývají konvertory různých souborových formátů, které slouží například pro převod netlistů z formátu EDIF do vnitřního netlistu konkrétního výrobce a podobně. V rámci implementace se často používají různé analytické a vizualizační nástroje, které usnadní analýzu výsledků implementačního procesu. Umožňují třeba grafické zobrazení výsledku syntézy ve formě schématu, generování různých implementačních statistik a logů nebo vizualizaci kompletně implementovaného projektu v programovatelném obvodu. Některé nástroje umožňují i ruční editaci výsledku implementace.
Velmi významnou skupinu implementačních nástrojů tvoří právě nástroje pro práci s IP jádry. Značná část funkce návrhu pro dnešní velká FPGA je často realizována připravenými hotovými funkčními bloky. Pro zjednodušení jejich konfigurace, parametrizace, modifikace, propojení a integrace existují různé specializované nástroje. Samozřejmě existují i nástroje usnadňující vytváření, balení a distribuci vlastních jader.
Základní nástroje pro práci s jádry umožňují konfiguraci parametrů autonomních IP jader. Výsledkem je obvykle zdrojový kód nebo netlist použitelný společně s ostatními zdroji pro syntézu a verifikaci. Tyto nástroje se používají pro přípravu často používaných běžných funkčních bloků, jako jsou například různé typy pamětí, bloky realizující aritmetické operace, různá specializovaná rozhraní a podobně. Pokud chce například vývojář použít v návrhu FIFO, stačí do projektu vložit IP jádro pro FIFO a v jeho konfiguraci vybrat šířku datových sběrnic, hloubku paměti a nakonfigurovat potřebné řídící signály. Výsledkem je pak obvykle netlist, který se může v návrhu používat jako jakýkoli jiný běžný modul.
S rostoucími možnostmi programovatelné logiky je dnes v FPGA běžné použití procesorů nebo celých procesorových systémů. Specializované nástroje umožňují sestavení a konfiguraci rozsáhlých procesorových systémů, vzájemné propojení jednotlivých bloků pomocí různých sběrnic. Kromě výstupů použitelných pro implementaci a verifikaci umožňují tyto nástroje vygenerovat výstupy pro následný vývoj software. Samozřejmostí bývá možnost společné simulace návrhu hardware a software v době, kdy ještě není k dispozici finální hardware.
Nástroje pro verifikaci návrhu a implementace programovatelné logiky zahrnují jednak klasické digitální simulátory, specifické nástroje svázané s implementačními nástroji konkrétních výrobců a pak vysoce specializované nástroje používané například pro formální verifikaci. Pro programovatelnou logiku specifickým druhem verifikačních nástrojů jsou pak ještě hardwarové nástroje určené pro ladění ve skutečném obvodu.
Digitální simulátory se používají především pro funkční ověření popisu obvodu. Simulace výsledku syntézy a implementace v případě programovatelné logiky není až na výjimky nutná. Vstupem simulátoru jsou obvykle zdrojové soubory v HDL a vlastní testovací prostředí opět v HDL. Pokud je projekt nebo jeho části vytvářen jinými prostředky, je nutné je do HDL zkonvertovat.
Testovací prostředí zvané testbench obvykle zajišťuje propojení vlastního návrhu programovatelného obvodu do celého simulačního systému, generování vstupních signálů a dat pro buzení testovaného modulu a kontrolu výstupů. Kontrola správné funkce může být zajištěna automaticky přímo testovacím prostředím. Funkci jednodušších obvodů je možné provádět například sledováním vstupních a výstupních časových průběhů a stavů jednotlivých signálů v konkrétních místech obvodu a okamžicích simulace.
Řízení průběhu simulace, kompilace vstupních souborů a podobné pomocné úlohy je možné buď ručně z prostředí simulátoru nebo pomocí simulačních skriptů. Většina digitálních simulátorů podporuje skriptování v jazyce TCL.
Digitální simulátory většinou podporují jazyky VHDL, Verilog, SystemVerilog a SystemC pro popis hardwaru a testovací prostředí. Složitější kontroly funkce, časování, posloupnosti signálů a podobně je možné realizovat pomocí assertions v některém z jazyků typu PSL, e, OpenVera, SystemVerilog Assertions. Nejčastěji jsou podporovány assertions v PSL a SystemVerilog.
Do verifikace patří i součásti implementačních nástrojů určené pro analýzu výsledků a mezivýsledků implementačního procesu. Umožňují například vizualizaci či grafické zobrazení výsledných netlistů po jednotlivých implementačních krocích ve formě schémat nebo blokových diagramů. Vývojář si tak může udělat obrázek jak skutečně vypadá hardware vygenerovaný z jeho vysokoúrovňového popisu.
Součástí integrovaných vývojových prostředí jsou dále obvykle prohlížeče usnadňující procházení a analýzu implementačních logů. Záznamy z průběhu implementace jsou většinou obrovské nepřehledné textové soubory, případně strukturované XML. Prohlížeče poskytují možnost strukturovaného prohlížení podle typu informace, specializované vyhledávání, filtrování různých druhů informací jako jsou různé chyby a varování a podobně.
Statická časová analýza je velmi významnou součástí verifikačního procesu. Pro ověření skutečné funkčnosti návrhu je na stejné významové úrovni jako například ověření funkce pomocí simulace. Každý návrh programovatelné logiky musí obsahovat kromě vlastního popisu funkce také soubor omezujících podmínek, tzv. constraints, které definují například přiřazení pinů jednotlivým vstupně-výstupním portům, správné nastavení elektrických parametrů vstupů a výstupů, a kromě jiného také definují časové poměry v obvodu. Z časových constraints je nejdůležitější definice frekvencí hodinových signálů a požadavků na časování vstupních a případně i výstupních pinů. Dále je možné a často i nutné definovat relativní časové vztahy mezi různými hodinovými doménami, případně různé speciální nároky na časování v konkrétních místech obvodu, které nejsou ze samotného funkčního popisu zřejmé.
Nástroje pro statickou časovou analýzu použijí výstup implementace, časové constraints a charakterizační data použitého programovatelného obvodu a provedou kompletní analýzu časování všech použitých synchronních elementů v celém programovatelném obvodu. Výstupní netlist obsahuje kromě propojení jednotlivých obvodových prvků i jejich konkrétní umístění na ploše čipu a použité propojovací prostředky, takže časová analýza je schopná určit zpoždění všech spojů. Díky tomu, že programovatelné logické obvody jsou od výrobců plně charakterizovány včetně přesných modelů časování, stačí pro verifikaci návrhu splnit následující tři podmínky:
Správná funkce návrhu odpovídající specifikaci ověřená funkční simulací
Všechny hodinové vstupní signály mají definované časování (constraints)
Požadavky na časování jsou ověřeny statickou časovou analýzou
Na rozdíl od plně zakázkového vývoje ASIC pak odpadají další časově náročné kroky jako jsou časové simulace po jednotlivých implementačních fázích. Díky plné charakterizaci programovatelných logických obvodů jsou časové simulace plně zastoupeny funkční simulací v kombinaci se statickou časovou analýzou.
Specifická skupina verifikačních nástrojů pro programovatelnou logiku umožňuje ladění a měření návrhu ve skutečném obvodu. Tyto nástroje sestávají ze tří částí. První je IP jádro, které se umístí do návrhu společně s vlastním projektem a zajišťuje přístup z vnějšího světa k jednotlivým signálům v návrhu. Druhou část tvoří hardware pro komunikaci mezi tímto jádrem a PC. Obvykle je tato část realizována pomocí JTAG kabelu. Třetí částí je pak software pro PC, který je schopen komunikovat s jádrem v programovatelném obvodu.
Celý výše popsaný systém se pak chová jako logický analyzátor. Uživatel si může nastavovat různé spouštěcí podmínky a provádět měření interních signálů v programovatelném obvodu. Je tak schopen ověřit výsledky simulace v reálném prostředí nebo odhalit chyby způsobené interakcí se skutečným okolím.
Tiskni
Sdílej:
Zkusil jsem přidat nějaký štítek a nefunguje mi to – ať klikám, jak klikám, nic se nestalo (ani žádná chyba v JS konsoli).