Xilinx FPGA高級開發(fā)工具_(dá)第1頁
Xilinx FPGA高級開發(fā)工具_(dá)第2頁
Xilinx FPGA高級開發(fā)工具_(dá)第3頁
Xilinx FPGA高級開發(fā)工具_(dá)第4頁
Xilinx FPGA高級開發(fā)工具_(dá)第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、FPGAFPGA應(yīng)用應(yīng)用Xilinx FPGA高級開發(fā)工具高級開發(fā)工具高級工具高級工具 約束與約束相關(guān)工具約束與約束相關(guān)工具 Constraint Editor,PACEConstraint Editor,PACE 配置下載工具配置下載工具(iMPACT)(iMPACT) 第三方工具第三方工具 仿真器:仿真器:ModelSimModelSim 綜合器:綜合器:SimplifySimplify 在線邏輯分析儀在線邏輯分析儀(ChipScope)(ChipScope) 時序分析器時序分析器(Timing Analyzer)(Timing Analyzer)約束約束 目的:目的: 控制綜合與實現(xiàn),設(shè)

2、計高性能電路;控制綜合與實現(xiàn),設(shè)計高性能電路; 獲得正確時序分析報告獲得正確時序分析報告 指定引腳位置和電氣標(biāo)準(zhǔn)指定引腳位置和電氣標(biāo)準(zhǔn) 時序約束,分組約束時序約束,分組約束 管腳約束,區(qū)域約束管腳約束,區(qū)域約束約束文件約束文件 UCFUCF:文本文件,由用戶輸入;:文本文件,由用戶輸入; NCFNCF:由綜合工具自動生成;:由綜合工具自動生成; PCFPCF: 映射產(chǎn)生的物理約束映射產(chǎn)生的物理約束 用戶輸入的約束用戶輸入的約束時序相關(guān)約束時序相關(guān)約束 周期約束周期約束(PERIOD(PERIOD約束約束) ) 偏移約束偏移約束(OFFSET(OFFSET約束約束) ) 靜態(tài)路徑約束靜態(tài)路徑約束

3、 專門約束專門約束 分組約束分組約束時序約束時序約束 周期約束周期約束(PERIOD(PERIOD約束約束) ):FFFF到到FFFF 偏移約束偏移約束(OFFSET(OFFSET約束約束) ):IPADIPAD到到FF,FFFF,FF到到OPADOPAD 靜態(tài)路徑約束:靜態(tài)路徑約束:IPADIPAD到到OPADOPAD周期約束周期約束Tcko:Tcko:時鐘輸出時鐘輸出Tlogic:Tlogic:組合邏輯延遲組合邏輯延遲Tnet:Tnet:網(wǎng)線延遲網(wǎng)線延遲Tsetup:Tsetup:建立時間建立時間Tclk_skew:Tclk_skew:時鐘偏移時鐘偏移時鐘最小周期時鐘最小周期:Tclk =

4、 Tcko + Tlogic + Tnet + Tsetup :Tclk = Tcko + Tlogic + Tnet + Tsetup Tclk_skewTclk_skewTclk_skew = Tcd2 Tcd1Tclk_skew = Tcd2 Tcd1時鐘約束語法時鐘約束語法(簡單方法簡單方法) 約束信號約束信號 PERIOD = PERIOD = 周期長度周期長度HIGH|LOW HIGH|LOW 脈脈沖持續(xù)時間沖持續(xù)時間 約束信號約束信號:NET “net_name”:NET “net_name”或或TIMEGRP TIMEGRP “group_name”“group_name” H

5、IGH|LOW:HIGH|LOW:第一個脈沖為高電平第一個脈沖為高電平/ /低電平低電平 脈沖持續(xù)時間:該脈沖持續(xù)時間脈沖持續(xù)時間:該脈沖持續(xù)時間 舉例舉例 NET SYS_CLK PERIOD=10ns HIGH 4nsNET SYS_CLK PERIOD=10ns HIGH 4ns時鐘約束語法時鐘約束語法(推薦方法推薦方法) TIMESPEC “TSidentifier”=PERIOD TIMESPEC “TSidentifier”=PERIOD “TNM_reference” “TNM_reference” 周期長度周期長度 HIGH|LOW HIGH|LOW 脈沖持續(xù)時間脈沖持續(xù)時間;

