Část údajů uživatelů internetového supermarketu Rohlík byla odcizena. Kyberútočníci napadli nástroj zákaznické podpory Rohlíku, odcizili tak jména, e-mailové adresy, v některých případech také telefonní čísla nebo přepisy komunikace mezi klienty a zákaznickou podporou. Rohlík incident nahlásil příslušným orgánům a přijal příslušné opatření, aby zamezil podobným případům v budoucnosti, uvedla firma.
Aplikace eDoklady fungovala v obou volebních dnech stabilně a prakticky bez front. Digitální a informační agentura (DIA) odhaduje, že se digitálním dokladem prokázalo více než 100.000 voličů. Aplikaci si před volbami či během nich aktualizovalo 247.517 uživatelů. Nových registrací bylo 19.431 a do aplikace se přihlásilo 357.879 lidí. Největší nápor přišel bezprostředně po otevření volebních místností mezi 14. a 16. hodinou, kdy si
… více »Začal semestr, začal i podzim a kromě hub rostou jako po dešti i veřejné dílny v Praze. Nedávno strahováci referovali o hackerspacu Bordel, nyní se otevřela dílna Dejvice Lab jen kousek od ČVUT. Na blížící Virtuální Bastlírně tak uslyšíte nejen report z návštěvy dílny HWLab, ale i řadu novinek, událostí a úsměvných momentů, které se za poslední měsíc ve světě techniky, ale i vědy udály. Připojte se tedy již v úterý 13.10. od 20:00 a zapojte se do
… více »Byl vydán LineageOS 24 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu. LineageOS 24 je založený na Androidu 17.
Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.
Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.
Programovací jazyk Python byl vydán v nové verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.
BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.
V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."
Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.
Vývoj číslicových zařízení, FPGA, ASIC, možná i něco o CPU/MCU. Prostě trochu hardwaru pro Linuxové programátory a adminy.
V tomto pokračování seriálu o programovatelné logice si velmi lehce představíme nejdůležitější jazyky pro popis hardwaru a verifikaci logických systémů. Případný zájemce o předchozí díly se musí na začátek postupně proklikat z minulé kapitoly.
Přirozeným popisem logických obvodů vycházejícím z historie je schéma zapojení. Takovýto popis neposkytuje příliš vysokou úroveň abstrakce a pro dnešní integrované obvody nebo rozsáhlé návrhy FPGA by byl takový funkční popis obrovský a velmi nepřehledný. Pro ověření funkce návrhu, tedy simulaci a verifikaci jsou pak schémata naprosto nevhodná.
Především kvůli výše uvedeným důvodům se hledaly jiné způsoby popisu logických obvodů a jejich verifikace. Výsledkem je textový popis ve formě velmi podobné programovacím jazykům. Jedná se o jazyky HDL (Hardware Description Languages) zaměřené především na návrh číslicových obvodů, HVL (Hardware Verification Languages) zaměřené hlavně na simulaci a verifikaci, a HDVL (Hardware Description and Verification Languages) určené jak pro funkční popis, tak i verifikaci.
Na tomto místě je třeba znovu zdůraznit, že přestože jazyky z rodin HDL, HVL a HDVL připomínají běžné programovací jazyky, jejich účel i principy jsou naprosto odlišné. Na rozdíl od programovacích jazyků nepopisují sekvenčně vykonávané činnosti, ale funkci distribuovaných logických obvodů.
V současnosti jsou nejpoužívanější jazyky z rodiny HDL Verilog a VHDL. Přestože se tyto jazyky liší syntaxí i sémantikou, oba poskytují obdobné prostředky k popisu logických obvodů. To, že jsou tyto HDL určeny převážně k popisu obvodů neznamená, že je není možné použít i pro simulaci a verifikaci. Pouze neposkytují tolik nástrojů pro formální verifikaci jako specializované verifikační jazyky.
Jazyky Verilog i VHDL umožňují popis obvodů na různých úrovních abstrakce:
Behaviorální
RTL
Strukturální
Hradla
Behaviorální úroveň znamená popis chování obvodu na vysoké úrovni abstrakce. Tuto úroveň poskytují klasické HDL pouze částečně a ne všechny nástroje ji vždy podporují. Příkladem může být třeba nějaký komplexní výpočet v plovoucí řádové čárce zapsaný přirozeně ve formě matematické rovnice.
RTL úroveň je typická oblast nasazení klasických HDL. Jedná se o nižší úroveň abstrakce než behaviorální popis, kdy je funkce definována kombinací kombinačních a sekvenčních prvků. Popis na této úrovni je obvykle podporován všemi nástroji.
Strukturální úroveň popisuje vzájemné propojení jednotlivých funkčních modulů a je textovou obdobou blokových schémat.
Úroveň hradel popisuje obvod na nejnižší úrovni, kdy je funkce vyjádřena strukturou tvořenou jednotlivými logickými hradly. Tato úroveň odpovídá klasickému schématu zapojení.
Je obvyklé, že popis logického obvodu v HDL kombinuje několik úrovní abstrakce. Základem bývá RTL, kdy ale některé části jsou popsány na behaviorální úrovni. Hierarchie návrhu je realizována využitím strukturálního popisu, kdy jsou moduly na nižší hierarchické úrovni vkládány do vyšších úrovní.
Jak již bylo zmíněno výše, klasické HDL jsou určeny především k popisu funkce logických obvodů na různých úrovních abstrakce a částečně i k simulaci a verifikaci. To ovšem neznamená, že každá vlastnost jazyka může být vždy za každých podmínek využita. Obvykle se rozlišují podmnožiny jazyka použitelné pro syntézu, modelování a simulaci.
Syntetizovatelná podmnožina HDL je taková část jazyka, která může být použita pro popis logického obvodu a implementační nástroje ji dokáží přeložit do netlistu.
Podmnožina určená pro modelování obvodů nebo celých systémů může obsahovat buď vysokoúrovňové vlastnosti jazyka, které nepodporují implementační nástroje, nebo základní vlastnosti, které nejsou z principu implementovatelné jako jsou například definovaná časová zpoždění. Tato podmnožina může být využita pro modelování funkce obvodu nebo systému s využitím číslicového simulátoru, ale už ne pro jeho implementaci v hradlovém poli nebo třeba ASIC.
Do simulační podmnožiny HDL patří vlastnosti jazyka určené k řízení simulace a verifikaci funkce simulovaného obvodu. Tato část jazyka opět není podporována implementačními nástroji, ale pouze simulátory.
V osmdesátých letech firma Gateway Design Automation uvedla na trh číslicový simulátor Verilog-XL a s ním i jazyk pro popis číslicových obvodů Verilog HDL. V roce 1989 pohltila Gateway firma Cadence Design Systems i s autorskými právy na jazyk a simulátor. V roce 1990 dala firma Cadence jazyk (ale ne simulátor) k dispozici jako public domain se záměrem, že se z něho stane standard. Verilog HDL je od té doby udržován neziskovou organizací Open Verilog International (dnes Accellera) a prošel standardizační procedurou IEEE (Institute of Electrical and Electronics Engineers). Verilog byl standardizován v roce 1995 jako IEEE Std. 1364-1995. Tato verze jazyka se označuje jako Verilog-95. Od té doby prošel Verilog mnoha rozšířeními, po nichž byl jazyk standardizován jako IEEE Std. 1364-2001 (označovaný jako Verilog-2001) a IEEE Std. 1364-2005 (Verilog-2005).
Samotný popis jazyka přesahuje rámec této publikace. Zájemce o výuku najde odkazy na literaturu v závěrečné části. Pro bližší představu o syntaxi může posloužit následující příklad syntetizovatelného popisu jednoduchého čtyřbitového synchronního čítače na úrovni RTL:
module counter (clk, rst, q);
input clk, rst;
output [3:0] out;
reg [3:0] cnt;
always @(posedge clk)
begin
if (rst)
cnt <= 4'b0000;
else
cnt <= cnt + 1'b1;
end
assign q = cnt;
endmodule
Tento kód popisuje funkční blok pojmenovaný counter, který má dva vstupy clk a rst a jeden čtyřbitový výstup q. Blok kódu uvozený always je aktivovaný při každé vzestupné hraně hodinového signálu clk. Pokud je přitom aktivní signál rst, interní registr čítače cnt se vynuluje. Pokud je reset neaktivní, dojde k inkrementaci hodnoty registru o jedničku. Výraz za assign neustále přiřazuje hodnotu interního registru cnt na výstup q.
Název jazyka VHDL je zkratka VHSIC Hardware Description Language, přičemž VHSIC je opět další zkratka pro Very High Speed Integrated Circuit. Vývoj VHDL začal roku 1981 na popud amerického ministerstva obrany. Důvodem byla narůstající nereprodukovatelnost elektronických systémů z důvodu nedostatečné dokumentace nebo naopak neúnosně dlouhá doba strávená tvorbou dokumentace a především to, že jednotlivé části systému byly vyvíjeny a simulovány mnoha různými nekompatibilními nástroji. Požadavkem bylo vyvinout jazyk s širokou popisnou schopností, který bude interpretován stejně jakýmkoli simulátorem a bude nezávislý na technologii a návrhové metodice.
V letech 1983 až 1985 pracovalo na specifikaci mnoho firem jako například Intermetrics, IBM, Texas Instruments. Roku 1986 byla práva převedena na organizaci IEEE, která roku 1987 publikovala první verzi jazyka IEEE Std. 1076-1987, označovanou jako VHDL-87. K jazyku VHDL se úzce váže standard IEEE Std. 1164, který definuje další logické datové typy, které kromě dvou základních logických úrovní 0 a 1 mohou vyjádřit další stavy jako například vysokou impedanci, otevřený výstup, kolizi několika budičů, a podobně.
V roce 1993 byla vydána revidovaná verze jazyka jako IEEE Std. 1076-1993, označovaná VHDL-93. Poté bylo vydáno několik doplněných a rozšířených verzí standardu (2000 a 2002), bylo doplněno několik dalších rozšíření standardu 1076 pro další datové typy jako celá a reálná čísla apod. Důležitým krokem bylo delegování organizace Accellera správou standardu VHDL. Výsledkem pak byla publikace standardu IEEE Std. 1076-2008 (VHDL-2008), který přinesl mnoho významných rozšíření jazyka a integroval dodatečné standardy z rodiny 1076.
Popis jazyka přesahuje rámec této publikace. Odkazy na podrobnou literaturu budou uvedeny v závěrečné části. Následující ukázka představuje syntetizovatelný popis čtyřbitového synchronního čítače:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity counter is
port(clk, rst : in std_logic;
q : out std_logic_vector(3 downto 0));
end counter;
architecture rtl of counter is
signal cnt: unsigned(3 downto 0);
begin
CNT_PROC: process (clk)
begin
if rising_edge(clk) then
if rst = '1' then
cnt <= "0000";
else
cnt <= cnt + 1;
end if;
end if;
end process;
q <= std_logic_vector(cnt);
end rtl;
Tento kód implementuje stejnou funkci jako předchozí kód ve Verilogu. Porovnáním těchto dvou příkladů jsou zjevné dva největší rozdíly mezi VHDL a Verilogem:
VHDL je popisnější. Pro popis stejné funkce je třeba napsat mnohem více kódu. Tato vlastnost vychází z jednoho z původních požadavků na jazyk daných americkým ministerstvem obrany, a to jeho samodokumentovatelnost.
VHDL je striktně typový jazyk. Každý signál, port, parametr nebo proměnná v jazyce VHDL musí mít definovaný datový typ. Každá operace může pracovat pouze s některými typy operandů a s různými typy operandů může pracovat různě. Je důležité používat správné datové typy pro konkrétní operace.
Kromě klasických HDL je existují i další jazyky určené k popisu logických obvodů, které ale popisují obvody na vyšší úrovni abstrakce. Často se jedná o jazyky založené na některých klasických programovacích jazycích jako je třeba C nebo Python. Vývojová prostředí pak přinášejí kromě vlastního kompilátoru i sady knihoven funkcí implementující některé operace. Na tomto místě je třeba podotknout, že z pohledu popisu hardware je jazyk typu C skutečně vysokoúrovňový, což se může programátorům zdát poněkud úsměvné.
Příkladem vysokoúrovňových jazyků pro popis číslicových obvodů vycházejících z jazyka C je HLS od firmy Xilinx, Catapult C od Mentor Graphics, nebo třeba Handel-C původně od firmy Celoxica. Velmi slušně udržovaný a rozvíjený open-source projekt je MyHDL, který využívá podmnožinu jazyka Python.
S růstem velikosti a složitosti integrovaných obvodů a programovatelné logiky přestávalo stačit ověření funkce logických obvodů pomocí jednoduchých simulací. Začaly vznikat různé metody formální verifikace a společně s nimi i jazyky umožňující tyto metody implementovat. Jedná se o jazyky jako Vera, e, částečně PSL, ale také třeba C nebo C++ a z něj vycházející SystemC. Tyto jazyky jsou často kombinovány s klasickými HDL. Jak Verilog, tak i VHDL například obsahují podporu pro PSL (Property Specification Language) a umožňují tak psát samotestovací kód přímo v popisu logického obvodu. Vlastní verifikační prostředí pak bývá realizováno v některém verifikačním jazyce, který umožňuje formální verifikaci obvodu s využitím metod založených na tzv. „constrained random“ technikách řízených pomocí „functional coverage“ a využívající „assertions“. Bohužel, pro tyto výrazy neexistují v kontextu funkční verifikace logických obvodů a systémů české ekvivalenty.
Jazyky založené na C nebo C++ jako je třeba SystemC poskytují další možnosti využití. Kromě vlastní (formální) verifikace umožňují například modelovat celé systémy zahrnující kromě logických obvodů i procesory a funkce realizované softwarově.
Samostatnou kapitolou jsou kombinované jazyky, určené jak pro popis logických obvodů a komplexních systémů, tak i pro verifikace. Hlavním představitelem těchto HDVL je SystemVerilog. SystemVerilog je velmi výrazné rozšíření jazyka Verilog-2005. Rozšíření se týkají především podpory modelování komplexních systémů a formální verifikace. Je zajímavé, že standardy jazyků Verilog a SystemVerilog byly v roce 2009 sloučeny do jednoho společného standardu IEEE Std. 1800-2009. Momentálně aktuální verze jazyka je standardizována IEEE Std. 1800-2012 (SystemVerilog-2012).
Samotný jazyk SystemVerilog je možné rozdělit na dvě podmnožiny:
RTL
Verifikace
Část jazyka určená pro RTL vychází z Verilogu ve verzi 2005. Navíc přináší mnoho nových datových typů, nové typy procedurálních bloků, rozšířené operátory, nové výrazy a mnoho dalších rozšíření.
Verifikační podmnožina jazyka je založená na principech objektově orientovaného programování. SystemVerilog přináší především objektové třídy, generování rozsahem omezených náhodných čísel, vektorů a řad (constrained random), vlastní způsob definice assertions a podporu pro functional coverage.
Kód čtyřbitového synchronního čítače v jazyce SystemVerilog by byl shodný s kódem ve Verilogu uvedeným výše. Lepší ilustrace jazyka proto bude jednoduchý příklad objektově orientovaného kódu. Následující příklad je převzat z Wikipedie:
virtual class Memory;
virtual function bit [31:0] read(bit [31:0] addr);
endfunction
virtual function void write(bit [31:0] addr, bit [31:0] data);
endfunction
endclass
class SRAM #(parameter AWIDTH=10) extends Memory;
bit [31:0] mem [1<<AWIDTH];
virtual function bit [31:0] read(bit [31:0] addr);
return mem[addr];
endfunction
virtual function void write(bit [31:0] addr, bit [31:0] data);
mem[addr] = data;
endfunction
endclass
Tento kód deklaruje třídu Memory, která má dvě virtuální metody read a write. Z třídy Memory je odvozena nová parametrizovatelná třída SRAM, která pro paměť typu RAM definuje pole 2AWIDTH dvaatřicetibitových vektorů jako paměťovou matici a definuje funkci virtuálních metod read a write. Metoda read vrací slovo z adresy addr, metoda write zapisuje slovo data na adresu addr. Třída SRAM tedy reprezentuje statickou paměť typu RAM s okamžitou odezvou.
Tiskni
Sdílej:
functional coverageTomu se říká "funkční pokrytí", ne?
Je to možné. Osobně jsem to ale nikdy neslyšel a takovýhle doslovný překlad se mi úplně nezdál. Možná bych tu mohl pro ostatní zmínit význam dvou pojmů používaných ve verifikaci:
Když o tom tak přemýšlím, tak pokrytí kódu a funkční pokrytí nejsou zas až tak špatné výrazy. Díky.