chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

XDC約束技巧之時(shí)鐘篇

FPGA算法工程師 ? 來(lái)源:FPGA算法工程師 ? 2023-03-28 09:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Xilinx的新一代設(shè)計(jì)套件Vivado中引入了全新的約束文件 XDC,在很多規(guī)則和技巧上都跟上一代產(chǎn)品 ISE 中支持的 UCF 大不相同,給使用者帶來(lái)許多額外挑戰(zhàn)。Xilinx 工具專家告訴你,其實(shí)用好 XDC 很容易,只需掌握幾點(diǎn)核心技巧,并且時(shí)刻牢記:XDC 的語(yǔ)法其實(shí)就是 Tcl 語(yǔ)言。

XDC的優(yōu)勢(shì)

XDC 是 XilinxDesign Constraints 的簡(jiǎn)寫(xiě),但其基礎(chǔ)語(yǔ)法來(lái)源于業(yè)界統(tǒng) 一的約束規(guī)范 SDC(最早由 Synopsys 公司提出,故名 Synopsys Design Constraints) 。所以 SDC、XDC 跟 Vivado Tcl 的關(guān)系如下圖所示。

009600c4-ccd4-11ed-bfe3-dac502259ad0.png

XDC 在本質(zhì)上就是 Tcl 語(yǔ)言,但其僅支持基本的 Tcl 語(yǔ)法如變量、列表和運(yùn)算符等等,對(duì)其它復(fù)雜的循環(huán)以及文件 I/O 等語(yǔ)法可以通過(guò)在 Vivado 中 source 一個(gè) Tcl 文件的方式來(lái)補(bǔ)充。(對(duì) Tcl 話題感興趣的讀者可以參考作者的另一篇文章《Tcl 在 Vivado 中的應(yīng)用》)XDC 與 UCF 的最主要區(qū)別有兩點(diǎn):

1.XDC 可以像 UCF 一樣作為一個(gè)整體文件被工具讀入,也可以在實(shí)現(xiàn)過(guò)程中被當(dāng)作一個(gè)個(gè)單獨(dú)的命令直接執(zhí)行。這就決定了 XDC 也具有 Tcl 命令的特點(diǎn),即后面輸入的約束在有沖突的情況下會(huì)覆蓋之前輸入的約束(時(shí)序例外的優(yōu)先級(jí)會(huì)在下節(jié)詳述)。另外,不同于 UCF 是全部讀入再處理的方式,在 XDC 中,約束是讀一條執(zhí)行一條,所以先后順序很重要,例如要設(shè)置 IO 約束之前,相對(duì)應(yīng)的 clock 一定要先創(chuàng)建好。

2.UCF 是完全以 FPGA 的視角看問(wèn)題,所以缺省認(rèn)為所有的時(shí)鐘之間除非預(yù)先聲明是同步的,否則就視作異步而不做跨時(shí)鐘域時(shí)序分析;XDC 則恰恰相反,ASIC 世界的血緣背景決定了在其中,所有的時(shí)鐘缺省視作全同步,在沒(méi)有時(shí)序例外的情況下,工具會(huì)主動(dòng)分析每一條跨時(shí)鐘域的路徑。

XDC的基本方法

XDC 的基本語(yǔ)法可以分為時(shí)鐘約束、I/O約束以及時(shí)序例外約束三大類(lèi)。根據(jù) Xilinx 的 UltraFast 設(shè)計(jì)方法 學(xué)中 Baseline 部分的建議(UG949 中有詳細(xì)介紹),對(duì)一個(gè)設(shè)計(jì)進(jìn)行約束的先后順序也可以依照這三類(lèi)約束依次進(jìn)行。本文對(duì)可以在幫助文檔中查到的基本 XDC 語(yǔ)法不做詳細(xì)解釋,會(huì)將重點(diǎn)放在使用方法和技巧上。

時(shí)鐘約束

