在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2021-06-21 14:46 ? 次閱讀

發(fā)展歷史

1984年,Verilog開始作為一種專用的硬件建模語言使用,取得了相當大的成功。1990年,Cadence Design Systems公司將該語言面向公眾開放,作為試圖與VHDL相抗衡的競爭手段的一部分。1995年,Verilog成為IEEE標準1364-1995,也就是所謂的Verilog-95。

Verilog-95以后不斷演變,2001年成為IEEE的另一個標準1364-2001,即所謂的Verilog-2001。與過去的標準相比,它包含了很多擴展,克服了原來標準的缺點,并引入了一些新的語言特征。2005年,IEEE發(fā)布了1364-2005標準,稱為Verilog 2005。它修改了一些規(guī)范,并具有一些新的語言特征。

IEEE發(fā)布了一些System Verilog的標準。最新的標準是1800-2009,是在2009年發(fā)布的。System Verilog是Verilog的一個超集,旨在更好地支持設計驗證功能,提高仿真性能,使語言變得更加強大、更易于使用。

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

Verilog-2001

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

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

wire [63:0] mydata = ‘bz;

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

/ / 一組實例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 語句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增加了對多維數(shù)組的支持。綜合工具對多維數(shù)組的綜合設置了一些限制。例如,XST支持的數(shù)組維數(shù)最多為2,不允許一次選擇多個數(shù)組元素。不能將多維數(shù)組傳遞給任務或函數(shù)。下面舉例說明如何描述一個256x16線網(wǎng)型元素的數(shù)組,寬度為4位。

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

更簡潔的端口說明如下所示。

/ / 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增加了對指數(shù)或冪運算符“**”的支持。在許多應用中,例如用于計算存儲器的深度,這是非常方便的。

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

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

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

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

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

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

取而代之的是, Verilog-2001 標準中增加了一個新的’default_nettype 編譯器指令。如果該指令被賦值為“none“,則必須聲明所有1位線網(wǎng)型信號。公眾號: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標準被設計為一個統(tǒng)一的硬件設計、規(guī)范和驗證語言。這是一個大型標準,由幾個部分組成,包括設計規(guī)范方法、嵌入式說明語言、函數(shù)覆蓋、面向?qū)ο?a href="http://www.xsypw.cn/v/tag/1315/" target="_blank">編程及約束。System Verilog的主要目標是建立統(tǒng)一的設計和驗證環(huán)境,兼具VerilogVHDL和硬件驗證語言的最好功能及編譯優(yōu)勢。

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

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

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

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

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 提供了強類型功能,以避免困擾 Verilog 設計的多種解譯和條件競爭。端口連接SystemVerilog提供了“.name”和隱含的“.*”方法來描述端口連接,這大大壓縮了代碼長度。公眾號:OpenFPGA

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

interface 和 modportSystem Verilog中的interface(接口)和modport(模塊端口)說明模塊實例之間的端口列表和互連。下面給出一個簡單的例子。

/ / 定 義 接 口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();/ / 將 接 口連接到模塊實例 adder add1(adder_if1); adder add2 (adder_if2);endmodulemodule adder(adder_if if);/ / 訪 問 接 口 assign if.sum = if.a + if.b;endmodule / / adder

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

約束、覆蓋和隨機度System Verilog為覆蓋驅(qū)動驗證(coverage-driven verification)、定向(directed)和約束隨機測試平臺(constrained random testbench)開發(fā)提供了廣泛的支持。斷言斷言(assertion)通過在設計中設置多個觀測點進行功能覆蓋。

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

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

編輯:jq

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

    關注

    1629

    文章

    21736

    瀏覽量

    603419
  • IEEE
    +關注

    關注

    7

    文章

    382

    瀏覽量

    46998
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110101
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68616

原文標題:Verilog 版本:Verilog-95、Verilog-2001與System Verilog區(qū)別簡談

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

