Verilog

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 30. juli 2020; checks kræver 18 redigeringer .
Verilog
Sprog klasse Hardwarebeskrivelsessprog
Dukkede op i 1983 - 1984
Forfatter Phil Moorby , Prabhu Goel
Filtypenavn _ .v
Blev påvirket C , Pascal [1] [2] og Ada [1]

Verilog , Verilog HDL ( eng.  Verilog Hardware Description Language ) er et hardwarebeskrivelsessprog, der bruges til at beskrive og modellere elektroniske systemer. Verilog HDL, ikke at forveksle med VHDL (konkurrerende sprog), er mest almindeligt anvendt i design, verifikation og implementering (f.eks. som VLSI ) af analoge, digitale og blandede elektroniske systemer på forskellige abstraktionsniveauer.

Udviklerne af Verilog har gjort sin syntaks meget lig den for C-sproget , hvilket gør det lettere at lære. Verilog har en præprocessor, der ligner C-præprocessoren, og de grundlæggende "hvis", "mens" kontrolkonstruktioner ligner også C-sprogkonstruktionerne af samme navn. Outputformateringskonventionerne er også meget ens (se printf ).

Det skal bemærkes, at hardwarebeskrivelsen skrevet på Verilog-sproget (såvel som i andre HDL -sprog) normalt kaldes programmer, men i modsætning til det almindeligt accepterede koncept for et program som en sekvens af instruktioner, definerer programmet her strukturen af systemet. Udtrykket "programudførelse" gælder heller ikke for Verilog-sproget.

Oversigt

Der er en undergruppe af Verilog sprog instruktioner kaldet synthesizable . Moduler skrevet i denne delmængde kaldes RTL ( register transfer level  ) .  De kan implementeres fysisk ved hjælp af CAD -syntese. CAD-data konverterer ifølge visse algoritmer den abstrakte Verilog-kildekode til en netliste  - en logisk ækvivalent beskrivelse bestående af elementære logiske primitiver (for eksempel AND, OR, NOT, triggers ), der er tilgængelige i den valgte VLSI-produktionsteknologi eller BMC og FPGA- programmering . Yderligere behandling af netlisten genererer til sidst fotomasker til litografi eller firmware til FPGA .

Historie

Oprettelse

Verilog blev skabt af Phil Moorby og Prabhu Goel i vinteren 1983-1984 på Automated Integrated Design Systems (siden 1985 Gateway Design Automation ) som et hardwaremodelleringssprog. I 1990 blev Gateway Design Automation købt af Cadence Design Systems . Cadence har rettighederne til Gateways Verilog og Verilog-XL simulatorlogiske simulatorer.

Verilog-95

Under VHDL-sprogets stigende popularitet tog Cadence beslutningen om at standardisere sproget. Cadence har frigivet Verilog til det offentlige domæne. Verilog blev indsendt til IEEE og godkendt som IEEE 1364-1995-standarden (ofte omtalt som Verilog-95).

Verilog 2001

Tilføjelser til Verilog-95-sproget er blevet vedtaget som IEEE 1364-2001 (eller Verilog-2001).

Verilog-2001 er en væsentlig opgradering fra Verilog-95. For det første tilføjede det understøttelse af signerede variabler (i tos komplementformat ). Tidligere skulle kodeforfattere implementere tegnoperationer ved hjælp af et stort antal bitvise logiske operationer. Den samme funktionalitet på Verilog-2001 er beskrevet af de indbyggede sprogoperatorer: + , - , / , * , >>> Fil I/O er blevet forbedret. For at forbedre kodernes læsbarhed er syntaksen blevet ændret en smule, såsom altid @* , omdefinering af navngivne parametre, deklaration af overskrifter for funktioner, opgaver og moduler i C-stilen.

Verilog-2001 er den mest brugte dialekt af sproget og understøttes af de fleste kommercielle elektroniske CAD-systemer (se EDA ).

Verilog 2005

Verilog 2005 (IEEE Standard 1364-2005) tilføjede mindre rettelser, specifikationsforklaringer og et par nye syntakser, såsom uwire nøgleordet .

En separat del fra standarden, Verilog-AMS , tillader simulering af analoge og analog-til-digitale enheder.

System Verilog

SystemVerilog er et supersæt af Verilog-2005, med mange nye funktioner til designverifikation og simulering.

Eksempel

Hej Verden! (kan ikke syntetiseres)

hovedmodul ; _ initial start $display ( "Hej verden!" ); $afslut ; slutmodul _

Verilog 2001 beskrivelse: to simple flip-flops forbundet i serie:

modul topniveau ( input clock , input reset , input d , output reg flop2 ); reg flop1 ; altid @ ( posedge reset , posedge ur ) if ( reset ) { flop1 , flop2 } <= 2 'b00 ; ellers begynder flop1 <= d ; flop2 <= flop1 ; end endmodule //toplevel

Standarder

  • IEEE Std 1364-1995 - den første standard
  • IEEE Std 1364-2001  - Verilog 2001 standard
  • IEEE 1364-2005 - opdateret standard
  • IEEE 1800-2005 , IEEE 1800-2012] - IEEE Standard for SystemVerilog
  • IEEE P1364  - Arbejdsgruppe 1364 - Tidligere udvikler af Verilog.
  • IEEE P1800  - Working Group 1800 - Udvikler af SystemVerilog og efterfølger til Working Group 1364.

Sprogkonstruktioner

Datatyper

Verilog indeholder to grundlæggende datatyper: wire og reg . Begge disse typer kan antage 4 mulige værdier ved simulering af et Verilog-program:

  • 0
  • en
  • X - "ukendt værdi". Denne værdi bruges kun til simulering, i rigtig hardware vil den være 0 eller 1.
  • Z - " høj modstandstilstand ", dvs. intet signal.