時(shí)鐘約束必須最早創(chuàng)建。對(duì) 7 系列 FPGA 來(lái)說(shuō),端口進(jìn)來(lái)的時(shí)鐘以及 GT 的輸出 RXCLK/TXCLK 都必須 由用戶使用 create_clock 自主創(chuàng)建為主時(shí)鐘。如果是差分輸入的時(shí)鐘,可以僅僅在差分對(duì)的 P 側(cè)用 get_ports 獲取端口,并使用 create_clock 創(chuàng)建。例如,

00f4ef1c-ccd4-11ed-bfe3-dac502259ad0.png

Vivado 自動(dòng)推導(dǎo)的衍生時(shí)鐘

MMCM/PLL/BUFR 的輸出作為衍生時(shí)鐘,可以由 Vivado 自動(dòng)推導(dǎo),無(wú)需用戶創(chuàng)建。自動(dòng)推導(dǎo)的好處在于 當(dāng)MMCM/PLL/BUFR 的配置改變而影響到輸出時(shí)鐘的頻率和相位時(shí),用戶無(wú)需改寫(xiě)約束,Vivado 仍然可以自 動(dòng)推導(dǎo)出正確的頻率/相位信息。劣勢(shì)在于,用戶并不清楚自動(dòng)推導(dǎo)出的衍生鐘的名字,當(dāng)設(shè)計(jì)層次改變時(shí),衍生鐘的名字也有可能改變。這樣就會(huì)帶來(lái)一個(gè)問(wèn)題:用戶需要使用這些衍生鐘的名字來(lái)創(chuàng)建 I/O 約束、時(shí)鐘關(guān)系或是時(shí)序例外等約束時(shí),要么不知道時(shí)鐘名字,要么時(shí)鐘名字是錯(cuò)的。

01090006-ccd4-11ed-bfe3-dac502259ad0.png

推薦的做法是,由用戶來(lái)指定這類(lèi)衍生時(shí)鐘的名字,其余頻率等都由 Vivado 自動(dòng)推導(dǎo)。這樣就只需寫(xiě)明 create_generated_clock 的三個(gè) option,其余不寫(xiě)即可。如上所示。

當(dāng)然,此類(lèi)情況下用戶也可以選擇完全由自己定義衍生時(shí)鐘,只需補(bǔ)上其余表示頻率/相位關(guān)系的 option, 包括-multiply_by 、-divide_by 等等。需要注意的是,一旦 Vivado 在 MMCM/PLL/BUFR 的輸出檢測(cè)到用戶自定義的衍生時(shí)鐘,就會(huì)報(bào)告一個(gè) Warning,提醒用戶這個(gè)約束會(huì)覆蓋工具自動(dòng)推導(dǎo)出的衍生時(shí)鐘(例外的情況見(jiàn)文章下半段重疊時(shí)鐘部分的描述),用戶須保證自己創(chuàng)建的衍生鐘的頻率等屬性正確。

用戶自定義的衍生時(shí)鐘

工具不能自動(dòng)推導(dǎo)出衍生鐘的情況,包括使用寄存器和組合邏輯搭建的分頻器等,必須由用戶使用 create_generated_clock 來(lái)創(chuàng)建。舉例如下,

01292b10-ccd4-11ed-bfe3-dac502259ad0.png

I/O約束

在設(shè)計(jì)的初級(jí)階段,可以不加 I/O 約束,讓工具專注于滿足 FPGA 內(nèi)部的時(shí)序要求。當(dāng)時(shí)序要求基本滿足后,再加上 I/O 約束跑實(shí)現(xiàn)。XDC 中的 I/O 約束有以下幾點(diǎn)需要注意:

1.不加任何 I/O 約束的端口時(shí)序要求被視作無(wú)窮大。 2.XDC 中的 set_input_delay / set_output_delay 對(duì)應(yīng)于 UCF 中 OFFSET IN / OFFSET OUT,但視角相反。 OFFSETIN / OFFSET OUT 是從 FPGA 內(nèi)部延時(shí)的角度來(lái)約束端口時(shí)序,set_input_delay / set_output_delay 則是從系統(tǒng)角度來(lái)約束。 3.典型的 I/O 時(shí)序,包括系統(tǒng)同步、源同步、SDR 和 DDR 等等,在 Vivado 圖形界面的 XDC templates 中都有示例。2014.1 版后還有一個(gè) Timing Constraints Wizard 可供使用。

時(shí)序例外約束

時(shí)序例外約束包括 set_max_delay/set_min_delay,set_multicycle_path,set_false_path 等,這類(lèi)約束除 了要滿足 XDC 的先后順序優(yōu)先級(jí)外,還受到自身優(yōu)先級(jí)的限制。一個(gè)總的原則就是針對(duì)同一條路徑,對(duì)約束目標(biāo)描述越具體的優(yōu)先級(jí)越高。不同的時(shí)序例外約束以及同一約束中不同條件的優(yōu)先級(jí)如下所示:

0141b432-ccd4-11ed-bfe3-dac502259ad0.png

舉例來(lái)說(shuō),依次執(zhí)行如下兩條 XDC,盡管第二條較晚執(zhí)行,但工具仍然認(rèn)定第一條約束設(shè)定的 15 為 clk1 到 clk2 之間路徑的 max delay 值。

01649592-ccd4-11ed-bfe3-dac502259ad0.png

再比如,對(duì)圖示路徑依次進(jìn)行如下四條時(shí)序例外約束,優(yōu)勝者將是第二條。但如果再加入最后一條約束, false path 的優(yōu)先級(jí)最高,會(huì)取代之前所有的時(shí)序例外約束。

0179ac52-ccd4-11ed-bfe3-dac502259ad0.png

高級(jí)時(shí)鐘約束

約束最終是為了設(shè)計(jì)服務(wù),所以要用好 XDC 就需要深入理解電路結(jié)構(gòu)和設(shè)計(jì)需求。接下來(lái)我們就以常見(jiàn) FPGA 設(shè)計(jì)中的時(shí)鐘結(jié)構(gòu)來(lái)舉例,詳細(xì)闡述 XDC 的約束技巧。

時(shí)序的零起點(diǎn)

用 create_clock 定義的主時(shí)鐘的起點(diǎn)即時(shí)序的“零起點(diǎn)”,在這之前的上游路徑延時(shí)都被工具自動(dòng)忽略。所以主時(shí)鐘創(chuàng)建在哪個(gè)“點(diǎn)”很重要,以下圖所示結(jié)構(gòu)來(lái)舉例,分別于 FPGA 輸入端口和 BUFG 輸出端口創(chuàng)建一個(gè)主時(shí)鐘,在時(shí)序報(bào)告中體現(xiàn)出的路徑延時(shí)完全不同,很明顯 sysclk_bad 的報(bào)告中缺少了之前一段的延時(shí),時(shí)序報(bào) 告不可信。

01a0e628-ccd4-11ed-bfe3-dac502259ad0.png

01bcc104-ccd4-11ed-bfe3-dac502259ad0.png

定義時(shí)鐘的先后順序

時(shí)鐘的定義也遵從 XDC/Tcl 的一般優(yōu)先級(jí),即: 在同一個(gè)點(diǎn)上,由用戶定義的時(shí)鐘會(huì)覆蓋工具自動(dòng)推導(dǎo)的時(shí)鐘,且后定義的時(shí)鐘會(huì)覆蓋先定義的時(shí)鐘。若要二者并存,必須使用 -add 選項(xiàng)。

01d9c74a-ccd4-11ed-bfe3-dac502259ad0.png

01f5e934-ccd4-11ed-bfe3-dac502259ad0.png

