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 delší odmlce konečně další pokračování seriálu o programovatelné logice. Tentokrát se jedná o úvod do vývojových prostředků pro programovatelné logické obvody. Informace nejsou kompletní, protože tato kapitola je poměrně dlouhá a bude dokončena až v příštím pokračování. Text opět navazuje na předchozí dva díly, které najdete zde a zde.
Programovatelné logické obvody se sebelepší vnitřní architekturou by nebyly prakticky použitelné bez odpovídající podpory vývojových prostředků. Teoreticky je při znalosti vnitřní architektury konkrétního PLD možné přímo vytvořit finální schéma propojení jednotlivých funkčních bloků. U jednoduchých PLD jako jsou obvody PAL nebo GAL je něco takového i prakticky realizovatelné, ale u dnešních složitých FPGA je to něco naprosto nereálného.
Základní vývojové prostředky pro programovatelnou logiku musí zajistit transformaci vstupního návrhu nebo popisu funkce do výstupního formátu použitelného pro konfiguraci nebo naprogramování konkrétní součástky. Ve skutečnosti je to pouze jedna z mnoha funkcí dnešních vývojových prostředků používaných pro aplikaci programovatelné logiky. Vývojová prostředí pro FPGA se stávají neustále složitější a komplexnější. Jsou často podobná velkým vývojovým systémů pro digitální integrované obvody a mnohé používané nástroje jsou totožné. Typické vývojové prostředky pro programovatelnou logiku je možné rozdělit do několika základních skupin podle jejich funkce:
Implementace
Verifikace
Hardware
Implementační nástroje slouží pro převod návrhu funkce do výstupního formátu použitelného pro fyzickou konfiguraci programovatelné součástky. Do této skupiny patří nástroje pro syntézu a implementaci.
Verifikační nástroje slouží pro ověření funkce jak samotného návrhu, tak i jednotlivých mezivýsledků implementačního procesu. Do této skupiny patří číslicové nebo smíšené simulátory a různé analytické nástroje. Může se jednat o nástroje pro statickou časovou analýzu (STA) nebo třeba analyzátory výstupů implementačních prostředků.
Hardwarové prostředky slouží především pro verifikaci, ověření funkce výsledného obvodu a pro jeho charakterizaci. Jedná se například o různé vývojové a testovací desky, programátory, programovací adaptéry a JTAG adaptéry pro konfiguraci, měření, testování a ladění. Používají se často pro ověření funkce a charakterizaci před finálním návrhem vlastní desky plošných spojů. Některé z hardwarových prostředků slouží k produkčnímu programování PLD nebo jejich konfiguračních pamětí.
Schéma typického postupu vývoje pro programovatelné logické obvody je znázorněno vývojovým diagramem na obrázku 2.1. Jedná se o zjednodušený postup vycházející z postupu vývoje číslicových integrovaných obvodů.
Obr. 2.1: Postup vývoje pro FPGA
V diagramu na obrázku 2.1 jsou použity anglické výrazy, protože některé z nich nemají české ekvivalenty. Význam jednotlivých bloků diagramu je popsán dále.
Sources
Soubor vstupních dat, která popisují předpokládanou funkci výsledného obvodu. Může se jednat o kombinaci textových souborů v různých jazycích, obvodových a blokových schémat, stavových diagramů a podobně.
Testbench
Pomocné soubory pro simulace a verifikace. Obvykle se jedná o popis generování testovacích vektorů a vyhodnocování výsledků testů ve vhodném jazyce. Součástí bývají také simulační modely použitých IP jader a externích součástek.
IP Cores
Hotové funkční bloky využité v návrhu. Může se jednat o zakoupená jádra nebo vlastní univerzální moduly připravené pro znovuvyužití v mnoha různých projektech. Jádra jsou pro implementaci použita ve formě netlistů nebo jiných formátů přímo podporovaných implementačními nástroji.
Constraints
Jedná se o soubory popisující různé omezující podmínky, kterými se nástroje pro syntézu a implementaci musí řídit. Typicky jde o fyzické vlastnosti vstupně-výstupních signálů jako je přiřazení pinů na pouzdře součástky, nastavení elektrických vlastností budičů a přijímačů a podobně. Další skupinou jsou omezení týkající se umístění a propojení funkčních bloků na čipu programovatelné součástky. Poslední důležitá skupina omezujících podmínek řídí časové poměry v obvodu jako je například nastavení hodinových frekvencí, povolené zpoždění průchodu signálu a podobně.
Functional Simulation
Funkční simulace je pro programovatelnou logiku nejdůležitější verifikační krok. Měla by ověřit funkční správnost návrhu. Pokud je návrh v pořádku, je možné pokročit k dalšímu bodu, jinak je třeba návrh upravit tak, aby funkční požadavky ověřované simulací splnil.
Synthesis
Syntéza je prvním krokem vlastní konverze vstupního popisu funkce do formátu použitelného pro konfiguraci programovatelné součástky. Výstupem syntézy je takzvaný netlist, což je v podstatě schéma popsané textovým nebo binárním formátem. Netlist obsahuje již funkční bloky cílové technologie, jako jsou například LUT, registry, budiče, a kombinuje je navzájem seznamem jednotlivých spojů.
Implementation
Implementace slouží pro správné umístění netlistu do konkrétního programovatelného obvodu. Skládá se z několika kroků, jejichž výsledkem je speciální verze netlistu, kde každý blok i každý spoj je jednoznačně umístěn na konkrétní pozici v programovatelné součástce.
STA
Statická časová analýza je důležitý verifikační nástroj. Pokud je návrh správný po funkční stránce, odhalí STA případné problémy s časováním. Důležitou podmínkou je však správná a především kompletní sada fyzických a časových omezujících podmínek – constraints.
Timing Simulation
Časová simulace se při vývoji pro programovatelnou logiku používá velice zřídka. Při této simulaci se místo vstupního popisu funkce používá výstup implementace převedený obvykle do netlistu v simulačním jazyku. Tento netlist obsahuje i kompletní informace o skutečných zpožděních jednotlivých bloků a spojů. Při vývoji pro programovatelnou je za dodržení správných postupů správná funkce výsledku zajištěna již díky funkční simulaci a STA. Programovatelné součástky i implementační nástroje jsou dostatečně charakterizovány od výrobce a funkční správnost společně s ověřením splnění časových požadavků pomocí STA zaručuje správnost výsledku.
Bitstream Generation
Generátor bitstreamu převede výstupní netlist z implementace na soubor, který již přímo řídí nastavení jednotlivých konfiguračních propojek programovatelné součástky. Tento soubor je již přímo použitelný pro fyzické naprogramování nebo konfiguraci PLD.
Testing in Hardware
Posledním krokem verifikace je otestování funkce ve skutečném programovatelném obvodu společně se skutečnými externími součástkami. Součástí testování je obvykle počáteční ověření funkce, měření parametrů a charakterizace. V případě problémů je možné využít různé hardwarové prostředky pro ladění.
Do procesu návrhu programovatelných logických obvodů vstupuje mnoho různých dat, sloužících pro popis funkce, pomocná data a skripty pro simulace a verifikace, pomocná data a skripty pro implementaci a další.
Požadovaná výsledná funkce programovatelného obvodu může být popsána kombinací několika následujících základních metod:
Popis pomocí některého jazyka pro popis hardware – HDL (Hardware Description Language)
Popis pomocí podporovaného vysokoúrovňového jazyka – HLL (High-Level Language)
Blokové schéma zapojení, kde jednotlivé bloky jsou vnitřně realizovány libovolnou jinou metodou
Obvodové schéma zapojení využívající připravené knihovny základních primitiv i funkčních bloků na vyšší úrovni
Další podporované formy grafického popisu jako například stavové nebo vývojové diagramy, vysokoúrovňové diagramy MATLAB/Simulink a podobně
IP jádra ve formě netlistu nebo pevného makra
Další speciální soubory jako například definice procesorových subsystémů
Nejrozšířenější metodou popisu logických obvodů je v dnešní době použití HDL. Prakticky se pro vstup syntézy používají jazyky VHDL, Verilog a SystemVerilog, což jsou specializované jazyky určené pro popis číslicových systémů od velmi nízké úrovně typu netlist až po vysokoúrovňový popis využívající metod objektově orientovaného programování a dalších vlastností převzatých z moderních programovacích jazyků. Výhodou použití HDL je univerzálnost a přenositelnost, protože jazyky jsou standardizovány organizací IEEE a všechny současné nástroje pro syntézu podporují alespoň VHDL a Verilog.
Použití HLL pro návrh číslicových systémů není dosud příliš rozšířené, ale začínají se objevovat použitelné nástroje. Syntéza z HLL obvykle probíhá ve dvou krocích, kdy je zdrojový popis ve vysokoúrovňovém jazyce nejdříve přeložen do některého HDL a ten je následně předán syntéze. HLL pro popis hardware obvykle vycházejí až na výjimky z jazyka C nebo C++. Zvláštní kategorií jsou nástroje určené pro MATLAB, které převádějí M-kód na HDL.
Obvodová i bloková schémata se v dnešní době používají již velmi zřídka. Současné programovatelné logické obvody poskytují takové množství logických prostředků, že typické návrhy jsou velmi rozsáhlé. Doba vývoje, přehlednost a udržovatelnost komplexních digitálních návrhů ve formě schémat jsou mnohem horší ve srovnání s HDL.
Ostatní formy popisu jsou většinou specifické pro konkrétního výrobce nebo určité nástroje. Společnou typickou vlastností je, že se vždy před syntézou vygeneruje syntetizovatelný popis v HDL.
Kromě popisu funkce obvodu potřebuje simulátor ještě další podpůrné soubory. Jde jednak o soubory generující vstupní hodnoty a vyhodnocující výstupy, které tvoří takzvaný testbench, a dále o pomocné skripty řídící vlastní proces simulace, jeho automatizaci a podobně.
Testbenche se v dnešní době realizují buď v HDL nebo HVL (Hardware Verification Language). Speciální a vysokoúrovňové jazykové konstrukce vhodné pro simulace a verifikace nabízí z HDL především VHDL, SystemVerilog a SystemC. Nejpoužívanější HVL jsou PSL (Property Specification Language), e, OpenVera a opět SytemVerilog a SystemC, což jsou jazyky kombinující vlastnosti HDL a HVL. Důležitými vstupy pro časové simulace jsou soubory SDF (Standard Delay Format), které definují zpoždění jednotlivých prvků.
Simulace funkčního popisu zapsaného v HLL se obvykle provádí ve stejném jazyce. Samozřejmě je ale možné převést popis z HLL do HDL a výsledek poté simulovat v běžném digitálním simulátoru s pomocí HDL/HVL testbenchů.
Součástí vstupních souborů pro simulace a verifikace bývají často skripty pro řízení vlastních simulačních programů. Tyto pomocné soubory obvykle zajistí vytvoření potřebných knihoven, kompilaci funkčního popisu ve správném pořadí do správných knihoven, nastavení simulátoru, zobrazení požadovaných výstupů a spuštění simulace.
Implementační nástroje potřebují kromě popisu funkce ještě další vstupní data, která ovlivňují výsledek implementačního procesu. Jedná se především o definici jednotlivých fyzických omezujících podmínek, tzv. constraints. Je nutné jednotlivým vstupně-výstupním signálům přiřadit konkrétní piny programovatelné součástky a nastavit elektrické parametry vstupních přijímačů a výstupních budičů. Další parametry, které mají vliv na implementaci jsou časové vlastnosti hodinových signálů, datových vstupů a výstupů, stejně jako některých interních signálů. Důležité je například správně ošetřit přechody mezi asynchronními hodinovými signály nebo delší kombinační logické cesty. Poslední oblastí je možnost ručního umístění některých funkčních bloků na čipu FPGA nebo vymezení oblastí, ve kterých smí být daný blok automaticky umístěn. Jedná se o takzvaný floorplannig.
Další skupinou vstupů pro implementační proces je správné nastavení implementačních nástrojů. To je obvykle možné dělat interaktivně v GUI, pomocí konfiguračních souborů, nebo implementačních skriptů. Skriptování implementačních nástrojů pro programovatelnou logiku se provádí typicky v jazyce TCL, některé nástroje podporují i Perl.
Tiskni
Sdílej: