5
1 BME-MIT FPGA labor Digitális rendszerek tervezése FPGA áramkörökkel Szimuláció és verifikáció BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium BME-MIT FPGA labor Szimuláció és verifikáció Szimulációs lehetıségek Viselkedési Funkcionális Fordítás után Leképezés után Idızítési Elhelyezés, huzalozás után Verifikáció Logikai analizátor ChipScope Pro Hardver co-szimuláció BME-MIT FPGA labor Szimuláció a ISE Webpack-ben Szimulátor szoftverek ISE simulator Modelsim NC-Sim VCS MX Szimulációs módszerek Tesztvektor – Grafikus – HDL Eredmény – Grafikus – Text BME-MIT FPGA labor Kétfajta szimulációs módszer Grafikus tesztvektor Grafikus eredmény BME-MIT FPGA labor Elsı minta BME-MIT FPGA labor Test Bench Waveform (TBW) generás Beállítások: Szimuláció hossza Idıalap Idızítések Elıkészítési idı Tartási idı Órajel 1 órajel több órajel kombinációs hálózat

Szimuláció és verifikáció - home.mit.bme.huhome.mit.bme.hu/~szanto/education/vimima13/FPGA_II_Szim.pdf · 2 BME-MIT FPGA labor TBW beállítása Jeltípusok -beállítás •

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

1

BME-MIT

FPGA labor

Digitális rendszerek tervezése FPGA áramkörökkel

Szimuláció és verifikáció

BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEMVILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR

MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK

Fehér BélaSzántó Péter, Lazányi János, Raikovich Tamás

BME MITFPGA laboratórium

BME-MIT

FPGA labor

Szimuláció és verifikációSzimulációs lehetıségek

– Viselkedési

– Funkcionális• Fordítás után

• Leképezés után

– Idızítési• Elhelyezés,

huzalozás után

Verifikáció– Logikai analizátor

– ChipScope Pro

– Hardver co-szimuláció

BME-MIT

FPGA labor

Szimuláció a ISE Webpack-ben

Szimulátor szoftverek• ISE simulator

• Modelsim

• NC-Sim

• VCS MX

Szimulációs módszerek• Tesztvektor

– Grafikus– HDL

• Eredmény– Grafikus– Text

BME-MIT

FPGA labor

Kétfajta szimulációs módszer

Grafikus tesztvektor

Grafikus eredmény

BME-MIT

FPGA labor

Elsı minta

BME-MIT

FPGA labor

Test Bench Waveform (TBW) generás

Beállítások:• Szimuláció hossza

• Idıalap

• Idızítések

– Elıkészítési idı

– Tartási idı

• Órajel

– 1 órajel

– több órajel

– kombinációs hálózat

2

BME-MIT

FPGA labor

TBW beállítása

Jeltípusok - beállítás• Clock - automatikus

• Bemenet - gerjesztés

• Kimenet - elvárt eredmény

BME-MIT

FPGA labor

TBW viselkedési szimuláció

BME-MIT

FPGA labor

Mi van a háttérben (HDL) I. ?

Modul dekraláció:

• Zárt doboz!

• Nincsenek be- és kimenetek

• A tesztelendı modul (UUT) példányosítása

• Összeköttetések reg ill. wireA file tartalma:

• Modul dekraláció

• UUT példányosítás

• Órajel generálás

• Tesztvektor generálás

• Eredményvektor ellenırzése

BME-MIT

FPGA labor

Mi van a háttérben II. ?

Órajel generálás:

BME-MIT

FPGA labor

Mi van a háttérben III. ?Tesztvektor generálás:

BME-MIT

FPGA labor

Mi van a háttérben IV. ?Eredményvektor ellenörzése:

3

BME-MIT

FPGA labor

Kétfajta szimulációs módszer

Grafikus tesztvektor

Grafikus eredmény

HDL tesztvektor

Grafikus eredmény

BME-MIT

FPGA labor

