一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談Verilog-95、Verilog-2001與System Verilog之間的區(qū)別

OpenFPGA ? 來(lái)源:OpenFPGA ? 作者:OpenFPGA ? 2021-06-21 14:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

發(fā)展歷史

1984年,Verilog開(kāi)始作為一種專(zhuān)用的硬件建模語(yǔ)言使用,取得了相當(dāng)大的成功。1990年,Cadence Design Systems公司將該語(yǔ)言面向公眾開(kāi)放,作為試圖與VHDL相抗衡的競(jìng)爭(zhēng)手段的一部分。1995年,Verilog成為IEEE標(biāo)準(zhǔn)1364-1995,也就是所謂的Verilog-95。

Verilog-95以后不斷演變,2001年成為IEEE的另一個(gè)標(biāo)準(zhǔn)1364-2001,即所謂的Verilog-2001。與過(guò)去的標(biāo)準(zhǔn)相比,它包含了很多擴(kuò)展,克服了原來(lái)標(biāo)準(zhǔn)的缺點(diǎn),并引入了一些新的語(yǔ)言特征。2005年,IEEE發(fā)布了1364-2005標(biāo)準(zhǔn),稱(chēng)為Verilog 2005。它修改了一些規(guī)范,并具有一些新的語(yǔ)言特征。

IEEE發(fā)布了一些System Verilog的標(biāo)準(zhǔn)。最新的標(biāo)準(zhǔn)是1800-2009,是在2009年發(fā)布的。System Verilog是Verilog的一個(gè)超集,旨在更好地支持設(shè)計(jì)驗(yàn)證功能,提高仿真性能,使語(yǔ)言變得更加強(qiáng)大、更易于使用。

Verilog-2001是大多數(shù)FPGA設(shè)計(jì)者主要使用的Verilog版本,得到了所有的綜合和仿真工具支持。

Verilog-2001

Xilinx 的 XST 和其他 FPGA 綜合工具都有一個(gè)選項(xiàng), 可啟用或禁用 Verilog-2001 標(biāo)準(zhǔn)。XST 使用-Verilog2001 命令行選項(xiàng), 而 Synplify 使用“ set_option-vlog_std v2001 ” 命令。下面簡(jiǎn)要概括了 Verilog-95 和 Verilog-2001 之間最主要的區(qū)別。

Verilog-2001 增加了對(duì)帶符號(hào)數(shù)補(bǔ)碼算術(shù)運(yùn)算的支持。而在 Verilog-95 中, 開(kāi)發(fā)者需要使用按位操作進(jìn)行帶符號(hào)數(shù)的運(yùn)算。Verilog-2001 中的相同功能可以使用內(nèi)置操作符和關(guān)鍵字進(jìn)行描述。在自動(dòng)擴(kuò)展‘bz 和’bx 賦值方面, Verilog-95 中的代碼:

wire [63:0] mydata = ‘bz;

將為 mydata [31:0]分配數(shù)值 z,并為 mydata [63:32]分配數(shù)值 0。而Verilog-2001將’bz和‘bx賦值擴(kuò)展到變量的全部寬度。generate結(jié)構(gòu)通過(guò)使用if/else/case語(yǔ)句,允許Verilog-2001控制實(shí)例和語(yǔ)句例化。通過(guò)使用generate結(jié)構(gòu),設(shè)計(jì)者可以很容易例化具有正確連接的一組實(shí)例。以下是使用generate結(jié)構(gòu)的幾個(gè)例子。

/ / 一組實(shí)例module adder array(input [63:0] a,b, output [63:0] sum);generategenvar ix; for (ix=0; ix《=7; ix=ix+l) begin : adder_array adder add (a[8*ix+7 -:8], b[8*ix+7 -:8], sum[8*ix+7 - :8]); endendgenerateendmodule // adder

//arraymodule adder(input [7:0] a,b, output [7:0] sum ); assign sum = a + b;endmodule // adder// if.。。。。。.else 語(yǔ)句module adder_array(input [63:0] a,b, output [63:0] sum);

parameter WIDTH = 4;

generateif (WIDTH 《 64) begin : adder_gen2 assign sum[63 -: (64-WIDTH)] =’b0; adder # (WIDTH) adder1(a[WIDTH-1 -:WIDTH], b[WIDTH-1 -:WIDTH],sum[WIDTH-1 -: WIDTH]);endelse begin:adder_default adder # (64) adder1(a, b, sum);endendgenerateendmodule // adder_array