收藏 人收藏

    評論

    相關推薦

    Verilog 與 ASIC 設計的關系 Verilog 代碼優(yōu)化技巧

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

    Verilog 測試平臺設計方法 Verilog FPGA開發(fā)指南

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

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

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

    如何自動生成verilog代碼

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

    Verilog硬件描述語言參考手冊

    一. 關于 IEEE 1364 標準二. Verilog簡介三. 語法總結(jié)四. 編寫Verilog HDL源代碼的標準五. 設計流程
    發(fā)表于 11-04 10:12 ?0次下載

    system verilog語言簡介

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

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

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

    Verilog的版本有哪些

    電子發(fā)燒友網(wǎng)站提供《Verilog的版本有哪些.docx》資料免費下載
    發(fā)表于 05-31 11:29 ?0次下載

    Verilog到VHDL轉(zhuǎn)換的經(jīng)驗與技巧總結(jié)

    Verilog與VHDL語法是互通且相互對應的,如何查看二者對同一硬件結(jié)構(gòu)的描述,可以借助EDA工具,如Vivado,打開Vivado后它里面的語言模板后,也可以對比查看Verilog和VHDL之間的差異。
    的頭像 發(fā)表于 04-28 17:47 ?2494次閱讀
    <b class='flag-5'>Verilog</b>到VHDL轉(zhuǎn)換的經(jīng)驗與技巧總結(jié)

    verilog中input和output作用

    Verilog中,input和output用于定義模塊的輸入和輸出端口。它們是用于通信的關鍵元素,定義了模塊與其它模塊之間的數(shù)據(jù)傳輸接口。通過input和output端口,模塊之間可以互相傳遞數(shù)據(jù)
    的頭像 發(fā)表于 02-23 10:29 ?3195次閱讀

    verilog調(diào)用模塊端口對應方式

    Verilog是一種硬件描述語言(HDL),廣泛應用于數(shù)字電路設計和硬件驗證。在Verilog中,模塊是構(gòu)建電路的基本單元,而模塊端口對應方式則用于描述模塊之間信號傳遞的方式。本文將介紹
    的頭像 發(fā)表于 02-23 10:20 ?1776次閱讀

    verilog中initial和always的區(qū)別

    Verilog是一種硬件描述語言(HDL),用于設計和模擬數(shù)字電路。在Verilog中,關鍵字initial和always都是用于描述電路行為的特殊語句。它們被用來生成仿真模型,并控制模擬器的啟動
    的頭像 發(fā)表于 02-22 16:09 ?2921次閱讀

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務并返回一個值的可重用代碼塊。函數(shù)在
    的頭像 發(fā)表于 02-22 15:49 ?5705次閱讀

    verilog同步和異步的區(qū)別 verilog阻塞賦值和非阻塞賦值的區(qū)別

    Verilog中同步和異步的區(qū)別,以及阻塞賦值和非阻塞賦值的區(qū)別。 一、Verilog中同步和異步的區(qū)別 同步傳輸和異步傳輸是指數(shù)據(jù)在電路中
    的頭像 發(fā)表于 02-22 15:33 ?1737次閱讀

    verilog的135個經(jīng)典實例

    verilog的135個經(jīng)典實例
    發(fā)表于 02-02 10:17 ?14次下載
    主站蜘蛛池模板: 五月天男人的天堂| 久久草在线视频国产一| 爱爱天堂| 伊人久久亚洲综合天堂| 日本成人福利视频| 五月天婷婷免费视频| 91精品国产亚洲爽啪在线影院 | 亚洲福利视频一区二区| 四虎影院网址大全| 成人伊在线影院| 在线看黄网| 四虎影院久久| 182福利视频| 一区二区三区免费精品视频| 日韩三| 天天爽夜爽免费精品视频| 亚洲乱码卡一卡二卡三| 女人扒开腿让男人桶到爽| 日日爽夜夜爽| 综合激情网五月| 国产色婷婷| 欧美激情一欧美吧| 日韩毛片免费| 手机看片久久青草福利盒子| 饥渴少妇videos| 好硬好大好爽女房东在线观看| 国内精品手机在线观看视频| 亚洲国产日韩精品怡红院| 扒开双腿疯狂进出爽爽爽| 一区二区三区高清在线| 免费看日本大片免费| 九九人人| 上课被同桌摸下面做羞羞| 天天干夜夜操视频| 在线免费观看你懂的| xxxx欧美69免费| 羞羞漫画喷水漫画yy漫画| 久久精品视频国产| 日本人善交69xxx| 日本黄在线| 久久国产福利|