国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

淺談Verilog-95、Verilog-2001與System Verilog之間的區別

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

掃碼添加小助手

加入工程師交流群

發展歷史

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

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

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

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

Verilog-2001

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

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

wire [63:0] mydata = ‘bz;

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

/ / 一組實例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增加了對多維數組的支持。綜合工具對多維數組的綜合設置了一些限制。例如,XST支持的數組維數最多為2,不允許一次選擇多個數組元素。不能將多維數組傳遞給任務或函數。下面舉例說明如何描述一個256x16線網型元素的數組,寬度為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增加了對指數或冪運算符“**”的支持。在許多應用中,例如用于計算存儲器的深度,這是非常方便的。

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

下面舉例說明如何使用指數。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;

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

取而代之的是, Verilog-2001 標準中增加了一個新的’default_nettype 編譯器指令。如果該指令被賦值為“none“,則必須聲明所有1位線網型信號。公眾號: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標準被設計為一個統一的硬件設計、規范和驗證語言。這是一個大型標準,由幾個部分組成,包括設計規范方法、嵌入式說明語言、函數覆蓋、面向對象編程及約束。System Verilog的主要目標是建立統一的設計和驗證環境,兼具VerilogVHDL和硬件驗證語言的最好功能及編譯優勢。

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

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

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

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

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

面向對象編程(OOP)System Verilog可以更好地支持面向對象編程(OOP)。OOP通過建立帶自包含功能的數據結構而提高了抽象層次,這種數據結構允許數據封裝(encapsulation)隱藏實現細節和增強代碼的復用。

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

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

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

編輯:jq

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

    關注

    1660

    文章

    22410

    瀏覽量

    636255
  • IEEE
    +關注

    關注

    7

    文章

    417

    瀏覽量

    50013
  • Verilog
    +關注

    關注

    30

    文章

    1374

    瀏覽量

    114522
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73960

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Verilog HDL語法學習筆記

    Verilog HDL 語 言 最 初 是 作為 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后來被著名的 Cadence Design Systems 公司收購)模擬器產品開發的硬件建模語言。
    的頭像 發表于 03-04 15:04 ?2300次閱讀
    <b class='flag-5'>Verilog</b> HDL語法學習筆記

    FPGA 入門必看:Verilog 與 VHDL 編程基礎解析!

    很多開發者第一次接觸FPGA,都會有同樣的疑問:FPGA是硬件,不是軟件,怎么寫程序?答案就是用硬件描述語言(HDL),最常用的就是Verilog和VHDL。今天,我們就帶你入門,搞清楚FPGA編程
    的頭像 發表于 01-19 09:05 ?448次閱讀
    FPGA 入門必看:<b class='flag-5'>Verilog</b> 與 VHDL 編程基礎解析!

    請問測試用例.verilog文件是怎么生成的呢?

    在仿真時可以通過添加.verilog文件,直接讀入ITCM中,從而在仿真時我們就可以知道處理器的運行結果,例如打印hello_world字樣。
    發表于 11-11 07:56

    verilog testbench中運行測試用例時,運行到make run_test出錯怎么解決?

    按照胡老師書上的在verilog testbench中運行測試用例時,在運行到make run_test步驟時出錯,查了很多方案沒有解決。
    發表于 11-11 06:52

    你覺得哪個軟件寫verilog體驗最好?有什么優勢?

    你覺得哪個軟件寫verilog體驗最好?有什么優勢?請在評論區留言跟大家分享一下吧。
    發表于 11-10 07:47

    如果將蜂鳥的risc-v移植到其他的fpga中想實現一些外設功能有什么辦法?可以不用操作系統直接添加verilog代碼嗎?

    請問如果將蜂鳥的risc-v移植到其他的fpga中想實現一些外設功能有什么辦法?可以不用操作系統直接添加verilog代碼嗎?
    發表于 11-10 06:35

    請問verilog文件開頭部分的@00080000是什么意思?

    請問verilog文件開頭部分的@00080000是什么意思??
    發表于 11-06 08:10

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打開仿真頂層文件tb_top.v,存放在ITCM模塊里面的指令是通過readmemh函數讀入.verilog文件實現的: 下面通過對NucleiStudio IDE進行設置,實現將c
    發表于 11-05 07:07

    NucleiStudio如何生成.verilog文件和.dasm文件,以及對.dasm文件中自定義指令反匯編結果分析

    硬件設計需要.verilog文件來運行加NICE后的tb仿真、軟件組需要.dasm來確定自定義指令有無被正確編譯。今天,我們來分享一下NucleiStudio如何生成.verilog文件和.dasm
    發表于 10-24 06:33

    如何利用Verilog HDL在FPGA上實現SRAM的讀寫測試

    本篇將詳細介紹如何利用Verilog HDL在FPGA上實現SRAM的讀寫測試。SRAM是一種非易失性存儲器,具有高速讀取和寫入的特點。在FPGA中實現SRAM讀寫測試,包括設計SRAM接口模塊
    的頭像 發表于 10-22 17:21 ?4342次閱讀
    如何利用<b class='flag-5'>Verilog</b> HDL在FPGA上實現SRAM的讀寫測試

    SVA斷言的用法教程

    SVA是System Verilog Assertion的縮寫,即用SV語言來描述斷言。斷言是對設計的屬性的描述,用以檢查設計是否按照預期執行。
    的頭像 發表于 05-15 11:39 ?3358次閱讀
    SVA斷言的用法教程

    verilog模塊的調用、任務和函數

    在做模塊劃分時,通常會出現這種情形,某個大的模塊中包含了一個或多個功能子模塊,verilog是通過模塊調用或稱為模塊實例化的方式來實現這些子模塊與高層模塊的連接的.
    的頭像 發表于 05-03 10:29 ?1560次閱讀
    <b class='flag-5'>verilog</b>模塊的調用、任務和函數

    FPGA Verilog HDL語法之編譯預處理

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

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數字系統建模。現實生活中多用于專用集成電路
    的頭像 發表于 03-17 15:17 ?4294次閱讀
    一文詳解<b class='flag-5'>Verilog</b> HDL

    尋找verilog高手,有報酬

    我采集了一塊電路板正常工作時的數據,基于這些數據我想用EPM7128slc84-15(sys_clk:50Mhz)測試電路板,尋求一位verilog高手,有償
    發表于 03-08 16:31