// case statementmodule adder_array(input [63:0] a,b, output [63:0] sum);generatecase (WIDTH) 1: begin : ease1 assign sum[63 -: 63] = ‘b0; adder #(WIDTH) adder1(a[0], b[0], sum[0]); end default: begin : def adder # (64) adder1(a, b, sum); endendcaseendgenerateendmodule // adder_array

Verilog-2001增加了對(duì)多維數(shù)組的支持。綜合工具對(duì)多維數(shù)組的綜合設(shè)置了一些限制。例如,XST支持的數(shù)組維數(shù)最多為2,不允許一次選擇多個(gè)數(shù)組元素。不能將多維數(shù)組傳遞給任務(wù)或函數(shù)。下面舉例說(shuō)明如何描述一個(gè)256x16線網(wǎng)型元素的數(shù)組,寬度為4位。

wire [3:0] multi_dim_array [0:255][0:15];

更簡(jiǎn)潔的端口說(shuō)明如下所示。

/ / Verilog-95module adder(a,b,sum); input [7:0] a,b; output [7:0] sum;assign sum = a + b;endmodule // adder

// Verilog-2001module adder(input [7:0] a,b, output [7:0] sum ); assign sum = a + b;endmodule // adder

Verilog-2001增加了對(duì)指數(shù)或冪運(yùn)算符“**”的支持。在許多應(yīng)用中,例如用于計(jì)算存儲(chǔ)器的深度,這是非常方便的。

綜合工具支持指數(shù)時(shí)有一些限制。XST要求兩個(gè)操作數(shù)都是常數(shù),并且第二個(gè)數(shù)為非負(fù)數(shù)。數(shù)值x和z是不允許使用的。如果第一個(gè)操作數(shù)是2,則第二個(gè)數(shù)是可變的。公眾號(hào):OpenFPGA

下面舉例說(shuō)明如何使用指數(shù)。localparam BASE = 3, EXP = 4;assign exp_out2 = BASE**EXP;

/ / 該代碼綜合為移位寄存器assign exp_out1 = 2**exp_in;

使用逗號(hào)分隔敏感信號(hào)列表。// Verilog-95always @(a or b); sum = a + b;

/ / Verilog-2001always @(a,b); sum=a + b;always @(*); sum=a + b;

要求的線網(wǎng)型信號(hào)說(shuō)明Verilog-95 要求所有不是端口且被連續(xù)賦值驅(qū)動(dòng)的 1 位線網(wǎng)型信號(hào)必須要說(shuō)明。這一要求在 Verilog-2001 中已被刪除。

取而代之的是, Verilog-2001 標(biāo)準(zhǔn)中增加了一個(gè)新的’default_nettype 編譯器指令。如果該指令被賦值為“none“,則必須聲明所有1位線網(wǎng)型信號(hào)。公眾號(hào):OpenFPGA

/ / Verilog-95wire sum;assign sum = a+b;

// Verilog-2001wire sum; / / 不 需 要assign sum = a + b;

‘default_nettype nonewire sum; // 必須的assign sum = a + b;

System Verilog

System Verilog標(biāo)準(zhǔn)被設(shè)計(jì)為一個(gè)統(tǒng)一的硬件設(shè)計(jì)、規(guī)范和驗(yàn)證語(yǔ)言。這是一個(gè)大型標(biāo)準(zhǔn),由幾個(gè)部分組成,包括設(shè)計(jì)規(guī)范方法、嵌入式說(shuō)明語(yǔ)言、函數(shù)覆蓋、面向?qū)ο?a href="http://www.www27dydycom.cn/v/tag/1315/" target="_blank">編程及約束。System Verilog的主要目標(biāo)是建立統(tǒng)一的設(shè)計(jì)和驗(yàn)證環(huán)境,兼具VerilogVHDL和硬件驗(yàn)證語(yǔ)言的最好功能及編譯優(yōu)勢(shì)。