6、 TIMESPEC:TIMESPEC:時序規(guī)范標(biāo)識時序規(guī)范標(biāo)識; ; TS+TS+標(biāo)識:標(biāo)識:TSTS屬性定義,可用于派生時鐘定義屬性定義,可用于派生時鐘定義 舉例舉例 NET “clk_50M” TNM_NET=“sys_clk”NET “clk_50M” TNM_NET=“sys_clk” TIMESPEC “TS_sys_clk” = PERIOD “sys_clk” TIMESPEC “TS_sys_clk” = PERIOD “sys_clk” 20 HIGH 1020 HIGH 10時鐘約束語法時鐘約束語法(派生方法派生方法) TIMESPEC “clk_syn” = PERIOD

7、 “clk” 5ns;TIMESPEC “clk_syn” = PERIOD “clk” 5ns; 反向時鐘:反向時鐘: TIMESPEC “clk_syn_180”=PERIOD “clk_180” TIMESPEC “clk_syn_180”=PERIOD “clk_180” clk_syn PHASE+2.5ns;clk_syn PHASE+2.5ns; 2 2分頻時鐘:分頻時鐘: TIMESPEC “clk_syn_180”=PERIOD TIMESPEC “clk_syn_180”=PERIOD “clk_syn_half” clk_syn/2“clk_syn_half” clk_s

8、yn/2偏移約束偏移約束 外部時鐘與數(shù)據(jù)輸入外部時鐘與數(shù)據(jù)輸入/ /輸出管腳之間時序;輸出管腳之間時序; 只能用于端口信號,不能用于內(nèi)部信號;只能用于端口信號,不能用于內(nèi)部信號; 輸入偏移輸入偏移 輸出偏移輸出偏移 OFFSET=IN|OUT”offset_time” OFFSET=IN|OUT”offset_time” unitsBEFORE|AFTER”clk_name” TIMEGRP unitsBEFORE|AFTER”clk_name” TIMEGRP “group_name“group_name輸入約束輸入約束OFFSET_IN_AFTEROFFSET_IN_AFTER:時鐘之后可

9、以到達(dá)輸入端,芯片內(nèi)部延遲上限:時鐘之后可以到達(dá)輸入端,芯片內(nèi)部延遲上限OFFSET_IN_BEFOREOFFSET_IN_BEFORE:時鐘之前必須到達(dá)輸入端:時鐘之前必須到達(dá)輸入端NET “DATA_IN” OFFSET = IN 10.0 BEFORE “CLK_50MHz”NET “DATA_IN” OFFSET = IN 10.0 BEFORE “CLK_50MHz”NET “DATA_IN” OFFSET = IN 10.0 AFTER “CLK_50MHz”NET “DATA_IN” OFFSET = IN 10.0 AFTER “CLK_50MHz”輸出約束輸出約束OFFSET

10、_OUT_BEFOREOFFSET_OUT_BEFORE:下一個時鐘到來之前必須完成輸出:下一個時鐘到來之前必須完成輸出OFFSET_OUT_AFTEROFFSET_OUT_AFTER:本時鐘有效沿之后必須輸出:本時鐘有效沿之后必須輸出NET “DATA_OUT” OFFSET = OUT 10.0 BEFORE “CLK_50MHz”NET “DATA_OUT” OFFSET = OUT 10.0 BEFORE “CLK_50MHz”NET “DATA_OUT” OFFSET = OUT 10.0 AFTER “CLK_50MHz”NET “DATA_OUT” OFFSET = OUT 10

