免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

SystemVerilog $cast深度解析:類型安全轉(zhuǎn)換與UVM驗(yàn)證實(shí)踐

SystemVerilog $cast深度解析:類型安全轉(zhuǎn)換與UVM驗(yàn)證實(shí)踐 1. 項(xiàng)目概述深入理解SystemVerilog中的$cast在SystemVerilogSV的世界里數(shù)據(jù)類型轉(zhuǎn)換是連接不同抽象層次、實(shí)現(xiàn)靈活設(shè)計(jì)的橋梁。無論是從驗(yàn)證平臺(tái)到設(shè)計(jì)接口還是從隨機(jī)化約束到記分板比對(duì)類型轉(zhuǎn)換無處不在。而$cast作為SV中功能最強(qiáng)大、也最容易被誤解的系統(tǒng)任務(wù)之一是處理面向?qū)ο缶幊蘋OP中動(dòng)態(tài)類型轉(zhuǎn)換的核心工具。它遠(yuǎn)不止是一個(gè)簡(jiǎn)單的“類型轉(zhuǎn)換函數(shù)”而是一個(gè)結(jié)合了編譯時(shí)類型檢查與運(yùn)行時(shí)類型安全的“守衛(wèi)者”。簡(jiǎn)單來說$cast主要用于處理類class對(duì)象的賦值特別是涉及父類基類和子類派生類的指針或句柄賦值。在SV的驗(yàn)證方法學(xué)如UVM中大量使用了繼承和多態(tài)$cast就是確保多態(tài)性能夠安全、正確實(shí)現(xiàn)的關(guān)鍵。如果你正在搭建基于類的驗(yàn)證環(huán)境或者在使用uvm_sequence_item、uvm_transaction等組件那么透徹理解$cast的用法是避免出現(xiàn)“空指針null引用”、“類型不匹配type mismatch”等詭異錯(cuò)誤的必修課。本文將從實(shí)際驗(yàn)證工程師的視角出發(fā)徹底拆解$cast的兩種用法、背后的原理、常見的應(yīng)用場(chǎng)景以及那些手冊(cè)上不會(huì)寫的“踩坑”經(jīng)驗(yàn)。無論你是剛剛接觸SV OOP特性的新手還是想厘清某些模糊概念的老手都能在這里找到可直接“抄作業(yè)”的實(shí)操指南和深度解析。2. $cast的核心原理與兩種用法解析要掌握$cast必須先理解SV中類句柄賦值的基本規(guī)則。在面向?qū)ο笾凶宇惥浔x值給父類句柄是安全的向上類型轉(zhuǎn)換因?yàn)樽宇悓?duì)象包含了父類的所有屬性和方法。反之父類句柄賦值給子類句柄向下類型轉(zhuǎn)換則存在風(fēng)險(xiǎn)因?yàn)楦割惥浔赡軐?shí)際指向一個(gè)父類對(duì)象而該對(duì)象并不具備子類特有的成員。$cast就是為了安全地執(zhí)行這種“向下類型轉(zhuǎn)換”或“側(cè)向類型轉(zhuǎn)換”如兄弟類之間而生的。它有兩種調(diào)用形式任務(wù)task形式和函數(shù)function形式。這兩種形式看似相似但行為邏輯和適用場(chǎng)景有本質(zhì)區(qū)別用錯(cuò)了地方就會(huì)導(dǎo)致仿真錯(cuò)誤或功能失效。2.1 函數(shù)形式安全的類型檢查與賦值函數(shù)形式的$cast語法是success $cast(dest_handle, src_handle);。它的執(zhí)行邏輯是一個(gè)“原子操作”先檢查后賦值。檢查階段系統(tǒng)會(huì)檢查src_handle當(dāng)前指向的對(duì)象運(yùn)行時(shí)類型是否與dest_handle的類型編譯時(shí)類型兼容。所謂兼容是指src_handle指向的對(duì)象類型是dest_handle類型的同類或者是其派生類子類。賦值階段只有當(dāng)檢查通過兼容時(shí)系統(tǒng)才會(huì)將src_handle賦值給dest_handle。此時(shí)dest_handle和src_handle指向同一個(gè)物理對(duì)象。返回值函數(shù)返回一個(gè)整型值通常用bit或int接收。賦值成功返回1真失敗返回0假。關(guān)鍵點(diǎn)在于無論成功與否dest_handle在函數(shù)調(diào)用前的值都不會(huì)被改變除非賦值成功。這種“無副作用”的特性使得函數(shù)形式非常適合用在條件判斷中進(jìn)行安全的類型探測(cè)。class Animal; virtual function void make_sound(); $display(Some generic animal sound); endfunction endclass class Dog extends Animal; function void bark(); $display(Woof! Woof!); endfunction virtual function void make_sound(); bark(); endfunction endclass class Cat extends Animal; function void meow(); $display(Meow~); endfunction endclass Animal animals[$]; Dog dog_ref; Cat cat_ref; bit cast_ok; initial begin animals.push_back(Dog::new()); // 隊(duì)列里放一個(gè)Dog對(duì)象 animals.push_back(Cat::new()); // 隊(duì)列里放一個(gè)Cat對(duì)象 foreach(animals[i]) begin // 嘗試將Animal句柄轉(zhuǎn)換為Dog句柄 cast_ok $cast(dog_ref, animals[i]); if (cast_ok) begin $display(Element %0d is a Dog., i); dog_ref.bark(); // 安全調(diào)用Dog特有方法 end else begin $display(Element %0d is NOT a Dog., i); // 此時(shí)dog_ref保持原值可能是null end end end在上面的例子中第一次循環(huán)i0時(shí)animals[0]實(shí)際指向Dog對(duì)象與dog_ref類型兼容$cast成功dog_ref被賦值并可以調(diào)用bark()。第二次循環(huán)i1時(shí)animals[1]指向Cat對(duì)象與Dog類型不兼容$cast失敗返回0dog_ref的值保持不變?nèi)绻笆莕ull現(xiàn)在還是null程序不會(huì)崩潰。注意函數(shù)形式的$cast是唯一推薦在UVM及大多數(shù)驗(yàn)證場(chǎng)景中使用的方式。因?yàn)樗踩⒖煽卦试S你優(yōu)雅地處理類型轉(zhuǎn)換失敗的情況而不是讓仿真直接報(bào)錯(cuò)停止。2.2 任務(wù)形式強(qiáng)制轉(zhuǎn)換與運(yùn)行時(shí)錯(cuò)誤任務(wù)形式的$cast語法是$cast(dest_handle, src_handle);沒有返回值。它的邏輯是直接嘗試賦值失敗則報(bào)錯(cuò)。如果src_handle指向的對(duì)象與dest_handle類型兼容則賦值成功。如果不兼容仿真器會(huì)立即產(chǎn)生一個(gè)運(yùn)行時(shí)錯(cuò)誤run-time error通常會(huì)導(dǎo)致仿真中止。這相當(dāng)于一個(gè)“斷言”操作你認(rèn)為這次轉(zhuǎn)換必須成功如果失敗了就是一個(gè)需要立刻關(guān)注的致命問題。Animal my_animal; Dog my_dog; initial begin my_animal Dog::new(); // 向上轉(zhuǎn)換總是安全的 // 我們知道m(xù)y_animal實(shí)際是Dog所以用任務(wù)形式強(qiáng)制轉(zhuǎn)回來 $cast(my_dog, my_animal); // 此句會(huì)成功執(zhí)行 my_dog.bark(); // 可以調(diào)用 my_animal Animal::new(); // 現(xiàn)在my_animal指向一個(gè)純Animal對(duì)象 // 危險(xiǎn)強(qiáng)制將Animal轉(zhuǎn)為Dog $cast(my_dog, my_animal); // 此句將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤仿真可能中止。 end任務(wù)形式因其“霸道”的特性在通用代碼中很少使用。它通常只出現(xiàn)在一些非常確定的場(chǎng)景比如在工廠factory覆蓋或配置機(jī)制中你已經(jīng)從其他途徑百分百確認(rèn)了對(duì)象的實(shí)際類型。但在驗(yàn)證中“確定”往往是相對(duì)的因此我強(qiáng)烈建議優(yōu)先使用函數(shù)形式。2.3 核心區(qū)別與選用原則為了更清晰地對(duì)比我們將其總結(jié)成表格特性函數(shù)形式success $cast(dest, src);任務(wù)形式$cast(dest, src);行為先檢查兼容性成功才賦值直接嘗試賦值失敗則報(bào)錯(cuò)返回值有1成功/0失敗無對(duì)dest影響僅成功時(shí)改變成功時(shí)改變失敗時(shí)產(chǎn)生錯(cuò)誤錯(cuò)誤處理溫和通過返回值控制強(qiáng)硬直接運(yùn)行時(shí)錯(cuò)誤適用場(chǎng)景通用場(chǎng)景。需要安全地探測(cè)和處理不同類型如遍歷異構(gòu)容器、處理配置對(duì)象、實(shí)現(xiàn)類型泛化操作。特例場(chǎng)景。當(dāng)你確信轉(zhuǎn)換必須成功且失敗屬于不可恢復(fù)的系統(tǒng)錯(cuò)誤時(shí)。例如在測(cè)試啟動(dòng)時(shí)加載一個(gè)預(yù)期存在的特定組件配置。推薦度★★★★★ (首選)★☆☆☆☆ (慎用)選用原則一句話總結(jié)除非你能拍著胸脯保證轉(zhuǎn)換絕對(duì)成功且失敗不可接受否則一律使用函數(shù)形式。3. $cast在驗(yàn)證中的典型應(yīng)用場(chǎng)景與實(shí)操理解了原理我們來看看$cast在真實(shí)的SystemVerilog驗(yàn)證尤其是UVM環(huán)境中是如何大顯身手的。這些場(chǎng)景幾乎每天都會(huì)遇到。3.1 場(chǎng)景一處理uvm_object的通用容器如uvm_queue或動(dòng)態(tài)數(shù)組在UVM中我們經(jīng)常需要存儲(chǔ)和傳遞各種類型的交易transaction或配置對(duì)象。為了通用性容器通常使用基類uvm_object或uvm_sequence_item的句柄。當(dāng)從容器中取出對(duì)象使用時(shí)就必須用$cast將其轉(zhuǎn)換回具體的類型。實(shí)操示例在記分板Scoreboard中比對(duì)交易假設(shè)我們的DUT處理兩種包EthPacket和IPPacket它們都繼承自u(píng)vm_sequence_item。記分板需要根據(jù)包類型進(jìn)行不同的比對(duì)邏輯。class my_scoreboard extends uvm_scoreboard; uvm_component_utils(my_scoreboard) uvm_tlm_analysis_fifo #(uvm_sequence_item) exp_fifo; uvm_tlm_analysis_fifo #(uvm_sequence_item) act_fifo; function new(string name, uvm_component parent); super.new(name, parent); exp_fifo new(exp_fifo, this); act_fifo new(act_fifo, this); endfunction virtual task run_phase(uvm_phase phase); uvm_sequence_item exp_item, act_item; EthPacket exp_eth, act_eth; IPPacket exp_ip, act_ip; bit cast_ok; forever begin exp_fifo.get(exp_item); act_fifo.get(act_item); // 嘗試將收到的item轉(zhuǎn)換為EthPacket cast_ok $cast(exp_eth, exp_item); if (cast_ok) begin // 轉(zhuǎn)換成功說明是EthPacket那么act_item也應(yīng)該是 cast_ok $cast(act_eth, act_item); if (!cast_ok) begin uvm_error(TYPE_ERR, Expected EthPacket but got other type!) continue; end // 執(zhí)行EthPacket特有的比對(duì)邏輯 compare_eth_packet(exp_eth, act_eth); end else begin // 不是EthPacket嘗試轉(zhuǎn)換為IPPacket cast_ok $cast(exp_ip, exp_item); if (cast_ok) begin cast_ok $cast(act_ip, act_item); if (!cast_ok) begin uvm_error(TYPE_ERR, Expected IPPacket but got other type!) continue; end // 執(zhí)行IPPacket特有的比對(duì)邏輯 compare_ip_packet(exp_ip, act_ip); end else begin uvm_error(TYPE_ERR, Received unknown packet type!) end end end endtask // ... compare_eth_packet和compare_ip_packet的具體實(shí)現(xiàn) endclass實(shí)操心得成對(duì)轉(zhuǎn)換在記分板中從exp_fifo和act_fifo取出的對(duì)象應(yīng)該是同一類型。所以對(duì)其中一個(gè)轉(zhuǎn)換成功后務(wù)必對(duì)另一個(gè)進(jìn)行相同的轉(zhuǎn)換檢查這是保證比對(duì)邏輯正確的前提。錯(cuò)誤恢復(fù)當(dāng)$cast失敗時(shí)通過uvm_error報(bào)告并continue是一種穩(wěn)健的做法。這避免了因?yàn)橐粋€(gè)類型錯(cuò)誤而阻塞整個(gè)記分板任務(wù)。在某些嚴(yán)格場(chǎng)景下你也可以選擇uvm_fatal來立即終止測(cè)試。3.2 場(chǎng)景二在Sequence中創(chuàng)建并隨機(jī)化特定類型的Item有時(shí)一個(gè)通用的Sequence需要根據(jù)配置產(chǎn)生不同類型的交易。$cast在這里用于將基類句柄指向新創(chuàng)建的子類對(duì)象以便調(diào)用子類的隨機(jī)化方法。class vip_sequence extends uvm_sequence #(uvm_sequence_item); uvm_object_utils(vip_sequence) string packet_type ETH; // 可通過config_db配置 virtual task body(); uvm_sequence_item tr; EthPacket eth_tr; IPPacket ip_tr; repeat(10) begin // 根據(jù)類型創(chuàng)建不同的交易對(duì)象 if (packet_type ETH) begin eth_tr EthPacket::type_id::create(eth_tr); if (!eth_tr.randomize()) uvm_error(RAND_ERR, EthPacket randomize failed) tr eth_tr; // 向上轉(zhuǎn)換賦值給基類句柄 end else if (packet_type IP) begin ip_tr IPPacket::type_id::create(ip_tr); if (!ip_tr.randomize()) uvm_error(RAND_ERR, IPPacket randomize failed) tr ip_tr; // 向上轉(zhuǎn)換 end // 使用基類句柄發(fā)送itemdriver會(huì)通過$cast識(shí)別具體類型 uvm_send(tr) end endtask endclass在這個(gè)例子中$cast并沒有直接出現(xiàn)但理解“向上轉(zhuǎn)換”tr eth_tr;是安全的這一點(diǎn)很重要。Driver端在收到tr后需要像場(chǎng)景一那樣使用$cast來將其還原為具體類型才能訪問其中的具體數(shù)據(jù)域。3.3 場(chǎng)景三訪問UVM配置數(shù)據(jù)庫(kù)uvm_config_db中的對(duì)象從uvm_config_db獲取的是一個(gè)通用的uvm_object句柄。要使用其具體功能必須進(jìn)行向下轉(zhuǎn)換。class my_agent extends uvm_agent; uvm_component_utils(my_agent) my_agent_config cfg; // 這是一個(gè)具體的配置類繼承自u(píng)vm_object virtual function void build_phase(uvm_phase phase); super.build_phase(phase); // 從config_db獲取配置對(duì)象 if (!uvm_config_db #(uvm_object)::get(this, , cfg, cfg)) begin uvm_warning(CFG, No config found, creating default.) cfg my_agent_config::type_id::create(cfg); cfg.randomize(); end // 注意get()的第四個(gè)參數(shù)類型是uvm_object但實(shí)際存儲(chǔ)的是my_agent_config // 這里發(fā)生了隱式的向上轉(zhuǎn)換不get函數(shù)本身需要類型匹配。 // 更常見的寫法是直接使用具體類型接口 // if (!uvm_config_db #(my_agent_config)::get(this, , cfg, cfg)) ... // 這樣可以避免后續(xù)的$cast。 endfunction endclass避坑指南對(duì)于配置對(duì)象最佳實(shí)踐是直接使用其具體類型作為uvm_config_db::get和uvm_config_db::set的模板參數(shù)。這樣可以避免額外的$cast操作并在編譯期就進(jìn)行類型檢查更安全。上面的例子中如果使用uvm_config_db #(my_agent_config)::get(...)則cfg直接就是正確的類型。僅在處理非常通用的、類型在運(yùn)行時(shí)才確定的配置時(shí)才需要先以u(píng)vm_object獲取再$cast。3.4 場(chǎng)景四實(shí)現(xiàn)“克隆clone”或“復(fù)制copy”函數(shù)在自定義的uvm_object派生類中實(shí)現(xiàn)copy或clone函數(shù)時(shí)需要將輸入?yún)?shù)基類句柄轉(zhuǎn)換為自己類型的句柄以便訪問成員變量。class MyTransaction extends uvm_sequence_item; uvm_object_utils(MyTransaction) int addr; int data; // 實(shí)現(xiàn)copy函數(shù) virtual function void do_copy(uvm_object rhs); MyTransaction rhs_; // 關(guān)鍵步驟將輸入的uvm_object句柄rhs轉(zhuǎn)換為MyTransaction類型 if (!$cast(rhs_, rhs)) begin uvm_fatal(CAST_ERR, do_copy: rhs argument is not a MyTransaction type) return; end super.do_copy(rhs); // 調(diào)用父類的copy // 復(fù)制本類成員 this.addr rhs_.addr; this.data rhs_.data; endfunction endclass這是UVM框架中一個(gè)非常經(jīng)典的$cast用法。do_copy的函數(shù)簽名是固定的參數(shù)類型為uvm_object。為了訪問MyTransaction特有的addr和data字段我們必須先將rhs安全地轉(zhuǎn)換過來。這里使用任務(wù)形式$cast并配合uvm_fatal是合理的因?yàn)榘凑誙VM約定傳入do_copy的對(duì)象必須是同一類型如果轉(zhuǎn)換失敗意味著框架使用錯(cuò)誤屬于致命問題。4. 深入原理$cast與虛方法、多態(tài)性的協(xié)同$cast的強(qiáng)大離不開SystemVerilog對(duì)多態(tài)性的支持而多態(tài)性的核心是虛方法virtual methods。理解它們?nèi)绾螀f(xié)同工作能讓你寫出更靈活、更健壯的代碼。虛方法表VMT與動(dòng)態(tài)綁定當(dāng)一個(gè)類句柄調(diào)用虛方法時(shí)具體執(zhí)行哪個(gè)方法實(shí)現(xiàn)是由該句柄實(shí)際指向的對(duì)象類型在運(yùn)行時(shí)決定的而不是由句柄的聲明類型決定的。這就是動(dòng)態(tài)綁定。仿真器通過對(duì)象內(nèi)部的虛方法表來查找正確的方法地址。$cast的作用就是讓我們獲得一個(gè)類型更具體的句柄從而能夠訪問子類特有成員父類句柄無法訪問子類中新增的變量或非虛函數(shù)。$cast成功后新的句柄就可以訪問這些成員。消除方法調(diào)用的歧義對(duì)于子類重寫override的虛方法無論用父類句柄還是子類句柄調(diào)用效果都一樣動(dòng)態(tài)綁定。但對(duì)于子類新增的同名非虛函數(shù)只有用子類句柄才能調(diào)用到。$cast可以幫助你調(diào)用到正確版本。class Base; virtual function void display(); $display(Base::display); endfunction function void show(); // 非虛函數(shù) $display(Base::show); endfunction endclass class Extended extends Base; int extra_field 100; virtual function void display(); // 重寫虛函數(shù) $display(Extended::display, extra_field%0d, extra_field); endfunction function void show(); // 隱藏hide父類非虛函數(shù)不是重寫 $display(Extended::show); endfunction function void extra_method(); // 子類特有方法 $display(Extended::extra_method); endfunction endclass Base b_h; Extended e_h; bit ok; initial begin e_h new(); b_h e_h; // 向上轉(zhuǎn)換安全 // 多態(tài)性虛方法調(diào)用看對(duì)象 b_h.display(); // 輸出: Extended::display, extra_field100 // 非虛函數(shù)調(diào)用看句柄類型 b_h.show(); // 輸出: Base::show (因?yàn)閎_h類型是Base) e_h.show(); // 輸出: Extended::show // 訪問子類特有成員不行 // b_h.extra_field 200; // 編譯錯(cuò)誤 // b_h.extra_method(); // 編譯錯(cuò)誤 // 使用$cast獲得子類句柄 ok $cast(e_h, b_h); // 這里會(huì)成功因?yàn)閎_h實(shí)際指向Extended對(duì)象 if (ok) begin e_h.extra_field 200; // 現(xiàn)在可以訪問了 e_h.extra_method(); // 可以調(diào)用了 e_h.show(); // 輸出: Extended::show end end這個(gè)例子清晰地展示了display是虛函數(shù)通過父類句柄b_h調(diào)用時(shí)實(shí)際執(zhí)行的是子類Extended的實(shí)現(xiàn)。show是非虛函數(shù)通過b_h調(diào)用的是Base版本的show通過e_h調(diào)用的是Extended版本的show。這被稱為“隱藏”hiding不是多態(tài)。只有通過$cast得到的子類句柄e_h才能訪問extra_field和調(diào)用extra_method。重要經(jīng)驗(yàn)在設(shè)計(jì)類時(shí)如果你期望子類能夠改變某個(gè)方法的行為并且希望通過基類句柄調(diào)用時(shí)體現(xiàn)這種改變一定要將該方法聲明為virtual。否則像show()方法那樣通過基類句柄調(diào)用的永遠(yuǎn)是基類的版本這常常是初學(xué)者實(shí)現(xiàn)多態(tài)時(shí)遇到的坑。5. 常見問題、調(diào)試技巧與高級(jí)用法即使理解了原理在實(shí)際使用$cast時(shí)還是會(huì)遇到各種問題。下面是一些常見陷阱和解決思路。5.1 問題一$cast失敗但我覺得對(duì)象類型應(yīng)該匹配這是最令人困惑的情況。可能的原因有句柄為nullsrc_handle是null。$cast會(huì)失敗。始終在轉(zhuǎn)換前或轉(zhuǎn)換后檢查句柄是否為空。if (src_h null) begin uvm_warning(CAST, Source handle is null, skipping cast.) end else begin ok $cast(dst_h, src_h);對(duì)象類型不匹配你以為的對(duì)象類型和實(shí)際類型不符。尤其是在使用工廠factory覆蓋或通過復(fù)雜路徑傳遞對(duì)象后。調(diào)試技巧使用$typename()系統(tǒng)函數(shù)或UVM的get_type_name()方法打印對(duì)象的實(shí)際類型。uvm_info(DBG, $sformatf(Actual type of obj: %s, src_h.get_type_name()), UVM_LOW) // 或者 $display(Type is: %s, $typename(src_h));類定義未編譯或作用域問題確保目標(biāo)類dest_handle的類型在當(dāng)前作用域內(nèi)可見且已編譯。有時(shí)在包package或不同的編譯單元中需要正確的導(dǎo)入import語句?;煜熬幾g時(shí)類型”和“運(yùn)行時(shí)類型”$cast檢查的是src_handle指向的對(duì)象的運(yùn)行時(shí)類型是否與dest_handle的聲明類型兼容。請(qǐng)?jiān)俅位仡櫟?章的原理。5.2 問題二使用$cast后修改一個(gè)句柄指向的對(duì)象另一個(gè)也變了這不是bug這是特性$cast執(zhí)行的是句柄賦值不是對(duì)象復(fù)制。轉(zhuǎn)換成功后dest_handle和src_handle指向的是內(nèi)存中的同一個(gè)對(duì)象。通過任何一個(gè)句柄修改對(duì)象內(nèi)容另一個(gè)句柄看到的內(nèi)容也會(huì)改變。Animal a_h; Dog d_h; a_h new(); // 假設(shè)Animal有字段‘a(chǎn)ge’ a_h.age 5; // 假設(shè)這里有一個(gè)從Animal到Dog的合法轉(zhuǎn)換實(shí)際不可能僅為說明 // ok $cast(d_h, a_h); // d_h.age 10; // $display(a_h.age); // 如果轉(zhuǎn)換合法且指向同一對(duì)象這里會(huì)輸出10如果你需要的是對(duì)象的獨(dú)立副本應(yīng)該使用對(duì)象的clone()或copy()方法而不是$cast。5.3 問題三能否用$cast轉(zhuǎn)換非類類型比如int轉(zhuǎn)real或者枚舉轉(zhuǎn)字符串不能。$cast是專門為類class類型和動(dòng)態(tài)數(shù)組dynamic arrays匹配設(shè)計(jì)的。對(duì)于內(nèi)置數(shù)據(jù)類型如int,real,string或靜態(tài)數(shù)組、枚舉、結(jié)構(gòu)體SV提供了其他轉(zhuǎn)換機(jī)制靜態(tài)類型轉(zhuǎn)換使用type(expression)如real_val real(int_val);。這是在編譯時(shí)完成的不會(huì)進(jìn)行運(yùn)行時(shí)檢查。系統(tǒng)函數(shù)$itor(),$rtoi(),$sformatf()等用于特定類型間轉(zhuǎn)換。枚舉與字符串枚舉類型有name()方法可以獲取其字符串名稱。從字符串轉(zhuǎn)換回枚舉通常需要自定義函數(shù)或使用uvm_enum_wrapper等工具類。流操作符{{}}和{{}}可以用于將數(shù)據(jù)打包成比特流或從比特流解包實(shí)現(xiàn)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的序列化和轉(zhuǎn)換。重要區(qū)別$cast關(guān)注的是對(duì)象在繼承關(guān)系中的類型安全而內(nèi)置數(shù)據(jù)類型的轉(zhuǎn)換關(guān)注的是數(shù)據(jù)值的重新解釋或計(jì)算。5.4 高級(jí)用法配合uvm_factory和類型覆蓋Type Override在UVM中工廠模式允許在運(yùn)行時(shí)用子類類型替換父類類型。$cast在這里扮演了最終將通用句柄“還原”為具體子類句柄的角色。// 假設(shè)有基類交易BaseTr和其子類SpecialTr BaseTr b_tr; SpecialTr s_tr; // 在測(cè)試的build_phase中將BaseTr類型覆蓋為SpecialTr set_type_override_by_type(BaseTr::get_type(), SpecialTr::get_type()); // 在某個(gè)component中通過工廠創(chuàng)建“BaseTr”對(duì)象 b_tr BaseTr::type_id::create(b_tr); // 工廠實(shí)際創(chuàng)建的是SpecialTr對(duì)象 // 為了訪問SpecialTr的特有字段需要$cast if ($cast(s_tr, b_tr)) begin // 現(xiàn)在可以安全使用SpecialTr的特有功能了 s_tr.special_config 1; end else begin // 如果沒有類型覆蓋這里cast會(huì)失敗 uvm_info(CAST, Object is not of type SpecialTr, UVM_MEDIUM) end這種模式在構(gòu)建高度可配置的驗(yàn)證環(huán)境時(shí)非常有用。測(cè)試用例可以通過類型覆蓋在不修改原始代碼的情況下將通用組件替換為特化組件。5.5 性能考量與使用建議性能開銷$cast涉及運(yùn)行時(shí)類型信息RTTI查詢比簡(jiǎn)單的句柄賦值有額外開銷。但在驗(yàn)證環(huán)境中這點(diǎn)開銷與仿真和事務(wù)處理的開銷相比通常微不足道。不要過早優(yōu)化正確性和代碼清晰度優(yōu)先。減少不必要的$cast如果代碼中某個(gè)路徑上對(duì)象的類型是確定的就應(yīng)該直接使用該類型的句柄避免先賦給基類句柄再$cast回來。例如在driver中如果只處理一種交易就直接聲明該交易類型的req。使用uvm_coreservice_t的get_type()比較在需要頻繁進(jìn)行類型判斷時(shí)如大型異構(gòu)容器可以先比較類型標(biāo)識(shí)符再進(jìn)行$cast可能比直接$cast失敗更高效。if (src_h.get_type_name() MyPacket) begin // 然后再進(jìn)行$cast ok $cast(my_pkt, src_h); end6. 總結(jié)與最佳實(shí)踐清單經(jīng)過以上長(zhǎng)篇累牘的剖析我們可以將$cast的精髓和最佳實(shí)踐濃縮為以下幾點(diǎn)這也是我在多年驗(yàn)證工作中總結(jié)出的“生存法則”首選函數(shù)形式幾乎在所有情況下都使用success $cast(dst, src);這種帶有返回值的形式。它安全允許你優(yōu)雅地處理類型未知的情況。轉(zhuǎn)換后必檢查無論是檢查返回值success還是檢查轉(zhuǎn)換后的句柄是否為null這都是必須的防御性編程步驟。理解“同一對(duì)象”牢記$cast成功后新舊句柄指向同一對(duì)象。修改其一另一同步變化。需要副本時(shí)用copy()或clone()。區(qū)分轉(zhuǎn)換與多態(tài)$cast用于獲取類型特定的句柄以訪問特有成員。虛方法調(diào)用多態(tài)用于通過基類接口調(diào)用子類實(shí)現(xiàn)。兩者目的不同常結(jié)合使用。善用調(diào)試工具當(dāng)$cast行為不符合預(yù)期時(shí)第一時(shí)間用$typename()或get_type_name()打印對(duì)象的實(shí)際運(yùn)行時(shí)類型這是最直接的診斷手段。減少作用域盡量避免讓一個(gè)句柄在過大的代碼范圍內(nèi)傳遞和多次$cast。盡可能在需要具體類型的地方使用具體類型的句柄。UVM配置優(yōu)先強(qiáng)類型使用uvm_config_db時(shí)盡量使用具體類型作為模板參數(shù)如#(my_config)避免使用通用的#(uvm_object)再加$cast這樣編譯器能提供更好的類型安全檢查。不要濫用$cast不是萬能的類型轉(zhuǎn)換工具。它只用于類繼承體系內(nèi)的安全向下轉(zhuǎn)換。對(duì)于其他數(shù)據(jù)類型轉(zhuǎn)換請(qǐng)使用語言提供的其他機(jī)制。最后我個(gè)人最大的體會(huì)是對(duì)$cast的恐懼和濫用往往源于對(duì)SV面向?qū)ο髾C(jī)制和UVM框架理解的不深。當(dāng)你真正把類、繼承、多態(tài)、句柄這些概念內(nèi)化后$cast就會(huì)從一個(gè)神秘的“黑盒子”變成一個(gè)順手且可靠的“工具”。下次在代碼中寫下$cast時(shí)不妨花一秒想想“我為什么要在這里轉(zhuǎn)換我知道src實(shí)際是什么嗎轉(zhuǎn)換失敗了我的程序會(huì)怎樣” 想清楚這三個(gè)問題你的代碼健壯性就會(huì)大大提升。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99热99| 开心婷婷五月| 天天爽天天| 婷婷午夜综合| 开心五月婷婷| 超碰婷婷色| 婷婷六月丁香开心深深爱| 丁香五月玖玖| 激情综合啪啪啪| 久久色这里只有精品| 男同91| 人人玩人人橾| 激情丁香五月| 日本99热| 欧美丁香六月激情视频| CAOBIBI| 五月天激情小说欧美激情| 思思99热| 91超级碰碰碰| 丁香社区婷婷五月| 成人五月天丁香| 狠狠搞狠狠操| 五月丁香六月婷婷色日| 婷婷五月天受日本法律保护| 丁香五月婷综合| 狠狠操狠狠操AV| 91色色色18| 五月丁香六月婷婷网| 久久五月婷综合网| 色综合区| 99资源人人| 久婷婷婷| 亚洲欧美999| 51XX午夜影福利| 九九精品大香蕉| 激情人妻综合| 色情丁香五月婷婷精品| 六月丁香色色| 五月六月伦理| 亭亭社区五月天| 操逼六区| 狠狠草网| 91综合在线视频| 99久久久99久久91熟女| 成人网站免费在线播放| 久久精热| 色欲久久久久| 九色色| 丁香色六月婷婷| 日韩性爱AV| 9月色婷婷| 久久人妻人人| 99热这里是精品| 天天爽天天摸人妻综合网| 久热这里精品免费| 婷婷五月天高清无码| 天天爱天天做天天日| 欧美情色一区| 热久久色| 狠爱婷色| 久婷婷| 五月婷天堂视频| 天天日天天久久青青| 91狠狠色丁香婷婷综合久久| 91 影音先锋| 五月婷婷激情| 丁香五月天影院| 丁香五月天堂网| 大香蕉久热| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 五月天综合视频| 天天激情欧美美女| 欧美黄色AA片哗啦啦啦| 日日鲁鲁鲁夜夜爽爽狠狠视频97| av亚洲国产小电影| 性做爰A片免费视频A片直播| 精品九九网| 97大香蕉五月天| 91碰碰碰| 久久五月婷婷视频| 久青青久| 九九激情| 国产毛片精品一区二区色欲黄A片| 大香蕉九操| 五月天成人综合| 丁香狠狠色婷婷| 亚洲1区| 天天操夜夜操| 万月丁香狠狠爱| 国产高潮A片羞羞视频涩涩| 日韩欧美一级大黄网站| 91fuliwang| 欧美日韩中文国产一区发布| 色婷婷AⅤ| 色婷久九| 五月婷婷色播视频| 天天摸天天舔天天天天爽| 久久怕怕视频| 亚洲精品久久久久久久久久吃药| 久99热| 99无码精品| www超碰| 黄急一级视频| 高清无码.com| 激情五月天偷拍综合网| 大香蕉AV电影在线| 热99精品视频观看| 亚洲AV无码久久精品色欲| 韩国三级五月天婷婷。| 亚洲成人av在线播放| 97色色色色色| 丁香五月自拍| 久久久久网站| 国产精品人人妻人人爽| 久热在线中文字幕色999舞| 天天艹| 5月丁香婷婷激情网| 人妻视频在线| 蜜桃婷婷狠狠久久综合| 天天爽综合| 伊人狠狠干| a在线观看| 99re热视频这里只精品| 六月婷欧美| 婷婷五月天成人基地| 玖玖在线视频| 91色五月| 五月丁香六月香香蕉| 久久五月天综合| 7777久久亚洲中文字幕| 色婷婷色久综| 欧美日韩99| 五月激情婷婷偷拍| 黄色中文字目| 狠狠五月丁香色婷| 午夜九九电影| 青草视频在线播放| 金桔一区二区ab地址| 六月婷婷五月天| 激情内射人妻1区2区3区| 任你日视频| 一區四區歐美日韓| 国产XXXX搡XXXXX搡麻豆| 国产精典视频在线观看| 91精品久久久久久| 蜜臀AV在线成人| 天堂综合久久 | 欧美日韩一区二区三区四区| 五月婷婷丁香在线视频| 国产九月婷婷| 99国产视频网| 91chinese 在线| 天天搽天天射| 九热视频| 五月婷婷六月丁香| 婷婷舔| 91超碰人人操| 5月婷婷性视频| 精品一二三区久久AAA片| 五月婷婷啪啪网| 久热 91| 国产亚洲99久久| 99操碰| 激情五月丁香激情综合网| 五月综合激情| 我爱大香蕉| 婷婷伊人网| 五月天婷婷影院| 色爱99| 激情综合网激情五月婷婷| 婷婷色香六月综合激情| 一区二区你懂的| 五月丁香啪啪拍| 亚洲激情网| 秋霞电影一级黄| 色色操| 久久丁香五月婷婷激情综合网| 91干视频| 精品综合久久久久久五月天| 玖玖99精品视频| 五月婷婷激情| 99热e| 青青草激情网| 99色色色色| 亚洲av无码精品色午夜| 91操碰| 天天做天天干天天综合网| 五月婷婷六月天| 欧美亚洲婷婷五月| 97人人搞| 色色婷婷综合| 女力报到正好爱上你| 激情五月婷婷五月丁香五月开心五月| AV堂狠狠干| 久久久99精品免费观看| 情色五月天网站| 狠狠色婷婷7| 亞洲自怕| 婷婷永久在线| 丁香五月激情五月开心五月| 天天 青草 制服丝袜 在线| 777精品久无码人妻蜜桃| 99精品福利视频| 五月丁香激情四射| 亚洲成人AV电影网| 丁香五月影院| 五月丁香在线观看| 精品99爱免费视频在线观看| 丁香五月婷婷啪| 人妻熟人中文字幕一区二区| 91操熟女| 亚洲婷婷激情综合激情999精品| 开心六月丁香五月婷婷| 婷婷丁香宗合888| 99激情| 99视频精品在线| 人人操Av| 久碰视频| 久久婷婷五月综合网| 啪啪99| 乱轮A片| aa久久| 九月婷婷人人操人人舔人人爱| 超碰人人色| 99在线亚洲| 亚洲成人色五月天| 久久综合中文| 大胆伊人久久| 黄色av网站在线免费播放| 色色日本| 亚洲国产色色| 精久久色| 热99这里只有精品视频| 99re这里只有精品国产99| 五月婷婷综合影院| 99精品国产在热久久| 9月色婷婷| 婷婷六月花| 亚洲性视频| www.91AV.com| 丁香五月婷综合| 性做久久久久久久免费看| 思思99久久| 五月婷婷花| 99热免费网站| 七七九九色色| www·五月天| 久久九九re热| 涩九九九九| 久久久久久18| 玖玖婷婷色五月| 综合六月久久| 爱狠射| 六月五月天婷婷涩播在线| 亚洲高清在线| 人妻啪啪啪| 欧美婷婷日本| 岛国av网站| 欧美色五月| 9久热在线视频精品| 色亭亭五月天丁香综合AV - 百度 - 百度| 精品五月天| 婷婷激情五月综合基地| 婷婷无码视频| 五月丁香六月婷婷成人电影| 99久久久免费| 91一起操| 91中文狠狠综合| 无码免费人妻A片AAA毛片西瓜 | 永久无码色| 婷婷永久在线| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 婷婷日本色| 亚洲色频| 亚洲旡码| 五月激情综合婷婷| 色色综合网络| 日本超碰在线| 成人国产欧美大片一区| 亚洲视频在线观看区| 香蕉曰比| 色婷婷中文在线| 激情另类综合| 日批在线看| 色五月开心开心五月激情五月| 五月婷庭丁香在线| 国产成人亚洲综合A∨婷婷| 六月综合婷婷开心伊人| 九九热最新地址| 婷婷另类小说| 亚洲综合碰| 久久在线92| 久久9精品| 色六月天天激情综合网| 天天天天爽爽天干| 另类在线| 欧美五月婷婷综合| 色五月婷婷基地| 久久婷婷五月国产色综合激情| 婷婷五月天激情在线观看 | 五月婷婷 六月丁香| 丁香综合网| 久久婷婷人人| 日韩成人中文| 97超碰人人操| 99久久九九| 91无码视频| 99热精品在线观看| 七七色色综合| 五月六月激情| 天天做天天爱天天爽| 久久婷婷九月国产精品| 色五月综合网| 久久五月婷综合网| 99操逼视频| AV中文在线| 久久91久久精品久久| 9热精品| WWW.久久久久久久| 蜜桃五月天色| 色婷五月天| 天堂网啪啪| 天干干夜夜操| 九九综合精品| 久久99精品日本| 丁香六月色情| 五月天伊人网| 久99综合婷婷| 色色亚洲五月天| 91啪啪视频| 成人资源在线| 日本熟女内射| 欧美顶级少妇做爰HD| 九九人人精品| 久久久久人妻精品| 男人的天堂av俄罗斯热| 丁香五月久久综合| 欧美性猛交 XXXX 乱大交| 狠狠爱五月婷婷| 天天综合色综合| 另类激情综合| 亚洲精品成人片在线播| 婷婷五月天精品| 色婷婷亚洲婷婷| 九九精品婷| 开心久久爱五月天| 五月天综合在线| 激情综合国产| 婷婷五月激情网| 97碰碰草| 久久五月激情| 波多野结衣成人作品在线| 激情婷婷人妻| 国产精品18久久久| 天天噜天天爱| 51国精产品自偷自偷综合 | 色播五月丁香婷婷| 国精产品一区一区三区免费视频 | WWW.桔色成人.COM| 五月丁香在线国产| 九九九九精品精| 日韩五月婷婷| 亚洲精品又粗又大又爽A片| www久久99| 亚洲综合五月天婷婷丁香| 婷婷激情四射五月天| 韩国久久少妇视屏| 久操大屁股女人av| 五月婷婷激情五月| 色5月婷婷色| 九九性爱网| 色播播婷婷| 色呦呦美女| 桃色激情五月天| 五月激情网站| 亚洲激情网站无码| 色天堂在线| 久re热视频| 99re热在线视频观看| 亚洲一区二区无遮挡A片| 99re8在这里只有精品| 一区二区三区XXXXXX| 五月丁香婷婷AV| 中文成人在线| 夜夜躁婷婷AV| 丁香五月天欧洲在线| CHINESE熟女老女人HD视频| 综合xx网| 涩玖玖免费视频| 人人操av| 五月天婷婷六月激情网| 国内自拍97在线| 五月天六月婷婷| 久久久性爱视频| 五月婷婷激情综合网| 夜夜骑操AV| 艳妇野外情欲放荡HD| 激情九九综合网| 99资源人人| 97狠狠色| 色五月成人在线| 欧美 日韩 成人| 超碰国产在线| 丁香五月色五月婷婷宗合| 39视频第二区| 亚洲精品视频在线| 久久五月丁香| 久久五月天激情视频| 99日热在线视频| 欧美性爱中文字幕| 精品人妻久久久| 人妖色AV色综合| 激情久久久| 五月丁香另类网| 久久免费丁香| 五月婷婷色欲| 婷香五月激情视频| 青青草成人网| 五月丁香婷中文字幕| 日韩伊人大香蕉| 亚州操人在线视频| 综合久久人妻| 亚洲久久视频| 热99精品视频五月| 久草五月丁香婷婷综合| 99热这里是精品| 天天综合亚洲| xx色综合| 五月婷色色| 色婷婷伊人激情在线观看| WWW,五月| 婷婷五月色播放| www.狠狠操.co m| 丁香五月婷婷色偷偷| 91久操| 女人天堂久久| 激情内射p| 凹凸7777操操操| 超碰在线综合| 人操人人| 91VIP在线观看| 99爱在线视频| 亚洲激情av| 97婷婷丁香| 丁香五月婷婷色播艳门照| 色五月婷婷激情综合网| 五月丁香综合| 碰久久精品w| 极品人妻VIDEOSSS人妻| 精品久热| 丁香五月婷婷影院| 日日干天天射| 亚州色婷婷| 丁香五月激情婷婷婷婷在线观看| 五月天激情社区| 色婷丁香五月| 五月色亭丁香| 思思热久在线观看视频| 激情综合五月激情| 色五月丁香总合网| 亚洲久久视频| 久久五月网| 开心婷婷五月激情网小说 | 婷婷伊人五月天| 五月丁香激情婷婷| 激情丁香九九五月综合网| 天天做天天爱天天爽综合网| 五月天涩涩| 五月色婷婷激情| 丁香婷婷久久激情| 亚洲久久婷婷丁香五月天| 第四色色六月色综合| 婷婷成人综合| www.久久五月天.com| 操操操av| 日日肏夜夜干| 色综合久久88色综合天天99| 欧美色色色色色色色色色色| 亚洲综合网 665566| 99热人人| 色婷婷电影网| 亚洲黄色操逼| 六月婷婷视频| 操人91| 色色色99| 婷婷五月天777| www.狠狠操.com| 婷婷基地五月色| 色婷婷丁香五月天| 操操自拍| 中文av网站| 日本一级一级一级一级| 婷婷五月综合性爱| 夜色综合网| 婷婷五月天黄色| 色色色在线免费视频| 九九热思思热| 五月天六月色| 婷婷激情图片| 五月婷婷六月激情在线| 这里只有精品网| 97超碰在线免费观看| 人妻激情综合| 老妇六区| 色综合九九色综合88| 婷婷久久综合| 丁香婷婷色五月天| 成人综合AV| 五月丁香综合| 丁香六月激情毛片| 婷婷五月天色丁香| 五月天婷婷无码| 久久久久久综合88| 五月丁香花成人社区| 成人网页在线观看| 九九热10| 五月丁香婷婷深深爱| 这里只有精品免费| 99ri视频在线观看| 91操色| 天天狠狠六月婷丁香影院| 任你草| 日日操夜夜擼| 成人视屏在线观看| 色色色色色网站| 这里只有精品免费视频| 性爱网六月丁香| 丁香五月网络网络| 日日噜噜夜夜狠狠久久丁香六月| 天天日天天色| 在线成人网址| 538在线精品| www.婷婷六月天| 操日本色| www.俺去也com| 色欲av伊人久久大香线蕉影院 | 婷婷激情四射五月天| 成人深爱丁香五月| 综合久久97| 九九色网| 这里只有精品99www| 思思热久久艹| 六月婷婷最新网址| 思思热久久爱| 被强行糟蹋的女人A片| 99精品在线观看视频| 丁香六月婷婷综合在线| 国产 码在线成人网站| av无码电影| 婷婷丁香综合成人| 国产片XXXXA片国语对白| 91欧美日韩综合| 狠狠草狠狠草| 99精品久久久久久久久| 开心五月丁香啪| 婷婷五月激情在线视频| 亚洲V国产V欧美V久久久久久| 超碰在线精品| 六月丁香综合| 色情五月天丁香社区| 丁香五月天的网址。| 99这里有精品| oumeisesewang| 久99热| 五月丁香激情综合啪啪| jiZZdr| 国产黄色大片| 俺也高清无码高清视频| AV在线免费观看不卡| 亚洲九九九九| 丁香久久在线| 性生活久久朋友人妻| 蜜乳av一级av| 婷婷激情五月天在线| 丁香五月天天久久综合小说| 免费播放99性爱视频| 亚洲黄色网址| 色婷婷视频综合| 偷拍丁香九月激情| 天天摸天天日天天舔| 97日本操| 五月丁香久久激情综合| 婷婷激情五月天在线| 三日本无码| 五月婷婷手机在线| 精品一区二区三区三区| 婷婷综合视频| 狠狠色综合久久久久| 夜夜操,天天撸| 九九爱精品网站| 狠色狠色综合久久| 涩 五月 婷婷 狠狠| 精品久久这里热66| 在线视频另类| 久久婷婷伊人| 五月六月激情| 中文字幕,综合,91| 欧美这里只有精品| 五月婷婷开心六月激情小说| 色九九丁香九月色九九色| WWW.桔色成人.COM| AA丁香综合激情| 五月色综合| Jh7Uf088VHafNm| 91/九色黑人| 久re热视频| 天天干,天天舔| 国产69久久久欧美黑人A片 | 丁香六月婷婷综合| 中文字幕婷婷| www.色五月| 婷婷五月天天天| 激情婷婷色色| 综合色在线| 99免费在线视频| 99 热国产在| 五月丁香婷婷成人网| 99乱视频| 日韩五月婷婷| 色婷亚洲五月丁香| 色色丁香| 欧美激情综合色综合啪啪五月| 日本三级韩三级99久久| 99久| 人人摸人人搞| 丁香六月成人| 同性gv国产精品一区二区| 一区无码| 狠狠色婷婷| 噜一噜在线| 99er6| 五月婷婷日| 色婷婷狠狠| 六月丁香激情| 婷婷五月天激情亚洲小说| 久久久99免费视频| 91制片厂久久久国产电影| 天天综合网91| 五月天激情视频五月天| 激情宗合哪里能看| 日熟女| 婷婷狠狠综合网入口| 色色色99| 啪啪啪丁香五月| 久操操| xxx.色婷婷| 99热在线免费观看精品| 九月影院義母在线播放| 97婷婷五月激情六月丁香伊人| 日本99视频| 色情五月天丁香社区| 五月丁香婷婷伊人| 欧美婷婷五月激情| 色999五月色| 人妻中文字幕网| 婷婷影院A成人| 天天干天天插| 黄色三级日本| 丁香五月中文字幕色播| 99在线亚洲| 天天草天天日| 久久婷婷五月综合色播| 激情综合自拍五月婷婷色五月| 婷婷久久内射| 激情综合在线播放| 婷婷免费视频| 婷婷丁香六月天激情四射网| 丁香性爱在线视频| 国产人妻777人伦精品HD | 亚洲字幕AV一区二区三区四区| 97福利视频| 色在线99| 色综合久久88色综合天天看| 超碰99热精品| 99热成人精品网站| 中文成人在线| 99在线视频精品| 激情综合网激情五月天| 久草视频一,二三四| 亚洲丁香五月天视频| 亭亭五月天成人| 热99精品视频| 丁香六月久久| 人人干女人| 天天操无码| 婷婷在线精品| 色五月激情网| 日韩一本操| 色色亚洲99com| WWW久久99久久99久久| 婷婷五月天综合久久日美女| 婷婷六月丁综合| 天天综合 99久久婷婷| 9精品视频在线| 婷婷综合色| 天天色月| 玖久精品视频9| 天天干狠狠艹| 综合99综合久久久久久久| 久热一本| 天天插天天插| 伊人久久丁香狠狠婷婷综合香蕉| 久久久九九九 99| 精品人妻在线| 开心五月天私房婷婷| 九月婷婷综合八月丁香在线观看| 久久久区区一久久久久久| 天天高潮夜夜爽| 天天操综合网| 激情综合网色播五月| 99精品偷自拍| 欧美日韩国产日本精品四虎网网站物 | 狠狠做婷婷| 国产精品色情AAAAA片软件| 97色碰碰公开视频| 色吧五月婷婷| 婷婷伊人激情婷婷| 狠狠狠狠狠干| 大香蕉啪啪啪| 91日精品| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 中文字幕有多少字| www.99免费视频| 人妻中文在线| 热成人网| 99热在这里只有精品| 婷婷五月丁香激情| 五月停亭六月,六月停亭的英语| 五月婷婷开心爱| 激情综合网五月激情网| 天天肏夜夜肏| 77777亚洲午夜久久| 亚洲婷婷五月天综合| www.五月天社区| 丁香六月啪啪| 停停六月 综合| 99丁香五月婷| 激情婷婷久久| 五月婷婷欧洲| 97丁香五月天| 情色五月天网站| 国产女18毛片多18精品| 丁香无月在线观看| 99热一区| 乱乱av| 日韩成人网址| 五月久久婷婷成人网| 婷婷久久综合| 9191avse| 草综合14| 色色六月| 深爱开心五月天| 亚洲av免费在线| 国产三级在线播放| 天天操九九插| 99热这里是精品| 婷婷五月天久久| 色婷婷久久综合久色综| 五月天丁香久久综合| 婷婷色五月综合丁香| 婷婷综合亚洲| 亚洲免费在线观看岛国| 色五月丁香五月婷婷五月成人网| 色婷婷丁香五月| 国产成人综合网| 五月丁香综合中文| 超碰99热在线观看| 欧美日韩aaaa| JlZZJlZZ8JlZZ亚洲熟女| 五月丁香好婷婷姑娘综合网| 99精品在线观看| www999日韩精品| 丁香五月激情网| 四射综合网| 丁香婷婷中文字幕| 婷婷五月激情四射手| 狠狠va| 五月婷婷丁香| 99热这里只有精品21| 久久人人妻| www激情| 淫视馆aV二区一区| 丁香五月天啪啪| 丁香婷婷性爱| 欧美 日韩 成人在线| 99精品视频偷拍| 91精品91久久久中77777久久玖玖九九| 99久久6| www.色色com| 丁香五月人妻| 婷婷五月天黄色网址| 丁香五月婷婷网| 五月激情综合性爱| 六月丁香婷婷综合狠狠爱夜夜爱| 91.com男女操| 五月色综合| 婷婷久久综合久| 欧美婷婷综合| 婷婷丁香人妻| 亚洲丁香五冃97色| ji'qi'luan'ren'lun| 婷香狠狠爱五月| 99无码视频| 伊人网大香| 少妇激情五月天| 好吊操这里只有精品| 亚洲日韩成人三级av| 婷婷色丁香六月| 久久 无毛。| 日本三级日本三级99| 草操网| aV直接看| 五月丁香六月婷婷色日| 99热偷拍| 欧美成人猛片AAAAAAA| www.开心激情| 激情久久肏屄视频| 色婷婷影院| 丁香 婷婷 亚洲 熟女| 久9免费视频| www色婷婷| 五月色俺婷婷| 五月久久婷婷丁香| 偷偷与邻居做爰完整视频| 五月天婷婷五月| 国产精品人妻在线网址| 婷婷五月天色| 色综合激情| 99爱视频精品| www.久99| 99热91| 激情综合网激情五月丁香| av免费在线网站| 五月天婷婷综合网| 97色色色色色| 五月天激情综合首页| 丁香五月婷婷五月基地| 成人AV在线网站| 99热在线观看这里只有精品| 婷婷午夜精品久久久| 俺也去五月婷婷丁| 婷婷天堂综合| 九九热经典视频在线观看| 在线色色| 综合99在线| 亚洲电影中文字幕| 亚洲色视频| 五月色天情| 人人草公开操| 色婷婷小说| 五月开心婷婷极品激情| 青青操成人福利| 伊人婷婷五月天| 思思热在线| 精品少妇蜜臀91| 99五月丁香丁| 激情五月婷黄版| se色婷婷视频| 超碰在线国产| 一级二级色大片| www.夜夜.com| WWW五月婷婷| 激情婷婷久久| 五月丁香亚州综合网| 婷婷色色五月| 超碰91在线| 婷婷丁香十月| 婷婷综合五月色播| 无码色色色色色| 大香蕉Av在线| 亚洲视频码| 亚洲精品V天堂中文字幕| 色九九综合| 婷婷情色五月天| 天天干夜夜想| 亚洲久久婷婷| 丁香五月天婷婷久久| 婷婷伊人中文字幕| WWW.久久久久久久| 久久综合网桃花| 中文字幕人妻AV| 五月婷婷丁香日韩在线| 夜精品无码A片一区二区蜜桃| 色五月婷婷影院| 五月丁香激情婷婷| www.婷婷| www.色婷婷.com| 国产婷婷五月色情综合| 婷婷综合网站| 婷婷五月激情在线| www.五月丁香av| 五月天欧美激情| 五月丁综合在线观看| 久久亚洲网| 99'无码| 九九热这里精品| 精品无码av丁香五月激情| 成人做爰A片免费看网站找不到了| 婷婷免费无马| 五月天色综合| 成人AV在线电影| 色欲丁香| 国产激情久久| 九月婷婷| 插插插丁香五月婷婷| 久久这里在精品视频| 五月色亭丁香| 另类小说婷婷色| 成人狠狠成人狠狠成人狠狠成人狠狠 | 五月丁香手机在线| 99爱视频精品| 好好日激情五月天| 99aese| 新精品99| 五月婷婷开心网| 久久婷婷五月天激情四射| 五月停停999| 久久国产色| www色色com| 熟女人妻视频| 五月丁香A∨在线| 九月激情综合婷婷| 六月99天天婷婷激情综合| 色狠狠五月天| 色天天综合色| 婷婷激情五月色综合| 六月丁香五月婷婷| 色播五月| 国产乱子轮XXX农村| 丁香五月婷婷操逼| 思思99久久| 都市激情久久| 五月天婷婷成人资源站| 亚洲色另类| 婷婷啪啪| 国产成人综合亚洲| 中文字幕性爱视频| 99精品激情| 狠狠狠狠狠草| 久久这里有精品| 99综合视频| 色综合99无码 | 色综合区| 亚洲综合色丁香五月天| 综合久久99| www久久99| 久久ri精品视频| 97操视频| 激情婷婷六月| 午夜丁香综合婷婷| 天天综合色| 天天色综| 天天爱天天做天天舔| 啪到高潮激情丁香五月| 亚洲综合99| 婷婷大香焦| 九九99免费理论| 激情黄色小说五月天| 夜夜躁婷婷AV| 97干干干丁香| 色狠狠综合网| 丁香五月,激情五月,深爱五月| www,com,五月色色| 成人免费120分钟啪啪| 久久天堂| 青青草六月丁香| 午夜天堂啪啪| 超碰成人在线免费观看| 成人va在线观看视频| 无套内射极品大美女| 最近中文字幕2019视频1| 五月丁香啪啪综合网| www.六月丁香看AV| 99只有精品| 黑人熟妇一区二区三区| 日批在线看| 精品五月天| 99精品女人天堂| 五月丁香色狠狠干大屄| 久久精品性爱| 99久久精品国产色欲| 99精品爱| 色五月成人| 97碰| 亚州色色色| 丁香五月婷婷免费视频| aaa丁香五月天| 久久久27操| 色爱爱综合网| 五月丁香色五月| 激情综合一| 色综合久久44| 停停五月色宗合| 久久综合55| 激情综合网,婷婷五月天| 狠狠搞狠狠操| 大香蕉综合在线| 久久Xx| 91精品国产综合久久蜜芽解析速度| 综合狠狠干| 九九色逼| 91久操| 激情综合九月| 六月色激情| 久久亚洲激情五码| 大香蕉视频婷婷| 欧美Va在线| 热91久| 久久996re热这里只有精品无码| 99热综合| 婷婷色五月噜噜| 久久思思热| 就要去操亚洲成人精品五月天丁香婷婷| 超碰99资源站| 国产综合81p| 天天综合 99久久婷婷| 综合网狠狠| 五月婷婷激情五月| 操人精品| 国产亚洲色婷婷久久99精品91| 亚洲AV另类| 五月综合视频| 大香蕉 伊人夜| 亚洲视频操| 久久婷婷网| 色狠狠综合| 丁香婷婷久久| 亚洲精品无码一区二区| 丁香五月aV| 爱iii做iiii日| 天天爽天天日天天舔| 99超碰在线免费| 婷婷九月亚洲| 狠狠干五月天婷婷网| www.狠狠| 狠狠色无码| 狠狠色综合图片| 天天干天天干天天| 日本久久婷婷| 99热这里| 天天天天天天天操| 97sese婷婷| 人人干99| 九九综合视频在线观看| 少妇熟女视频一区二区三区| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 丁香六月天婷婷| 综合一区二区三区| 久久丝丝热| 久久中文网| 美女五月狠狠| 婷婷五月天色色| 色五月激情五月| 青草激情综合| 久99久视频| 99在线精品免费视频| 久播影院免费观看电视剧大全最新网| 97热在线精品| 色婷婷在线视频| 天堂草在线看www| 婷婷伊人综合中文字幕| 婷婷五月天激情小说| 久久小片| 亚洲高清在线| 色欲AVV| 激情综合在线观看| 天天做天天爱天天爽在| 狠狠久久婷| 色婷婷婷婷| 91人人爽久久涩噜噜噜| 操碰97| AV片在线观看| 激情伊人五月天| 色噜噜狠狠狠综合曰曰曰| 99热这里| 五月综合激情久久| 欧美精品啪啪| 色天天综合| 四色永久成人网站| 丁香五月停停av| 中文av网站| 99A片| 伊人成人宗合网| 99视频在线播放大全| 在线中文AV| 丁香五月天啪啪| 婷婷五月天免费视频| 无码网| 亚州操逼网| 在线综合亚洲欧美65| 色五月天电影| 99视频精品全部观看10| 26UUU亚洲欧美| 97人人看| 久久婷婷的综合色丁香五月| 国产69久久久欧美黑人A片| 久9免费视频| 欧美爆乳一区二区三区| 熟女色专区| 色情五月天丁香社区| 97操资源婷婷| 婷婷五月花| 超碰人人色| 五月综合视频| 亚洲第一精品成人999久久精品| 79亚洲精品少妇| 337p大胆噜噜噜噜噜91Av| 久久99三级在线视频| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 大香蕉人人网| 九色在线五月婷婷网址| 色五月激情网| 五月丁香免费看| 五月丁香激| 日日撸夜夜操| 婷婷精品性性性性性性性| 色综合色欲综合天天免费| 99精品激情| 日本91在线| 热99精品视频五月| 97干在线看| 久久五月天激情婷婷| 国产99久| 伊人久久丁香狠狠婷婷综合香蕉 | 五月婷婷五月天亚洲无码| 丁香六月婷婷高清| 九九精品片一| 99免费综合网| 婷婷五月天AV| 色五月成人| 黄色三级日本| 五月天啪啪视频| a九九热www| aa久久| 色99网| 大香蕉精品视频| 黄网免费观看| 另类综合激情| 色色婷婷丁香| 欧美日韩成人在线| 五月总合激情网| 99精品热视频只有精品10| 天天玩夜夜操天天爽| 五月天激情小说| 婷婷激情五月天7| 久婷婷五月激情| 丁香亚洲婷婷五月| 蜜臀av在线成人电影| 成人色色视频| 色婷婷成人五月| 婷婷五月天国产在线播放| 色爱综合网| 午夜一区| 99热啪啪| 9久热精品在线视频| 99热人人艹| 色五月色情| 丁香玖玖| 91久热| 99热这里只有精品98| 久久人人人人妻| 五月丁香六月激情综合欧美| 色婷婷五月天在线观看| 激情五月天婷婷| 九月丁香婷婷| 国产看真人毛片爱做A片| a性生活久久无| 狠干综合| 五月丁香| 欧美色六月婷婷| 亚洲欧美国产高清vA在线播放| 丁香久久久| 深爱综合网| 欧美槡BBBB槡BBB少妇| 在线不卡的视频| 色五月成人| 五月婷庭丁香在线| 老司机日日夜夜青草| 九九这里是免费的视频5| www.色五月| 国产免费一区二区三州老师F1……| 亚洲有码在线视频| 婷婷放心五日爱| 六月丁香影院| 操人91| 色五月婷婷在线观看第一页舔| 91操在线观看| 亚洲激情免费久久| 五月婷视屏在线观看| 亚洲热热视频| 99爱在线| 996热| 操一操| 色啪影院| 五月丁香婷婷五月色| 丁香五月手机在线| 激情婷婷丁香色情五月天| 五月精品| 疯狂做受XXXX高潮A片| 91在线日本| 五月人人丁香婷婷五月人人丁香| 人人妻久久妻| 停停五月色宗合| 色色色色色色色色色色色色色色,网站| 91婷婷色| 97久久综合网| 婷婷五月大| 日日.c| 搡BBBB搡BBB搡18| 91在线日本| 综合色色婷婷| 色五月激情| 在线观看亚洲AV| www好屌操| 五月丁香啪啪激情| 五月婷狠狠| 亚洲激情图文小说| 色色国产| 1024欧美看片| 亚洲激情亚洲激情| 狠狠色成人影片| 激情五月天。| 五月婷婷丁香深深爱| 国产在线黄色| 激情五月天婷婷丁香| 极品 少妇 内射| 色婷婷丁香| 超碰99热精品| 国产,欧美,日韩,性爱| 99热精品在线观看| 色九月婷婷综合| 国内外色色色色色成人视频| 91精品久久久久久久久久| 狠狠做五月| 色婷婷9| 午夜丁香六月婷| 婷婷色欧美激情| 欧美五月停| 玖玖资源部在线播放| 久久五月婷| 99亚洲视频| 五月丁香偷拍| 99久久五月婷婷| 久久成人天| 丰满少妇乱A片无码| 激情精品久久| 99无码视频| 深爱婷婷基地| 激情五月综合网| 综合久久9| 99精品热视频| 综合激情肏逼网| 久久人妻视频| 狠狠久久婷婷| 五月婷婷亚洲色视频| 中文字幕丰满乱孑伦无码专区| 丁香五月成人在线| 日韩一区二区A片免费观看 | 91婷婷丁香五月| 十区AV| 色婷婷亚洲婷婷| 一区二区三区XXXXXX| 99精品性爱| 91久久色| 欧美日比视频| 日本久热|