Ledningstypen bruges til at beskrive kredsløb, reg for registre og variable. Begge disse typer kan også bruges til at beskrive multi-bit data:

ledning w1 ; ledning [ 31 : 0 ] bus ; // 32-bit bus reg r1 ; reg [ 7 : 0 ] bitvektor ; // 8-bit register

Variabler af typen reg har en startværdi på 'X'. Kæder overfører værdier mellem registre. Hvis nettet ikke er forbundet til noget register, vil det have værdien 'Z'.

Verilog indeholder også arrays, der tillader hukommelsessimulering :

reg [ 31 : 0 ] hukommelse [ 0 : 1023 ]; // 1024 ord i hukommelsen, hvert ord indeholder 32 bit.

Derudover indeholder Verilog følgende datatyper:

  • heltal  - det samme som "reg[31:0]", mens operationerne tager højde for tegnet (mest signifikant bit)
  • ægte
  • tid
  • realtid

Indledende og altid

Verilog indeholder to slags blokke, der kan udføre beregninger: en "initial" blok og en "altid" blok.

Den "indledende" blok definerer, hvilke handlinger der skal udføres, når programmet starter. Denne blok kan ikke syntetiseres og bruges normalt til testformål. For eksempel:

modul testbænk ; regclock ; _ reg [ 31 : 0 ] in1 , in2 ; reg [ 63 : 0 ] ud ; // Testet modulmultiplikator mult ( ur , ind1 , ind2 , ud ); indledende start // Testdata. in1 = 4 ; in2 = 20 ; // Vent, indtil resultatet er klar. # 10 ; // Udskriv resultatet af beregningen. $display ( "result=%d" , ud ); $afslut (); slutmodul _

Et program kan indeholde flere "indledende" blokke, som alle udføres parallelt.

Operatører

Type Symboler Drift i gang
Bitvis ~ Inversion
& Bitvis OG
| Bitvis ELLER
^ Bitvis XOR
~^ eller ^~ Bitwise XNOR (EQU)
hjerne teaser ! IKKE
&& OG
|| ELLER
Reduktion & Reduceret OG
~& Reduceret NAND
| Reduceret ELLER
~| Reduceret NOR
^ Reduceret XOR
~^ eller ^~ Reduceret XNOR
Aritmetik + Tilføjelse
- Subtraktion
- 2's komplement
* Multiplikation
/ Division
** Eksponent (*Verilog-2001)
Holdning > Mere
< Mindre
>= Større end eller lig
<= Mindre end eller lig
== Boolesk lighed
!= boolesk ulige
=== 4-stats boolesk ligestilling
!== 4-stats boolean ikke ens
Flytte >> Logisk højreskift
<< Logisk skift til venstre
>>> Aritmetisk højreskift (*Verilog-2001)
<<< Aritmetisk venstreskift (*Verilog-2001)
Kobling { , } Kobling
kopiering {n{m}} Kopier m værdi n gange
Tilstand ? : Tilstand

Open source hardware ved hjælp af Verilog

Beskrivelser af åbne mikroprocessorer OpenSPARC T1, T2, S1 Core og OpenRISC er oprettet i Verilog-sproget . Deres kildekode er tilgængelig under LGPL- og GPL-licenserne .

Liste over programmer, der understøtter Verilog

  • Icarus Verilog  er en open source-  modellerings- og synteseapplikation. Kører på Linux , Windows , Mac OS X , FreeBSD og mere. projektside
  • VCS  - modellering og debugging miljø; virker under både Unix og Windows .
  • LogicSim  er et simulerings- og fejlfindingsmiljø til Windows .
  • Incisive HDL  - modellering og debugging miljø; virker under både Unix og Windows .
  • ModelSim  - modellering og debugging miljø; virker under både Unix og Windows .
  • Veritak  er en editor, integreret compiler/simulator, VHDL til Verilog-oversætter, der kører på Windows .
  • Verilator  er en open source højtydende Verilog compiler.
  • Verilog-Perl  er et sæt Perl-moduler til forbehandling og opbygning af andre værktøjer.
  • vmodel  er et open source Verilog-modelleringsværktøj i MATLAB baseret på Verilator.
  • Verilog til DMS er et sæt værktøjer til implementering af vilkårlige analyse- og transformationsmetoder i Verilog.
  • VSPCompiler  er et værktøj til at kompilere en syntetiseret RTL-beskrivelse i et C/C++/SystemC-bibliotek.
  • VTOC  er et værktøj til at kompilere en syntetiseret RTL-beskrivelse i et C++/SystemC-bibliotek.
  • Wave VCD Viewer  er et program til visning af VCD-filer. Verilog-simulatoren kan generere en VCD -fil, der indeholder simuleringsresultater. Wave VCD Viewer giver udvikleren mulighed for at se simuleringsresultater i form af tidsdiagrammer. Programmet kører under Windows .
  • GTKWave  er en open source tidsdiagramfremviser, der blandt andet giver dig mulighed for at se VCD-filer.
  • Design- og verifikationsværktøjer (DVT)  - IDE til SystemVerilog, Verilog og VHDL baseret på Eclipse .
  • TkGate  er et modellerings- og simuleringsværktøj baseret på Verilog.

Se også

Relaterede sprog

Litteratur

  • Solovyov VV Fundamentals af sproget til design af digitalt udstyr Verilog. - M .: Hotline - Telecom, 2014. - 208 s. - ISBN 978-5-9912-0353-1 .

Links

  1. 1 2 https://www.physi.uni-heidelberg.de/~angelov/VHDL/VHDL_SS09_Teil10.pdf
  2. (uspecificeret titel) - ISBN 9783486711509