色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

參數化接口和可重用VIP:第一部分

星星科技指導員 ? 來源:synopsys ? 作者:Aron Pratt ? 2023-05-29 10:30 ? 次閱讀

背景

基于SystemVerilog的驗證引入了接口的概念來表示設計模塊之間的通信。在其最基本的形式中,SystemVerilog 接口只是一個命名的信號束,可以通過模塊端口作為單個項目進行通信。然后,接收此接口的設計模塊可以通過此接口參考訪問信號。但是,接口的更高級別函數也可以提供更強類型的通信,以更好地表示設計意圖。以下是系統Verilog接口中可用的高階函數的子集:

可以通過使用時鐘塊和模塊端口在信號列表上執行訪問規則

函數和任務可用于封裝高階排序或訪問控制

初始塊和始終塊等進程可以添加功能

連續賦值語句還可以添加功能

斷言可以確保正確的集成

SystemVerilog 接口的一個非常重要的用途是將靜態設計元素連接到動態測試平臺元素。動態測試平臺元素需要訪問靜態設計元素才能采樣和驅動信號,但可重用的測試平臺元素無法訪問靜態設計元素,除非通過稱為虛擬接口的特殊構造。虛擬接口是測試平臺代碼中的接口句柄,可以與接口實例一起分配。虛擬接口是動態屬性,可以分配給不同測試平臺中的不同接口實例,從而提高可重用性。

設計可重用設計塊的常用技術是使用參數使設計塊的不同實例具有獨特的特征。例如,可以對模塊進行參數化,以允許在聲明模塊并提供參數值時定義數據總線寬度。SystemVerilog 接口也支持參數化,但參數化接口的使用在測試平臺端帶來了不可預見的復雜性。為了與賦值兼容,參數化虛擬接口必須專用于接口實例專用的相同值。除非采取預防措施,否則這可能會使一些非常丑陋的測試平臺代碼具有更丑陋的使用模型。

參數擴散:蠻力法

參數化虛擬接口引入的問題是,訪問它的測試平臺元素必須知道強類型接口。因此,當接口專用化尚未知時,無法編寫泛型類以使用參數化虛擬接口。此問題的一個解決方案是參數化訪問參數化虛擬接口的類。例如,可以使用 UVM 驅動程序必須使用的虛擬接口類型進行參數化。然而,這只是將問題向上移動了一層,因為現在實例化該參數化驅動程序的代理也必須參數化,以便它可以創建驅動程序的正確專用實例。這會不斷向上移動,直到您到達“知道”正在測試的特定專業化存在的頂層測試平臺組件。以下代碼段演示了此問題。

首先,我們定義參數化的虛擬接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
interface param_if#(int width = 8);
logic clk;
logic[width-1:0] data;
clocking active_cb @(posedge clk);
default input #1 output #1;
output data;
endclocking
modport active_mp (clocking active_cb);
endinterface
typedef virtual param_if param_vif

接下來,我們定義可重復使用的 VIP 代碼。此測試平臺代碼必須設計為可在參數化接口可以使用的任何環境中重用,因此還必須參數化VIP代碼本身,以便可以訪問正確的接口。以下代碼段演示必須如何參數化 UVM 驅動程序類和包含該驅動程序的代理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//=======================================================================
class param_driver#(type vif_t=param_vif) extends uvm_driver#(cust_data);
`uvm_component_param_utils(param_driver#(vif_t))
vif_t vif;
function void build_phase(uvm_phase phase);
if (!uvm_config_db#(vif_t)::get(this, "", "vif", vif))
`uvm_fatal("build", "A valid interface was not received.");
endfunction
endclass
//=======================================================================
class cust_agent#(type vif_t=param_vif) extends uvm_agent;
`uvm_component_param_utils(param_agent#(vif_t))
vif_t vif;
param_driver#(vif_t) param_driver;
function void build_phase(uvm_phase phase);
if (!uvm_config_db#(vif_t)::get(this, "", "vif", vif))
`uvm_fatal("build", "A valid interface was not received.");
uvm_config_db#(vif_t)::set(this, "param_driver", "vif", vif);
param_driver = param_driver#(vif_t)::type_id::create("param_driver", this);
endfunction
endclass