上述例子中 BUFG 的輸出端由用戶自定義了一個(gè)衍生鐘 clkbufg,這個(gè)衍生鐘便會(huì)覆蓋此處原有的 sysclk。此外,圖示 BUFR 工作在 bypass 模式,其輸出不會(huì)自動(dòng)創(chuàng)建衍生鐘,但在 BUFR 的輸出端定義一個(gè) 衍生鐘 clkbufr,并使用 -add 和 -master_clock 選項(xiàng)后,這一點(diǎn)上會(huì)存在 sysclk 和 clkbufg 兩個(gè)重疊的時(shí)鐘。 如下的 Tcl 命令驗(yàn)證了我們的推論。

02108078-ccd4-11ed-bfe3-dac502259ad0.png

同步時(shí)鐘和異步時(shí)鐘

不同于 UCF 約束,在 XDC 中,所有的時(shí)鐘都會(huì)被缺省認(rèn)為是相關(guān)的,也就是說(shuō),網(wǎng)表中所有存在的時(shí)序路徑都會(huì)被 Vivado 分析。這也意味著 FPGA 設(shè)計(jì)人員必須通過(guò)約束告訴工具,哪些路徑是無(wú)需分析的,哪些時(shí)鐘域之間是異步的。

02330300-ccd4-11ed-bfe3-dac502259ad0.png

如上圖所示,兩個(gè)主時(shí)鐘 ssclkin 和 sysclk 由不同的端口進(jìn)入 FPGA,再經(jīng)由不同的時(shí)鐘網(wǎng)絡(luò)傳遞,要將它們?cè)O(shè)成異步時(shí)鐘,可以使用如下約束:

025b5a3a-ccd4-11ed-bfe3-dac502259ad0.png

其中,-include_generated_clocks 表示所有衍生鐘自動(dòng)跟其主時(shí)鐘一組,從而與其它組的時(shí)鐘之間為異步關(guān)系。不加這個(gè)選項(xiàng)則僅僅將時(shí)鐘關(guān)系的約束應(yīng)用在主時(shí)鐘層面。

重疊(單點(diǎn)多個(gè))時(shí)鐘

重疊時(shí)鐘是指多個(gè)時(shí)鐘共享完全相同的時(shí)鐘傳輸網(wǎng)絡(luò),例如兩個(gè)時(shí)鐘經(jīng)過(guò)一個(gè) MUX 選擇后輸出的時(shí)鐘,在有多種運(yùn)行模式的設(shè)計(jì)中很常見(jiàn)。

如下圖所示,clk125 和 clk250 是 clkcore_buf 的兩個(gè)輸入時(shí)鐘,不約束時(shí)鐘關(guān)系的情況下,Vivado 會(huì)對(duì)圖示路徑做跨時(shí)鐘域(重疊時(shí)鐘之間)分析。這樣的時(shí)序報(bào)告即便沒(méi)有違例,也是不可信的,因?yàn)?clk125 和 clk250 不可能同時(shí)驅(qū)動(dòng)這條路徑上的時(shí)序元件。這么做也會(huì)增加運(yùn)行時(shí)間,并影響最終的實(shí)現(xiàn)效果。

0277a640-ccd4-11ed-bfe3-dac502259ad0.png

02a8ee3a-ccd4-11ed-bfe3-dac502259ad0.png

如果 clk125 和 clk250 除了通過(guò) clkcore_buf 后一模一樣的扇出外沒(méi)有驅(qū)動(dòng)其它時(shí)序元件,我們要做的僅僅 是補(bǔ)齊時(shí)鐘關(guān)系的約束。

02d569a6-ccd4-11ed-bfe3-dac502259ad0.png

在很多情況下,除了共同的扇出,其中一個(gè)時(shí)鐘或兩個(gè)都還驅(qū)動(dòng)其它的時(shí)序元件,此時(shí)建議的做法是在 clkcore_buf 的輸出端上創(chuàng)建兩個(gè)重疊的衍生鐘,并將其時(shí)鐘關(guān)系約束為-physically_exclusive表示不可能同時(shí)通過(guò)。這樣做可以最大化約束覆蓋率,也是 ISE 和 UCF 中無(wú)法做到的。