Egy minta példa`timescale 1ns / 1psmodule test;

reg clk;reg [3:0] cntr ;

always begin

clk = 1'b0;#5 clk = 1'b1; #5;end

initial begincntr=0;

# 100 cntr = 10;end

initial beginrepeat (5) begin

@(posedge clk);cntr <= cntr+1;

endend

initial begin$display("Time \t cntr"); $monitor("%t \t %d", $realtime, cntr);

end endmodule

Simulator is doing circuit

initialization process.Finished circuit initialization process

Time cntr

. 0 0

5000 1

15000 2

25000 3

35000 4

45000 5

100000 10

BME-MIT

FPGA labor

Initial - alwaysÓrajel generálás

• Always:

• Forever:

A teszt kód nem szintetizálható !!!

BME-MIT

FPGA labor

Initial blokk

• 0. idıpillanatban kezdıdik a végrehajtása

• Egyszer fut le

• Az „initial” blokkok egymással, és az „always” blokkokkal párhuzamosan mőködnek

• Az „initial” blokkon belüli késleltetések összeadódnak

0

1 2 0

10 35 40

initialbegin

a <= 0;#10 a <= 1;#25 a <= 2;#5 a <= 0;

end;

BME-MIT

FPGA labor

Késleltetések megadása

always @ (posedge clk)begin

y1 <= #5 in;y2 <= #5 y1;

end

always @ (posedge clk)begin

#5 y1 <= in;#5 y2 <= y1;

end

always @ (posedge clk)begin

y1 <= in;y2 <= y1;

end

`timescale 1ns/1ps

BME-MIT

FPGA labor

Ciklusok használatainitial begin

repeat (30) begin@(posedge CLK);#1 DATA_IN = $random;

endend