到目前為止,這看起來還不錯!它給類定義增加了一點復雜性,但不會太多。然而,在你檢查測試平臺必須如何訪問這些參數化類之前,這些問題不會變得明顯。以下段顯示了測試如何根據接口的參數化方式唯一地訪問 VIP 的每個實例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//=======================================================================
class cust_test extends uvm_test;
`uvm_component_utils(cust_test)
param_agent#(virtual param_if#(8)) param_agent8;
param_agent#(virtual param_if#(16)) param_agent16;
param_agent#(virtual param_if#(32)) param_agent32;
virtual function void build_phase(uvm_phase phase);
param_agent8 = param_agent#(virtual param_if#(8))::type_id::create("param_agent8", this);
param_agent16 = param_agent#(virtual param_if#(16))::type_id::create("param_agent16", this);
param_agent32 = param_agent#(virtual param_if#(32))::type_id::create("param_agent32", this);
endfunction
endclass
//=======================================================================
module test_top;
param_if#(8) if8();
param_if#(16) if16();
param_if#(32) if32();
initial begin
uvm_config_db#(virtual param_if#(8))::set(uvm_root::get(), "uvm_test_top.param_agent8", "vif", if8);
uvm_config_db#(virtual param_if#(16))::set(uvm_root::get(), "uvm_test_top.param_agent16", "vif", if16);
uvm_config_db#(virtual param_if#(32))::set(uvm_root::get(), "uvm_test_top.param_agent32", "vif", if32);
run_test("cust_test");
end
endmodule

如您所見,對 VIP 的每個引用都必須使用要使用的正確接口類型進行參數化。這不僅會影響VIP建設,還會影響回調注冊、工廠覆蓋等。這給測試平臺開發人員帶來了很大的負擔,并限制了這些環境的可重用性。

向驗證組件添加參數是可重用VIP的有效技術解決方案,但它使使用模型大大復雜化,并限制了測試平臺的可重用性。

審核編輯:郭婷

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

    關注

    33

    文章

    8685

    瀏覽量

    151655
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110243
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19205
收藏 人收藏

    評論

    相關推薦

    京東賣的最熱的:Labview寶典 第一部分

    由于限制每日只能傳20M,所以先傳第一部分,每天都傳。
    發表于 09-28 20:29

    保護您的 IP 核——第一部分軟 IP——前言

    保護您的 IP 核——第一部分軟 IP——前言 隨著全球硬件設計和制造過程的激增以及IP供應商之間的競爭,IP盜版/假冒、虛假所有權等威脅正在加劇。因此,保護?? IP 核設計的要求及其代表的專有
    發表于 02-23 11:59

    免調節中頻VCO的實現(第一部分)

    免調節中頻VCO的實現(第一部分)
    發表于 05-07 13:21 ?24次下載

    微型模塊電源產品第一部分

    微型模塊電源產品第一部分,有需要的下來看看
    發表于 03-17 17:43 ?0次下載

    GBT 20234.1-2011 第一部分

    電動汽車傳導充電用連接裝置第一部分,通用部分
    發表于 05-10 14:24 ?1次下載

    中國NB-IOT產業聯盟-第一部分問題清單-20160824

    中國NB-IOT產業聯盟-第一部分問題清單
    發表于 01-11 12:16 ?9次下載

    2012年PSoC數模混合設計培訓_第一部分

    2012年PSoC數模混合設計培訓_第一部分
    發表于 10-27 09:35 ?4次下載

    怎樣通過Altera 的設計商店找到并使用實例設計 (第一部分)

    怎樣通過Altera 的設計商店找到并使用實例設計 (第一部分)
    的頭像 發表于 06-11 17:19 ?1849次閱讀
    怎樣通過Altera 的設計商店找到并使用實例設計 (<b class='flag-5'>第一部分</b>)

    AN-388: 使用Σ-Δ轉換器—第一部分[中文版]

    AN-388: 使用Σ-Δ轉換器—第一部分[中文版]
    發表于 03-19 08:32 ?0次下載
    AN-388: 使用Σ-Δ轉換器—<b class='flag-5'>第一部分</b>[中文版]

    有時你需要點收獲第一部分

    有時你需要點收獲第一部分
    發表于 04-20 10:31 ?1次下載
    有時你需要<b class='flag-5'>一</b>點收獲<b class='flag-5'>第一部分</b>

    第一部分、硬件設計

    第一部分、硬件設計我把個硬件系統分為五個單元:電源單元、單片機單元、輸入單元、輸出單元、通信單元。如下圖:
    發表于 12-09 12:36 ?16次下載
    <b class='flag-5'>第一部分</b>、硬件設計

    《家用和類似用途電器的安全第一部分:通用要求》pdf

    《家用和類似用途電器的安全第一部分:通用要求》pdf
    發表于 01-07 11:50 ?3次下載

    生成任意量級偏置電流網絡(第一部分

    生成任意量級偏置電流網絡(第一部分
    發表于 11-03 08:04 ?1次下載
    生成任意量級偏置電流網絡(<b class='flag-5'>第一部分</b>)

    參數接口重用VIP:第三部分

    在本系列的第一部分中,介紹了SystemVerilog接口的基本概念,并描述了這些接口參數給測試平臺代碼帶來的問題。在第二
    的頭像 發表于 05-29 10:32 ?784次閱讀

    驅動ADC 第一部分

    電子發燒友網站提供《差驅動ADC 第一部分.pdf》資料免費下載
    發表于 11-23 16:36 ?0次下載
    差<b class='flag-5'>分</b>驅動ADC <b class='flag-5'>第一部分</b>
    主站蜘蛛池模板: 亚洲三级在线看| 小妇人电影免费完整观看2021| 国精产品一区一区三区有限 | 花蝴蝶高清影视视频在线播放| 哒哒哒高清视频在线观看| MD传媒在线观看佳片| 99手机在线视频| 99国产精品久久| 99久久久无码国产精品免费人妻| 中文字幕蜜臀AV熟女人妻| 亚洲国产cao| 亚洲精品第二页| 亚洲欧洲免费三级网站| 亚洲精品九色在线网站| 亚洲妈妈精品一区二区三区| 亚洲区视频在线观看| 一二三四在线高清中文版免费观看电影| 亚洲精品中文字幕在线| 亚洲欧美精品一中文字幕| 一个人HD高清在线观看免费视频| 伊人久久大香线蕉综合网站| 在线观看视频中文字幕| 最新精品国产| np高h肉文| 国产XXXXXX农村野外| 国产小视频国产精品| 幻女FREE性俄罗斯学生| 久久久无码精品亚洲日韩按摩| 快播黄色电影| 欧美动物交ideos| 日日噜噜夜夜狠狠扒开双腿 | yellow日本动漫高清| 高清mv视频免费观看| 国产婷婷午夜精品无码A片| 娇喘高潮教室h| 麻豆精品传媒一二三区| 碰超成人在线公开免费视频| 视频一区在线免费观看| 亚洲国产精品高清在线 | 久久亚洲AV成人无码动态图| 免费鲁丝片一级在线观看|