数字集成电路验证方法学教学课件

上传人:仙*** 文档编号:241399164 上传时间:2024-06-23 格式:PPT 页数:70 大小:1MB
返回 下载 相关 举报
数字集成电路验证方法学教学课件_第1页
第1页 / 共70页
数字集成电路验证方法学教学课件_第2页
第2页 / 共70页
数字集成电路验证方法学教学课件_第3页
第3页 / 共70页
点击查看更多>>
资源描述
数字集成电路验证方法学数字集成电路验证方法学2019年年12月月31日日主要内容主要内容n验证的必要性验证的必要性n验证方法学介绍验证方法学介绍n验证工具介绍验证工具介绍n演示演示2024/6/232共69页主要内容主要内容n验证的必要性验证的必要性n验证方法学介绍验证方法学介绍n验证工具介绍验证工具介绍n演示演示2024/6/233共69页验证的必要性验证的必要性n验证的概念,验证与测试的区别。n经验表明,验证已经占到整个产品开发周期的70%以上,它已经成为复杂SOC(Systemon-Chip)开发中的重要壁垒。n制造、设计和验证能力之间的鸿沟2024/6/234共69页典型流程典型流程时序不满足动态仿真正确Verificationisnotjustveryhard,itisvery,veryhard没有一个简单的工具可以解决你所有的验证没有一个简单的工具可以解决你所有的验证问题。问题。(VSIA,VirtualSocketInterfaceAlliance)系统功能不满足系统规划满足功能不正确系统结构不合理时序不满足动态仿真正确功能正确2024/6/235共69页主要内容主要内容n验证的必要性验证的必要性n验证方法学介绍验证方法学介绍n验证工具介绍验证工具介绍n演示演示2024/6/236共69页验证方法学验证方法学n方法学:又称方法论,是一门学问采用的方法、规方法学:又称方法论,是一门学问采用的方法、规则与公理;一种特定的做法或一套做法。则与公理;一种特定的做法或一套做法。n验证方法学:指完成验证过程中的一系列方法、技验证方法学:指完成验证过程中的一系列方法、技术和规范。术和规范。n1.仿真技术仿真技术n2.静态技术静态技术n3.物理验证物理验证2024/6/237共69页仿真技术仿真技术n基于事件的仿真基于事件的仿真-任何一个输入的变化都被任何一个输入的变化都被标记为事件,即常说的功能仿真,精度高,标记为事件,即常说的功能仿真,精度高,速度慢。比如速度慢。比如Modelsim,VCS。n基于周期的仿真基于周期的仿真-单周期内只检查一次输入单周期内只检查一次输入并计算设计的输出逻辑值。速度快,无时并计算设计的输出逻辑值。速度快,无时序、毛刺。比如序、毛刺。比如Cyclone。n事务级仿真事务级仿真-一堆事件的集合即为事务,即一堆事件的集合即为事务,即常说的验证平台。常说的验证平台。n软硬件协同验证软硬件协同验证-需要专门的软硬件,成本需要专门的软硬件,成本高高。2024/6/238共69页传统验证系统传统验证系统nDUT:DesignUnderTestn适用于基于事适用于基于事件的仿真件的仿真和和基基于周期的仿真。于周期的仿真。n适用于简单的适用于简单的设计。设计。缺点:缺点:1.可扩展性差2.可重用性差2024/6/239共69页层次化的验证系统层次化的验证系统适用于事务级仿真适用于事务级仿真优点:优点:1.可扩展性好2.可重用性好2024/6/2310共69页为什么要用事务级仿真?基于事件的仿真基于事件的仿真事务级仿真事务级仿真Testbench代码可读性,可代码可读性,可维护性维护性差差强强仿真速度仿真速度慢慢快快Testbench结构结构DUT复杂时,结构混乱复杂时,结构混乱DUT复杂时,结构清晰复杂时,结构清晰Testbench代码量代码量DUT简单时,代码量尚可简单时,代码量尚可DUT复杂时,代码量巨大复杂时,代码量巨大DUT简单时,代码量略多简单时,代码量略多DUT复杂时。代码量较少复杂时。代码量较少与待测设计联系程度与待测设计联系程度非常紧密非常紧密行为级与行为级与DUT联系紧密联系紧密事务级具有自身独立性事务级具有自身独立性可复用性可复用性无无强强抽象层次抽象层次无无有有参考模型参考模型无无有有基于事件的仿真与事务级仿真的比较基于事件的仿真与事务级仿真的比较2024/6/2311共69页事务级仿真事务级仿真nRVM:ReferenceVerificationMethodology,Synopsys公司。nVMM:VerificationMethodologyManual,ARM公司和Synopsys公司。nAVM:AdvancedVerificationMethodology,Mentor公司。nOVM:OpenVerificationMethodology,Cadence公司和Mentor公司nUVM:UniversalVerificationMethodology,Cadence公司2024/6/2312共69页为什么选用OVM?验证方法学验证方法学侧重点侧重点EDA验证工具验证工具支持的验证语言支持的验证语言基类库是否基类库是否开源开源RVM层次化验证层次化验证VCSOpenVera否否VMMRTL级模块级模块VCSSystemVerilog是是AVM层次化验证层次化验证QuestasimSystemC/SystemVerilog是是OVM开源和不同开源和不同仿真器之间仿真器之间的透明性的透明性支持不同验证支持不同验证工具工具支持支持SystemVerilog等多种语言等多种语言是是UVM开源和快速开源和快速入门入门QuestasimNC-verilog支持支持SystemVerilog等多种语言等多种语言是是各种验证方法学比较各种验证方法学比较2024/6/2313共69页SystemVerilog介绍介绍nSystemVerilog结合了结合了Verilog和和C+的概念,的概念,具有如下新功能:具有如下新功能:n1.面向对象编程面向对象编程(OOP)、n2.随机约束随机约束(ConstraintRandom)、n3.断言断言(Assertion)、n4.功能覆盖率功能覆盖率(FunctionalCoverage)。2024/6/2314共69页nOOP:Object-orientedprogrammingn类:定义实物的抽象特点,包含方法和属性。n对象:类的实例。n方法:类的行为。n继承:子类包含类的特性。SystemVerilog介绍介绍-面向对象编程面向对象编程2024/6/2315共69页CRT:ConstraintRandomTestclassmy_transactionextendsovm_transaction;randintdata_i;constraintc_data_idata_i=0;data_i262144;virtualfunctionvoidrandomize_();data_i=$random&18h3ffff;endfunctionSystemVerilog介绍介绍-随机约束随机约束2024/6/2316共69页SystemVerilog介绍介绍-断言断言Assertion示例示例propertyp10;(posedgeclock)(io.data_check_o=data_out_design_for_check-2);endpropertya10:assertproperty(p10);2024/6/2317共69页nFunctionalCoveragencovergroup:覆盖率模型:覆盖率模型nsample():采样函数:采样函数nbins:仓仓CovergroupCovkind;coverpointtr.kind/kind为4位数据binszero=0;binshi=8:$;endgroupSystemVerilog介绍介绍-功能覆盖率功能覆盖率2024/6/2318共69页OVM介绍介绍nOVM是一种基于SystemVerilog的验证方法或者策略。OVM已经实现了一个基本的层次化验证平台,大大简化验证工程师的工作量。nOVM可以验证HDL代码或者网表文件nOVM特点:1.开放性:支持所有验证工具2.开源:OVM库都是基于SystemVerilog实现的,可以在网上下载。3.可靠性:两大公司共同开发维护2024/6/2319共69页OVM结构结构novm_envnovm_sequecernovm_agentnovm_transcationnovm_scoreboardnovm_drivernovm_monitor2024/6/2320共69页静态技术静态技术n语法检查语法检查-用户可以自由控制需要检查的规则,如代码风格,可综合检查,DFT检查。nlint工具。n静态时序分析静态时序分析-检查建立、保持时间以及其他延时信息是否满足设计时序要求。PrimeTime。n形式验证形式验证不考虑时序信息,通常用于验证两个设计是否在功能上等效。Formality工具。2024/6/2321共69页一般来说,要分析或检验一个电路设计的时序方面的特征有两种主要手段:动态时序仿真(DynamicTimingSimulation)和静态时序分析(StaticTimingAnalysis)1.动态时序仿真:利用仿真器和延迟文件,通过反标节点延迟信息来仿真。优点:可直观查看波形;缺点:速度慢,看不到关键路径。2.静态时序分析:分析每条时间路径上的延迟,来查看是否存在setup/hold违反。优点:分析速度比较快,全面;缺点:不能查看功能是否正确。静态时序分析静态时序分析2024/6/2322共69页n所谓形式验证,就是通过比较两个设计在逻辑功能是否等同的方法来验证电路的功能。n优点:1.不依赖于测试矢量,因此能提供更完全的验证;2.可以实现RTL-to-RTL、RTL-to-gate、gate-to-gate两者之间的验证;3.有定位功能,可以帮助你找出两个设计之间功能不等同的原因;4.可以使用的文件格式有VHDL、Verilog、Synopsys的.db格式,以及EDIF网表等;5.可以实现自动的分层验证;形式验证形式验证2024/6/2323共69页物理验证物理验证-版图级版图级n电源电压降电源电压降n电迁移电迁移n功耗功耗Astro布局布线工布局布线工n天线效应天线效应具中完成具中完成n串扰串扰2024/6/2324共69页主要内容主要内容n验证的必要性验证的必要性n验证方法学介绍验证方法学介绍n验证工具介绍验证工具介绍n演示演示2024/6/2325共69页如何利用如何利用OVM完成验证?完成验证?2024/6/2326共69页基于OVM的数字滤波器验证平台n数模转化器(DAC)中的数字插值滤波器做为此验证平台的DUTn数字插值滤波器的功能:1.提高采样频率2.滤除带外(带宽20KHz)噪声输入信号输入信号输出信号输出信号2024/6/2327共69页传统的滤波器验证平台仿真结果n传统的验证平台:基于定向测试矢量+波形查看的方式2024/6/2328共69页传统验证平台没找到传统验证平台没找到BUG的原因的原因1.仿真时间没有足够长2.借助波形来判断3.没有与理想参考模型比较基于基于OVM的验证平台的验证平台2024/6/2329共69页OVM验证平台验证步骤验证平台验证步骤1.利用OVM库完成平台代码2.启动验证工具3.创建编译库4.编译验证平台代码5.启动仿真2024/6/2330共69页利用利用OVM库完成平台代码库完成平台代码n扩展OVM类n逐层完成:1.接口2.数据产生3.驱动器4.验证环境5.比较器2024/6/2331共69页OVM平台平台-接口接口interfaceio_if();logic17:0data_i;logic17:0data_o;logic17:0data_check_o;modportdut_if(inputdata_i,outputdata_o);/DUT接口modportcheck_if(inputdata_i,outputdata_check_o);/比较器模块接口Endinterfaceio_ifmy_io();/装载接口modulecheck(io_if.check_ifio,inputclock,rst,en);dutdut(.io(my_io),.clock(clock),.rst(rst),.en(rst_check);checkcheck(.io(my_io),.clock(clock),.rst(rst),.en(rst_check);2024/6/2332共69页OVM平台平台数据产生数据产生classmy_transactionextendsovm_transaction;randintdata_i;functionnew(stringname=);super.new(name);endfunction:new/产生随机事件的约束条件constraintc_data_idata_i=0;data_i262144;virtualfunctionvoidrandomize_();data_i=$random&18h3ffff;endfunctionovm_object_utils_begin(my_transaction)/在程序中ovm_field_int(data_i,OVM_ALL_ON+OVM_DEC)ovm_object_utils_endendclass:my_transaction2024/6/2333共69页OVM平台平台驱动器驱动器classmy_driverextendsovm_driver;/ovm_component_utils(my_driver)/注册本类,这个宏的结尾没有符号;virtualio_ifv_io;/装载虚拟接口ovm_get_port#(my_transaction)get_port;/装载与激励发生器通信的通道接口:functionnew(stringname,ovm_componentparent);super.new(name,parent);/建议验证程序中可写一些ovm_report_info的语句供提示用:ovm_report_info(,Calledmy_driver:new);/在测试结果显示此函数被调用endfunction:new 2024/6/2334共69页functionvoidbuild;super.build();ovm_report_info(,Calledmy_driver:build);get_port=new(get_port,this);/初始化endfunction:build virtualtaskrun;ovm_report_info(,Calledmy_driver:run);foreverbeginmy_transactiontx;#1600get_port.get(tx);/从通道中取一个事件ovm_report_info(,$psprintf(data_i=%2h,tx.data_i);v_io.dut_if.data_i=tx.data_i;endendtask:runendclass:my_driver2024/6/2335共69页OVM平台平台验证环境验证环境classmy_envextendsovm_env;/ovm_component_utils(my_env)/注册本类ovm_random_stimulus#(my_transaction)env_stimulus;/装载激励器tlm_fifo#(my_transaction)env_fifo;/装载通道my_driverenv_driver;/装载驱动器functionnew(stringname=my_env,ovm_componentparent=null);super.new(name,parent);ovm_report_info(,Calledmy_env:new);endfunction:new 2024/6/2336共69页virtualfunctionvoidbuild;super.build();ovm_report_info(,Calledmy_env:build);env_stimulus=new(env_stimulus,this);/初始化激励器env_fifo=new(env_fifo,this);/初始化通道env_driver=new(env.driver,this);/初始化驱动器endfunction:buildvirtualfunctionvoidconnect;/设定连接关系ovm_report_info(,Calledmy_env:connect);env_stimulus.blocking_put_port.connect(env_fifo.put_export);/激励器侧接口-放事件env_driver.get_port.connect(env_fifo.get_export);/驱动器侧接口-取事件endfunction:connect2024/6/2337共69页virtualfunctionvoidconfigure;/ovm_report_info(,Calledmy_env:configure);env_stimulus.set_report_id_action(stimulusgeneration,OVM_NO_ACTION);/限制显示信息endfunction:configure/你可删除上一行,看看有什么变化?taskrun();ovm_report_info(,Calledmy_env:run);endtask:runvirtualfunctionvoidreport;ovm_report_info(,Calledmy_env:report);endfunction:report/在运行下面的run_test()函数时,以上函数将自动依次运行endclass:my_env2024/6/2338共69页modulecheck(io_if.check_ifio,inputclock,rst,en,input17:0data_out_design_for_check);wire17:0hcic_out;/参考模型Hcic_fullHcic_full(clock,en,rst,io.data_i,hcic_out,);assignio.data_check_o=hcic_out;propertyp10;(posedgeclock)(io.data_check_o=data_out_design_for_check-2)|io.data_check_o=0;endpropertya10:assertproperty(p10);endmoduleOVM平台平台比较器比较器2024/6/2339共69页timescale1ns/10psmoduletop;importovm_pkg:*;importmy_pkg:*;parameterclock_cycle=100;bitclock;bitrst;bitrst_check;io_ifmy_io();/装载接口dutdut(.io(my_io),.clock(clock),.rst(rst),.en(rst_check);/装载DUTcheckcheck(.io(my_io),.clock(clock),.rst(rst),.en(rst_check),.data_out_design_for_check(my_io.dut_if.data_o);/建议在验证程序顶级模块中一般采用继承ovm_test的类包装继承ovm_env的类OVM平台平台顶层模块顶层模块2024/6/2340共69页classmy_testextendsovm_test;ovm_component_utils(my_test)/注册本类my_envtop_env;/装载环境-top_envfunctionnew(stringname=my_test,ovm_componentparent=null);super.new(name,parent);ovm_report_info(,Calledmy_test:new);endfunction:new virtualfunctionvoidbuild;super.build();ovm_report_info(,Calledmy_test:build);top_env=new();/初始化/建议在验证程序中可设定看门狗set_global_timeout(1000000us);endfunction:build 2024/6/2341共69页virtualfunctionvoidconnect;ovm_report_info(,Calledmy_test:connect);top_env.env_driver.v_io=my_io;/连接虚拟接口到驱动器的物理接口endfunction:connecttaskrun;my_transactiontx;tx=new();ovm_report_info(,Calledmy_test:run);top_env.env_stimulus.generate_stimulus(tx,2000000);/激励器产生20个事件endtask:runendclass:my_test2024/6/2342共69页initialbeginrun_test(“my_test”);clock=0;rst=0;rst_check=0;#(32*clock_cycle)rst=1;endalways#(clock_cycle/2)clock=clock;initialbegin$fsdbDumpfile(top.fsdb);$fsdbDumpSVA;$fsdbDumpvars(0,top,+all);endendmodule:top2024/6/2343共69页启动验证工具启动验证工具n利用mentor的questasim,界面和操作类似于modelsimn环境变量source/opt/demo/questasim.envn启动命令vsim&2024/6/2344共69页脚本方式完成验证脚本方式完成验证nvlibdac_hcic/创建库nvlog+acc-f./rtl/ovm_rtl/compile_questa_sv.f-workdac_hcic-sv+cover/编译整个验证平台nvsim-cdac_hcic-sv_seed100-coverage-assertcover-assertdebug-sva-voptargs=“+acc”-pli/opt/springsoft/verdi/share/PLI/MODELSIM/LINUX/novas_fli.so/启动仿真nviewassertions/查看断言nrun-all/开始运行nquit-sim/结束仿真2024/6/2345共69页compile_questa_sv.fn+incdir+/home1t/opt/questasim/questasim/verilog_src/ovm-2.1.2/srcn/home1t/opt/questasim/questasim/verilog_src/ovm-2.1.2/src/ovm_pkg.svn+incdir+/home/liuxp/dac/rtl/ovm_rtln+incdir+/home/liuxp/dac/rtl/dac_balise/dac_haf_cicn/home/liuxp/dac/rtl/ovm_rtl/ovm_start.sv2024/6/2346共69页结果查看结果查看断言结果查看断言结果查看代码覆盖率查看代码覆盖率查看2024/6/2347共69页断言结果查看Questasim下2024/6/2348共69页代码断言结果查看Verdi下Verdi(另外一个软件,专门用作波形查看和调试)下查看断言结果更加直观,箭头朝上就表示断言通过,朝下表示断言失败。2024/6/2349共69页代码覆盖率查看2024/6/2350共69页代码覆盖率查看2024/6/2351共69页n动态时序仿真:利用仿真器(Modelsim)和延迟文件(SDF文件),通过反标节点延迟信息来仿真。n需要的文件:1.布局布线完的网表文件2.布局布线后生成的SDF文件3.标准单元库和IO库的Verilog模型文件4.Testbench文件动态时序仿真(后仿)动态时序仿真(后仿)2024/6/2352共69页n1.修改Testbench,添加布局布线完导出的SDF文件n2.创建新的工程n3.添加修改好的Testbench文件top_tb.vn4.添加布局布线完导出的网表文件fsk_layout.svn5.添加标准单元的Verilog模型文件n/home/smic/smic_40/SCC40NLL_HS_RVT_V0np1a/verilog/SCC40NLL_HS_RVT_V0p1.vn6.添加输入输出IO的Verilog模型文件n/home/smic/smic_40/SP40NLLD2RN_3P3V_Vn0p2/verilog/SP40NLLD2RNP_3P3V_V0p1.vn7.编译及仿真动态时序仿真(后仿)步骤动态时序仿真(后仿)步骤2024/6/2353共69页Testbench中添加中添加SDF文件文件在Testbench中新建一个initial块,通过系统函数$sdf_annotate()来读入SDF文件,并反标到网表每个节点上。具体代码如下:initialbegin$sdf_annotate(“/home/liuxp/class/astro/SDF/top_pad.sdf”,top_tb_pad);endTestbench模块名称实例化的顶层模块名称2024/6/2354共69页后仿真波形后仿真波形整体功能波形:延迟信息:2024/6/2355共69页静态验证工具静态验证工具n静态时序分析静态时序分析PrimeTimen形式验证形式验证-Formality2024/6/2356共69页静态时序分析静态时序分析PrimeTimenPrimeTime是Synopsys的静态时序分析软件,常被用来分析大规模、同步、数字ASIC。nPrimeTime适用于门级的电路设计。1.逻辑综合后网表2.自动布局布线后网表2024/6/2357共69页PrimeTime流程流程1.设置查找和链接路径;2.读入并链接所要分析的设计;3.设置操作条件和线上负载模型;4.设置基本的时序约束;5.检查所设置的约束以及该设计的结构。2024/6/2358共69页PrimeTime工具启动工具启动nsource/opt/demo/synopsys.envnpt_shell(无图形界面)(无图形界面)或者或者nprimetime&2024/6/2359共69页命令输入区命令输入区2024/6/2360共69页PrimeTime脚本脚本sourcept.scrsetlib_path/home/smic/smic_65/SCC65NLL_HS_RVT_V1p1asetsmic_stdlib_path$lib_path/synopsys/1.2v/setsmic_diolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_TTM_V0p2a/syn/3p3v/setsmic_aiolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_ANALOG_TTM_V0p2a/syn/3p3v/setsmic_stdsymlib_path$lib_path/symbol/setsearch_path$search_path$smic_stdlib_path$smic_aiolib_path$smic_diolib_path$smic_stdsymlib_path$smic_iosymlib_path“setlink_path*scc65nll_hs_rvt_ss_v1p08_125c_basic.dbscc65nll_hs_rvt_ff_v1p32_-40c_basic.dbSP65NLLD2RP_OV3_TTM_V0p2_ss_V1p08_125C.dbSP65NLLD2RP_OV3_TTM_V0p2_ff_V1p32_-40C.db“setsymbol_librarylistSCC65NLL_HS_RVT_V1p1.sdbremove_designallread_verilog./syn/netlist/dac.sv“link_designdacccurrent_designdaclist_designsreport_cell2024/6/2361共69页PrimeTime脚本脚本sourcept.scrset_operating_conditions-min_libraryscc65nll_hs_rvt_ff_v1p32_-40c_basic-minff_v1p32_-40c-max_libraryscc65nll_hs_rvt_ss_v1p08_125c_basic-maxss_v1p08_125c-analysis_typebc_wcset_operating_conditions-libraryscc65nll_hs_rvt_ff_v1p32_-40c_basicff_v1p32_-40ccreate_clock-nameclk-period300-waveformlist0150clk_in_padset_clock_latency2.0all_clocksset_clock_uncertainty-setup2.0clkset_clock_transition2get_clocksclkset_drive0listclkclk_in_padset_load5all_outputsset_input_delay5-clockclk-maxremove_from_collectionall_inputsget_portsclk_in_padset_output_delay5-clockclk-maxall_outputsreport_constraintreport_timing2024/6/2362共69页形式验证形式验证-Formalityn所谓形式验证,就是通过比较两个设计在逻辑功能是否等同的方法来验证电路的功能。nFormality是Synopsys公司的产品,与PrimeTime结合起来使用。2024/6/2363共69页Formality流程流程1.设置环境2.创建container3.读入库文件4.读入设计文件5.定义参考库和设计库6.连接7.开始比较2024/6/2364共69页Formality工具启动工具启动nsource/opt/demo/synopsys.envnfm_shell(无图形界面)(无图形界面)或者或者formality&2024/6/2365共69页命令输入区命令输入区2024/6/2366共69页Formalitysourcefm.scrsetlib_path/home/smic/smic_65/SCC65NLL_HS_RVT_V1p1asetsmic_stdlib_path$lib_path/synopsys/1.2v/setsmic_diolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_TTM_V0p2a/syn/3p3v/setsmic_aiolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_ANALOG_TTM_V0p2a/syn/3p3v/setsearch_path“$smic_stdlib_path$smic_aiolib_path$smic_diolib_pathcreate_containerrefread_dblistscc65nll_hs_rvt_ss_v1p08_125c_basic.dbSP65NLLD2RP_OV3_TTM_V0p2_ss_V1p08_125C.dbSP65NLLD2RP_OV3_ANALOG_TTM_V0p1_ss_v1p08_125C.dbread_verilog./rtl/dac_haf_cic/top.v./rtl/dac_haf_cic/filter.v./rtl/dac_haf_cic/en.v./rtl/dac_haf_cic/haf1_new.v./rtl/dac_haf_cic/haf2_new.v./rtl/dac_haf_cic/Hcic.v./rtl/dac_haf_cic/modulator.v./rtl/dac_haf_cic/DWA.v2024/6/2367共69页Formalitysourcefm.scrset_reference_designref:/WORK/totallink$refcreate_containericmpread_verilog-netlist./syn/netlist/dac.svset_implementation_designicmp:/WORK/totalset_topicmp:/WORK/totalsave_session-replacefm_shell_sessionexitformality&restore_sessionfm_shell_session.fssverifyreport_failing_pointsdiagnose2024/6/2368共69页作业作业后仿布局布线导出的网表文件(带SDF文件)。2024/6/2369共69页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!