Inhaltsverzeichnis

Tools

IDE

Projekt anlegen

Compilation

Files

Refinement process

= Verbesserungsprozess

Validation process

Libs haben unterschiedliche Komponenten

Phasen

Optimierung

Speed

Kritischer Pfad

Größter delay zwischen zwei FFs

Durchsatz

Wie viele kommen pro Zeit druch

* Lösungsschritte

  1. loop unrolling
  2. Pipelining (Mehr Register auf Kritischen Pfad)
    • Register ausbalancieren (FFs gleichmäsig verteilen)

Latenz

Zeit die ein Datum benötigt um komplett bearbeitet zu werden.

timing

CPU Tackt

Fläche

Simulation

  1. Analysis
    • Syntax
    • Semantik
    • unit ⇒ library
  2. Elaboration
    • Hierarchie/Baum aufbauen
    • components auflösen/instanziieren
    • component ⇒ Baum aus process & signal
  3. Execution
    1. initialization phase
      1. signal = default value
      2. process.start()
    2. Ende
      • Alle Prozesse wait
      • Keine Signaländerungen
      • Timeout, gesetzt von user

Testbench

library ieee;
use ieee.std_logic_1164.all;
 
entity testbench is
end testbench;
 
architecture tests of testbench is
    component testee
        port(...);
    end component;
 
    signal clk : std_logic;
begin
    instance1: testee
        port map(...);
 
    <stimuli>
end tests;

Stimuli

clkGen : process
begin
    clk <= '1';
    wait for 10 ns;
    clk <= '0';
    wait for 10 ns;
end process;

User Constraint File

Positionierung
NET INST PIN Example Kommentar
X X NET „sw<0>“ LOC = A1 | DRIVE = 2 | FAST;
X X INST „instanceName“ LOC = SLICE_X2Y2;
X X INST „instanceName“ LOC = SLICE_X2Y2:SLICE_X3Y6;
X X INST „instanceName“ LOC = RAMB16_x0_y6;
Timing
NET INST PIN Example Kommentar
X X X NET „reset“ TIG; Timing IGnore
X X X INST „ff“ TNM „ffs“; Timing NaMe: Element → Gruppe
TIMEGRP „superGroup“ = „subGroup1“ „subGroup2“; Timing Group: Gruppen → Gruppe
TIMESPEC „TS1“ = FROM „groupA“ TO „groupB“ 5 ns; Timing Specification:
Zeit zwischen Gruppen.
Muss mit „TS…“ anfangen!
Elektrisches
NET INST PIN Example Kommentar
X X NET „sw<0>“ IOSTANDARD = lvTTL;
X X NET „sw<0>“ IOSTANDARD = lvCMOS12;
X X NET „sw<0>“ IOSTANDARD = lvCMOS15;
X X NET „sw<0>“ IOSTANDARD = lvCMOS18;
X X NET „sw<0>“ IOSTANDARD = lvCMOS25;
X X NET „sw<0>“ IOSTANDARD = lvCMOS33;
X X NET „sw<0>“ DRIVE = {2,4,6,8,12,16,24}; Default: 12mA
X X NET „sw<0>“ FAST; More Power & Noise
X X NET „sw<0>“ SLOW; Flanken drosselung
X NET „sw<0>“ PULLUP;
X NET „sw<0>“ PULLDOWN;