欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

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
返回資訊列表
97五月久久丁香婷婷| 毛v一区二区视频| 内射丰满人妻| 色爽九九| 碰99在线| 五月丁香综合在线| 色五月激情| 大香蕉九九操| 男人大jjc女人免费视频| 国产精品视频久久99| 超碰在线99热| 热婷婷av| 亚洲高清在线| 五月婷婷啪啪网| 六月丁香五月激情网| 97热久久五月婷婷| 欧美日本国产| 国产av天天插天天操天天爽| 国产日产亚洲系列最新| 五月香婷婷| 99re鈥哸鈥唙| 日日艹思思热| 亚洲一区二区无码蜜乳av| 97操碰人人| 亚洲精品V天堂中文字幕| www激情com| 91人妻色色网| 99久久99久久综合| 色综合色色| 激情五月天.色网| 丁香 婷婷 亚洲 熟女| 亚洲操逼网| 五月激情综合婷婷| 日韩成人中文| 91打屁股免费看| 在线婷婷| 操碰99| 天天天摸夜夜夜玩| 99热最新网址| 五月婷婷之美女图片| tingtingjiqingwuyue| 热99免费在线| 琪琪色五月天| 亚洲色综合| 婷婷久久图片| 九九大香蕉黄色影院| 婷婷在线五月综合| 九九99热精品| 久久天堂婷婷五月| 五月天天综合| 五月综合色| 日本天堂免费99| 色九九综合色| 色婷婷五月综合色婷婷| 影音先锋91资源站| 99久久久免费| 久久久久久久久久久久久久人妻视频| 六月婷婷之青青草| 开心五月丁香婷婷| 欧美中文五月天| 99色热综合| 五月丁香成人日| 婷婷大香蕉| 99久久玖玖| 六月婷婷AV| 一级片操逼视频| 乱岳熟女50岁| 26uuu成人网| 亚洲免费综合一区| 操日视频| 婷婷五月天在线综合导航| 久热视频A.| 婷婷色五月婷婷姐妹| 亭亭色色五月天| www.99在线| 欧美黑人大吊| 亚洲第一视频 久久| 99热日韩| 亚洲精品国产成人AV在线| 久久久香| 日韩成人中文| www.久久综合| 色婷婷五月天成人网| 91性高潮久久久久久久久| 综合激情在线视频| 国产五月婷| 婷婷四色五月| 日本一级特黄大片AAAAA级| 亚洲婷婷五月天| 97人人操人人爽| 欧美99热| 野外99热| 国产婷婷五月中文字幕高清| 五月婷视频| 99热99久久| 天天操天天操天天操天天操天天操 | 在线观看欧美| 粉嫩AV久久一区二区三区| 亚洲成人无码专区| 五月天激情图片| 天天做天天爱天天高潮| 伊人大香蕉在线视频| 婷婷久久网| 我爱宗和色| 天天舔天天摸| 真实的国产乱XXXX在线91| 狠狠 久久| 丁香色五月 97干| 激情综合网之激情五月| 开心五月综合激情网| www激情| 爱爱网址9| 91九色超碰正在播放| 99热乎| 婷婷五月天在线综合导航| 五月天久久丁香| 超碰在线观看9| 蜜臀AV在线观看| 九九九午夜视频| 久久九九视频网站| 婷婷伊人网| 欧美日韩二区在线| 99热精品10| 综合色色色| 丁香六月激情综合| 如何安全看伊人婷婷| 99久久久| 五月天激情四射| 亚洲丁香五月天在线视频| 亚洲五月婷婷| 99综合99| 婷婷五月色亚洲| 五月丁香色| 丁香婷婷老司机久操| 成人五月天在线观看| 久色国产| 丁香激情综合| 五月婷婷伊人久久| 97日韩无套内| 伊人网色婷婷五月天| 91精品综合久久婷婷九色| …亚洲黄色在线播放日韩、av中文a…| 狠狠九九婷婷韩| 五月丁香网站在线播放| 99久久婷婷五月综合| 又大又粗九一在线| 久久久久人无码人妻| 99热最新| 丁香五月婷婷亚洲人| 性天堂久久| a毛片二逼wwwwwwwwww| 色播播之激情五月婷婷| 国产精自产拍久久久久久蜜| 五月婷婷色丁香| 99久热| 婷婷伊人75| 青青草原福利在线| 99开心五月五月丁香激情| 色色COm| av操逼网| 五月天六月婷婷| 亚洲AV免费在线| 五月丁香婷婷啪啪| 色色热| 久久在线92| 丁香五月婷婷视频| 大香蕉久久久| 天天狠狠夜夜狠狠2023| 激情五月伊人婷婷| 久久中文网| 五月天激情中文字幕| 国产精品一区在线观看你懂的| 色99网| 激情亚洲网| 五月停性愛| 婷婷婷五月天最新综合你懂的| 婷婷亚洲色| 久操b网| 丁香五月天啪啪| 欧美99热| 超碰色热| 久青操| 五月丁香久久网| 久热九九| 天天天天天天噜| 亚洲亚洲人成综合网络| 夜夜夜夜夜骑撸| 黄色五月婷| 激情五月五月婷婷| 色五月开心婷婷| 午夜精品人妻无码一区二区三区| 99久久激情视频| 色婷婷基地| tingtingseav| 久久99精品九九久久久婷婷| 九九热这里只有精品一| 婷婷情色五月天| 色综合综合色| 99亚洲色| 激情小说五月天社区丁香| 色婷婷激情| 久久深爱激情网| 九月av在线| 日韩综合久久| 淫荡综合网| 91人操人人人操人| 青青久在线视频免费观看| 天天综合中文| 五月青青草综合| 秋霞少妇毛片| 成人做爰A片免费看网站找不到了| 五月丁香激情深爱婷婷| 婷婷在线播放av| 97色五月婷婷在线| 五月丁香六月成人| 五月丁香激情综合| av性爱在线| 欧美日韩国产伦精品日韩人妻一| 99久久国产宗和精品1上映| 色日本网| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 久久xx| 五月丁香WWW| wwww.色婷婷| 人人操五月天| 操操自拍| 99这里只有精品| 色婷婷婷婷成人网| 婷五月天天| 六月丁香AV| 色五月av| 久热婷婷| 色色色婷婷五月天| 婷婷色导航| 亚洲精品乱码久久久久久综合| 免费成片在线观看| 亚洲av电影网站| 精品久久艹| 婷婷五月天综合亚洲| 狠狠操狠狠| 99久久综合精品五月天| 天天爽,天天操。| 精品女人九九九| 影音先锋男人av资源站| 国产99久| 欧美三级视频| 天堂va久久久噜噜噜久久Va| 91色欲综合| 亚洲精品a成人在线播放| 特级西西4444www无码| 婷婷色丁香六月| 五月色丁香婷婷中文字幕| 99久久九九| 色五月婷婷综合在线| 琪琪狠狠干| 五月婷婷爽爽爽| 五月亭亭六月天| WWW.桔色成人.COM| 九九99九九99| 久久人妻久久| 久久婷婷六月综合| 婷婷色情 | 9久久久久久久久久久| 直接看的av| 综合激情深爱| 五月婷综合| 五月婷视屏在线观看| 亚洲中文乱字字幕线在永久| 一级A片天天操夜夜操| 婷婷涩五月| 色婷婷久久| 99re6久热只有精品6在线直播| 婷婷五月婷婷五月| 欧洲激情精品婷婷| 亚洲无码99| 99热777| 五月丁香狠狠爱婷婷综合| 五月婷婷开心亚洲无| 狠狠干五月天婷婷网| 五月丁香六月婷婷啪啪| 五月丁香久人妻中文| 97色干| 婷婷伊人綜合中文字幕| 色情五月天se| 亚洲无码色色| 99视频激情四射| 五月天狠狠色| 欧洲色区| 九九婷婷热| 国产探花一片区| 九色PORNY在线精品酒店| 亚洲激情五月| 狠狠操.com| 色综合五月在线| 婷婷激情五月色综合| 天天做天天爽| 亚洲天堂热| 婷婷色五月天第7色| 九九操综合网| 51XX午夜影福利| 亚洲日韩一页精品发布| 久人操| 狠狠做六月爱婷婷综合aⅴ| 99色播| 开心激情婷婷| 97色 五月天丁香| 中文字幕人妻在线| 亚洲激情精品| 99色色| 婷婷成人在线| 操你av| 色99在线视频| 亚洲视频久久| 亚洲小说欧美激情| 丁香五月成人| 九九热这里只有精品23| 五月花婷婷| 久久A极片| 激情另类综合| 99在线热视频| 狠狠综合久久综合| 五月天综合图片| 亚洲综合五月天婷婷| 婷婷性爱五月天丁香网| 艹| 一起草AV| 亚洲激情av| 激情五月,激情综合网| 99色色网| 色噜噜狠狠色综| 亚洲中文乱字字幕在线永久| AV操一操| 日韩精品二三区| 激情五月天婷婷| 亚洲网视屏| 精品国产a| 色婷婷五月影视| 久久看婷婷| 丁香影院五月综合| www.色擼擼.com| 丁香婷婷综合激情五月色| 成人AV免费观看| AV性爱网| 丁香密臀AV激情网| 91婷婷色| 成人亚洲精品| 婷婷综合激情| 激情五月天啪啪视频| 久久草中文日韩欧美| 色色网91| 激情小说婷婷| 婷婷性爱网| 狠狠色噜噜狠狠狠888| 九九婷婷热| 五月开心婷婷| 九97免费视频| 九九这里只有精品| 五月婷婷欧美| 久操大香蕉| www.粉嫩av.com| 亚洲天堂99| 99操中文视频| 涩五月婷婷| 天天弄天天爽| 成人在线观看精品| 五月天婷婷视频| 五六月丁香激情视频| 午夜无码熟熟妇丰满人妻| 26UUU亚洲欧美| 欧美色一级色| 天天插综合| 久久九九亚洲| 内射综合网| 成人婷婷| 色色国产| 欧美人人草| 婷婷色基地在线看 | 久热免费| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 日本99在线| 99色网站| 五月天激情中文字幕| 色欲AVV| 欧美成人性爱网| 亚洲婷婷激情综合激情999精品| 天天综合久久| 亚洲婷婷开心五月| 亚洲免费在线观看岛国| 狠狠色噜噜狠狠狠888| 婷婷丁香成人在线视频| 欧美亚洲成人在线| 丁香五月激情婷婷| www久久久久久久久久久久久久久久久| 五月丁香综合精品| 吊色AV男人的天堂| 国产偷人爽久久久久久老妇APP| 国产精品色色色色| 99男人天堂| 99人人干| h亚洲| Av性爱网站| 久久99免费视频网站| 97干欧美| 激情五月少妇| 99热免费网站| 九九av在线| 欧美色色色| 五月天综合激情网| 亚洲综合新99视频| 91九色精品| 粉嫩AV久久一区二区三区| 这里只有精品免费观看网占| 色之综合网| 亚洲激情六月| 亚洲亚洲人成综合网络 | 天天天天操| 色色色色网色色网色色| 综合五月草 | 黄网网站在线播放| 大香蕉伊然在亚洲90| 91操人| 久久久久久性爱视频| 欧美丁香婷婷天天操| VfJxEwPH| 六月五月丁香五月欧美| 天天搞天天色综合| 99婷婷五月天激情| 猫咪伊人AV| 五月天激情综合| 亚洲另类视频| 婷婷五月天成人网站| 狠狠干综合| 日hao1区| WWW、日本色丁香、co m| 五月激情综合网| 26UUU欧美激情一区二区| 爱的综合网| 伊人91| 9l视频自拍9l视频自拍九色学生| 久久色午夜在线导航| 国产高潮A片羞羞视频涩涩| yellow视频在线观看91| 天天日天天舔| 97丁香五月| 综合久久人妻| av中文网站| 亚洲综合视频一下| 久久五月天激情视频| 天天日天天做天天舔| 久综合九| 五月丁香花激情综合网| 九九精品亚洲| 日韩在线99| 人人操操| 五月婷婷偷拍| 久9热| 99亚洲视频| www,婷婷五月天,com| 精品无码色欲AV| 玖月婷婷爱丁香| 天天情天天狠天天透| 五月激情综合网| 9191avse| 日木狠狠干| 成人AV在线电影| 99婷婷国产最新视频| 97婷婷在线视频| 中文字幕性爱视频| 亚韩在线视频| 五月欧美色播| 婷婷五月精品在线| 99精品22| 亚洲乱码w在线观看| 99九九视频| 99热免费精品| 五月丁香啪| 欧洲色区| 99玖玖精品| 色婷婷色综合激情91| 综合玖玖偷拍| 日韩色色网| 日本婷婷综合精品| 天天干天天操| 成人版视频在线观看| 欧美一级色| 超碰99热| 秋霞网在线免费基地五月婷婷丁香| 9 大屁股在线视频精品| 色婷丁香| 色狠狠图片| 丁香婷婷色五月| 91chinese 在线| 六月婷婷综合久久| 情欲综合网| 人人噜天天上| 五月丁香色色网| 99re6在线视频精品免费| 欧美久久九九| 九九综合九九| 99热只有这里才是精品| 国产成人AV在线| 99成人| 操婷婷久久| 91爱啪啪| www色综合| 美女网黄| 操逼电影免费看| 天天肏高清在线| www色婷婷久久综合久色 | 99色热视频| 拍真实国产伦偷精品| Av在线不卡一区| 99热99色| 欧美丁香婷婷五月| 国自产拍偷拍精品啪啪一区二区| 99噜噜噜| 99热久草| 色色无码| 婷婷综合激情| 五月丁香综合激情网| 色色色99| 五月丁香好婷婷A片网| 日日操夜夜爽天天天| 色色99| 黄网在线免费观| 99热国产免费| 五月婷婷激情综合| 精品久久久人妻| 婷婷狠狠干| 在线观看欧美| 婷婷五月天激情文学| 九九视频在线观看| 国产熟女大叫受不了| 激情婷婷六月| 日本久久99| 99超级碰碰| 激情色情五月天| 丁香五月婷婷基地| 久久婷婷91| 99av视频| 五月天综合在线网| 五月熟妇婷婷久久| 天天干夜夜谢| 激情综合网五月婷婷| 五月丁香在线观看| 丁香五月激情啪啪啪| 婷婷五月欧美综合| 国产成人综合网| 五月丁香 啪啪| 色婷婷亚洲婷婷在线观看| 啪啪日本欧美| 丁香五月色情| 五月久久丁香| 五月婷婷在线观看| 97综合视频在线| 人人色AV| 性爱激情综合网| 婷婷丁香五月天综合网| 丁香五月影院| 天天色五月| 丁香五月天激情综合| 亚洲中文av| 婷婷亚州综合| 岛国av电影网站| 中文字幕无线久必| 五月婷婷丁香五月婷婷| 精品热青草| 激情五月婷在线精品| 思思re最新视频| 丁香婷婷六月激情| av网址在线播放| 婷婷综合激情五月综合| 色婷婷香蕉在线| 天天插天天| 欧美日韩色色| 色久丁香五| 天天综合五月天| 九月色婷婷综合| 日本人人草草| 久久伊人五月天| 人人玩人人橾| 亚洲中文字幕AV在线| 婷婷丁香激情| 日韩无码人妻一区二区| 精品成人在线观看| 婷婷五月成人色综合| 九九视频在线观看视频6 | 亚洲综合网激情五月天| 三日本无码| 激情五月天综合婷婷网| 色碰干| 狠狠操狠狠插| 开心五月婷| 久久38视频| 另类小说色婷婷| 色欲九区| 小香蕉av| 丁香五月婷婷偷拍| 色婷婷91激情小说| 欲求不满的人妻| 五月天婷婷Av| 99在线热视频| 亚洲五月婷婷在线| 激情综合婷婷久久| 99热在线看| 激情婷婷五月天在线观看| 色色综合热| 中文无码婷婷| 午夜激情五月| WWW久久久| 欧美大肥婆大肥BBBBB| 婷婷五月天狠狠搞干| 五月激情婷婷综合| 无码成人播放器| 婷婷久久五月天| 成人va在线观看视频| 色青青电影色五月| 伊人久久大香网| 久久这里只有精品16| 五月丁香在线精品| 婷婷五月天视频免费在线观看| 另类图片色五月| 日韩黄在免| 色欲久久久久久综合网综合网| 激情五月天激情网| 91视频人人做97| 人妻丰满精品一区二区A片| 人人干人人看| 无码人妻一区二区三区四区| 久久刺激网| 九月婷婷在线视频| 狠狠色综合网| 久久92| 99re这里只有精品在线观看| 综合五月草| www五月天com| 99在线视频观看| 久久久久久久人妻| www.天天干| 婷婷六月激情丁香| 色色色视频免费无码 | 婷婷五月,偷窥偷拍网| 很很干在线视频| 色婷网| 99热一本久道| 国产激情一区| 成人αV视频免费观看| 色色操| 成人在线视频一区| 亚洲成人噜噜| 狠狠插狠狠| 亚洲色激婷| 人妻中文在线| 97干视频| 色五月五月婷婷| 黄色AAAAAAA| 久热一区| 国产欧美日韩综合精品一区二区| 色综合色色色| 天天日,天天干,天天操| 变态另类9| 久久婷婷五月综合色丁香| 十月色综合| 色综合综合网| 婷婷激情五月天小说| 天天射综合网天天插| 色99亚洲| 五月熟妇婷婷久久| WWW、日本色丁香、co m| 99婷婷五月天| 六月丁香啪| 丁香五月 综合| 欧美激情丁香五月| 丁香婷婷综合精品六月初| 91日韩在线| 国产67194| 成人午夜无码视频| 婷婷五月亚洲激情| 丁香 婷婷五月| 五月色 亚洲| 综合视频五月| 少妇高潮呻吟A片免费看软件| 五月丁香色综合| 99久视频| 超碰国产在线播放| 婷婷不卡基地| 五月婷婷日| xx久久| 色玖玖综合网| 狠狠看狠狠| 森林影视大全,最好看的2019年视频 | 久久人人妻| 另类图片五月天| 国产五月视频| 久久人操-久草婷婷-成人AV| 91色逼| 伊人网欧美在线男人天堂五月丁香| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 开心五月深爱五月婷| 五月网网站| 99久久五月婷婷| 黄网免费观看| 成人无码髙潮喷水A片| 婷婷六月丁香五月图区| 9久久精品视频| 影音先锋按摩| 五月天激情网页| 99热首页| 婷婷色导航| 六六久久黄色| 丁香五月网址| 深爱五月亚洲| 99久久婷婷五月综合| 五月丁香婷婷综合久久| 天天天天天天天干| 五月丁香黄色视频| 丁香婷婷五月| 九 九九九AV| 五月婷婷久久久| 久久 这里只有精品1| 婷婷在线激情| 99热在线观看| 91|九色|动漫| 色五月视频无码播放| 秋霞AV淫| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 99re热视频| 色婷婷888| 综合六月久久| 色噜噜狠狠色综| 五月花丁香婷婷| 九九热超碰| 99精品综合在线| 天天射夜夜爽| 欧美乱码国产一级A片| 精品夜夜澡人妻无码AV| 国产精品视频免费看| 提提热五月天婷婷| 开心五月婷婷激情| 岛国操B不卡在线| 日本va网站| 五月色色网| 日韩久久日| 久久五月人人摸| 五月色丁香| 激情综合九| 五月丁香好婷婷姑娘综合网| 亚洲av免费在线| 卡视频1区2区| 丁香激激情网| 成人精品视频99在线观看免费| 人人综合久| 五月天婷婷综合免费| 无码成人AAAAA毛片AI换脸| 婷婷在线精品| 丁香婷婷五月色成人网站| 丁香影院五月综合| 亚洲成人乱码av网站| 丁香六月综合激情| 亚洲精品色色| 亚洲天天| 欧美操人| 狠狠干婷婷| 色婷婷中文在线| 激情婷婷五月天| www99xxxx五月丁| 国产精品A片| 五月天久久色| 天堂婷婷丁香六月网| 午夜精品人妻无码一区二区三区| 欧美噜噜久久久XXX| 99熟女| 狼人久草| 99re思思久久| 97干在线| 色婷婷色99国产综合精品| 玖玖爱伊人| 九九色综合网| 五月婷婷99热| 91九九| www.99热| 99热只有| 亚洲色婷婷激情| 99精品视频在线观看| 人人人人人人人人人草| 99ER热精品视频| 丁香五月天婷婷久久综合| 在线观看国产高清视频免费网站| 青青热久精品视频在线观看| 国产乱妇无乱码大黄AA片| 情情五月天色| 天天干天天日蜜臀av| 色狠狠综合| 婷婷六月天| 97色色色| 激情AV| 少妇性按摩无码中文A片| 国产欧美婷婷五月| 香港九九六区八区99| 天天天天天日| 在线网黄| 色激情五月天| 五月天婷婷高清无码| 97香蕉人人在线观看| 欧美色九| 热99热| 四色五月婷婷| 丁香婷婷91在线观看视频| 99视频自拍| 99国产精品久久久久久久久久久| 五月婷婷伊人在线| 综合一区二区三区| 丁香五月激情综合| 99re热免费观看视频精品| 91精品久久久久久久久| 97久久超碰| 六月婷婷亚洲| 91久久精品无码一区二区三区| 日日爽夜夜爽| 五月天激情视频网站| 色婷婷五月综合在线| 色色婷婷丁香| 婷婷伊人五月天| 超碰在线人妻| 激情九月丁香婷婷| 中文资源在线a| 日日夜夜青青草| 九九偷拍网| 99精品热| 五月丁香六月婷婷激情网| 久操b网| 九九久久污| www.色五月| www天天爽| 99er这里只有精品视频| 国产高潮白浆一区二区| 日本色五月| 婷婷亚洲欧美丁香五月| 看黄的网站18禁| 激情碰碰碰| 色综合久久久久| 婷婷五月天激情开心网| 加勒比色色| 色呦呦美女| 色99最新网址| 久久久久人妻网址| 99热这里只有精品5| 午夜美女人啪最红院| 91色在线| 黄色高清无码| 可以看的av| 婷婷五月丁香91| 青青草日本亚洲| 婷婷开心深爱五月天| 色色色色色色色色色色色色色五月天| 丁香五月影院| 色婷婷丁香| 夜夜骑天天操| 79色色免费| 欧美激情五月天婷婷| 色五月婷婷91| 最新久久99视频网站| 成人午夜视频精品一区| 97久久视频| 激情五月色婷婷| 天天爽天天摸| 99热最新网址| 狠狠 婷婷| 99热18| 9久国产精品| 色月丁| 色婷婷影视99| 伊久大香蕉| 黑人巨粗进入警花疼哭A片| 五月婷在线| 久久五月网| 婷婷刺激综合| 久久这里只精品| 天天做天天爱天天综合网| 欧美综合丁香网| 99热这只有| 五月婷婷新网站| 五月色网| 五月丁香婷婷综合网| 色域五月婷婷丁香| 色婷婷综合综合网| 婷婷五月天亚洲综合| 99色久| 伊人五月综合网| 97超级碰碰碰| 成人短视频在线免费观看| 97香蕉人人在线观看| 亚洲精品444久久久久久| 日本偷拍九九九| www.cao.com久久| 国产三级在线播放| 伊人久热91| 久热伊人9| 日本久久人| 丁香五月婷婷激情尤物| 婷婷色情网| 婷婷色在线观看| 永久无码色| 天天色天天色天天色天天色天天色天天色| 天天射影| 密臀久久| 丁香5月婷婷| 美女丁香五婷婷| WWW.桔色成人.COM| 97干在线视频| 久久怡红院| 亚洲视频在线观看| a免费在线| 九月丁香八月婷婷久久综合久97| 一本色道久久88加勒比—| 国产精品人妻欲求不满| 婷婷放心五日爱| 婷婷五月天国产手机在线视频观看| 丁香桃色综合网| 日日爱699| 丁香六月婷| 99爱视频在线观看| 91色色五月天| 亚洲无码你懂的| 九九操操| 五月青青草综合| 深爱激情五月婷婷| 色播六月| 国产精产国品一二三在观看| 欲色人妻| 婷婷九月色| 婷婷五月天激情亚洲小说| 五月丁香婷婷综合视频| 亚洲激情综合网| 免费看欧美成人A片无码| 狠狠色婷婷丁香五月| 色婷婷综合久久久久| 六月婷婷狠狠| 五月天婷婷综合免费| 丁香五月成人社区| 91在线资源| 伊人网大香| 天天操天天谢| 免费黄色AV| www久久久久久久久久久| 97久操视频| 欧洲精品欧洲情| 开心网五月色婷婷| 天天干,天天日| 秋霞丝袜啪啪啪| 天天舔天天摸天天射| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | www.五月天色色.com| 欧美S码亚洲码精品M码| 亚州综合色| 五月婷无码| 婷婷丁香九月| 99久久97| 婷婷五月天激情四射五月天激情| 六月丁香久久| 五月婷婷大香蕉| 亚洲AV第二区国产精品| 五月四色色| 婷婷久久综合| 色婷婷四色| 色狠狠综合网| 久久免片| 97黑人精品区| 丁香色五月婷婷91桃色| 婷婷视频网| 欧美色97| 99久久激情视频| 风流少妇A片一区二区蜜桃 | 婷婷的色色五月天| 五月激香蕉网| 九九蜜臀精品| 婷婷四色五月| 婷婷黄色五月| 婷婷激情丁香六月| 精品一二三区久久AAA片| 人人操日| 色婷婷综合影院| 二区成人视频| 人人看人人草人人摸| 婷婷啪啪| 日本一级一级一级一级| 99热99美国在线观看| 中文字幕高清av| 另类小说婷婷色| 日本色婷婷| 激情深爱五月婷婷| 操人91| 影视av久久久噜噜噜噜噜三级| 另类综合婷婷五月天欧美视频| 国产精品久久久久久久久久| 久久久人妻人伦| 日本色色图| 日本一级| 日本婷婷在线| 日本免费91| 五月丁香色综合| 日韩xx在线| 久久久噜噜噜久久人妻| 96色婷婷| 色五月女| 五月天丁香综合在线| 色欲色香综合网| 综久久久| 五月天最新网| www一起操在线观看| 五月激情六月综合| 99热高清在线| 中文成人在线| 热久国产| 91久操| 亚洲网站在线鸭子av| 久久久久久久人妻| 99热九九这里只有精品10| 久久综合99| 米奇激情婷婷| 亚洲六月综合激情久久下卡| 天天操夜夜爱| 五月丁香综合网| 噜噜在线| 东京热伊人| 人人草人人舔| 丁香婷停五月激情综合深爱| 丁香婷婷老熟女综合网| 天天爽免费视频| 操人精品| 久久婷色| 国产成人AV人人爽人人澡Va| 欧美三9久九观看| 久久婷婷五月综合色丁香| 婷婷色五月天色色| 91九色熟女| 亚洲五月天第一综合干| 欧美私人家庭影院| 婷婷五月中文在线视频| 欧美超级视频97| 五月天另类视频| 激情黄色五月天| 久久丁香婷婷色情综合| 99热天堂| 色丁香五月婷婷婷| 久久受www免费人成| 国产成人亚洲综合A∨婷婷| 玖玖色综合网| 69精品人人人人| 色狠久| 色五月成人| 欧美成人猛片AAAAAAA| 激情深爱综合网| 色色色色色色色色五月先| 精品国产乱码久久久久夜深人妻| 深爱五月最新网址| 黄色成人网站在线播放| 五月丁香成人网| 情趣视频66| 久久五月丁香| 热久综合| 色啪网| 五月天狠狠干| 超碰免费人妻| 五月婷三级片| 色婷婷操逼| 久久婷婷一级片| 92久久| 日本在线观看99| 日韩黄黄| 丁香六月天堂| www.超碰| 伊人久热91| 99热9| 婷婷五月天小说| 天天在线天天综合网色| 久婷婷五月综合欧美| 成人做爰A片免费看网站找不到了| 激情五月天 婷婷| 这里只有精品日韩精品| 亚洲成人av在线播放| 国产婷婷色综合AV蜜臀AV| 成人免费高清在线播放| 人人干AV| 婷婷五月综合激情| 秋霞少妇毛片| 爱久久小说下载网| 外国碰视频网站97| 逼里香不卡| peg 2区三区四区的| 97色97干| 丁香五月 性爱| 99热亚洲| 成人AV片播放| 99免费视频| 久久HD| 久久性爱视频网站| 亚洲日韩26uuu| 丁香六月婷婷久久综合| 午夜丁香综合婷婷| 欧美人人草草| 天天躁日日躁狠狠躁日日躁2022年5月9日| 色玖玖综合网| 人人摸人人搞| AV79| 先锋资源 996| 这里只有精9| 九九伊人网| 色偷偷色婷婷| 色99无码| 91婷婷丁香五月亚洲| 夜精品无码A片一区二区蜜桃| 超碰人人在线| 色你久久| 99热碰碰| 婷婷无码五月天| 五月天激情无码专区| 99.色| 色婷婷丁香特级性爱视频| 97丁香花五月天激情小说| www.91久久| www.五月婷婷| 亚洲在线操| 97色婷婷五月天| 96精品久久久久久久久| 六月丁香停| 色婷婷五月天偷拍| 97精品自拍视频| 97干在线看| 在线99色| 伊人久久大香天蕉亚洲特级| 热996精品在线观看| 综合久久六月| 色欧美日| www.日本91| 婷婷综合97| 黄网在线免费观看| 异能之下短剧免费观看全集| 色999亚洲人成色| 99色综合网| 狠狠色婷婷在线| 久久黄色免费视频| 丁香五月aV| 五月丁香六月婷婷综合伊人| 色婷婷狠狠久久综合五月| 免费播放99性爱视频| 婷婷五月天在线观看免费| 色播五月婷婷五月| 五月婷婷婷丁香播| 五月婷中文字幕| 综合久久婷婷| 另类天堂| 婷婷六月天国产综合| 久久3级片| 亚洲成人网站在线| 91人人网| 日日操夜夜爽白洁| 热99只有精品| 99看片| 99热人人| 天天爽天天| 丁香六月婷婷操逼网| 丁香五月www| 超碰在线精品| 婷婷大美在线| 婷婷五月天激情五月天深爱五月天| 天天久综合| 一本久道综合色婷婷五月| 久久99久久99久久99人受| 日韩人妻AV在线| 欧美日韩五月婷婷| 99热精品在线| 九九热这里只有精品一| 四月婷婷五月丁香| 色色色色色综合| 伊人高清无码| 色狠狠综合入口| 色五月丁香六月资源站| 婷婷娱乐丁香综合网| 欧美日韩国产成人在线| 色人久夂| 丁香六月 人妻| 五月天开心婷婷激情网站| 夜夜躁爽日日| 亚洲无码猫咪| 大香蕉九九| 亚洲狠狠狠| 五月婷婷激情综合| 亚洲六月色| 99热大香蕉| 色婷婷九月综合| 丁香五月影视| 天天激情站| 激情综合五月天| 激情综合六月| 99亚州综合精品成人网| 1级欧美日韩| 国产67194| 五月激情综合美女久久| 日日夜夜狠狠| 玖色色综合| 久久婷婷五月综合激情国产| 久久五月婷婷丁香| 伊人久久大香线蕉精品| 色99视频| 亚洲天堂aaa| 超碰在线看| 99干99| 开心五月婷婷99| 欧美性爱五月天| 综合网狠狠| 草AV9999| 婷婷色五月丁香六月欧美啪| 五他月天啪啪啪| 婷婷5月开心6月| 99人人操人人操人人精| 狠狠操在线视频| 超碰爱爱爱| 国产精品婷婷午夜在线观看| 囯产精品久久欠久久久久久九大| 伊人大香蕉在线视频| 五月婷婷性爱| 中文字幕 中文字幕明步| 九九久久精品國產| 99re这里有精品手机在线| 色色网站在线| www.婷婷.com| 天堂草在线观看| 538在线精品| 九九热亚洲中文在线观看免费| 九九在线精点品| 久热精品免费视频4| 九九这里有精品视频| 色综合婷婷| 五月丁香婷婷啪啪综合| 97丁香五月| 婷婷五月天性色| 天天草狠狠擦| 丁香五月久久| 这里只有精品视频222| 婷婷丁香九月| www.9797国产| 人人播| 99色在线免费观看视频| 五月婷婷亞洲中文| 久cao香蕉影院| 五月婷综合性中心| 亚洲成av人影院| 十月丁香婷婷| 色色五月天激情| 99国产er热视频| 五月天婷婷社区| 五月婷在线| 天天操天天操天天操天天操天天操| 久久久99视频| 色综合网址| 人人操AV| 五月天婷婷色| 五月激情丁香五月| 五月丁香六月色| 天天射夜夜爽| 欧美日韩91| 婷婷在线五月天观看| 国产做爰视频免费播放| 综合五月天天天天天五月| 婷婷五月激情欧美大胆视频|