initial beginwhile (empty==1'b0) begin

@(posedge CLK);#1 read_fifo = 1'b1;

end

initialforever begin : clock_10ns

CLK = 1'b0;#5 CLK = 1'b1;#5;

end

always @(posedge stop_clock)if (stop_clock)

disable clock_10ns;parameter WIDTH=32;

reg [WIDTH-1:0] DATA;integer i;

initialfor (i=0; i<WIDTH; i=i+1)

DATA[i] = 1'b0;

4

BME-MIT

FPGA labor

Task-ok

task isa_wr (input [11:0] address, input [7:0] data);begin

isa_write <= 1;xisa_add <= address;isa_data <= data;

#33 xisa_iown <= 0;#165 xisa_iown <= 1;

...#165 isa_write <= 0;endendtask

ISA „write” ciklusISA „write” ciklus

reg [7:0] isa_data, temp;reg isa_write;

assign xisa_d = (isa_write) ? isa_data : 8'bz;

initial begin#200

isa_wr(12'h300, 8'hab);isa_wr(12'h300, 8'h10);isa_wr(12'h300, 8'h05);

isa_rd(12'h303, temp);end

ISA buszos eszköz teszteléseISA buszos eszköz tesztelése

Tristate

meghajtás

BME-MIT

FPGA labor

Szöveg formázása

%b Binary Value%h Hexadecimal Value%d Decimal Value%s String%c ASCII%f Real Value%e Exponential Value%o Octal Value%t Time%m Module Hierchical Name%v Strength

\t Tab\n Newline\\ Backslash%% Percent\„ Quote\<octal> ASCII representation

$display - Szöveg kiíratása + CR/LF$write - Szöveg kiírása$monitor - Változók nyomonkövetése

+$fdisplay - Fileba írás + CR/LF$fwrite - ...$fmonitor - ...

Hol használjuk?Hol használjuk?

Speciális karakterekSpeciális karakterek

Formátum karakterekFormátum karakterek

BME-MIT

FPGA labor

Adat / szöveg kiírása

initial begin#100000;$display(„Szimuláció vége: %t", $realtime");$stop;

end

initial$monitor(“Time %t: Out %d, $realtime, cntr);

always @(posedge check)$write(".");

reg[8*22:0] ascii_state;

initial$monitor("Current State is: %s", ascii_state);

always @(UUT.top.state_reg)case (UUT.top.state_reg)

2'b00 : ascii_state = "Reset";2'b01 : ascii_state = "Send";2'b10 : ascii_state = "Poll";2'b11 : ascii_state = "Receive";default: ascii_state = "ERROR: Undefined

State";endcase

Egyszeri / egyszerő kiírás + CR/LFEgyszeri / egyszerő kiírás + CR/LF

Kiírás CR/LF nélkülKiírás CR/LF nélkül

Folyamatos állapotfigyelésFolyamatos állapotfigyelés

Állapotváltozó figyeléseÁllapotváltozó figyelése

BME-MIT

FPGA labor

File mőveletek

integer outfile;initial begin

outfile = $fopen(outfile, "output.dat", "w");if (outfile == 0) begin

$display("Error!");$finish;

end$fdisplay (outfile, “Time - Counter");$fmonitor (outfile, "%t %h", $realtime, cntr);

#1000000;$fclose(outfile);

end

Állapotátmenetek fileÁllapotátmenetek file--ba mentéseba mentése

real number;

while (i>0) begini=$fscanf(number_file, "%f", number);$display("Numb is %f", number);@(posedge CLK);

end

Számok olvasása fileSzámok olvasása file--bólból

BME-MIT

FPGA labor

„Memória” file mőveletek

reg [31:0] prom_data[1023:0];initial$readmemb("mem_file_binary.dat", prom_data);

reg [31:0] prom_data[1023:0];initial$readmemh("mem_file_hex.dat", prom_data);

BinBináris állományáris állomány Hexadecimális állományHexadecimális állomány

1111000011110000 // Az elsı cím elsı 16 bitje 1010_0101_1010_0101 // A második cím elsı 16 bitje

@025 // Cím megadása11111111_00000000

Minta állományMinta állományLSBMSB

BME-MIT

FPGA labor

Egyéb...Assign Assign –– deassigndeassign -- $assign(reg) $assign(reg) -- $deassign(reg) $deassign(reg)

ForceForce –– releaserelease -- $force(reg/wire) $force(reg/wire) -- $release(reg/wire) $release(reg/wire)

Szimuláció leállításaSzimuláció leállítása -- $stop $stop

KilépésKilépés -- $finish$finish

VéletlenszámVéletlenszám -- $ random(seed)$ random(seed)

TípuskonverzióTípuskonverzió -- $signed(jelnév)$signed(jelnév)

-- $unsigned(jelnév)$unsigned(jelnév)

Real Real –– integerinteger -- $ rtoi(real)$ rtoi(real)

IntegerInteger-- realreal -- $ itor(integer)$ itor(integer)

pl. bithiba

elıállítása

5

BME-MIT

FPGA labor

Szimuláció és verifikációSzimulációs lehetıségek

– Viselkedési

– Funkcionális• Fordítás után

• Leképezés után

– Idızítési• Elhelyezés,

huzalozás után

Verifikáció– Logikai analizátor

– ChipScope Pro

– Hardver co-szimulációBME-MIT

FPGA labor

Logikai analizátor használata

sk

eso

r

• Tetszıleges belsı regiszter és vezeték kivezetése dedikált I/O lábokon át tüskesorra.→ IDİVISZONYOK!!

• Külsı logikai analizátor használata

• Nem igényel FPGA erıforrást (csak I/O-t)

• A max. frekvencia = I/O frekvencia

• Relatív nagy mintatár, sok jel megfigyelhetı belsı multiplexeléssel

BME-MIT

FPGA labor

ChipScope - „Belsı” logikai analizátor

• FPGA erıforrásból felépített analizátor

• Tetszıleges belsı regiszter és vezeték megfigyelése

• Max. frekvencia = logika sebessége

• Relatív kis mintatár (BRAM memória)

• A minták kiolvasása JTAG-en keresztül

• A chipscope alkalmazása

– 1, Trigger beállítása PC-n

– 2, Trigger esemény

– 3, Adatok mentése BRAM-ba

– 4, Adatok átvitele JTAG-en PC-re

Ve

zérl

ı

T

rig

ge

r

BME-MIT

FPGA labor

Xilinx System Generator

• Extra Xilinx FPGA specifikus komponensek a Matlab Simulink- hez

• Alkalmazási területek:

– A funkcionalitás ellenırzése modell szinten

– Funkcionalitás ellenırzése idızítés analízis alapján (Modelsim)

– Magasszintő modell bázisú FPGA konfiguráció generálása

– FPGA kód funkcionális ellenırzése

BME-MIT

FPGA labor

Összefoglalás

• A tesztelés, verifikáció a tervezési idı több 50%-a

– A feladat legfájdalmasabb része

• A korai hibafelderítés költséget takarít meg

– x1 - x10 - x100 – x1000 ….

• A szimuláció biztosítja a legrészletesebb képet

– Tetszıleges jel/esemény, tetszıleges pillanatban

– Tetszıleges megfigyelık, jelzık

– De csak szimuláció!

BME-MIT

FPGA labor

Összefoglalás

• A tesztelés, mérés az FPGA-val egyszerőbb

• Tesztkonfigurációk generálhatók, vizsgálhatók

• Szabad I/O-k esetén közvetlen hozzáférhetıség a belsı jelekhez

• Beágyazott „mérı” eszközök

– az FPGA szabad erıforrásaiból

– Logikai analizátor

– „szintetizálható teszt környezet”