DC综合实验指导书_第1页
DC综合实验指导书_第2页
DC综合实验指导书_第3页
DC综合实验指导书_第4页
DC综合实验指导书_第5页
已阅读5页,还剩190页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与资讯工程学院2环境建立和综合流程………………错误!未定义书签。开始工作 错误!未定义书签。问题 错误!未定义书签。实验流程图 错误!未定义书签。 错误!未定义书签。任务1创建.synopsysdc.setup文件 任务2启动DesignAnalyzer 错误!未定义书签。任务3将设计读入DC内存 错误!未定义书签。任务4浏览设计、符号和原理图视图 错误!未定义书签。任务5浏览鼠标功能 错误!未定义书签。任务7映像程序对应的门级电路………………错误!未定义书签。任务8产生报告查看综合是否满足时序约束条件……………错误!未定义书签。任务9保存优化后的设计………错误!未定义书签。任务10将设计从DesignCompiler的内存中移出任务11启动在线文献……………错误!未定义书签。任务2读原代码和重分区………错误!未定义书签。任务3编辑分析结果……………错误!未定义书签。4评价代码风格………错误!未定义书签。实验四A的流程图:IF语句………错误!未定义书签。练习4A的工作区…………………错误!未定义书签。实验四A的结果表格……………IT-BAD和IIF-BEST的Verilog代码……………错误!未定义书签。IF-BAD和IF-BEST的VHDL代码……错误!未定义书签。任务1编译IF-BAD………………错误!未定义书签。任务2重新编码IF-BAD…………错误!未定义书签。实验4B流程图:循环语句………错误!未定义书签。实验四A的结果表格………………错误!未定义书签。Loop-bad.v的Verilog代码……错误!未定义书签。Loop-best.v的Verilog代码…………Loop-best.v的Verilog代码练习4B的工作区…………………错误!未定义书签。复习题……………错误!未定义书签。5对PRGRMCNTTOP应用时序约束……………错误!未定义书签。开始工作…………错误!未定义书签。实验流程…………错误!未定义书签。任务1启动DC-tcl并读取PRGRMCNTTOP………错误!未定义书签。任务2检查coreslow库…………错误!未定义书签。任务3约束PRGRMCNTTOP………错误!未定义书签。任务4检查你所做的工作并保存…………………错误!6应用环境属性………错误!未定义书签。说明………………错误!未定义书签。问题………………错误!未定义书签。实验流程表………错误!未定义书签。任务2检查你的工作并保存设计………………错误!未定义书签。7设计规则和最小时序约束…………错误!未定义书签。设计说明…………错误!未定义书签。开始工作…………错误!未定义书签。实验流程…………错误!未定义书签。任务1完成lab7.tcl脚本文件…………………错误!未定义书签。任务3生成报告…………………错误!未定义书签。任务4检查设计规则的违规……错误!未定义书签。任务5生成报告…………………错误!未定义书签。任务6检查时序违规……………错误!未定义书签。8时序报告……………错误!未定义书签。时序报告练习……………………错误!未定义书签。任务2生成四种时序报告并进行解释…………错误!未定义书签。思考题……………错误!未定义书签。9DC-tcl入门…………错误!未定义书签。实验流程…………错误!未定义书签。设计说明…………错误!未定义书签。任务1创建并测试runit.tcl文件…………任务2验证设计结果………………错误!未定义书实验背景…………错误!未定义书签。任务1读入映像后的设计…………错误!任务2对设计加时序约束…………错误!未定任务3使用Max-Delay约束………错误!未定义书签。任务4约束多时钟路径……………错误!未定义书签。任务5使用虚拟时钟………………错误!未定义书签。任务6改善虚拟时钟定义…………错误!未定义书签。任务7返回多时钟路径……………错误!未定义书签。11练习优化技术……………………错误!未定义书签。设计#1:"计算器"说明……………错误!未定义书签。任务1读入并编译设计…………错误!未定义书签。任务2使设计符合时序要求……错误!未定义书签。设计#2:“转换器”说明………错误!未定义书签。任务3使用脚本编译设计………错误!未定义书签。复习题 错误!未定义书签。12解决多实例化问题 错误!未定义书签。开始工作 错误!未定义书签。实验流程 错误!未定义书签。 13DC-tcl工序 错误!未定义书签。实验流程 错误!未定义书签。任务1创建两个用户自定义DC-tcl工序 错误!未定义书签。任务2执行用户自定义工序 错误!未定义书签。任务3使用脚本编译设计…………错误!未定义书签。14编译RISCCORE………………错误!未定义书签。RISCCORE的顶级约束…………任务1编译RISCCORE……………错误!未定义书签。任务2分析报告细节………………错误!未定义书签。任务4带刻画的第二遍编译………错误!未定义书签。任务5进行带DW基础库的第二遍编译……………任务6调整保持时间………………错误!未定任务7改进面积……………………错误!未定义书签。任务8保存最终的门级网表………错误!未定义书签。通过学习获得使用DesignCompiler的图形接口工具DesignAnalyzer进行层次在开始时只会挫伤你的兴趣,在随后的讲义和实验中当你再为详细的细节)时却可以帮助你加深对概念的理解。Compile命令优化一个设计并从你的目标工艺库映像到真正的门级,产生满足要2.进入工程目录Lab1调整窗口的位置和大小使DesignAnalyzer的窗口覆盖整个工作站屏幕的上调整并移动命令窗口使其处于DesignAnalyzer窗口下方占据四分之一空lYriol...的基本步骤,这几个菜单项被称做是执行命令的DC脚本。这个菜单是特你将发现一个连有一些输入输出埠的方块。这就是设计的SymbolView,在右下角的DesignAnalyzer窗口中显示出来。显示了设DD7.双击SymbolView中的方块进入"SchematicView"你会注意在ClockIn埠(左边最上方的端口)显示出红色波形标记。其脚本档声明这个埠将被视为一个周期为2ns的时钟埠(500MHz)。其它约束(如操作环境,输入延时等)也被应用。你将看见一个由一些目标工艺库中的实际器件(单元)表示出的你的设计然而,其中包含的DesignAnalyzer注意DesignAnalyzer命令窗口中最后几行。脚本档内容createclock-period2-namemyclock\ setinputdelay1-max-clockmyclock\ *indicatethedrivecharacteristicsontheinputs:*setdrivingcell-libcellfdefla3\ setload10.0*loadof(ssccoreslow/invla3/A) reportreporttimingslowestpath题1.为什么在原代码中正确的对一个设计分区是重要的?...题2.时钟频率增加到1GHz?题3.操作温度变化范围增加到+125℃?题4.操作电压降落达到1.62v.题5.UpdownF输入时延比原先增加0.5ns?题6.内部扫描和边界扫描链是否满足?题7.是否希望能自动进行以上过程的操作?题8.是你是否需要换一家代工厂商?实验目的:●学会DesignAnalyzer的基本特征●学会使用DesignAnalyzer的设计、符号和电路原理图的视图,以及选择菜单和鼠标功能●完成一个设计的基本综合步骤●启动在线文献并可以在手册中查找DC命令2.什么是SOLD?__编译完成后,设计以“.db”格式被保存在磁盘中。此时件了。通过编写一个包含所有对时序和环境(输入/输出延时、驱动能力、堵越时间等)的约束条件的约束档。完成对设计的约束后,使用compile命令可以对设计进行逻辑优化并使用由当综合完成后,设计(门级网表)将被write命令存储在磁盘上。输出格式可以井任务3将设计读入DC内存1.选择菜单File-Read,双击unmapped/目录然后双击PRGRMCNTTOP.db__计中的顶层。同样还有更低层次模块的图标:PRGRMCNT______任务4浏览设计、符号和原理图视图2.双击PRGRMCNTTOP或单击左侧工具栏中的向下箭头符号按键进入符__如果你没有看见一个(唯一一个)方框标有PRGRM-CNTTOP,你已经进入SchematicView而不再是SymbolView了。此时双击DesignAnalyzer左侧正方形符号图标。3.双击PRGRMCNTTOP或单击左侧工具栏中的AND符号按键进入原理图视图PRGRM-CNTTOP原理图包含PRGRMCNTFSM,__4.通过访问PRGRMDECODE,PRGRMFSM和PRGRMCNT的符号以及原理图视图浏览PRGRMCNTTOP。由于你还没有编译过这个设计,你还看不到目标工艺库中的门。你可以看见GTECH组件。GTECH组件是代表设计功能的通用Boolean门和寄存器。红色正方形是DesignWare组件,我们讲在讲义中讨论DesignWare。任务5浏览鼠标功能1.点击按住鼠标右键查看可用鼠标功能2.选择Zoom(松下鼠标右键后)。用鼠标左键点击拖拽选择你想要放大的区域。使用合适的鼠标功能返回FullView。3.转到PRGRMDECODE的原理图视图_●产生报告任务6使用脚本文件约束PRGRMCNTTOP2.选择菜单Setup-ExecuteScript。3.双击脚本目录,然后双击example.scr。任务7映像程序对应的门级电路2.点击OK开始优化和映射过程这是执行编译命令,将出现一个编译日志窗口显示编译过程。这将在以后进一步讨论。3.编译完成后取消CompileLogWindow.你现在可以看见目标库的门了(coreslow.db)。2.在命令窗口键入rc。Rc命令是一个在.synopsysdc.setup档中被定义的别名。它执行下列命令:这将产生一个报告,显示是否哪条路径包含时序违规。记录以下信息:4.选择菜单Analysis-Highlight-CriticalPath(CTRL-T)。关键路径,(包含最大违规的路径),将被高亮显示出。转入层次中查看那些撤销高亮显示,选择:2.选择菜单File-SaveAs。3.双击映像后的目录。4.验证存储AllDesigninHierachy键被点选。这是确保整个分层设计被保存而不仅是顶层设计被保存。你刚以“.db”格式在mapped目录下保存了一个门级网表(整个层次结构)。确认文件是从UNIX窗口创建的,使用“ls-1”命令查看。1.选择菜单Setup-Scripts-RemoveallDesigns。验证所有DesignAnalyzer中的设计图示都被删除。这个菜单项执行以下命令:如果用户自定义菜单项不起作用,请求教师帮助解决这个问题。●在DesignView(拖拽鼠标左键选中所有图示)中将你的想删除的所有设选择菜单项Edit-Delete。2.在命令窗口键入h。任务11启动在线文献这将在Acrobatreader中打开一个新档。从这个档你可以接触到任何acroread$SYNOPSYS/doc/online/top.pdf&4.查询关于viewcommandlogfile的手册页,区别这个档的的内容和6.选择Help-Commands。题2.鼠标左键有哪些可用功能?题3.题3.按顺序编排以下综合流程中的基本步骤:B.读入未映像的设计C.生成约束报告D.应用约束脚本文件E.保存映像后的设计F.验证是否满足约束条件G.建立库变量题6.在设计流程中进行综合有哪些优点?…题9.如何验证库变量是否配置正确?题10.如何使用“read”命令将VHDL或verilog代码读入DesignAnalyzer?题11.你可以对设计设定的两个优化目标是什么?…题12.targetlibrary变量的功能是什么?实验目的:●掌握在DA中使用group和ungroup命令对设计进行分区●分析一个设计的分区,如果有必要可重新分区退出DA1.启动DA5.下图中,在空白处画出“PRGRMCNTTOP”的模原始分区重分区6.从设计视图中移出所有的设计任务2读原代码和重分区2.进入原理视图,选择PRCRMDECODE和PRGRMCNT3.选择Edit-Group3.在PRGRMCNTTOP设计中执行设计优化(编辑)命令题1.在原代码中正确的分区一个设计,为什么是重要的?…题2.不解组整个层和编译一个展开的设计的一个原因是什么?PRGRMCNT进行重新分区?题4.从一个好的分区中你可以得到哪3个有利的优化结果?题5.在RTL代码中怎样进行分区?…题6.列出两条分区原则,以便加快编译速度?题7.列出一条分区原则,有助于简化设计约束?实验目的:●评估一个带有if语句的代码实例●检查循环和资源分配列出问题清单并画出"硬件"source/vhdl/ifbad.vhdorsource/verilog/ifbad.v_ 注意:使用case语句(在Verilog中带有平行case指令)可能是编写这个设计练习4A的工作区 1.在一个文本编辑器中打开source/vhdl/ifbad.vhd或者source/verilog/ifbad.v2.在前面的工作区页面中列出代码类型的问题并画出代码描述的硬件3.在DA中选择File==>Read4.双击source路径,接着点VHDL或Verilog6.选择OK7.进入原理图视图,检验GTECH结构与你的源代码分析的匹配8.在IF-BAD设计中执行设计优化(编译)9.进入在IF-BAD设计中没有约束,DC将仅仅设计优化到最小面积UNIXUNIXcpifhadhditgoodhd阅读IF-GOOD设计(继续让IF-BAD在DA的内存中)器如果比较设计的命令失败,对IF-GOOD重新编码,因为你已经改变6.对设计进行编译,并将面积与最大路径填到结果表中7.使用RemoveallDesigns菜单(前面的实验中生成的)清楚DA内存A.Aif(SELA)OUTPORT<=IN1;if(SELB)OUTPORT<=IN2;B.B实验4B流程图:循环语句InInUNIX,opensource/verilog/loopbad.V moduleLOOPBADIRQBASE[1]=5'd1;OFFST[2]5'dzOFFSET(3)-OFFSET{5]#5'd16;OPpSErDeterminethehighestphighestpriority. *00100*01000,100010001,2IMNERAOORINNERADDROPFSE canstantOPFSET,TABLR8x5__CalculateAddreseofinterrup问题九:在LOOPBAD编码中描述了多少加法器和多路转换开关?问题十四:综合一个for循环需要多少设计编译器? 1.在riscdesign目录下启动DC-tcl 2.检查对初始建立变量的定义。3.读取设计unmapped/PRGRMCNTTOP___题2题2DC内存中由那些库?1.生成目标库的报告题3工艺库的名称是什么?.题4时间单元是什么?题5电容负载单元是什么?.任务3约束PRGRMCNTTOP执行下列命令创建一个名为myclk的时钟,周期为4ns。时钟埠名为Clk:3.为了防止DC试图缓冲一个时钟网络,需要给时钟对象附加一个 setclockuncertainty0.25[getclocksmyclk] 在输入时延部分,检查对所有的输入埠(除Clk以外)的输入时延的最大上在输出时延部分,检查对所有的输出埠(除Clk以外)的输出时延的最大上3.所有约束都加上后保存设计下次你可以使用这个保存过的文档而不需要把以上的命令全部重新键入一你可以使用下列命令,将所有设计和库从DC内存中清除:(不完全必要)题6读入PRGRM-CNT-TOP的未映像过的db档以后,在对设计应用约束__之前为什么要将设计重启?题7.为什么在加约束前检查库中的时间单元是重要的?…题8.写一条命令用于设置最大面积为500?题9.时序和面积要求哪一个拥有更高的优先级题10.为什么对时钟对象加上don'ttouchnetwork是重要的?__题11.setmaxarea命令对设计加上了一条属性,这个属性的名称是什么?__题12.如何检查面积要求已经被加在设计上了?31.在什么温度和电压条件下会发生最差(慢)的操作条件?4.说出在这个实验中可用来检查你的工作的两个DC命令5.如果没有精确地模拟埠环境,可能会发生什么情况?_在应用了一个新的约束并确定能正确工作后,将命令加入到约束脚本文件问题6什么是默认的操作条件?3.设置联机负载模型你所使用的库有自动联机负载模型选择,也就是说DC会基于模块的面积自动地选择联机负载模型。 问题7在coreslow.db文件中定义了多少联机负载模型?有7个联机负载模型, 从5Kgates到320Kgates…问题8如果有200,000个模块,DC会选择什么样的WLM?DC会选择“40KGATES”的联机负载模型问题9在上述WLM中电阻的基本单元是什么?…4.建立端口环境模型口。使用在本实验开始处的表格说明的flip-flop。命令的格式如下:记住,这允许DC使用“drivingcell”的特征更准确的计如果你键入[allinputs]指明你所有的埠列表,你需要通过以下两条命令移除并验证时钟端口驱动单元5.报告驱动单元的属性使用命令setdrivingcell生成移个UID-401,告知你对输入埠应用了移个设计规则使用以下命令显示所有驱动单元引脚的属性问题10单元dfeflal的引脚名字是什么?问题11maxcapacitance这个设计规则的涵义是什么? 确认设计PRGRMCNTTOP型是5KGAES5.执行可供测试的编译问题12设计达到时序要求了吗?问题13为什么要在输出埠上模拟引脚电容性的负载问题14联机负载模型能提供哪3条信息?问题15列出至少7个在本实验或以前的实验中使用的dcsheell-t命令,这些命令用于在设计中设置约束和属性Note:fdeflalcontainstwooftheletter"one"character,andno"L"charactersMaxCapacitanceAllowedonaninputports:(exceptforClkport)5“and2al"cells,pin"A”3利用下图决定输入和输出时延的保持时间的计算。题1以上说明中完成命令,填入下面空白处:题2没有准确地对埠进行约束可能会造成什么影响?__任务2读入映像过的PC.db文件任务3生成报告注意此时时钟信号偏斜(0.25ns)和输出约束(0.30ns)造成数据需要时间任务4检查设计规则的违规任务5生成报告题3此时PRGRMCNTTOP违反了建立时间时序约束,这是为什么?__题4下一个合理步骤是什么?任务6检查时序违规3.退出设计(不要覆盖为mapped/PC.db文件)。任务1读入映像后的PRGRMCNTTOP设计任务2生成四种时序报告并进行解释题1在PRGRMCNTTOP中是否存在未被应用约束的时序路径?(使用__题2在PRGRMCNTTOP中由多少组路径?(使用reportpathgroup命令)题3这是一个建立时间的时序报告还是保持时间的时序报告?题4起始点是什么?(输入埠还是内部寄存器的clk引脚)题5终止点是什么?题9什么是“输入时延”?它是怎么产生的?题10对于设计的分区你有什么看法?题11captureregister的建立时间要求是什么?题12时钟不确定性的数值代表什么?题13这个时序报告和默认的时序报告之间有什么不同?题14什么时延是和每个网络相关的,为什么时延是零?题15"扇出"一栏代表什么?题16这是一个建立时间的时序报告还是保持时间的时序报告?题17起始点是什么?题18终止点是什么?题19这个时序路径是否满足约束条件?这个时序报告是在什么操作条件下生成的?题20这个时序报告是在什么操作条件下生成的?题21是否存在什么合适保持时间计算的操作条件?题22终止点的保持时间的要求是什么?题23launchingregister的时延是多少?题24这个时延是否能满足保持时间的要求?题25你如何使用reporttiming去得到10个最差建立时间时序路径的时序报告?题26你如何能仅仅得到一个每条违规时序路径的总结?实验目的:●写一个DC-tcl脚本文件用来编译一系列设计约束对每个设计而言,若设计名称和不带“.db”的文件名相同。比如,假如文件名为PRGRMCNTTOP.db,设计名为PRGRMCNTTOP。脚本档应执行如下操作:●一系列设计(一次一个)将被读入dcshell-t_●对每个设计而言,你将:

把它置为当前设计

执行一次link

应用实验6中的constraints.tcl脚本文件

执行一个可供测试的编译

在reports目录下生成由约束和时序报告产生的结果,并用一个有意义的名称如PRGRMCNTTOP.rpt进行保存_这个脚本档须使用foreachloop编译三个设计{PRGRMCNTTOP,任务2验证设计结果6中一样满足约束。题1你能解释是什么造成这些约束失败的吗?4.退出DC本实验将使你更好的理解静态时序分析是如何进行的以及时序排除是如何正确 任务1读入映像后的设计任务2对设计加时序约束1.一个包含以上说明的约束脚本被创建以供使用。应用约束文件 题2最差负向松弛度有多大?题3什么路径显示出这种违规?任务3使用Max-Delay约束题4数据什么时候能到达输入埠?题5期望获得的数据什么时候能到达输出埠?题6关键路径的最大路径时延约束是什么?组合逻辑路径的最大传播时延应被约束为10ns。这意味着需要对约束条件进行一下..(实际上在任务4中你将发现这条命令将产生很多不期望的行为。你需要寻找更题7此时哪条路径是违规最严重的?(提示:寄存器参数名始终以时钟路径,它连接了三条路径(不是默认的一条)。需要对此再次进行排除。题8此时哪条路径违规了?发生了什么?了一个严重的违规,代替了组合逻辑路径的值为5.65的最差负向松弛度。对寄存器寄存器路径应用多时钟约束之后,再回到组合逻辑路径,发现它的最差负的?题10注意“数据要求时间”部分的4ns的“输出外部时延”—这是从哪产生的?题11这条组合逻辑路径的最大路径时延是什么?.这可以在时序报告中看到。内部逻辑的最大时延的约束值(10ns)减时延值2ns和输出外部时延值4ns,对组合逻辑路径的最大时延约束为从这里你明白了什么?任务5使用虚拟时钟4ns2ns_该图显示设计中存在clk和vclk两个时钟。你将使用clk约束时序路径,而所以vclk的周期应为10ns,而输入和输出时延为0。题12什么是WNS?……vclkcomyelkcomyelkseg__题14是否所有的路径都达到了建立时间时序约束?题15这些保持时间的违规是从哪突然产生的?…任务7返回多时钟路径题16对于“clk”信号,在获得什么边沿信号的时候保持时间检查被执行?题17违规是否都消失了?●解决设计的时序违规实验流程DefaultCellDrivingInputPorts(exceptClk)任务1读入并编译设计题2在最终的电路中有多少触发器?题3有多少寄存器被涉及到?…题4和代码一致吗?4.编译设计任务2使设计符合时序要求我们的办法使重新编写代码,设计描述了两个加法器和一个多路选择器。允许望能使用DesignWare基础库组件。2.重命名NEWCALC的模块实体3.改写NEWCALC,这样输入埠控制就不是关键路径的一部分4.读入NEWCALC的源代码。7.编译NEWCALC设计。8.检查时序9.键入以下命令找出已编译的档是否包含DesignWare的慢速执行:11.再次检查时序。关键路径的松弛度应该载时序约束的15%范围内。12.检查仍存在的时序违规。设计#2:“转换器”说明任务3使用脚本编译设计3.约束并编译设计题5设计符合时序要求吗?题7使用题7使用reportcompileoptions如何避免错误?题6对6位加法器,在不使用DesignWare基础库的情况下,哪种结构最快....题8逻辑级优化的两个选项是什么?.题9门级优化的两个选项是什么?题10你在编译门级设计的时候高级别(结构上的)的优化会发生吗?题11算法方程中的圆括号如何影响高级别优化?题12在优化并映像完设计以后DesignCompiler做的最后一件工作是什么?DesignCompiler认为输入和输出时延作为最大时延约束先前就被指定到埠了;这可以在时序报告中看到。内部逻辑的最大时延的约束数量(10ns)●应用uniquify和compile+donttouch方法解决多实例化问题题2哪种方法占用较少内存?题2哪种方法占用较少内存?1.通过回答下列三个问题比较两种方法题1哪种方法更容易执行?题1哪种方法更容易执行?题3哪种方法可以得到较好的优化结果?2.将未映像过的设计STACKTOP读入DesignCompiler(dcshell-t)(unmapped/STACKTOP.db),回答下列问题:题4STACK题4STACKTOP中哪个设计是多实例化的?题5如果你将题5如果你将STACKTOP唯一化会发生什么?题6对于“compile+setdonttouch”方法,哪一个设计(STACKFSM还是STACKSTACKMEM)应当被预编译并获得donttouch属性?题7你会选择哪中方法去执行?为什么?实验流程donttouch.tcl__ ●读入未映像过的设计unmapped/STACKTOP.db。_●应用脚本文件scripts/constraints.tcl_ ●使用checkdesign去验证多实例化问题是否已被解决 ●生成约束报告(reportconstraint-all)和一个器件报告(reportcell),并●把映像过的设计和整个层次保存到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论