02ebce62-ccd4-11ed-bfe3-dac502259ad0.png

其他高級(jí)約束

時(shí)鐘的約束是 XDC 的基礎(chǔ),熟練掌握時(shí)鐘約束,也是 XDC 約束技巧的基礎(chǔ)。其它高級(jí)約束技巧,包括復(fù)雜的 CDC(Clock Domain Crossing)約束和接口時(shí)序(SDR、DDR、系統(tǒng)同步接口和源同步接口)約束等方面還有很多值得注意的地方。這一系列《XDC 約束技巧》文章還會(huì)繼續(xù)就上述所列方向分篇詳述,敬請(qǐng)關(guān)注作者的后續(xù)更新,以及 Xilinx 官方網(wǎng)站和中文論壇上的更多技術(shù)文章。

下一篇,將推出《XDC約束技巧之CDC篇》,歡迎閱讀。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Xilinx
    +關(guān)注

    關(guān)注

    73

    文章

    2184

    瀏覽量

    125255
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1898

    瀏覽量

    133191
  • 約束
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    12966
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    834

    瀏覽量

    68713
  • xdc
    xdc
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    6044

原文標(biāo)題:XDC約束技巧之時(shí)鐘篇

文章出處:【微信號(hào):FPGA算法工程師,微信公眾號(hào):FPGA算法工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    FPGA時(shí)序案例分析之時(shí)鐘周期約束

    時(shí)鐘周期約束,顧名思義,就是我們對(duì)時(shí)鐘的周期進(jìn)行約束,這個(gè)約束是我們用的最多的約束了,也是最重要
    的頭像 發(fā)表于 11-19 11:44 ?6004次閱讀
    FPGA時(shí)序案例分析<b class='flag-5'>之時(shí)鐘</b>周期<b class='flag-5'>約束</b>

    FPGA時(shí)序約束之衍生時(shí)鐘約束時(shí)鐘分組約束

    在FPGA設(shè)計(jì)中,時(shí)序約束對(duì)于電路性能和可靠性非常重要。在上一的文章中,已經(jīng)詳細(xì)介紹了FPGA時(shí)序約束的主時(shí)鐘約束。
    發(fā)表于 06-12 17:29 ?3416次閱讀

    時(shí)序約束之時(shí)鐘約束

    1. 基本時(shí)鐘約束create_clock-period 40.000 -name REFCLK [get_ports ref_clk] 創(chuàng)建時(shí)鐘周期ns命名 名字連接端口
    發(fā)表于 09-21 11:51

    關(guān)于XDC約束文件,你需要知道的幾點(diǎn)

    作者:?圓宵?FPGA那點(diǎn)事兒 在ISE時(shí)代,使用的是UCF約束文件。從Vivado開(kāi)始,XDC成了唯一支持的約束標(biāo)準(zhǔn)。XDC除了遵循工業(yè)界的通行標(biāo)準(zhǔn)SDC(Synopsys Desi
    發(fā)表于 02-08 02:10 ?5622次閱讀

    FPGA設(shè)計(jì)約束技巧之XDC約束之I/O (上)

    從UCF到XDC的轉(zhuǎn)換過(guò)程中,最具挑戰(zhàn)的可以說(shuō)便是本文將要討論的I/O約束了。 I/O 約束的語(yǔ)法 XDC 中可以用于 I/O 約束的命令包
    發(fā)表于 11-17 18:54 ?1.3w次閱讀
    FPGA設(shè)計(jì)<b class='flag-5'>約束</b>技巧之<b class='flag-5'>XDC</b><b class='flag-5'>約束</b>之I/O<b class='flag-5'>篇</b> (上)

    FPGA設(shè)計(jì)約束技巧之XDC約束之I/O(下)

    討論的I/O約束了。繼《XDC約束技巧之I/O(上)》?詳細(xì)描述了如何設(shè)置Input接口約束后,我們接著來(lái)聊聊怎樣設(shè)置Output接口。
    發(fā)表于 11-17 19:01 ?7823次閱讀
    FPGA設(shè)計(jì)<b class='flag-5'>約束</b>技巧之<b class='flag-5'>XDC</b><b class='flag-5'>約束</b>之I/O<b class='flag-5'>篇</b>(下)

    XDC時(shí)鐘約束及優(yōu)勢(shì)

    Xilinx?的新一代設(shè)計(jì)套件 Vivado 中引入了全新的約束文件 XDC,在很多規(guī)則和技巧上都跟上一代產(chǎn)品 ISE 中支持的 UCF 大不相同,給使用者帶來(lái)許多額外挑戰(zhàn)。Xilinx 工具專家
    發(fā)表于 11-18 03:59 ?3875次閱讀

    XDC約束及物理約束的介紹

    觀看視頻,了解和學(xué)習(xí)有關(guān)XDC約束,包括時(shí)序,以及物理約束相關(guān)知識(shí)。
    的頭像 發(fā)表于 01-07 07:10 ?6741次閱讀
    <b class='flag-5'>XDC</b><b class='flag-5'>約束</b>及物理<b class='flag-5'>約束</b>的介紹

    如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束

    了解如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束,以及需要更改或修改哪些約束以使Altera的約束適用于Vivado設(shè)計(jì)軟件
    的頭像 發(fā)表于 11-27 07:17 ?5483次閱讀

    XDC時(shí)鐘約束的三種基本語(yǔ)法

    XDC 是 Xilinx Design Constraints 的簡(jiǎn)寫(xiě),但其基礎(chǔ)語(yǔ)法來(lái)源于業(yè)界統(tǒng)一的約束規(guī)范SDC。XDC 在本質(zhì)上就是 Tcl 語(yǔ)言,但其僅支持基本的 Tcl 語(yǔ)法如變量、列表
    的頭像 發(fā)表于 01-30 17:29 ?1w次閱讀

    Vivado IDE全面了解XDC文件的約束順序

    Vivado IDE約束管理器將任何已編輯的約束保存回XDC文件中的原始位置,但不會(huì)保存在Tcl腳本中。 任何新約束都保存在標(biāo)記為目標(biāo)的XDC
    的頭像 發(fā)表于 11-13 10:53 ?4746次閱讀
    Vivado IDE全面了解<b class='flag-5'>XDC</b>文件的<b class='flag-5'>約束</b>順序

    Vivado中XDC文件的約束順序

    使得問(wèn)題更加復(fù)雜,比如一個(gè)設(shè)計(jì)使用了不同的IP核或者由不同團(tuán)隊(duì)開(kāi)發(fā)的模塊。不管設(shè)計(jì)者在設(shè)計(jì)中,使用了一個(gè)還是多個(gè)XDC文件,Xilinx推薦設(shè)計(jì)者使用下面的順序來(lái)組織約束。XDC文件的約束
    的頭像 發(fā)表于 10-13 16:56 ?7373次閱讀

    XDC約束技巧之CDC

    上一XDC 約束技巧之時(shí)鐘》介紹了 XDC 的優(yōu)勢(shì)以及基本語(yǔ)法,詳細(xì)說(shuō)明了如何根據(jù)
    的頭像 發(fā)表于 04-03 11:41 ?2740次閱讀

    XDC約束技巧之I/O(上)

    XDC 約束技巧之時(shí)鐘》中曾對(duì) I/O 約束做過(guò)簡(jiǎn)要概括,相比較而言,XDC 中的 I/O
    的頭像 發(fā)表于 04-06 09:53 ?1903次閱讀

    XDC約束技巧之I/O(下)

    繼《XDC 約束技巧之 I/O (上)》詳細(xì)描述了如何設(shè)置 Input 接口 約束后,我們接著來(lái)聊聊怎樣設(shè)置 Output 接口約束,并分
    的頭像 發(fā)表于 04-10 11:00 ?1615次閱讀