11、.0 AFTER “CLK_50MHz”分組約束分組約束 將同步元件分為不同的組,每組附加各自的約束將同步元件分為不同的組,每組附加各自的約束 TNM/TNM_NETTNM/TNM_NET:選出可構(gòu)成一個分組的元件,然后:選出可構(gòu)成一個分組的元件,然后整體添加到組中整體添加到組中 TIMEGRPTIMEGRP:分組合并和拆分:分組合并和拆分 TPSYNCTPSYNC:將不是管腳和同步元件的組件定義為同:將不是管腳和同步元件的組件定義為同步,以便作為時序規(guī)范起點和終點步,以便作為時序規(guī)范起點和終點 TPTHRUTPTHRU:定義一個或一組路徑上的關(guān)鍵點,可使:定義一個或一組路徑上的關(guān)鍵點,可使用

12、戶定義任意期望的路徑用戶定義任意期望的路徑TNM/TNM_NET分組約束分組約束 選出可構(gòu)成一個分組的元件,然后整體添加到組中選出可構(gòu)成一個分組的元件,然后整體添加到組中 TNM_NETTNM_NET只加在網(wǎng)線上只加在網(wǎng)線上 NET|INST|PIN “ob_name” TNM = “New_name”NET|INST|PIN “ob_name” TNM = “New_name” NET “net_name” TNM_NET = “new_name”NET “net_name” TNM_NET = “new_name” 示例示例 INST “ff1” TNM=“MY_FF1”;INST “ff

13、1” TNM=“MY_FF1”; INST “ff2” TNM=“MY_FF1”;INST “ff2” TNM=“MY_FF1”; NET “A0” TNM = “MY_FF1”;NET “A0” TNM = “MY_FF1”; NET “PADCLK” TNM_NET=“PADGRP”NET “PADCLK” TNM_NET=“PADGRP”TNM/TNM_NET分組約束分組約束 TNMTNM約束添加到線網(wǎng)時不穿越約束添加到線網(wǎng)時不穿越IBUFG/BUFGIBUFG/BUFG組件組件,TNM_NET,TNM_NET可可穿越穿越IBUFG/BUFGIBUFG/BUFGTIMEGRP分組約束分組

14、約束 分組合并和拆分分組合并和拆分 合并合并:TIMEGRP “New_group”=“old_group1” :TIMEGRP “New_group”=“old_group1” “old_group2”;“old_group2”; 拆分拆分:TIMEGRP “New_group”=“old_group1” :TIMEGRP “New_group”=“old_group1” EXCEPT “old_group2”;EXCEPT “old_group2”; 示例示例 TIMEGRP “big_group”=“small_group” TIMEGRP “big_group”=“small_grou

15、p” “medium_group”“medium_group”TPSYNC分組約束分組約束 同步點分組。如約束附加在同步點分組。如約束附加在NETNET,NETNET驅(qū)動源為同步點;如驅(qū)動源為同步點;如果是果是INSTINST,它的輸出為同步點;如果是輸入輸出引腳,該,它的輸出為同步點;如果是輸入輸出引腳,該引腳為同步點;引腳為同步點; NET|INST|PIN “ob_name” TPSYNC=“New_part”NET|INST|PIN “ob_name” TPSYNC=“New_part”TPTHRU分組約束分組約束 定義一個或一組路徑上的關(guān)鍵點,可使用戶定義任意期望定義一個或一組路徑上

16、的關(guān)鍵點,可使用戶定義任意期望的路徑的路徑 NET|INST|PIN “ob_name” TPTHRU=“New_name”;NET|INST|PIN “ob_name” TPTHRU=“New_name”; 示例示例 INST “A1” TNM=“S”INST “A1” TNM=“S” INST “A2” TNM=“E”INST “A2” TNM=“E” NET”A1toA2_1” TPTHRU=“M”NET”A1toA2_1” TPTHRU=“M” TIMESPEC “TSpath1”=FROM “A” THRU “ABC” TO TIMESPEC “TSpath1”=FROM “A” T