System Verilog將多樣化的工具和方法進(jìn)行合并,消除了軟件和硬件工程師在系統(tǒng)設(shè)計(jì)上的隔閡,以便共享成果。System Verilog中包含幾個(gè)現(xiàn)有Verilog規(guī)范的擴(kuò)展,用于減少代碼行數(shù),鼓勵(lì)設(shè)計(jì)復(fù)用,并提高仿真性能。

同時(shí),它還完全兼容以前的Verilog的各種版本。System Verilog得到多數(shù)商業(yè)模擬器的支持,包括ModelSim、VCS、NCSim等。System Verilog標(biāo)準(zhǔn)的可綜合部分能被Synplify和Precision綜合工具支持。設(shè)計(jì)綜合及驗(yàn)證環(huán)境經(jīng)常要使用System Verilog和Verilog語(yǔ)言編寫(xiě)。

頂層模塊既在Verilog中實(shí)現(xiàn),又在SystemVerilog中實(shí)現(xiàn)。這使得它與所有不支持System Verilog的FPGA綜合工具相兼容。該設(shè)計(jì)可以很容易地與System Verilog編寫(xiě)的驗(yàn)證庫(kù)集成在一起。以下簡(jiǎn)要概述System Verilog的一些獨(dú)特功能。公眾號(hào):OpenFPGA數(shù)據(jù)類(lèi)型

2個(gè)狀態(tài)的數(shù)據(jù)類(lèi)型接受數(shù)值0和1。4個(gè)狀態(tài)的數(shù)據(jù)類(lèi)型接受數(shù)值0、1、z和x。System Verilog提供了創(chuàng)建信號(hào)和變量的自定義分組,這類(lèi)似于C語(yǔ)言。自定義分組定義了以下功能:類(lèi)型定義、枚舉類(lèi)型、結(jié)構(gòu)、合并和靜態(tài)強(qiáng)制類(lèi)型轉(zhuǎn)換casting)。下面的例子中使用了幾個(gè)System Verilog的數(shù)據(jù)類(lèi)型。

bit x;enum {STATE1, STATE2, STATE3} state;typedef enum{ red=0,green,yellow } Colors;integer a,b; a=green*3 // 3賦值給a b = yellow+green;struct { bit [31:0] characteristic; bit [31:0] mantissa; } float_num;float_num.characteristic = 32’h1234_5678;float num.mantissa = 32‘h0000_0010;typedef union{ int u1; shortint u2;} my_union;

System Verilog 提供了強(qiáng)類(lèi)型功能,以避免困擾 Verilog 設(shè)計(jì)的多種解譯和條件競(jìng)爭(zhēng)。端口連接SystemVerilog提供了“.name”和隱含的“.*”方法來(lái)描述端口連接,這大大壓縮了代碼長(zhǎng)度。公眾號(hào):OpenFPGA

/ / Verilogadder_add (a,b,sum);// SystemVerilogadder_add (.a,.b,.sum);adder_add (。 *);

interface 和 modportSystem Verilog中的interface(接口)和modport(模塊端口)說(shuō)明模塊實(shí)例之間的端口列表和互連。下面給出一個(gè)簡(jiǎn)單的例子。

/ / 定 義 接 口interface adder_if; logic [7:0] a, b; logic [7:0] sum;endinterface: adder_if

module top;/ / 例 化 接 口 adder_if adder_if1(); adder_if adder_if2();/ / 將 接 口連接到模塊實(shí)例 adder add1(adder_if1); adder add2 (adder_if2);endmodulemodule adder(adder_if if);/ / 訪 問(wèn) 接 口 assign if.sum = if.a + if.b;endmodule / / adder

面向?qū)ο缶幊蹋∣OP)System Verilog可以更好地支持面向?qū)ο缶幊蹋∣OP)。OOP通過(guò)建立帶自包含功能的數(shù)據(jù)結(jié)構(gòu)而提高了抽象層次,這種數(shù)據(jù)結(jié)構(gòu)允許數(shù)據(jù)封裝(encapsulation)隱藏實(shí)現(xiàn)細(xì)節(jié)和增強(qiáng)代碼的復(fù)用。

約束、覆蓋和隨機(jī)度System Verilog為覆蓋驅(qū)動(dòng)驗(yàn)證(coverage-driven verification)、定向(directed)和約束隨機(jī)測(cè)試平臺(tái)(constrained random testbench)開(kāi)發(fā)提供了廣泛的支持。斷言斷言(assertion)通過(guò)在設(shè)計(jì)中設(shè)置多個(gè)觀測(cè)點(diǎn)進(jìn)行功能覆蓋。

