ModelSim仿真器.doc_第1页
ModelSim仿真器.doc_第2页
ModelSim仿真器.doc_第3页
ModelSim仿真器.doc_第4页
ModelSim仿真器.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

ModelSim仿真器.doc Last updated: 8/13/2013 9:18 下午 Page 46 of 46ModelSim仿真器MALIDANRevision 0.2File Path: / WARNINGThis document contains confidential information that could be substantially detrimental to the interest of Tianjin Topbroad Microelectronics Co.,Ltd. through unauthorized use or disclose.Copyright 20088, 天津通广微电子有限公司 版权所有. The material in this document constitutes an unpublished work created in 20088. The use of this copyright notice is intended to provide notice that TBM owns a copyright in this unpublished work. The copyright notice is not an admission that publication has occurred. This work contains confidential, proprietary information and trade secrets of TBM. No part of this document may be used, reproduced, or transmitted in any form or by any means without the prior written permission of TBM。Table Of Contents1Open Issues31.1Open Feature Issues31.2Open Implementation Issues32ModelSim概述42.1什么是ModelSim42.2ModelSim主要特点:43ModelSim具体安装步骤:54配置Modelsim SE6.1b的环境变量:85ModelSim软件的开启与关闭106ModelSim仿真的基本步骤126.1建立一个新的Project126.2载入Project的HDL source codes146.3Creating the working library(创建库)156.4Compile247Simulate328Modelsim工具栏368.1File368.2Edit378.3View378.4Format378.5Compile,Simulate,Add,Tools,Window,Help379Revision Changes441 Open IssuesList all open issues. Include short description of resolution when closed. This should not be detailed.1.1 Open Feature Issues1Issue: Resolution: 2Issue: Resolution:3Issue: Resolution:1.2 Open Implementation Issues1Issue:Resolution:2Issue:Resolution:2 ModelSim概述2.1 什么是ModelSimModelSim是业界最优秀的HDL/Verilog仿真器,快速的仿真性能和最先进的调试能力,支持众多的ASIC和FPGA厂家库,是作 FPGA、ASIC设计的RTL级和门级电路仿真的首选。全面支持VHDL和Verilog语言的IEEE 标准,以及 IEEE VITAL 1076.495 标准,支持C语言功能调用,支持 C模型、基于SWIFT的SmartModel逻辑模型和硬件模型的仿真。具有丰富而又易用的图形用户界面,提供最友好的调试环境,为加快调试提供强有力的手段。2.2 ModelSim主要特点: 1. 单内核三语言VHDL、Verilog和Systemc混合仿真器,可以进行VHDLVerilog以及VHDL和Verilog混合仿真; 2. 高性能的RTL和门级优化,本地编译结构,编译仿真速度快; 3. 编译的代码与机器和版本无关,便于数据移植和库维护; 4. 支持加密IP,便于保护IP核; 5. 集成 C调试器,可以在统一的界面中同时仿真C 和VHDLVerilog; 6. 完全支持Verilog-2001,初步支持System Verilog,beta版支持PSL;ModelSim是唯一支持所有标准的仿真器,同时也是定义和执行这些标准的积极的参与者; 7. 先进的Signal Spy功能,可以方便地访问VHDL 或者 VHDL 和Verilog 混合设计中的下层模块的信号,便于设计调试; 8. 先进的Dataflow窗口,可以迅速追踪到导致不定状态的原因,并显示整条路径;集成的Performance analyzer帮助分析性能瓶颈,加速仿真; 9. 同一波形窗口可以显示多组波形,并且能进行多种模式的波形比较(Wave Compare); 10. 先进的代码覆盖率模块Code coverage,能报告出每个分支的执行情况,进一步提高了测试的完整性; 11. 支持Tcl/Tk文件; 12. 提供源代码模版和助手; 13. 支持项目管理 3 ModelSim具体安装步骤: 此处以ModelSim SE6.1b的安装为例说明具体的安装步骤以及应该注意的事项:运行Modelsim6.1_windows目录中的的自解压缩安装文件,如下图3-1所示: 图3-1 自解压缩安装文件等待解压缩完成之后,会出现Modelsim SE6.1b的安装选择画面,如图3-2所示:图3-2 选择安装模式选择Full Product 安装模式,出现如图3所示的安装界面,如图3-3所示:图3-3选择next,然后选择yes,出现如图3-4所示的安装路径选择对话框,图3-4 选择安装路径这里选择默认安装路径C:Modeltech_6.1b。连续两次next,如图3-5所示的文件安装界面。图3-5安装文件复制完成后会弹出如图3-6所示的对话框,图3-6上面文字的意思主要是说有没有可以得到许可的密钥,假如需要从其他机器获得密钥,就选择“No”,如果不确定驱动是否更新的情况下,最好选择“Yes”,单击“Yes”,出现如图3-7和3-8所示:图3-7 图3-8点击“OK”安装完成后,出现提示是否在桌面生成快捷方式界面,选择默认即可。图3-9 完成安装完成安装,如图3-9所示。4 配置Modelsim SE6.1b的环境变量:先找到安装文件夹目录下的keygen.exe文件,然后运行。如图4-1所示:图4-1这表示License文件生成成功,按任意按键,执行下面的操作。将生成的License文件license.dat复制到Modelsim SE6.1b安装目录(我这里的安装目录是C:Modeltech_6.1b) 。总体操作:My Computer-Properties-Advanced-Environment Variables-User variables & System variables。打开计算机属性对话框的“高级”选项卡,新建一个用户变量和系统变量,首先在用户变量中选择NEW,从弹出的“编辑用户变量”对话中填写上变量名:LM_LICENSE_FILE,变量值:就是license.dat的目录地址(C: Modeltech_6.1blicense.dat),然后点击确定,同样在系统变量里面也进行同样的操作,如图42和图43所示。当用户变量和系统变量都编辑之后,点击OK,完成配置ModelSim的环境配置。若是使用ModelSim SE6.3e可不需做任何额外的设定,ModelSim SE6.3e会自动抓到这个系统变量,并使用这个license file。图4-2 Modelsim SE6.0b 用户环境变量设置图4-3 Modelsim SE6.0b 系统环境变量设置5 ModelSim软件的开启与关闭在安装好modelsim6.1软件后,可在桌面上创建一个快捷方式,快捷方式的图标如图5.1所示:图5.1再双击此图标即可打开modelsim6.1软件,就可以进入软件的界面。刚进入软件的界面时,会弹出一个界面,如图5.2所示:图5.2此时在modelsim se plus 6.1界面上用鼠标点击时,是没有任何反应的。用鼠标单击图5.2界面上的关闭按钮时,就可以在modelsim se plus 6.1界面上进行操作了。在界面上可以看到,菜单栏上有文件、编辑、视图、格式、编译、仿真、添加、工具、窗口、帮助的选项。如图5.3所示:图5.3要关闭软件时,可单击软件界面右上角的关闭按钮,点击之后,会弹出一个对话框,如图5.4所示:图5.4如果点击了yes,就关闭了,如果点击了no,就又回到了原来的界面。所以要关闭,点击yes就行了。6 ModelSim仿真的基本步骤这里给出ModelSim的简单操作的四步:创建工程(建立一个Project)、引进HDL File、编译(Compile)、仿真(Simulate/Loading and Run)。基本的仿真流程如下图61所示:图 61 基本仿真流程图6.1 建立一个新的Project6.1.1 第一次执行程序时,可以从Start-All Programs-ModelSim SE6.1b;或是执行ModelSim在桌面上的快捷方式。在Library标签页中,展开各Library就可以看到其下含的所有Package (for VHDL),进一步以Edit打开,可以见到该Package与Package Body内容。6.1.2 选择file-new-project,出现如图62所示的对话框,输入project Name和希望的路径;输入library name。 图62 创建工程 图63l 在指定的路径下会产生一个叫“work”的预设子资料夹,还有test.cr.mti、test.mpf两个档案l 主操作画面左边的Workspace内,在原本的Library标签处,会出现另一个Project标签,但此时里面的内容是空的l 还会弹出另一个“Add items to the Project”的视窗,如图63所示:.mpf档储存的是此project的相关资料,()下次要开启此project就是利用File-Open-Project开启此.mpf.mpf文件存储的project的相关资料包括:l HDL的源文件以及和源文件相关文件l READMEs或是其他的文件l 本地库l 引用全局库 若要移除之前建立的project,请从File-Delete-Project移除6.1.3 当选择图63中的第一个图标,即“creat new file”时,会弹出如图64所示的框,其中“Add file as type”的下拉选项中有Verilog,VHDL,PSL,Text,SystemC,TCL,Macro,VCD,SDF,XML,Logfile选项。这些都表示文件的类型。选择“Folder”的下拉选项时的界面如图65所示,就只有一个选项Top Level。 图64 图65 6.2 载入Project的HDL source codes单击“Add items to the Project”视窗中的“Add Existing File”或是从File-Add to Project -Existing Files,如图66所示:图66单击右上方的“Browse”按钮,弹出如图67所示:图67HDL files的位置,路径名称不能有中文,否则软件会抓不到files关掉“Add items to the Project”视窗,此时的Project下出现了HDL File,一堆问号表示这些档案还没有compile。6.3 Creating the working library(创建库)在ModelSim中,所有的设计都要被编译到库中去,在仿真前,必需要创建库,将源代码编译到库中。创建一个库的步骤:File - New - Library 6.3.1从弹出的对话框“Create a New Library”选择创建库的类型,一是:a new library and a logical mapping to it,另一个是:a map to an existing library。我们选择前一个。6.3.2若没有自动输入Library的名字,需手动输入后点击OK。如图68所示。这时,ModelSim创建了一个名字叫做work的库,同时生成了一个名字叫modelsim_ini的原始文件,如图69所示。在Workspace中可以添加库,并生成调用映射表,存放到初始化文件modelsim.ini中以被将来引用时参照。可以看到这个文件的路径:C:Modeltech_6.1bmodelsim.ini,可以看到文件中的内容如图610所示: 图 68 Create a New Library 图69 modelsim.ini图 610 modelsim.ini文件中的内容Modelsim.ini文件波形观察格式以及仿真器的一些设置在仿真目录下的modelsim.ini文件中修改,下面是其中一些设置。注意:该文件的注释为“;”,具体说明如下:vcom 针对VHDL的设计vlog为verilog的设计配置Modelsim.ini文件的内容如下: Library std = $MODEL_TECH/./std ieee = $MODEL_TECH/./ieee verilog = $MODEL_TECH/./verilog std_developerskit = $MODEL_TECH/./std_developerskit synopsys = $MODEL_TECH/./synopsys ;该部分指出VHDL的库配置 ; Altera specific primitive library mappings apex20k = $MODEL_TECH/./altera/vhdl/apex20k apex20ke = $MODEL_TECH/./altera/vhdl/apex20ke apex20k_ver = $MODEL_TECH/./altera/verilog/apex20k apex20ke_ver = $MODEL_TECH/./altera/verilog/apex20ke alt_ver = $MODEL_TECH/./altera/verilog/alt_ver alt_vtl = $MODEL_TECH/./altera/vhdl/alt_vtl ;该部分指出器件的后仿真库,对verilog 同样适用 vcom ;vhdl的编译命令 ; Turn on VHDL-1993 as the default. Normally is off. ; VHDL93 = 1 ;按VHDL 93的标准编译 ; Show source line containing error. Default is off. ; Show_source = 1 ; Turn off unbound-component warnings. Default is on. ; Show_Warning1 = 0 ; Turn off process-without-a-wait-statement warnings. Default is on. ; Show_Warning2 = 0 ; Turn off null-range warnings. Default is on. ; Show_Warning3 = 0 ; Turn off no-space-in-time-literal warnings. Default is on. ; Show_Warning4 = 0 ; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. ; Show_Warning5 = 0 ; Turn off optimization for IEEE std_logic_1164 package. Default is on. ; Optimize_1164 = 0 ; Turn on resolving of ambiguous function overloading in favor of the ; explicit function declaration (not the one automatically created by ; the compiler for each type declaration). Default is off. ; .ini file has Explict enable so that std_logic_signed/unsigned ; will match synthesis tools behavior. Explicit = 1 ; Turn off VITAL compliance checking. Default is checking on. ; NoVitalCheck = 1 ; Ignore VITAL compliance checking errors. Default is to not ignore. ; IgnoreVitalErrors = 1 ; Turn off VITAL compliance checking warnings. Default is to show warnings. ; Show_VitalChecksWarnings = false ; Turn off acceleration of the VITAL packages. Default is to accelerate. ; NoVital = 1 ; Turn off inclusion of debugging info within design units. Default is to include. ; NoDebug = 1 ; Turn off loading. messages. Default is messages on. ; Quiet = 1 ; Turn on some limited synthesis rule compliance checking. Checks only: ; - signals used (read) by a process must be in the sensitivity list ; CheckSynthesis = 1 ; Require the user to specify a configuration for all bindings, ; and do not generate a compile time default binding for the ; component. This will result in an elaboration error of ; component not bound if the user fails to do so. Avoids the rare ; issue of a false dependency upon the unused default binding. ; RequireConfigForAllDefaultBinding = 1 vlog ;verilog的编译命令 ; Turn off inclusion of debugging info within design units. Default is to include. ; NoDebug = 1 ; Turn off loading. messages. Default is messages on. ; Quiet = 1 ; Turn on Verilog hazard checking (order-dependent accessing of global vars). ; Default is off. ; Hazard = 1 ; Turn on converting regular Verilog identifiers to uppercase. Allows case ; insensitivity for module names. Default is no conversion. ; UpCase = 1 ; Turns on incremental compilation of modules ; Incremental = 1 vsim ; Simulator resolution ; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. Resolution = ps ;设置仿真的时间单位表示. ; User time unit for run commands ; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the ; unit specified for Resolution. For example, if Resolution is 100ps, ; then UserTimeUnit defaults to ps. UserTimeUnit = default ; Default run length RunLength = 100 ;设置仿真步长 ; Maximum iterations that can be run without advancing simulation time IterationLimit = 5000 ; Directive to license manager: ; vhdl Immediately reserve a VHDL license ; vlog Immediately reserve a Verilog license ; plus Immediately reserve a VHDL and Verilog license ; nomgc Do not look for Mentor Graphics Licenses ; nomti Do not look for Model Technology Licenses ; noqueue Do not wait in the license queue when a license isnt available ; License = plus ;设置仿真器的Licence类型. ; Stop the simulator after an assertion message ; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal BreakOnAssertion = 3 ; Assertion Message Format ; %S - Severity Level ; %R - Report Message ; %T - Time of assertion ; %D - Delta ; %I - Instance or Region pathname (if available) ; % - print % character ; AssertionFormat = * %S: %Rn Time: %T Iteration: %D%In ;设置控制面板的打印格式. ; Assertion File - alternate file for storing assertion messages ; AssertFile = assert.log ; Default radix for all windows and commands. ; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned DefaultRadix = symbolic ;设置二,十进制等表示方法. ; VSIM Startup command ; Startup = do startup.do ; File for saving command transcript TranscriptFile = transcript ; File for saving command history ;CommandHistory = cmdhist.log ; Specify whether paths in simulator commands should be described ; in VHDL or Verilog format. For VHDL, PathSeparator = / ; for Verilog, PathSeparator = . PathSeparator = / ; Specify the dataset separator for fully rooted contexts. ; The default is :. For example, sim:/top ; Must not be the same character as PathSeparator. DatasetSeparator = : ; Disable assertion messages ; IgnoreNote = 1 ; IgnoreWarning = 1 ; IgnoreError = 1 ; IgnoreFailure = 1 ; Default force kind. May be freeze, drive, or deposit ; or in other terms, fixed, wired or charged. ; DefaultForceKind = freeze ; If zero, open files when elaborated ; else open files on first read or write ; DelayFileOpen = 0 ; Control VHDL files opened for write ; 0 = Buffered, 1 = Unbuffered UnbufferedOutput = 0 ; Control number of VHDL files open concurrently ; This number should always be less then the ; current ulimit setting for max file descriptors ; 0 = unlimited ConcurrentFileLimit = 40 ; This controls the number of hierarchical regions displayed as ; part of a signal name shown in the waveform window. The default ; value or a value of zero tells VSIM to display the full name. ; WaveSignalNameWidth = 0 ; Turn off warnings from the std_logic_arith, std_logic_unsigned ; and std_logic_signed packages. ; StdArithNoWarnings = 1 ; Turn off warnings from the IEEE numeric_std and numeric_bit ; packages. ; NumericStdNoWarnings = 1 ; Control the format of a generate statement label. Dont quote it. ; GenerateFormat = %s_%d ; Specify whether checkpoint files should be compressed. ; The default is to be compressed. ; CheckpointCompressMode = 0 ; List of dynamically loaded objects for Verilog PLI applications ; Veriuser = veriuser.sl ;指出PLI接口的动态共享库名. 6.4 Compile编译就是将Project编译到库中,在Project标签页内,选定其中一项,点击鼠标右键选择Compile all整体编译,也可以用工具栏中的Compile选项来完成编译的过程。如图611所示:图611编译之后的结果会显示出绿色的“”和红色的“”,其中绿色的“”表示编译成功,而红色的“”表示编译失败,并且下方的空白处都有绿色的和红色的字来说明,如图612所示:图612 Compile Out-of-Data只重新compile有修改过的档案,比较省时,故也较常用。 此刻只做Compile还没有做Simulate,而ModelSim必须要做完Simulate(Loading)后才会把所有档案link起来。如果compiler的结果出现有errors或是warnings的讯息,直接在该讯息上双击,即可进一步带出详细的信息说明。 Compile中compile,弹出Compile Source Files对话框,选择编译的对象。如图613所示。 Compile中compile Options,点击弹出对话框,如图614(a)所示,可以根据需要进行选择设置。 图613 Compile Source Files 图614(a) Comile Options最上方有VHDL,Verilog,Coverage,SystemC选项,点击VHDL选项,其中各项含义如下:l Language Syntax:有1076-1987,1076-1993和1076-2002三种。(不知道是不是三个版本)l Check for:综合和顺序,两个可以同时选择,也可以选择一个或同时不选。l Optimize for:标准逻辑和重要的。l Dont put debugging info in library:禁止在库中放入调试消息l Use explicit declarations only:仅用于外部声明l Disable loading messages:禁止载入信息l Show source lines with errors:错误信息在原文件中显示l Disable all optimizations:禁止全部最优化l Unbound component:未加装订的成分l Process without a WAIT statement:没有等待的处理l Null range:无效排列l No space in time literal:在时间上没有间隔l Multiple drivers on unresolved signals:在没有被处理的信号上加多个程序打开Verilog选项,如图614(b)所示:图614(b)l Language Syntax:有默认,还有Verilog 1995,Verilog 2001和System Verilog。l Enable runtime hazard checks:可以在运行时冒险检查l Disable debugging data:不要调试数据l Convert identifiers to upper-case:转换标识符到大写字母盘l Enable protect usage:允许保护使用l Use vopt flow:(不是很明白)l 其中有些和VHDL一样l Library Search:可以在库中搜索l Extension:可以进行扩展l Library file:库中的文件l Include Directory:包含目录l 后面两个不是特别清楚打开Coverage的选项,如图614(c)所示:图614(c)l Enable Statement Coverage:能够声明覆盖l Enable Branch Coverage:能够分支覆盖l Enable Condition Coverage:能够条件覆盖l Enable Expression Coverage:能够语法覆盖l Enable 0/1 Toggle Coverage:(不太清楚)l Enable 0/1/Z Toggle Coverage:(不太清楚)l Ignore VHDL Subprograms:忽略VHDL子程序打开SystemC选项,如图614(d)所示:l Enable compilation log file:能够编辑log文件l Include SystemC verification library:包括SystemC确认库l Include SystemC master slave library:包括SystemC主从库l Enable verbose sccom messages:允许详细的信息l Custom g+ complier path:自定义g+的路径l Enable Debug Mode:可用调试模式l Optimization Level:优化的级别图614(d) Compile中compile Order,点击弹出对话框,如图615所示,可以改变编译的顺序。图615 编译顺序Current order就是当前的顺序,图下面有个按钮叫自动排序。 Compile中compile Report,点击弹出对话框,如图616所示,可以看到编译的记录信息。 图616编译记录 Compile中compile Summary,点击弹出对话框,如图617所示,可以看到编译的详细信息。图6177 Simulatea. 点击工作区的Library界面,如图71所示。b. 点击work库前面的“”。能看见work库里面的编译单元,它们的类型,以及源文件的路径。c. 双击tb_ykey设计单元,或者,点击右键tb_ykey,选择simulate,能够看到在工作区窗口中有了3个新的选项卡,如图71所示。sim选项卡中显示的是tb_ykey设计单元的结构,就是程序能够执行的文件,如图72所示。File中包含了关于源文件下的信息,如图73Memories选项卡中列出了设计中所规划的内存的情况。如图74所示:图71Library tab图 72 sim tab 图73Files tab 图74 Memories tab这时,我们将tb_ukey拖到wave窗口中,在Transcript中写入run 10ms,仿真10ms可以看到输入,输出等等一些需要检测,观察的信号,如本项目的数据时钟,输入输出VGA和行场同步信号等等波形。如下图所示。可以对wave窗口做放大、缩小操作,也可以拖出一段波形,还可以用鼠标移动标尺观看某一时间的各个波形情况。同样为了方便观看wave波形,可以再加入标尺,即在一个wave波形中用两个标尺来选定要观看的范围,即方便又醒目。我们双击wave窗口左面的各个信号或是右键打开它的属性,从弹出的窗口中:l View选项栏中,可以选择它的进制形式Radix(二进制、十进制、十六进制等等),对应该信号的波形颜色Wave color和名称的颜色,如图75所示l Format选项栏中,可以选择它的显示方式:模拟、数字,高度height,缩放scale等参数,下图为选中Analog,height为8时red_out的波形。green_out和blue_out均为数字显示。l Compare选项栏中,Clocked Comparison,Continuous Comparison图 75 view8 Modelsim工具栏Modelsim工具栏中有10个选项,(File ,Edit, View, Format, Compile, Simulate, Add, Tools, Window, Help)如图81所示,下面将分别介绍各个选项的功能和作用。图81 Modelsim工具栏8.1 FileFile文件中的选项如图82和83所示,其中有New新建(Folder,Source(VHDL,Verilog,SystemC,etc.),Project,Library和Window),Open打开,Load加载,Close关闭,Import输入(Library,EVCD和Memory data),Export输出(Waveform,Tabular list,Event list,TSSI list,Image list和Memory list),Save 保存,Save as另存为。Import可以导入库文件,EVCD和存储数据。导出选项中,可以导出波形,列表,事件列表,TSSI列表,图像或者存储数据。 图83 New 图82 File 图85 View 图 84 Edit8.2 Edit编辑选项包括Undo,Redo,剪切,拷贝,粘贴,删除,清除,全选等等操作,其中还有Find In Files来找文件。如图84所示。8.3 ViewView选项中包括Analysis、Debug Windows等等各种窗口,在仿真时,我们需要观看波形情况可以从 Debug window(如图85所示)选择wave波形,就可以出现如上面提到的仿真结果波形图等等,对wave的一些操作,前面提到了。8.4 Format如图86所示:图86包括指数,格式,颜色,高度选项。8.5 Compile,Simulate,Add,Tools,Window,Help以上各选项如图87所示:图87其中编译在前面已经讲过。仿真选项里有Design Optimization,Start Simulation,Runtime Options,Run(Run100,Run All,Continue,Run Nex

温馨提示

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

评论

0/150

提交评论