www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 芯片驗證工程師
[導讀]斷言的英文是Assertion,就是對一些設計屬性的推斷。大型的硬件設計中會有各種各樣的協(xié)議接口。這些協(xié)議接口定義中一般都會有include文件,這些include文件中包含了接口的斷言描述,主要用于協(xié)議的時序檢查。除了這種把斷言語句放到接口協(xié)議里還可以放到具體的design里面...

斷言的英文是Assertion,就是對一些設計屬性的推斷。

大型的硬件設計中會有各種各樣的協(xié)議接口。這些協(xié)議接口定義中一般都會有include文件,這些include文件中包含了接口的斷言描述,主要用于協(xié)議的時序檢查。

除了這種把斷言語句放到接口協(xié)議里還可以放到具體的design里面,也可以單獨做成一個module的checker,把module checker和設計bind在一起。

斷言可以用Verilog實現(xiàn),也可以用SystemVerilog Assertion(SVA)實現(xiàn)。由于要檢查時序,過程性語言Verilog并不是很好的選擇,一般會選擇描述性語言SVA實現(xiàn),SVA對時序的描述近乎完美。

本文講介紹一下SVA的簡單例子。如果想系統(tǒng)的學習SVA,可以買一本書《SystemVerilog Assertions 應用指南》。

方法1: 直接放到到design里面的方式如下。

//文件dut.v , dut很簡單,每個clk上升沿到來時對輸入a取反。`timescale 1ns/1nsmodule DUT (clk,a,b);input clk;input a;output b;reg b; always?@?(posedge?clk?)begin b<=~a;end`include "assertion.svh"endmodule
//文件 test.v`timescale 1ns/1nsmodule TOP;reg clk;reg a;wire b;always #5 clk=~clk;initial begin clk <=0; a <=1;#30?$finish;endDUT dut(.clk(clk),.a(a) ,.b(b));//bind TOP.dut dut_assertion dut_assertion_check(.a_(a),.b_(b),.clk_(clk));endmodule每個clk上升沿,如果a=0,則是空成功,不滿足第一個a=1的條件,b就不需要判斷是否等于1,直接判斷為成功。如果a=1,則對b進行判斷,b為1則為成功,否則斷言失敗。

//assertion.svh文件property check_p; @(posedge clk) a |->b;endpropertycheck_a : assert property (check_p);運行命令:irun -sv dut.v test.v

ERROR:ncsim:?*E,ASRTST (./assertion.svh,6):?(time 5 NS) Assertion TOP.dut.check_a has failed

ERROR現(xiàn)象符合預期。


方式2:單獨定義一個module 檢驗器,然后通過bind實現(xiàn)。

注釋DUT.v 中`include "assertion.svh",打開test.v中的bind。

Module檢驗器文件

module dut_assertion(a_,b_,clk_);input logic a_,b_,clk_;property check_p;@(posedge clk_) a_ |->b_;endproperty check_a : assert property (check_p);endmodule運行命令:

irun -sv dut.v test.v assertion_module.svERROR:ncsim: *E,ASRTST (./assertion_module.sv,12): (time 5 NS) Assertion TOP.dut.dut_assertion_check.check_a has failed

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉
關閉