通常,RTL設(shè)計(jì)者和驗(yàn)證工程師都會(huì)在設(shè)計(jì)中使用它。斷言既可以放在RTL代碼之內(nèi),也可以放在RTL代碼之外。放在里面使更新和管理更加容易,放在外面使代碼的可綜合和行為部分保持獨(dú)立。System Verilog提供斷言規(guī)范,可用于許多ASIC設(shè)計(jì)驗(yàn)證的環(huán)境中。

System Verilog斷言可用于設(shè)計(jì)的多個(gè)方面:變量說(shuō)明、條件語(yǔ)句、內(nèi)部接口和狀態(tài)機(jī)。公眾號(hào):OpenFPGA斷言得到了一些商業(yè)模擬器的支持,如ModelSim和VCS。System Verilog斷言規(guī)范的一小部分子集支持可綜合斷言。遺憾的是,只有極少數(shù)的FPGA設(shè)計(jì)工具支持可綜合斷言。其中的一個(gè)是Synopsys Identify Pro,它具有斷言綜合和調(diào)試功能。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1646

    文章

    22054

    瀏覽量

    618812
  • IEEE
    +關(guān)注

    關(guān)注

    7

    文章

    390

    瀏覽量

    48341
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112321
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70798

原文標(biāo)題:Verilog 版本:Verilog-95、Verilog-2001與System Verilog區(qū)別簡(jiǎn)談

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    verilog模塊的調(diào)用、任務(wù)和函數(shù)

    在做模塊劃分時(shí),通常會(huì)出現(xiàn)這種情形,某個(gè)大的模塊中包含了一個(gè)或多個(gè)功能子模塊,verilog是通過(guò)模塊調(diào)用或稱(chēng)為模塊實(shí)例化的方式來(lái)實(shí)現(xiàn)這些子模塊與高層模塊的連接的.
    的頭像 發(fā)表于 05-03 10:29 ?689次閱讀
    <b class='flag-5'>verilog</b>模塊的調(diào)用、任務(wù)和函數(shù)

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言和C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!熬幾g預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog HDL語(yǔ)言允許在程序中使用幾種特殊的命令(它們不是一般
    的頭像 發(fā)表于 03-27 13:30 ?634次閱讀
    FPGA <b class='flag-5'>Verilog</b> HDL語(yǔ)法之編譯預(yù)處理

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建?!,F(xiàn)實(shí)生活中多用于專(zhuān)用集成電路
    的頭像 發(fā)表于 03-17 15:17 ?2495次閱讀
    一文詳解<b class='flag-5'>Verilog</b> HDL

    Verilog中signed和$signed()的用法

    1、在verilog中有時(shí)會(huì)用signed修飾符來(lái)修飾定義的數(shù)據(jù),運(yùn)算的時(shí)候也會(huì)用$signed()任務(wù)來(lái)強(qiáng)制轉(zhuǎn)換數(shù)據(jù),那么signed的修飾是為什么呢,是為了區(qū)分有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的加法和乘法
    的頭像 發(fā)表于 02-17 17:47 ?668次閱讀
    <b class='flag-5'>Verilog</b>中signed和$signed()的用法

    淺談Verilog和VHDL的區(qū)別

    Verilog和VHDL是兩種廣泛使用的硬件描述語(yǔ)言(HDL),它們用于描述和模擬數(shù)字電路系統(tǒng)的行為和結(jié)構(gòu)。這兩種語(yǔ)言的主要作用是幫助工程師設(shè)計(jì)、仿真和驗(yàn)證集成電路(IC)和系統(tǒng)級(jí)芯片(SoC)中的硬件模塊。
    的頭像 發(fā)表于 02-17 14:20 ?1589次閱讀
    <b class='flag-5'>淺談</b><b class='flag-5'>Verilog</b>和VHDL的<b class='flag-5'>區(qū)別</b>

    Verilog 電路仿真常見(jiàn)問(wèn)題 Verilog 在芯片設(shè)計(jì)中的應(yīng)用

    在現(xiàn)代電子設(shè)計(jì)自動(dòng)化(EDA)領(lǐng)域,Verilog作為一種硬件描述語(yǔ)言,已經(jīng)成為數(shù)字電路設(shè)計(jì)和驗(yàn)證的標(biāo)準(zhǔn)工具。它允許設(shè)計(jì)師以高級(jí)抽象的方式定義電路的行為和結(jié)構(gòu),從而簡(jiǎn)化了從概念到硅片的整個(gè)設(shè)計(jì)流程
    的頭像 發(fā)表于 12-17 09:53 ?1209次閱讀

    Verilog 與 ASIC 設(shè)計(jì)的關(guān)系 Verilog 代碼優(yōu)化技巧

    Verilog與ASIC設(shè)計(jì)的關(guān)系 Verilog作為一種硬件描述語(yǔ)言(HDL),在ASIC設(shè)計(jì)中扮演著至關(guān)重要的角色。ASIC(Application Specific Integrated
    的頭像 發(fā)表于 12-17 09:52 ?1045次閱讀

    Verilog 測(cè)試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開(kāi)發(fā)指南

    Verilog測(cè)試平臺(tái)設(shè)計(jì)方法是Verilog FPGA開(kāi)發(fā)中的重要環(huán)節(jié),它用于驗(yàn)證Verilog設(shè)計(jì)的正確性和性能。以下是一個(gè)詳細(xì)的Verilog測(cè)試平臺(tái)設(shè)計(jì)方法及
    的頭像 發(fā)表于 12-17 09:50 ?1154次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語(yǔ)法和風(fēng)格 VerilogVerilog 的語(yǔ)法更接近于 C 語(yǔ)言,對(duì)于有 C 語(yǔ)言背景的工程師來(lái)說(shuō),學(xué)習(xí)曲線較平緩。它支持結(jié)構(gòu)化編程,代碼更直觀,易于
    的頭像 發(fā)表于 12-17 09:44 ?1719次閱讀

    如何自動(dòng)生成verilog代碼

    介紹幾種自動(dòng)生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?1042次閱讀
    如何自動(dòng)生成<b class='flag-5'>verilog</b>代碼

    Verilog硬件描述語(yǔ)言參考手冊(cè)

    一. 關(guān)于 IEEE 1364 標(biāo)準(zhǔn)二. Verilog簡(jiǎn)介三. 語(yǔ)法總結(jié)四. 編寫(xiě)Verilog HDL源代碼的標(biāo)準(zhǔn)五. 設(shè)計(jì)流程
    發(fā)表于 11-04 10:12 ?4次下載

    system verilog語(yǔ)言簡(jiǎn)介

    ICer需要System Verilog語(yǔ)言得加成,這是ICer深度的表現(xiàn)。
    發(fā)表于 11-01 10:44 ?0次下載

    Verilog語(yǔ)法中運(yùn)算符的用法

    verilog語(yǔ)法中使用以下兩個(gè)運(yùn)算符可以簡(jiǎn)化我們的位選擇代碼。
    的頭像 發(fā)表于 10-25 15:17 ?2586次閱讀
    <b class='flag-5'>Verilog</b>語(yǔ)法中運(yùn)算符的用法

    Verilog HDL的基礎(chǔ)知識(shí)

    本文繼續(xù)介紹Verilog HDL基礎(chǔ)知識(shí),重點(diǎn)介紹賦值語(yǔ)句、阻塞與非阻塞、循環(huán)語(yǔ)句、同步與異步、函數(shù)與任務(wù)語(yǔ)法知識(shí)。
    的頭像 發(fā)表于 10-24 15:00 ?1210次閱讀
    <b class='flag-5'>Verilog</b> HDL的基礎(chǔ)知識(shí)

    如何利用Verilog-A開(kāi)發(fā)器件模型

    Verilog-A對(duì)緊湊型模型的支持逐步完善,在模型的實(shí)現(xiàn)上扮演越來(lái)越重要的角色,已經(jīng)成為緊湊模型開(kāi)發(fā)的新標(biāo)準(zhǔn)。而且Verilog-A能夠在抽象級(jí)別和應(yīng)用領(lǐng)域中擴(kuò)展SPICE建模和仿真功能,因此學(xué)會(huì)
    的頭像 發(fā)表于 10-18 14:16 ?1368次閱讀
    如何利用<b class='flag-5'>Verilog</b>-A開(kāi)發(fā)器件模型