17、HRU “ABC” TO “B” 30;“B” 30;專用約束專用約束 FROM_TOFROM_TO約束約束: :定義兩個組之間的時序約束,可以是用戶組,定義兩個組之間的時序約束,可以是用戶組,或與定義組或與定義組(FFS,LATCHES,PADS,RAMS(FFS,LATCHES,PADS,RAMS等等) ) TIMESPEC “TS_P2S”=FROM PADS TO FFS 25ns;TIMESPEC “TS_P2S”=FROM PADS TO FFS 25ns; TIMESPEC “TS_C2S”=FROM FFS TO FFS 30ns;TIMESPEC “TS_C2S”=FROM

18、FFS TO FFS 30ns; MAXDELAYMAXDELAY約束:定義特定線網(wǎng)最大延遲約束:定義特定線網(wǎng)最大延遲 NET “EN” MAXDELAY=5ns;NET “EN” MAXDELAY=5ns; MAXSKEWMAXSKEW約束:控制線網(wǎng)偏移不大于某值約束:控制線網(wǎng)偏移不大于某值 NET “SIG_3” MAXSKEW=3ns;NET “SIG_3” MAXSKEW=3ns; TIGTIG約束:定義時序無關(guān)路徑約束:定義時序無關(guān)路徑 NET “Sig_5” TIGNET “Sig_5” TIGUCF語法項目語法項目通配符通配符 “* *”:”:代表任何字符串及空格串代表任何字符串

