久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

SystemVerilog對象拷貝與參數(shù)化類:驗證環(huán)境實戰(zhàn)陷阱解析

SystemVerilog對象拷貝與參數(shù)化類:驗證環(huán)境實戰(zhàn)陷阱解析 做驗證的兄弟應該都撞見過這種鬼打墻的 bug你在 scoreboard 里比較完數(shù)據(jù)順手改了一下某個 transaction 的字段做 debug結果下一拍發(fā)現(xiàn) reference model 那邊的同一筆數(shù)據(jù)也變了。代碼邏輯翻來覆去看了三遍沒有任何人對參考模型寫過數(shù)據(jù)。最后實在沒辦法把兩個對象的地址打出來一看——好家伙根本是同一個對象。這就是 SystemVerilogSV對象拷貝里最經(jīng)典的淺拷貝陷阱你以為是復制了一份數(shù)據(jù)實際上只是復制了一個句柄兩個變量牢牢握著同一塊內(nèi)存。再說到標題里的另一個主角參數(shù)化的類很多朋友剛接觸 SV 面向對象編程時會把它當成 C 模板的低配版簡單用class #(type T int)包一層就覺得完事。實際在驗證環(huán)境里對象拷貝、參數(shù)化類和數(shù)據(jù)類型轉換這三件事是纏在一起的參數(shù)化類經(jīng)常接收不同類型的 transaction而不同類型的對象在發(fā)出去之前往往需要做動態(tài)轉換轉換失敗又可能引出一堆和拷貝相關的連帶問題。這篇文章就把這三件事從原理到實操捋一遍最后再分享幾個我在真實項目里踩過、填過、覺得值得記住的坑。1. 改了 A 卻影響了 B對象拷貝中最常見的句柄共享事故1.1 一個能完美復現(xiàn)問題的最小用例先把問題現(xiàn)場還原出來。假設我們有一個最簡單的包class pkt; int data; int id; endclass然后寫兩行幾乎所有人都寫過的代碼pkt a; pkt b; a new(); a.data 100; a.id 1; b a; // 你以為復制了一份 b.data 200; $display(a.data %0d, b.data %0d, a.data, b.data);這段代碼的打印結果是a.data 200, b.data 200。如果你心里預期的結果是a.data 100那你就撞上了 SV 對象語義里最基礎的一個特點b a并不會創(chuàng)建一個新對象它只是把a這個句柄的值復制給了b兩個名字指到同一個對象上去了。很多從 C 語言或者從 Verilog 的reg、wire思維轉過來的朋友剛開始非常不適應這件事。因為在 C 里結構體變量之間可以直接賦值值是整體搬過去的在 SV 里類變量不是值是引用。你復制引用不會復制對象就像你抄了一份通訊錄的地址不代表你把那個人也復制了一份。1.2 句柄、對象與內(nèi)存地址先把這個基礎焊死要徹底理解對象拷貝必須分清楚三個概念句柄handle、對象object和內(nèi)存地址。我們寫pkt a new();干的事情是在仿真器的堆上創(chuàng)建了一個pkt對象然后把指向這塊內(nèi)存的門牌號存進變量a。a本身不是對象a是一個存放著對象地址的句柄變量。所以在 SV 里兩個句柄指向同一個對象是非常常見、也非常合法的狀態(tài)這不叫兩個一樣的對象而是對同一對象的兩個稱呼。一個更生活化的類比是對象是房子句柄是門牌號。b a只是把門牌號又抄了一份給你兩個人還是拿著同一個門牌號去找同一棟房子。你在房子 A 里重新裝修拿著另一份門牌號的 B 過來看看到的當然也是裝修后的樣子。理解了這一點再看下面這些行為就會很清晰操作結果是否創(chuàng)建新對象b a;b 和 a 指向同一對象否b new(); b.copy(a);b 是新對象成員值來自 a是b a.copy();若實現(xiàn)了 copy 返回新對象是b new a;取決于類中是否定義接收 a 的構造函數(shù)不一定1.3 從共享到獨立究竟差在哪知道了b a是共享句柄之后問題就變成怎么讓兩個對象真正獨立最常見的偷懶寫法是b new(); b.data a.data; b.id a.id;這個寫法對只有兩個成員的類沒有問題但 transaction 的成員通常不止兩三個。典型的一個總線事務對象可能有十幾個字段還有定長數(shù)組、動態(tài)數(shù)組、隊列、事件、其他對象的句柄甚至還要處理嵌套對象。你寫幾次b.xxx a.xxx就知道這種純手工逐字段復制的做法多寫兩個類之后一定會漏字段。前面表格里還提到一種寫法是b new a;這里要特別提醒SystemVerilog 不會像 C 那樣自動給你生成一個以同類對象為入?yún)⒌目截悩嬙旌瘮?shù)。b new a實際調用的是new(a)這個調用能不能編譯、語義是否做拷貝完全取決于類里面有沒有顯式定義一個接收a類型參數(shù)的function new。如果類里沒有定義很多仿真器會直接報錯或者行為未定義如果定義了那也是你寫的邏輯在起作用而不是語言默認幫你拷貝。所以 SV 社區(qū)里最常見的、可移植性最好的拷貝方式是自己實現(xiàn)一個copy()方法不要依賴這種語法糖。2. 淺拷貝和深拷貝的本質new、copy 與 clone 的分工2.1 默認行為解剖為什么 SV 不自動給你一個拷貝構造既然標準庫沒有默認拷貝構造那我們就得自己把拷貝這件事做對。在做之前先明確兩個概念淺拷貝shallow copy和深拷貝deep copy。淺拷貝的定義是新對象創(chuàng)建出來后每個成員變量的值都復制了一遍。這句話聽起來很簡單但有一個埋伏如果某個成員本身是另一個對象句柄那么復制這個句柄的值只是讓新對象和舊對象指向同一個子對象。舉個例子class addr_t; int addr; endclass class pkt; int id; addr_t addr; endclass如果我們寫一個淺拷貝函數(shù)function pkt shallow_copy(); shallow_copy new(); shallow_copy.id this.id; shallow_copy.addr this.addr; // 只復制了句柄兩個對象的 addr 還是同一個 endfunction那么復制出來的pkt對象它的addr成員和原來的addr成員仍然共享同一個addr_t對象。這不一定都是壞事但它一定是你需要明確知道的語義。如果你在復制后把那邊的addr.addr改了這邊的也會跟著改。深拷貝則是不僅復制頂層對象還要把頂層對象手里所有的子對象、數(shù)組元素、隊列元素等全部遞歸復制一遍。深拷貝之后新舊對象之間除了字段值相同再沒有任何共享內(nèi)存。2.2 自實現(xiàn) copy 函數(shù)處理基本成員、對象成員與隊列成員在 SV 里一個可復用的深拷貝函數(shù)通常按下面幾步來寫。第一步處理所有內(nèi)建值類型成員int、bit、logic、enum、string等。這些直接賦值即可。第二步處理對象引用成員。對每個類成員要么調用它自己的copy()方法要么new()一個新的再逐字段賦值。第三步處理動態(tài)數(shù)組、隊列、關聯(lián)數(shù)組。這一步最容易被漏。因為 SV 的數(shù)組賦值是比較智能的直接new_array old_array可以復制整個數(shù)組內(nèi)容所以不少人以為隊列也可以直接賦值就完事了。對動態(tài)數(shù)組和隊列來說直接賦值確實會復制元素但如果元素本身是對象句柄那復制的是句柄數(shù)組數(shù)組里的對象仍然是共享的。想深拷貝數(shù)組對象得用循環(huán)逐個 deep copy。第四步處理可能存在的自引用和循環(huán)引用。比如類 A 里有一個A next成員深拷貝時如果不加判斷會無限遞歸下去。簡單場景可以約定好只深拷貝數(shù)據(jù)對象不深拷貝連接關系復雜場景可以維護一個已經(jīng)拷貝過的舊對象到新對象的映射表碰到已拷貝過的對象直接返回已有副本。一個比較完整的手寫深拷貝模板如下class pkt; int id; string name; int payload[$]; addr_t addr; bit has_addr; function pkt copy(); pkt c new(); c.id this.id; c.name this.name; c.payload this.payload; // 隊列整體復制元素是 int沒問題 if (this.has_addr) begin c.addr new(); c.addr.addr this.addr.addr; end c.has_addr this.has_addr; return c; endfunction function void copy_to(pkt rhs); rhs.id this.id; rhs.name this.name; rhs.payload this.payload; if (this.has_addr) begin if (rhs.addr null) rhs.addr new(); rhs.addr.addr this.addr.addr; end rhs.has_addr this.has_addr; endfunction endclass這里我故意寫了兩個函數(shù)一個copy()返回新對象一個copy_to(rhs)把內(nèi)容復制到一個已存在的對象。為什么需要兩個因為驗證環(huán)境里兩種場景都有scoreboard 里希望再搞一個一樣的對象存起來用copy()driver 里希望把已經(jīng)創(chuàng)建好的對象內(nèi)容更新一下用copy_to()更省內(nèi)存。2.3 UVM 環(huán)境里 copy/clone 的常見約定如果你已經(jīng)在用 UVM很多對象繼承自uvm_objectUVM 自己有一套拷貝機制。核心是兩個 virtual 方法copy和clone。默認行為是copy調用do_copyclone創(chuàng)建新對象后調用copy。如果你的類沒有實現(xiàn)do_copy那么copy什么都不做clone只會返回一個空對象。UVM 的uvm_object_utils宏配合 field automation 時copy會按照字段宏定義逐個復制。但這里有個容易忽略的點field automation 對對象字段比如uvm_object_field默認只復制句柄也就是淺拷貝。你聲明了uvm_object_utils不代表自動深拷貝要深拷貝嵌套對象必須在do_copy里顯式處理或者約定好被嵌套對象不可變。我見過不少團隊在項目手里的 base transaction 里實現(xiàn)一次完整的深拷貝copy然后所有派生事務類在重寫do_copy時先super.do_copy(rhs)再補自己新增的字段。這個思路簡單又不容易漏推薦給還沒形成規(guī)范的項目。3. 驗證環(huán)境里對象拷貝的實戰(zhàn)位置從 driver 到 scoreboard3.1 transaction 對象在組件間流動時哪些環(huán)節(jié)必須拷貝搞清楚了拷貝的機制再把它放進完整驗證環(huán)境的上下文里。一個典型的約束隨機驗證平臺里transaction 對象是這樣流動的generator 生成對象通過 sequencer/driver 轉成接口信號monitor 從接口采樣得到對象發(fā)給 scoreboard 和 reference model。在這條鏈路上并不是每個環(huán)節(jié)都要拷貝。需要拷貝的地方通常是這兩類第一類是存檔場景。scoreboard 里經(jīng)常需要一個期望值隊列把進入 DUT 之前的數(shù)據(jù)包保存起來等 DUT 輸出再做比對。如果直接把 generator 的那個句柄塞進隊列后續(xù) driver 把同一對象改掉scoreboard 里存的東西也被改了比對就全面失真。這種場景必須深拷貝一份再入隊。第二類是并發(fā)處理場景。一個事務對象同時被多個 component 處理時如果 A 組件要對它做標記、加字段、改狀態(tài)而 B 組件希望看到原始狀態(tài)那么必須先復制出一份獨立對象給 A 用。不復制的話A 的修改會像一個全局變量一樣毒化所有引用者。不需要拷貝的場景interface 信號驅動、mailbox 的純傳遞、只讀的數(shù)據(jù)分析。在這些場景里拷貝純屬浪費仿真時間和內(nèi)存。3.2 mailbox 傳輸?shù)目截惻c否一種常見的性能與正確性權衡mailbox 是 SV 里最常用的線程間通信手段但它傳遞的同樣只是句柄。很多人也有一個疑問把對象放進 mailbox要不要先 copy 一份答案取決于接收方是否會修改對象。如果接收方拿到對象后只是讀取并轉換成信號那么不拷貝沒有任何問題還更高效。如果接收方拿到后要修改并且發(fā)送方之后還會用這個對象那么不拷貝就有隱患。一個比較穩(wěn)妥的約定是發(fā)送方一旦把對象放進 mailbox就視為所有權移交。后續(xù)想再保留數(shù)據(jù)發(fā)送方在 put 之前自己先深拷貝留存接收方擁有對對象的修改權。這樣責任邊界清晰不容易出現(xiàn)兩邊同時改一個對象的競爭。一個額外提醒如果發(fā)送方在循環(huán)中重復使用同一個句柄發(fā)數(shù)據(jù)比如forever begin trans new(); // 隨機化、填充字段 mb.put(trans); end這種情況每次都是新對象不需要拷貝。但如果是復用同一個對象forever begin // 不重新 new只改改字段再發(fā) trans.data data; mb.put(trans); end接收方拿到的每一個包實際上都是同一個對象。等下一個循環(huán)改了data已經(jīng)進入 mailbox 的包也會跟著變。這種 bug 比淺拷貝更隱蔽因為它看起來是每一包數(shù)據(jù)都一樣而不是某一包被篡改。排查到最后往往要打地址才會恍然大誤所有包全是一個地址。3.3 拷貝實踐中的典型錯誤與查驗習慣我在實際項目里見到的、以及自己犯過的典型錯誤大致有這么幾類第一類定義了copy()但忘記維護新增字段。類加了一個新字段copy()沒同步更新導致復制出來的對象某些字段是默認值。這個錯誤平時很難發(fā)現(xiàn)因為大多數(shù)時候你不比對每個字段只有在某個用例數(shù)據(jù)恰好依賴那個字段時才爆發(fā)。應對辦法每次改 transaction 類時強制看一眼copy/do_copy方法或者干脆在 base 類里加一個自查方法比較兩個對象所有字段是否一致測試時點用一下。第二類把淺拷貝當深拷貝用。對象成員、動態(tài)數(shù)組里的對象元素都沒復制導致所有引用者共享子對象。尤其 UVM 的 field automation 默認淺拷貝這個坑非常容易踩。寫代碼前先問自己一句這個對象會不會在被復制之后繼續(xù)被別人改如果會請確認嵌套成員都是深拷貝。第三類拷貝后忘記恢復隨機化狀態(tài)。SV 類的randomize()每次調用都會重新隨機如果拷貝函數(shù)內(nèi)部動不動new()出一個新對象把原來已經(jīng)滿足約束的數(shù)據(jù)覆蓋成隨機值就會出現(xiàn)比較不過但不知道哪里錯的詭異問題??截惡瘮?shù)要嚴格只復制、不隨機。檢驗拷貝是否深的一個好辦法復制后把舊對象里最內(nèi)層的一個字段改掉看新對象是否跟著變。寫一個調試用的check_independent()函數(shù)在測試環(huán)境常駐比事后排查省時間得多。4. 參數(shù)化類把一類多用寫進類型系統(tǒng)4.1 參數(shù)化類解決了什么痛點對比宏定義和基礎類繼承對象拷貝解決的是內(nèi)容獨立參數(shù)化類解決的是類型通用。兩者在驗證組件復用里經(jīng)常遇到。假設你要寫一個通用的generator它可以產(chǎn)生eth_pkt也可以產(chǎn)生axi_txn還可以產(chǎn)生i2c_seq。不用參數(shù)化的時候有兩條路一條路是寫一個以uvm_object為基類的通用類內(nèi)部保存uvm_object item然后在具體使用點把它$cast成目標類型。這條路的問題在于類型安全性差$cast失敗要到運行期才能發(fā)現(xiàn)而且代碼里到處是類型轉換可讀性差。另一條路是用define宏生成整套代碼。宏替換做的代碼生成雖然也能復制代碼但它繞過了類型檢查、函數(shù)作用域和調試器宏展開的錯誤信息經(jīng)常把真實行號搞沒維護成本非常高。參數(shù)化類把類型作為參數(shù)傳入相當于讓編譯器幫你做類型檢查同時保留一套代碼的維護便利性。你用一份generator的實現(xiàn)就能生成generator#(eth_pkt)、generator#(axi_txn)這些類型特化每個特化都有自己的類型安全約束。4.2 語法拆解類型參數(shù)、整數(shù)參數(shù)、默認值與實例化參數(shù)化類的語法本身并不復雜核心是把參數(shù)列表放在類名后面class generator #(type T uvm_object, int MAX_CNT 100); T current_item; int cnt; function new(string name generator); super.new(name); endfunction task run_phase(uvm_phase phase); repeat (MAX_CNT) begin if (!$cast(current_item, create_item())) begin uvm_fatal(CAST, $sformatf(cannot cast to %s, current_item.get_type_name())) end item_port.write(current_item); end endtask // 由子類重寫 virtual function T create_item(); create_item null; endfunction endclass實例化也沒有特殊之處generator#(eth_pkt) eth_gen; eth_gen generator#(eth_pkt)::type_id::create(eth_gen, this);需要注意幾個細節(jié)。第一參數(shù)列表里type T是類型參數(shù)int MAX_CNT 100是值參數(shù)值參數(shù)必須帶默認值或者在使用時顯式給出否則實例化時編譯器會抱怨參數(shù)不夠。第二參數(shù)化類作為基類使用時子類必須指定參數(shù)不能繼續(xù)留一個未決定的 Tclass eth_generator extends generator#(eth_pkt); virtual function eth_pkt create_item(); eth_pkt p eth_pkt::type_id::create(p); return p; endfunction endclass第三如果你需要在類外前向聲明一個參數(shù)化類語法要寫成typedef class generator#(type T);不過這個寫法在不同仿真器上支持程度不完全一致如果你的仿真器不支持可以考慮換一種設計盡量避免對參數(shù)化類做前向聲明。4.3 參數(shù)化類中的靜態(tài)成員與常見假象參數(shù)化類一個容易出問題的點是static成員。普通類里static成員是全局唯一的參數(shù)化類里的static成員按 SystemVerilog 標準每個特化類型各有自己的一份。class typed_pool #(type T); static int pool_count; endclasstyped_pool#(A)::pool_count和typed_pool#(B)::pool_count是兩個完全獨立的變量。有些人會以為只要是 typed_pool 都是同一個靜態(tài)變量結果 A 類型累加了一個計數(shù)B 類型卻看不到查半天根本原因。這個行為在不同仿真器上曾經(jīng)也有過不一致的 bug如果你要大規(guī)模使用參數(shù)化類的靜態(tài)成員建議在項目初期先做一個最小用例跑一遍目標仿真器確認行為。還有一個常見的假象是兩個不同參數(shù)的特化類不要指望它們之間可以隨意賦值。generator#(eth_pkt)和generator#(axi_txn)是完全不同的類型即使它們的代碼結構一模一樣。如果你想讓它們之間做某種通用操作必須讓它們繼承同一個非參數(shù)化基類。5. 參數(shù)化類 數(shù)據(jù)類型轉換搭建一個類型安全的通用組件5.1 實戰(zhàn)需求一個可以指定事務類型的通用 generator最典型的組合使用場景是搭建一個帶約束的通用 generator它只負責生成、隨機化、發(fā)送對象至于具體生成什么類型的對象由參數(shù)T決定。比如 UART 項目需要一個uart_txn生成器SPI 項目需要一個spi_txn生成器代碼 90% 是重復的。參數(shù)化類把它縮成一份class gen_t #(type T uvm_sequence_item) extends uvm_sequence #(T); constraint c_default { item.size inside {[1:16]}; } virtual task body(); repeat (10) begin uvm_do(item) end endtask endclass這里面的關鍵技術點在于uvm_sequence #(T)的REQ類型已經(jīng)被參數(shù)化為 TUVM 的宏uvm_do(item)會自動對 item 做正確的類型處理。如果不用參數(shù)化類你就得為每個事務類型各寫一個幾乎相同的 sequence 子類或者在基類里寫一個uvm_sequence_item類型的 item然后再在 body 里到處$cast。對象拷貝在這里也有一席之地當你用uvm_do產(chǎn)生一個 item 時UVM 內(nèi)部會調用 clone 將 item 復制到 sequencer 的請求隊列。如果你自己的事務類沒有實現(xiàn)正確的 copy/clone那么 sequence 里生成的事務和 sequencer 實際收到的可能就是兩個不同的東西甚至 field 都是默認值。所以參數(shù)化組件和拷貝機制不是兩個孤立話題它們在你的環(huán)境里始終是一起工作的。5.2 $cast 與靜態(tài)轉換類型轉換在參數(shù)化場景下的正確用法參數(shù)化類里的T雖然類型安全但一旦你把T類型的對象放到一個更通用的容器里比如uvm_object類型的成員或者uvm_tlm_fifo#(uvm_object)取出來的時候仍然要做類型轉換。SV 的對象類型轉換有兩種靜態(tài)轉換語法dst target_type(src)。對數(shù)值類型很常用比如把int轉成bit[7:0]會做截斷把logic[15:0]轉成int可能做位寬擴展。對對象類型靜態(tài)轉換只是一個編譯期的斷言它告訴編譯器請認為這個句柄是目標類型但運行時如果實際類型不匹配行為是未定義的通常會讓仿真崩潰或者返回一個無效的句柄。所以對對象類型進行向下轉換時永遠優(yōu)先用$cast。$cast有兩種用法一種是函數(shù)形式eth_pkt p; if (!$cast(p, obj)) begin uvm_error(CAST, obj is not eth_pkt) end另一種是void $cast(p, obj);用于你確定類型一定匹配、并且不想檢查返回值的場景。前者用于防御式編程后者用于性能敏感且邏輯已保證安全的場景。在參數(shù)化類里因為T是編譯期已知的類型你往往可以直接把uvm_object轉回Tclass consumer_t #(type T uvm_object) extends uvm_component; uvm_tlm_fifo#(uvm_object) fifo; virtual task run_phase(uvm_phase phase); uvm_object obj; T item; fifo.get(obj); if (!$cast(item, obj)) uvm_fatal(TYPE, $sformatf(expect %s, got %s, $typename(T), obj.get_type_name())) // 安全使用 item endtask endclass$typename(T)是調試類型不匹配時的利器編譯期展開成實際的類型名打印出來非常直觀。5.3 在這個組件里如何安全地做對象分發(fā)再進一步參數(shù)化類加上$cast可以寫出很安全的分發(fā)器。比如你有一個uvm_analysis_port#(uvm_object)不同的 monitor 向里面扔不同類型的對象下游的參考模型通過參數(shù)化類只接管自己關心的類型。我這里有一個實際用過的簡化版本。先定義一個參數(shù)化的filter_tclass filter_t #(type T uvm_object) extends uvm_component; T cached; int hit_cnt; int miss_cnt; uvm_component_param_utils(filter_t#(T)) function new(string name, uvm_component parent); super.new(name, parent); endfunction virtual function void write(uvm_object obj); T item; if ($cast(item, obj)) begin cached item; hit_cnt; end else begin miss_cnt; end endfunction virtual function void report_phase(uvm_phase phase); uvm_info(FILTER, $sformatf(hit%0d miss%0d typename%s, hit_cnt, miss_cnt, $typename(T)), UVM_LOW) endfunction endclass把這個類從uvm_subscriber#(uvm_object)派生出來每個組件可以在構造函數(shù)里指定自己的 T。類型匹配的進來類型不匹配的直接過濾。這種模式下對象從上游傳到下游時全程只有一個句柄在流動沒有多余拷貝同時通過$cast保證了類型安全。關于這個組件還有一點值得提醒因為filter_t#(T)的參數(shù)化UVM 的工廠注冊宏要用uvm_component_param_utils而不是uvm_component_utils。UVM 1.2 提供uvm_component_param_utils就是為了適配參數(shù)化類如果你用的是老版本 UVM這個宏可能沒有需要自己手動實現(xiàn)type_id的 create 機制或者退一步用非參數(shù)化的基類加虛函數(shù)。這也是老項目里參數(shù)化類用得少的一個客觀原因。5.4 對象拷貝和數(shù)據(jù)類型轉換的聯(lián)動一個我踩過的假轉換坑最后分享一個把拷貝和類型轉換結合使用時我實際踩過的坑。當時我有一個base_txn里面定義了一個uvm_object_utils宏還有一個copy()方法邏輯看起來沒問題。子類ext_txn繼承它但copy()重寫時只調了super.copy(rhs)忘了復制自己新增的數(shù)組字段。然后在 scoreboard 里我寫了個通用比較邏輯把期望對象和實際對象都塞進一個uvm_object容器里等到比較時再$cast回base_txn。因為兩個對象都是ext_txn類型$cast成功了數(shù)據(jù)比對卻總是失敗。打印出來一個字段是對的另一個字段是默認值。最后定位才發(fā)現(xiàn)不是$cast的問題而是copy()漏字段導致期望隊列里的對象一開始就是殘缺的。這個案例給我的教訓是類型轉換負責分揀拷貝負責內(nèi)容完整分揀成功不代表內(nèi)容正確。排查問題時要分清階段先確認類型對不對再確認數(shù)據(jù)備份有沒有做全。兩者混在一起排查往往會浪費大量時間。6. 從對象拷貝到參數(shù)化類我在項目里用得最順的幾個技巧把前面幾章的東西收攏一下分享幾個我在真實項目里沉淀下來的、直接能用的技巧和習慣。這些內(nèi)容不復雜但確實能幫你少走彎路。第一個技巧給所有 base transaction 實現(xiàn)一個統(tǒng)一的deep_copy()約定。不管項目里有沒有 UVM我都建議在頂層基類里定義一個virtual function void deep_copy(input base_txn rhs)子類重寫時第一句永遠是super.deep_copy(rhs);后面再復制自己的新字段。這樣任何子類對象都能通過基類句柄完成深拷貝不需要在每個場景里做類型分支。第二個技巧拷貝函數(shù)里統(tǒng)一使用copy_to風格即把內(nèi)容填充到已分配的對象里而不是copy返回新對象。返回新對象在語法上更直觀但每次調用都會new()在高頻率的 scoreboard 比對場景里會產(chǎn)生大量對象創(chuàng)建和釋放給仿真器 GC 帶來壓力。copy_to配合對象池能把內(nèi)存分配次數(shù)降下一大截實測在高吞吐場景下仿真速度能有可感知的提升。第三個技巧參數(shù)化類的類名里盡量帶上類型名比如gen_t#(eth_pkt)在打印日志時會顯示gen_t#(eth_pkt)非常利于調試。如果嫌名字長可以在實例化時用typedef起個短名typedef gen_t#(eth_pkt) eth_gen_t;這個短名只在當前作用域生效不污染全局命名空間日志里還能看到完整類型信息兩全其美。第四個技巧多線程共享句柄時把 SV 的 timeslot 調度機制納入考慮。同一個 time slot 內(nèi)fork...join_none啟動的線程和主線程看到的對象狀態(tài)是一致的如果你在子線程里改了對象字段主線程下一行代碼立刻也能看到。這個立刻可見其實經(jīng)常是 copy 漏寫的信號如果你發(fā)現(xiàn)一個對象被多個線程同時修改與其依賴仿真器調度順序不如先檢查是不是某個地方缺少深拷貝。我見過不少偶發(fā)性的 compare mismatch最后都是這個原因。第五個技巧用$typename()打印真實類型尤其是在參數(shù)化類的工廠創(chuàng)建和$cast失敗現(xiàn)場。SV 的內(nèi)建$typename()函數(shù)對參數(shù)化類的輸出比get_type_name()更準確因為get_type_name()在參數(shù)化類里經(jīng)常返回空白或者同一個名字你沒法區(qū)分究竟是哪個參數(shù)特化出來的對象。結合前面的 filter 例子我在所有類型轉換失敗的地方都會打一行$typename(obj)對$typename(T)把實際類型和期望類型擺在一起看基本一眼定位。這些技巧看著零散但背后的核心思想是一致的面向對象驗證代碼的很多 bug本質都是對象身份和對象內(nèi)容這兩件事沒分清楚??截惤鉀Q的是內(nèi)容獨立參數(shù)化解決的是類型通用$cast解決的是類型安全這三者配合好了驗證組件可以做到又通用又不容易出錯。最后再啰嗦一句SV 的面向對象機制上手語法一天就夠了但真正用得穩(wěn)一定是在項目里一遍遍踩過、觀察過對象生命周期之后。希望這篇從對象拷貝講到參數(shù)化類的文章能幫你少踩幾個我踩過的坑。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品欧美日韩在线观看| 少妇毛片久久| 91天堂网| www.91视频网| 亚洲天堂久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 99后入| 另类天堂| 国产 日韩 另类 视频一区爱| 中国熟妇| 亚洲色综网| 伊人久久大香线综合无码| 中国东北熟女老太婆内谢| 日韩精品人妻| 亚洲天天综合| 蜜臀AV午夜精品久| 一区二区三区四区在线不卡| 狠狠操狠狠燥| 欧美体内射精| 很很很很操| 欧美色图成人网一区二区| 九九无码| 人人污日韩一区二区| 久久天堂网| 丝袜内射| 黑人精品久久97| 美女毛片999| 97超视频在线观看| 男女香蕉一区二区| 国产馆| 超碰免费人妻在线| 亚洲视频精选| 日本天天干天天操一区| 欧美懂色综合网| 97射欧美| 欧美色图私拍91| 久久发布国产伦子伦精品| www.狠狠| 素人播放一区| 天操老女人| 香蕉免费一区二区三区不读 | 天天肏夜夜肏| 97操b| 久久大香蕉97| 日韩一级久久毛片| 亚洲色欲天天天堂色欲网女| 欧美激情另类一区二区| 日韩黄色一区二区三区| 色婷婷亚洲婷婷| 色爱综合网| 亚洲国产精品久久久久婷婷青年| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 欧美日韩另类在线| 亚洲中文日韩精品| 精品人妻视频一区二区三区蜜桃视频| 91精品国久久久久久无码| 天天综合网AV91| 中文字幕午夜精品久久久| 欧美三级偷拍| 色黄色美女大长腿午夜视频| 国产精品色色| 国产AV天美| 中文字幕精品一区二区精| 影音先锋每日最新资源在线观看 | 韩国轻伦国内自拍一区| 欧美色天堂网在线视频| 91丝袜美女视频| 亚洲日韩av专区无码| 岛国毛片在线观看免费| 黄片免费看黄片免费看| 丝袜视频一区二区在线播放国产中文 | 麻豆 亚洲 97| 99热伊人| 毛片电影一区二区三区| 国产麻豆一级精品视频| 婷婷五月天av| 欧美丰满熟妇XXXX性ppX人交| 亚欧视频在线| 久久夜色一区二区| 国产午夜福利合集| 人人贴人人摸| 久久精品亚洲婷婷| 国产91专区| 99久久无码| 超碰AV在线| 大香网伊人久久综合网eew| 天美av在线| 肏逼福利网站| 欧美午夜精品久久久久久超碰| 91天射| 校园春色亚洲| 99久久综合网| 快播久久人人aV| 日本人妻中文字幕精品| 成人精品电影| 欧州91高潮| 无套内射人妻在线播放| 97看操| 久久男人天堂| 水野优香在线观看| 91欧美综合| 欧美成人一区二区三区在线播放| 中文字幕人乱码中文字的预防方法 | 9国产超碰| 性爱av在线免费观看| 午夜色婷婷| 国产拍偷精品网站| 丁香五月激情网| 久久99精品九九久久久婷婷| 黄色激情电影在线观看| 久久久月天| 啪啪免费| 可乐操亚洲蜜911| 欧美网站免费| 91色拍| 超碰av在线| 亚洲麻豆18发?| 丰满人妻无码一区二区三区| 91nbbbbbb| 香蕉黄色一级视频| Aa东京男人的天堂| 唐山老熟妇露脸啪啪叫| 黄页网站成人免费| 91狠| yaouchengrenav| 久久久久久久久久久97| 天天日天天干天天操| 欧美黑人XXXⅩ高潮交| 69精品| 日韩伦理视频| 超碰国产精品无码| 91爱欧美| www.色综合| 久久久久白虎| 黄色二级片网站| 豆花视频操逼网址| 97精品久久久久中文字幕| 久久毛卡| 精品对白久久不卡| 艾草av| 看大黄色大片原件| 亚欧操逼片在线观看 | 亚洲乱码尤物193YW| 久久九九热| 色999亚洲人成色| A片大香蕉在线| 欧美一级专区免费大片| 色婷婷电影网| 精品成人亚洲午夜电影| 好湿好紧视频| 欧亚不卡| 99精彩视频| 女性喷水高潮在线观看| 亚洲国产中文字幕| 怡红院视频在线| 日韩精品国产一区二区| 国产精品白丝www| 久久精品视频28| 激情五月天色色| 热思思免费视频| 91美女国产在线| 96精品在线| 久久男人精品| 91精品国产综合久久久蜜臀酒店| 偷窥自拍亚洲| 亚洲少妇在线影音| 2011国产精品| 女人高潮大叫一级毛片| 中文字幕高清精品一区| 久久久极品| 中文字幕超碰CAO| 开心五月深爱五月| 操我无码| 太久视频| 天天操夜夜操狠很操| 大香蕉伊人75| 天天热精品| 啊啊啊在线观看免费视频| 亚洲av无码成人精品国产| 26UUU欧美日本| 天躁夜夜躁2021| 亚洲熟女一区| 天天天堂影视日韩亚洲91| 91 丝袜在线| 宅男午夜在线视频| 日韩精彩免费| 99久久久无码| 91天天日| 97天天摸天天碰| h在线看免费版在线看| 欧美 青青草| 黄片www.| 自拍偷拍 日韩无码| 久久精品熟妇丰满人妻99| 啊啊啊啊,啊啊好多水| 亚洲中文电影| 熟女精品一区二区在线观看| 国产污视频麻豆传媒一区二区| 99综合网| 久久久艹艹艹| 看看小穴| 亚洲男人天堂网久久| 99热在线观看| 欧美色三级片91| 色噜噜狠狠色综无码久久合欧美| 国内精品久久人妻性色av| 爱爱动态试试看6 0秒| 丁香五月天激情综合| 中国探花熟女| 插插综合网天天影视网| 黑人中出21连凳花野真衣| 久久黄黄| 日韩一999精品| 亚洲日本男人天堂网| 97久久精品亚洲| Julia在线播放亚洲久久| 婷婷性爱| 宅男午夜在线视频| 国内操逼视频二区| 少妇特黄一区二区三区| 麻豆色99999| 久久熟女嫩草成人片免费| 骚日日av| 精品欧美老熟女一二区| 亚洲av影院在线观看| 激情久久久| 国产v亚洲v日韩v欧美v片另类| 天天干天天拍| 九九热男人天堂| 亚洲第一页欧美| 日本人妻伦在线中文字幕| 成人一二| 国产精品女生av| 97精品熟女少妇一区 | 五月婷婷激情综合| 日韩乱码av| 亚洲色9| 国产乱码久久久久久| 97视频免费在线| 亚洲本色精品一区二区久久| 91超级碰| 加勒比人妻综合| 国产suv精品一区| 91在线欧美| 日韩乱伦影音先锋| 久久久9视频| 婷婷激情五月综合| 日本性爱视频一级| 午夜精品99久久久久传媒| 久久久久亚洲精品| 伦理第一页| 天天插夜夜操| 蜜桃成人1区2区3区| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 91国产伊人大香蕉| 另类图片欧美激情综合| 无码国产精品午夜不卡(| 亚洲最大黄网| 在线天堂资源亚洲| 性在久久久久久| 操少妇很爽av| 成人精品久久| 国产AV无码AV| 久久一二三四五六七八九区区| 91热| 日本午夜福利影院| 国产AV人人夜夜澡人人爽麻豆| 啪啪综合网| 丁香五月电影| 中文精品少妇天堂| 91c色| 快点操死我| 亚洲少妇免费视频\| 亚洲成人黄色在线观看| 91蜜臀在线久久久久| 久久久久婷婷精品av电影| 精品国产乱码| 成人久久无码www| 欧美男人天堂| 9久久9综合| 91色插| 亚洲熟女中文字幕在线| 麻豆区久久久久亚| 久久久久久国产精品免费网站| 欧洲Au麻豆| 啊啊啊啊啊啊在线观看| 美女露胸露屁股| 日韩精品-原创伙伴| 国产欧美亚洲精品a第2页| 97精品视频网站| 思思热国产在线视频| 一级黄碟在线观看| 手机在线A片| 亚洲自拍一区夜夜操| 岛国黄片网站| 国产精品高潮久久AV| 91一区二区三区蜜桃| 女色视频社区| 无码人妻精品一区二区三区99不卡| 91neishe| 巨爆乳一区二区爆乳区| 超碰色大香蕉| 玖玖视频在线资源一区二区三区| 久操97| 国产视频一区二区在线观看| 97超碰人人模人人拍人人| 动漫片子网站3黄| 日本成人免费一区二区三区| 久久、1234| 国产 日韩 欧美高清| 欧美 亚洲 91| 91xingse| 欧美不卡二区| 国产美女高潮视频| 蜜臀AV成人精品蜜臀AV久久| 艹少妇网站| 91AV国产精品| 泰国AV在线观看| 国产美女裸体秘 永久无遮挡| 秋霞午夜视频一区二区| 亚洲av淫乱| 人妻第一页| 久久久一热在线播放| 97ai亚洲| 蜜臀AV成人精品蜜臀AV久久| 九九九九精品九九九九| 绯色AV粉色AV蜜臀AV| 偷拍亚洲高清图片| 亚洲男人天堂2017| 日韩美一区| 人妻色偷色噜| 白丝被操91| 吉川爱美亚洲二区在线| 五月天婷婷基地| 蜜乳AV免费观看| 欧美高潮| 免費人妻夜夜爽天天爽爽一区| 国产在线视频二区| 亚州男人天堂| 97亚洲中文| 综合久久中文字幕综合日韩精品| 91亚洲色图| 日日骚精品视频| 欧插网站| 亚洲国产成人高清在线| 欧美18老人禁| 久久国产精品一区二区| 最新精品久久蜜桃 | 男人天堂黄片| 亚洲综合欧美| 亚洲欧美91| 亚洲欧洲无码一区夜| 日韩三级一区 | 超碰在线人人射| 日日AAvv| 九99久久| 校园春色亚洲无码| 91伊人大香蕉| 青青操97| 私色综合网| 日本一区二区成人在线| 国产精品日韩在线一区| 欧美天天| 久久久四区| 9I1性色影院| 无卡一区=区| 91综合国产精品| 午夜成人福利影视| 欧美大香蕉97| 久插综合| 中文字幕人乱码中文字的预防方法| 中文无码一二三区| 一区二区偷拍拍视频| 午夜大香蕉| 亚洲av无码成人精品国产| 久久精品中文字幕无码l| 黄片国产精品一区二区| 亚川综合视频| 日韩av不卡在线看| 东京热男人的天堂精品| 无码精品人妻一区二区三区妖精| 一起草日韩| 亚洲一区二区久久久久| 自拍视频一区在线观看| 极品美女福利在线观看| 欧美久久伊人| 亚洲 日本 一 二 三| 99热精品在线观看| 伊人久久青青草| 一区久久久二区| sss视频华人在线| 麻豆精品A片免费观看| 超碰在线人妻不卡| 1024午夜激情男人的天堂| 亚洲精品白丝| 巨乳特殊服务按摩| 一区在线精品中文字幕| 成人97人人超碰人人| 亚洲 日本 国产 综合| 久久精品日韩| 五月天伊人| 久久久久日本视| 啊啊啊啊啊在线视频| 欧美日韩婷婷中文| 亚洲男人天堂网站| 国产第12页| 国产美女高潮叫床视频| 夜夜一区二区| 国产精品suv一区| 91超碰在线播放| 亚洲狠| 美女天天干| 2018天天干在线视频| 欧美专区日本专区| 亚洲男人天堂av| 色777999综合| 中国少妇啪啪视频| 国产精品直播在线观看直播| 先锋色眉乱伦资源| 深爱激情五月天| 一道本东京热加勒比一区二区三区| 日韩少妇丰满亚洲| 欧美同性恋 的搜索结果 - 91n| 97在线播放| 最新亚洲黄色免费电影| 丝袜美腿制服人妻二区中文字幕| 91在线美女| 久久久专区| 男同专区一区二区三区在线| AV污污污污| 玖玖97综合| 自拍偷拍 日韩欧美| 51一区二区三区| 91蜜臀在线久久久久| 亚州色阁| 成人小说视频在线精品欧美| 丁香五月影院| 天天干1区2区在线| 久久透逼视频| 亚洲精品久| 中出20p| 欧美18 在线观看| 九月婷婷久久| 欧美天天在线| 诱惑人妻欧美一区在线播放| 蜜臀久久久| 丰满人妻一区二区三区| 丝袜大香蕉| 手机av亚洲丝袜美腿日韩第一页二页| 欧美丝袜中文字幕07在线| 亚洲图片 欧美电影| 国产午夜在线观看| 五月婷婷基地| 日韩欧美天堂| 93人人操人人| 蜜桃视频精品一区二区三区| 97超碰欧美手机| 欧美熟女操屄| 日韩少妇无吗| 国产黄色小视频网站| 国产精品色色| 人人澡人人干| 五月综合久久| 玖玖久久久| 一起草av| 97色碰| 亚洲五月丁香花狠狠干一区二区三区 | 国产 大胆 对白| 超碰欧美97| 日本性爱少妇| 无码日韩人妻av一| 亚州熟妇精品| 老司机老司机午夜影院| 2026国产精品视频| 国产高清精品福利| 久久精品男人的天堂| 国产综合网站在线播放 | 久操免费在线| 蜜臀久久一区二区| 久久精品国产精品一区| 蜜臀人妻少妇久久在线观看| 麻豆天美在线| 国产黄色在线播放观看| 欧美暴力猛交| 操逼网免费无码视频| 久久精品无码熟妇一区二区三区视频导航| 一级性爱aaaa| 精品一区二区三区麻豆| 国产伦精品免编号公布| 韩国免费播放一级毛片| 精品一区二区麻豆| 免费一级毛片在线视频观看| juliaann欧美丝袜办公室| 青草青青久久久久久国产| 国产拍偷精品网站| 少妇内射视频| 天天添天天干电影| 国产精品国产自产高清AV| 国产风韵犹存熟妇三区| 亚洲图片欧美91N| 国产超碰AV在线精品| 亚洲熟久久| 婷婷五月天基地| 中国AAAAAA黄色片| 大干人妻| 欧美爆操91| 国内精品久久久久影院亚洲| 青娱乐福利99| 欧日韩一二三f区| 久久国色天香香蕉| 五十路熟女工口 | 日韩91网| 日少妇亚洲版| 另类天堂| 亚洲AV无线| 91亚洲色图| 碰人碰碰人人开房人肉| 丰满翘臀美女影院视频| 日本人人操人人操| 男女日B国产| 亚洲天堂另类| 久久亚洲色图中文字幕| 欧美嗯啊……在线观看视频免费| 日韩AC| 91人妻最真实刺激绿帽| 亚洲开心网| 久艹99| 伊人丝袜美腿高跟在线观看高清| 久热9| 色狠狠 - 百度| 日本国产亚洲一区在线观看| 国产欧美另类久久久精品课程| 国精综合一二三区影视| 欧美少妇大量自拍视频在线观看| 熟女视频久久| 91爆操视频| 内射老妇BBWX0C0CK| 国产精品网址| 上床啊啊啊| 九9精品| 男人把坤坤插入女人的下体 | 国产97视频| 亚洲脚交| 天美欧美国产| 国产曰批免费观看久久久| 96超碰网| 婷婷10月天青娱乐| 少妇九九九九| www.成人无码| www久久精品| 日本高清熟女久久一区| 久久m| 黑人中出21连凳花野真衣| 欧亚综合一卡二卡中文字幕| 99精品久久| 90后性网国产欧美| 91精品大奶人妻| 日韩中文字幕二区| 色色五月天激情| 久草视频分类在线| 五月婷婷综合网| 99热官网| 亚洲天堂东京热| 91女人的网站| 一牛一区二区三区久久| 人人澡人人弄| 国产精品动态一区二区三区四四| 欧亚韩国999| 亚州欧美另类| 亚欧色图在线激情| 韩三级a视频在线观看| 啪啪啪东京| 强奸乱伦亚洲第一页| 国产精品色片一区二区| 久久人人爽人人爽人人片Ⅴ| 日本欧美成人片AAAA| 亚洲综合小说另类图欧美视频激情小说色五月天 | 久久这里都是精品| 国产原创精品| 天天综合香 ld视频| 成人综合视频久久| 校园春色综合香蕉| 美女91网| 在线免费观看高清无码视频| 亚瑟国产精品久久无码| 午夜久久无码1000合集| 人妻熟女午夜精品在线| 亚洲色图 欧美热图 清纯唯美 另类自拍| 嗯嗯嗯不要不要免费视频| 中文字幕-区二区三区四区视频中国| 午夜啊啊啊| 插B在线观看| 玖草在线视频| 性色av网站| 亚洲人妻av| 97超碰色屌| 国产97综合| 国产色产精品在线观看| 久久一区二区高清免费| 黄色AV影视| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 嗯嗯啊啊啊啊轻点视频| 97超碰色情| 国产精品一区二区校花| 欧美男人一区| WWW美腿丝袜香蕉中文| 91人妻在线视频| 国产精品久久久无码AV网站| 国产天美欧美| 国产suv精品一区| 久久久国产av美女私房| 色婷婷影视| 91丝袜在线视频| 600国产精品视频| 91av一区二区在线观看| 五月激情影院| 天天干夜夜肏| 少妇啪啪自拍| 用力操死我| 日日躁夜夜躁狠狠躁超爽| 思思热国产在线视频| 亚洲欧洲小说图片视频| 天美传媒麻豆一区二区三区国产精| 五十路六十路素人熟女| 黄页18禁| 欧美 亚洲 在线| 性爱1区| 日本最新1区2区3区| 青娱乐福利99| 夜夜高潮夜夜爽高清视频一| 性91| 麻豆久久久一区二区| julia ann久久| 福利视频一区二区微拍| 男人 天堂 日 亚洲| 久久伊人最新网址视频| 97精品国产97久久久久久| 91痴汉| 日韩性爱播放| 久肏视频字幕| 一区二区娱乐网站| 久久激情视频| 少妇滛荡视频| 久草精品在线| 激情综合五月天| 伊人九九九| 99爱精品| 日本精品五区| 夜夜高潮夜夜爽| 亚洲 欧美 日韩 国产一区二区| 精品四五区| 中文字幕熟女人妻丝袜| www.狠狠干.coom | 国产高清自拍| 久久久久中出| 嫩草美女久久| 日韩欧洲操屄视频| 男人的天堂2010| 天天综合91| 日韩影片中文字幕一区二区三区| 丁香婷婷五月| 久久久∴| 操比国产| 伊人麻豆传媒| 亚洲精品丝袜| 免费公开人人操| 国产精品大屁股999| 久久九色| 襙一襙| 小骚逼被操的爽不爽| 国产亚洲精品农村妇女| 一二区在线观看视频| 婷婷五月天av| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 亚洲天天自拍| 性感女人网页在线观看视频| 亚洲三区视频| 中文字幕人妻丝袜乱一区三区| 人妻加勒比东京热| 国产野战露脸在线播放| 香蕉国产97| 区一在线观看| 国产精品久久久久无码AV会牛| 精品久久97观看在线视频| 嫩草 人人网精品| 亚洲 欧美 手机在线观看| 日韩啪啪视频| 久久大陆| 嗯嗯啊中文字幕| 久久久久免费看少妇A片特黄| 暴力av在线| 午夜精品久久久99| 第一高清av中文字幕| 91精品人妻偷情| 蜜臀99久久精品| 欧美美女在线高潮999| 插日本熟女视频| 无遮挡男女激烈动态图| chaopen97久久| 少妇与黑人高潮在线| 韩国一级婬片A片AAAAA| 国产亚洲欧美每日在线| 日骚逼视频| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 97se亚洲综合自| 91久久久老司机| 亚洲情色五月天| 色婷亚洲五月在线观看| 熟妇的味道HD中文字幕| 亚州一区二区| 91女日逼| 五十路熟女,国产欧美精品区一区二区三区| 78综合网| 久久午夜伦| 欧美精品1区2区3区| 色欲三区| 一本色道无码DVD中文字幕| 98超碰欧美| 蜜桃臀AV在线| 中文字幕女同在线| 亚洲码和欧洲精品激情系列| 天天干少妇| 亚洲色诱惑| 天天日B夜夜干B时时操B| 男女日B国产| 久久精品国产亚洲5555| 久久精品久久久久久久| 色欧美色交综合| 碰人碰碰人人开房人肉| 久草综合视频| 精品十三区| a男人的天堂| 国内黄色精品| 国产视频一区二区三区久久亚洲天堂| 亚洲天堂区| 日本一级一级一级一级| 涩五月婷婷| 99热这里只有精品9| 综合久久中文字幕综合日韩精品| 免费操逼视频下载| 色色色色网站| 丁香色五月 97干| 综合激情婷婷| 天天摸,夜夜摸| 欧亚综合一卡二卡中文字幕| 天天欧美欧美亚洲网| 午夜天堂精品久久久久91| 婷婷五月天av| 91国产精品在线看| 91大学精品激情戏| 熟女人妻久久中文字幕一二区| 丁香六月婷| 91粉芽高清在线一区二区| 激情99| 国产精品国产自产拍高清AV| 日本不卡码黄色| 夜夜狠狠躁日日躁色视频| 超碰夫妻97| 玖玖爱伊人玖玖爱| 91制服丝袜| 在线视频免费观看午夜| 欧美性爱免费短视频| 99性爱在线观看| 丁香五月激情婷婷| 97人肏| 老司机久久| 国产97在线播放| 97香蕉网| 国产精品激情久久久久久久| 久久九九综合| 99啪啪| 欧美人妻一区二区| 老女人综合网| 国产www色在线观看| 二色av| 久久99手机免费视频| 日韩精品国模| 欧美综合网在线| 国产人伦a片信息免费片| www.激情| 一区二区三区四区久久视1| 亚洲AV色图一区| 国产精品久久久啊| 日韩成人大片在线观看| 不卡超碰护士AV在线免费播放| 国产精品久久久九九九| 东北熟女91| 91快色色色色色| 97久精品| 午夜福利 成人 91| 少妇一区二区三区精选| 九九热视频在线观看| 色九九九综合| 九九碰九九爱97超| 丰满人妻一区二区三区大胸懂色| 黄色大片一区二区密桃丝袜| 不卡六六在线91| 美国黄片aaa| 6080yy午夜理论三级一区二区三区无码| www.高清无码诱惑一区.com | 男人天堂东京热| 亚洲综合在线第一页| 国产一级内射高清视频| 人人看人人插| 开心五月婷婷激情| 天堂亚洲精品久久老牛| 老司机福利青青草| 97av在线视频| 亚洲人码13| 青娱乐老司机视频| 99激情| 久久久草草精品| 91丨九色丨国产丨人妻在线| A V少妇特黄三级| 东北女人性交| 囯产乱伦一区二区三女| 亚洲青色欧美| 日韩视频精品在线观看| 91neishe| 色噜噜国产精品视频一区二区| 懂色AV蜜臀无码精品APP| 欧美在线大香蕉| 一本色道无码DVD中文字幕| 亚洲色久| 最新制服中文第一页| 极品色www影院| 中文字幕免费看| 91午夜无码| 日本99一区二区| 久久精品午夜国产亚洲AV无码| 久久久999日本大片| 自拍六区| 男人的天堂亚洲| 九九九网站| 丁香六月天| www.男人的天堂| 日本 欧美 亚中文字幕| 亚洲男人的天堂va亚洲男人社| 国产成人精品日本视频| 91欧美巨乳| 欧美一级黄色18片免费看| 91AV天美在线视频| 26uuu偷拍亚洲欧洲综合| 国产有码一区| 亚洲综合影院| 欧亚不卡| 午夜影美女日鸡鸡天天视频国产| 少妇与黑人高潮在线| 欧美极品| 国产av尤物| 日本一区二区中文字幕久久| 美女97超碰| 国产成人无码啪| 在线播放中文字幕| 欧美亚洲| 综合五月天| 又大又长又爽| 久久久久亚洲av综合波多野制衣| 欧美性综合| 狠狠爱综合网| 狠狠操,使劲操| 久久久男人的天堂| 亚洲国产激情国产av| 校园春色五月天| 中文字幕亚洲欧美在线不卡| 国产亚洲精品农村妇女| 岛国天天午夜影院传媒网| 亚洲色鬼| 欧美性生活免费网| 91久久国产精品| 嗯啊啊啊轻点视频| 色色色欧美| 中文区中文字幕免费看| 国产suv精品一区二区四| 人妻少妇被猛烈进入中| 成人精品久久| 久久九七| 三级三久久线久久99久目本WW| 91欧洲国产成人久久精品网站| 久久99草| 亚洲综合春色| 日本欧美亚洲高清在线看| 欧美精品97| 国产久久日韩网站导航| 亚洲精品无码久久AV| 国产免费小视频| 囯产操逼片| 五十路熟女人妻一区二区三区四区五| 欧美A√综合网 | 精品视频日日夜夜| 国产三级中文有码在线视频| 国产精品日日摸夜夜添骚逼| 男女性扦B| 天天摸夜夜摸| 超碰免费人人| 中日亚韩免费视频| 欧美色图20p| 五月天AV资源| 欧美日韩亚洲五月天婷婷| 最新AVzaixian| 日本护士高潮| 手机在线播放国产福利| 中文一区二区三区影院| 日本一卡二区在线| 欧美性天天影院| 日韩AV色图| 亚洲男人天堂Av| 激情五月天社区| AAAAAAAAA黄片| 国产91av在线播放| 91久久青青草原精品| 日本幼女18+| 啊啊啊啊啊啊啊啊啊在线观看| 成人熟女视频一区二区三区| 日韩AV片| 99热在线播放| 久久曰曰| 激情色色| www久久99| 五月丁香社区婷婷日韩欧美精品影院 | 亚洲 另类 丝袜 自拍 动漫| 毛片视频白嫩| 中文字幕一区 二区三四五 区日 日骚| 欧美劲爆视频一区二区| 伊人久久在线视频观看| 色哟哟AⅤ| 欧美第一页性| 色色色综合网| 婷婷大香蕉| 久久亚洲av成人无码国产| 日本Xx性爱| 国产高清在线观看欧美| 人人操人人操人人操人人操人人操人人人11.CM| 97国产精品| 久久的免费性爱视频| 男人的天堂久久久| 日韩十八禁| 成人久久久| 欧洲久久一二线| 91精片| 婷婷超| 91被操| 日本熟女免费視颖| www.91理论| 日韩av在线免费网站| 国产精品一区二区三区,亚洲综合| 亚洲自拍天堂| 思思热er精品视频| 亚洲最大无码中文字幕网站| av资源在线播放天堂| 九九色热| 久久精品免费| 伊人久久大香线综合无码| 久久一二三四不卡| 亚洲宗合网| 夜夜嗨一区| 天天干18禁| WWW.操逼.COM| 国产一区二区三区视频在线看| 亚洲天堂人妻熟妇视频| 不卡免费av在线播放| 色婷婷亚洲婷婷| 日韩一999精品| 国产成人天堂| 72av视频| 欧美精品23| 男人的天堂一区三区| 日韩美女高潮喷水视频| 日韩欧美经典在线观看| 欧美丝袜制服久久| 大香蕉综合在线| 99这里都是精品| 欧美一区二区三区大综合| 欧美91精彩| 亚洲无码一区成人免费午夜| 国产91精品在线免费| 尤物黄色在线观看网站| 极品色www影院| 高凊专区人人操| 污污污8888| 97久久超碰国产精品| 欧美人体性爱互联网第一页婷婷日本| 中文字幕精品一区二| 亚洲强奸乱伦影视网| 亚洲欧美精品一区天堂久久 | 亚洲好色人妻| 不卡av免费在线网址| 凸凹视频在线观看| 青青草在线成人视频| 天美传媒av一区二区| 亚洲欧美另类图片| 2018天天干在线视频| 激情婷婷五月天| 学生妹天天看| 99久久精品国产系列| 岛国黄色大片网站| 91红杏| 国产久久天堂资源| 一区操逼日比视频| 久操高青| 九九操久久国产免费视频| 高潮的A片激情扒开一区| 激情综合网激情五月天| 2026国产精品视频| 探花视频免费观看国产专区| 中文字幕av乱伦| 日本精品性生活久久久| 综合网天天| 五月丁香色色网| 亚洲91大片| 久久欲| 无码heyzo高清一区| 偷偷人人精品女女久久| 国产精品久久久久亚洲av| 人妻精品综合中文字幕在线 | 色婷婷九月| 男人的天堂久久狠| 丰满美女一级毛片在线播放| 亚洲天堂综合AV| 欧美色图99| av日韩在线观看电影| 美女毛片999| 国产无码高清操逼视频| 偷拍欧美激情| 婷婷色综合欧美日韩| 久久99热这里只频精品6学生| 91熟女少妇| 中文字幕aⅴ在线视频| 亚洲人91| 国产精品999zyz| 先锋音影AV| 国产女人高潮嗷嗷嗷叫小说| 97香蕉人人乳| 免费国产电影一区二区| 国产欧美美女免费观看视频| 欧美 亚洲 第一页 | 大茄子熟女AV导航| 色五月综合| 国产激情在线| 五月综合久久| 玖玖爱影院| 97操97色| 亚洲国产美女久久久久| ,国产乱人伦精品一区二区三区| 日韩一二三区| 综合国产97| aaa亚无码专区| 情色av电影| 亚洲色欲天天天堂色欲网女| 丁香婷婷激情五月天无毒不卡| 99久久久无码精品国产人| 性爱欧美五月| 國產尤物AV尤物在線觀看 | 99色热| 欧美色女人| 99re95| 日本午夜操逼| 舔人妻中文免费视频| 色噜噜狠狠色综合日日| …亚洲黄色厕厕女女在线播…| 混色激情av| 黄色大片免费在线| 欧美激色| 色九九九九久| 強姦亂倫a| 熟妇激情| 青青草中文-久久青草精品一区二区三| 羞涩视频| 熟女网站最新| 久操大香蕉| 欧美高清无码免费视频高清版| 美性中文综合网| 91人妻PORNY九色大屁股| 狠狠干91| 亚洲精品不卡一二三区| 国产又爽又黄| 成人小说另类在线| 99精品高潮| 920日本午夜免费| 99视频这有这里有精品| 精品二区三四区五电影 | 亚洲蜜臀精品视频久久| 中文字幕日韩综合| 95自拍视频在线观看| 天天舔日美女视频| 色眯眯射| 99综合| 欧美日韩不卡a片| 4虎在线观看| 九九热精彩视频| 91熟女熟妇视频网站| 丁香六月激情| 久 久无码人妻AV| 久草精品一区| 欧洲无码一区二区| 亚洲蜜桃V妇女| 免费视频在线一区二区不卡| 天天搞欧美| 亚洲人妻熟妇三十三区| 久久性视频| 久操com| 屁股久久久久久久| 欧美手机在线综合| 午夜天堂精品久久| 激情五月婷婷| 近亲乱伦一区二区| 国产成人超碰在线| 亚洲se91| 久久久性少妇| 精品9区| 丝袜狠狠草尤物人妻av91| 欧美一级黄片免费播放| 91伊人久| 欧美一级A一级a爱片久久| 熟女熟妇伦久久影院毛片一区二区| 尤物av网站| 女优免费一区二区永久| 亚州操逼网| 91高清无码下载| 亚洲国产成人7777| 黄骗免费网站| 91欧美网| 久久久三区二区一区| 国产妇女精品视频青青草| 超碰激情808| 亚洲人成色9999精品久久| 99久久久99久久91熟女| 99热只有这里有精品| 黄片免费看的| 人人 操人人 操人人| 网站A V在线| 国产91福利小视频在线观看| 春色综合网| 亚洲资源一区| 天堂网亚洲区手机版| 精品女同一区| 欧美专区17页| 97操综合| 人人操超碰在线| 精品丰满熟妇人妻一区| 欧美日韩系列| 一本一道久久综合久久| 蜜臀无码一区二区| 久久精品视| 97超碰中文字幕| 中文字幕精品三级久久久| 亚洲区限制级 99| 超碰这里有精品| 在线观看啊啊啊啊啊| 狠狠97| 精品97久久| 亚洲毛片基地专区| 少妇久久| 看免费的黄片| 无码高清国产AV| 久久激情亚洲精品无码?V| 1024人妻熟女一区二区三区| 日韩成人大片一区二区| 99久久综合网| 色老汉玖玖爱|