19、及空格串 “?”:?”:代表一個字符代表一個字符設(shè)計層次設(shè)計層次 “* *”:”:所有層次所有層次 “Level1/Level1/* *”:level1”:level1及以下層次及以下層次 “Level1/Level1/* */”:level1/”:level1中模塊,但不遍歷更低層次中模塊,但不遍歷更低層次注釋注釋 “”:單行注釋:單行注釋 “/ /* * * */”/”:跨行注釋:跨行注釋示例示例NET “NET “* *AT?”AT?”INST “/loads_of_logic/INST “/loads_of_logic/* *” LOC=CLB_r” LOC=CLB_r* *c8;c8

20、;約束輸入工具約束輸入工具 約束編輯器約束編輯器(Constraints Editor)(Constraints Editor) 全局約束全局約束(Global)(Global) 端口約束端口約束(Ports)(Ports) 高級約束高級約束(Advanced)(Advanced) 雜類雜類(Misc)(Misc) 引腳與區(qū)域約束編輯器引腳與區(qū)域約束編輯器(PACE)(PACE) 文本編輯文本編輯全局約束全局約束 針對時鐘信號針對時鐘信號 全局約束分為:全局約束分為: 周期約束周期約束(PERIOD)(PERIOD) 輸入延遲約束輸入延遲約束(Pad to Setup)(Pad to Setu

21、p) 輸出延遲約束輸出延遲約束(Clock to Pad)(Clock to Pad)全局約束全局約束(Global)周期約束周期約束(PERIOD) Jitter:Jitter:抖動抖動 Specify TimeSpecify Time Relative toRelative to 倍數(shù)倍數(shù) 相移相移 示例:示例: NET “clk” NET “clk” TNM_NET=“clk”;TNM_NET=“clk”; TIMESPEC TIMESPEC “TS_clk”=PERIOD “TS_clk”=PERIOD “clk” 20ns HIGH 50%“clk” 20ns HIGH 50%輸入延

22、遲約束輸入延遲約束(Pad to Setup) OFFSET:OFFSET:偏移偏移 Clock Pad Net:Clock Pad Net:時時鐘線網(wǎng)鐘線網(wǎng) Clock Edge:Clock Edge:上升上升沿沿/ /下降沿下降沿 示例示例 OFFSET=IN 20ns OFFSET=IN 20ns BEFORE “clk” BEFORE “clk” HIGH;HIGH;輸出延遲約束輸出延遲約束 OFFSET:OFFSET:偏移偏移 Clock Pad Net:Clock Pad Net:時鐘線時鐘線網(wǎng)網(wǎng) Clock Edge:Clock Edge:上升沿上升沿/ /下下降沿降沿 示例:示

23、例: OFFSET=OUT 20ns AFTER OFFSET=OUT 20ns AFTER “clk” HIGH;“clk” HIGH;端口約束端口約束(Ports) 針對除時鐘以針對除時鐘以外的信號外的信號 分組約束,輸分組約束,輸入約束,輸出入約束,輸出約束約束單端口約束單端口約束 目前版本不能修改端口方向、位置等;目前版本不能修改端口方向、位置等; 對灰色的對灰色的N/AN/A的域因已經(jīng)在其它相關(guān)地方定義,不的域因已經(jīng)在其它相關(guān)地方定義,不能修改;能修改; 對需要修改的域,鼠標(biāo)雙擊修改;對需要修改的域,鼠標(biāo)雙擊修改;分組約束分組約束 新建分組:新建分組: 選中信號選中信號 填填Grou

24、p NameGroup Name 單擊單擊Create GroupCreate Group 示例示例 INST “dpd_datain_i5” INST “dpd_datain_i5” TNM=“dpd_datain_i”;TNM=“dpd_datain_i”; INST “dpd_datain_i6” INST “dpd_datain_i6” TNM=“dpd_datain_i”;TNM=“dpd_datain_i”; INST “dpd_datain_i7” INST “dpd_datain_i7” TNM=“dpd_datain_i”;TNM=“dpd_datain_i”; INST “

25、dpd_datain_i8” INST “dpd_datain_i8” TNM=“dpd_datain_i”;TNM=“dpd_datain_i”;高級約束高級約束(Advanced) 分組約束:分組約束:TNM/TNM_NET/TNM/TNM_NET/TPT/THRUTPT/THRU 專用約束:專用約束:FROM_TOFROM_TO分組約束分組約束(TNM_NET) 點擊對應(yīng)點擊對應(yīng)”Create”Create” 輸入輸入Time NameTime Name 選擇線網(wǎng)選擇線網(wǎng) 增加組內(nèi)線網(wǎng)增加組內(nèi)線網(wǎng) 示例示例 NET “clk” NET “clk” TNM_NET=“my_net”;TNM

26、_NET=“my_net”; NET “clk_ibuf” NET “clk_ibuf” TNM_NET=“my_net”;TNM_NET=“my_net”; NET “clk_c” NET “clk_c” TNM_NET=“my_net”;TNM_NET=“my_net”;專用約束專用約束(Pad To Setup for Source Synchronous(OFFSET IN BEFORE) 點擊對應(yīng)點擊對應(yīng)”Create”Create” 選擇源時序分組選擇源時序分組 輸入輸入Time Time RequirementRequirement 選擇時鐘網(wǎng)及邊沿選擇時鐘網(wǎng)及邊沿 選擇設(shè)置作用

27、分組選擇設(shè)置作用分組 示例示例 TIMEGRP TIMEGRP “dpd_datain_i” “dpd_datain_i” OFFSET=IN 20ns OFFSET=IN 20ns “clk” HIGH;“clk” HIGH;雜項約束雜項約束(Misc) 局部約束局部約束 I/OI/O端口端口 工作電壓工作電壓 工作溫度工作溫度 區(qū)域分組區(qū)域分組 DCMDCM反饋路徑延遲反饋路徑延遲 初始化控制初始化控制雜項約束雜項約束(INIT Value for) Filter:Filter:篩選篩選 Init Value:Init Value:值值 示例示例 INST INST “dpd_data01

28、/dpd_fai“dpd_data01/dpd_fai_bank01/cnt0” _bank01/cnt0” INIT=0;INIT=0; INST INST “dpd_data01/dpd_fai“dpd_data01/dpd_fai_bank01/cnt1” _bank01/cnt1” INIT=0;INIT=0;管腳和區(qū)域約束管腳和區(qū)域約束 實現(xiàn)軟件:實現(xiàn)軟件: 底層工具編輯器底層工具編輯器(FPGA Editor),(FPGA Editor),布局規(guī)劃器布局規(guī)劃器(Floorplanner),(Floorplanner),管腳與區(qū)域約束編輯器管腳與區(qū)域約束編輯器(PACE)(PACE)

29、 LOCLOC語句語句 基本形式:基本形式:INST “instance_name” LOC=locationINST “instance_name” LOC=location 多個定位任選:多個定位任選:LOC=location1,location2,;LOC=location1,location2,; 范圍定位:范圍定位:INST “instance_name” INST “instance_name” LOC=location:locationSOFT;LOC=location:locationSOFT; 示例示例 NET “Top_Module_PORT” LOC=“Chip_Port

30、”NET “Top_Module_PORT” LOC=“Chip_Port”LOC屬性屬性約束類型約束類型可用屬性示例可用屬性示例含義含義I/O管腳管腳P12管腳管腳A12陣列號陣列號B,L,T,R邊界邊界(上下左右上下左右)LB,RB,LT,RT,BR,TR,BL,TL邊界一半邊界一半(上左,上左,)Bank0,Bank1,Bank2,Bank3, Bank4, Bank5, Bank6, Bank7,管腳分組管腳分組CLBCLB_R4C3(或或.S0,或或.S1)CLB_R6C8.S0(或或S1)CLB中中SLICESLICESLICE_X22Y3LOC屬性屬性約束類型約束類型可用屬性示例

31、可用屬性示例含義含義TBUFTBUF_R6C7(or .0 or .1)TBUF_X6Y7塊塊RAMRAMB4_R3C1RAMB16_X2Y56硬件乘法器硬件乘法器MULT1818_X55Y82全局時鐘全局時鐘GCLKBUF0(或或1,2,3)全局時鐘緩沖器全局時鐘緩沖器GCLKPAD0(或或1,2,3)全局時鐘端口全局時鐘端口DLLDLL0P(或或S)(1,2,3)DCMDCM_X0Y0管腳區(qū)域示例管腳區(qū)域示例 INST “instance_name” LOC=P12;INST “instance_name” LOC=P12; INST “instance_name” LOC=CLB_R3C

32、5;INST “instance_name” LOC=CLB_R3C5; INST “instance_name” LOC=SLICE_X3Y2;INST “instance_name” LOC=SLICE_X3Y2; INST “instance_name” LOC=TBUF_R1C2.INST “instance_name” LOC=TBUF_R1C2.* *; ; INST “instance_name” LOC=MULT18INST “instance_name” LOC=MULT1818_X0Y6;18_X0Y6; INST “instance_name” LOC=clb_r4c5.

33、s1,clb_r4c6.INST “instance_name” LOC=clb_r4c5.s1,clb_r4c6.* *; ; INST “instance_name” LOC=SLICE_X2Y10,SLICE_X1Y10;INST “instance_name” LOC=SLICE_X2Y10,SLICE_X1Y10; INST “instance_name” LOC=SLICE_X3Y5:SLICE_X5Y20;INST “instance_name” LOC=SLICE_X3Y5:SLICE_X5Y20;PACE(Pinout&Area Constraint Editor)PACEI

34、/O管腳約束分配操作管腳約束分配操作 確認(rèn)芯片型號無誤確認(rèn)芯片型號無誤 菜單菜單IOB-Make Pin Compatible with.IOB-Make Pin Compatible with. 菜單菜單IOB-Prohibit Special Pins,IOB-Prohibit Special Pins,禁止不可禁止不可用用I/OI/O 信號分組信號分組 按按”ctrl”ctrl”鍵選擇,鍵選擇,Edit-GroupEdit-Group創(chuàng)建信號組創(chuàng)建信號組 分配分配 拖放拖放 編輯編輯區(qū)域約束區(qū)域約束 關(guān)聯(lián)耦合邏輯,減少布線壓力關(guān)聯(lián)耦合邏輯,減少布線壓力 加大資源利用率加大資源利用率區(qū)域約束操作區(qū)域約束操作 顯示資源:顯示資源: 選擇選擇LogicLogic 鼠標(biāo)右鍵,鼠標(biāo)右鍵,”O(jiān)bject Properties”O(jiān)bjec

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論