数字电路自动化设计综述课件.ppt

上传人(卖家):晟晟文业 文档编号:3750027 上传时间:2022-10-09 格式:PPT 页数:53 大小:679.19KB
下载 相关 举报
数字电路自动化设计综述课件.ppt_第1页
第1页 / 共53页
数字电路自动化设计综述课件.ppt_第2页
第2页 / 共53页
数字电路自动化设计综述课件.ppt_第3页
第3页 / 共53页
数字电路自动化设计综述课件.ppt_第4页
第4页 / 共53页
数字电路自动化设计综述课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、数字电路自动化设计Design FlowLEDAVCSDC,ISEFMPTICC,AstroPrimeRailDFT CompilerStarRCVirtuoso,Cadence2综合的定义n逻辑综合:决定设计电路逻辑门的相互连接。n逻辑综合的目的:决定电路门级结构、寻求时序和与面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。n逻辑综合的过程:首先,综合工具分析HDL代码,用一种模型(GTECH),对HDL进行映射,这个模型是与技术库无关的;然后,在设计者的控制下,对这个模型进行逻辑优化;最后一步,进行逻辑映射和门级优化,将逻辑根据约束,映射为专门的技术目标单元库(target cell

2、library)中的cell,形成了综合后的网表。ASIC design flowVerified RTLDesignConstraintsIP and LibraryModelsLogic Synthesis optimization&scan insertionStatic Timing AnalysisFormal verification Floorplan placement,CT Insertion&Global routingTransfer clock tree to DCPost global routeStatic Timing AnalysisDetail routing

3、Post-layout Optimization(in-place optimization(IPO)Static Timing AnalysisTape outTime ok?Time ok?nonoTime ok?noASIC design flown设计举例,tap控制器,已完成代码编写及功能仿真:nTap_controller.vnTap_bypass.vnTap_instruction.vnTap_state.vn完成全部设计还需经过如下几个步骤:nPre_layoutnSynthesisnSTA using PrimeTimenSDF generationnVerification

4、nFloorolanning and RoutingnPost_layoutn反标来自layout tool的信息,STA using PrimeTimenPost-layout OptimizationnFix Hold-Time ViolationASIC design flow nInitial Setup:建立设计环境,技术库文件及其它设计环境设置。DC.synopsys_dc.setup 文件 company =“zte corporation”;designer =“name”;technology=“0.25 micron”search_path=search_path+“.”“

5、/usr/golden/library/std_cells”“/usr/golden/library/pads”target_library=std_cells_lib.db link_library =“*”,std_cells_lib.db,pad_lib.db symbol_library=std_cells.sdb,pad_lib.sdbASIC design flownSynthesis:利用约束完成设计的门及实现及扫描插入nConstrain scripts /*Create real clock if clock port is found*/if(find(port,clk)=

6、clk)clk_name=clk create_clock-period clk_period clk /*Create virtual clock if clock port is not found*/if(find(port,clk)=)clk_name=vclk create_clock-period clk_period-name vclkASIC design flownConstrain scripts(续)/*Apply default drive strengths and typical loads for I/O ports*/set_load 1.5 all_outpu

7、ts()set_driving_cell-cell IV all_inputs()/*If real clock,set infinite drive strength*/if(find(port,clk)=clk)set_drive 0 clk /*Apply default timing constraints for modules*/set_input_delay 1.2 all_inputs()-clock clk_name set_output_delay 1.5 all_outputs()-clock clk_name set_clock_skew-minus_uncertain

8、ty 0.45 clk_name /*Set operating conditions*/set_operating_conditions WCCOM /*Turn on Auto Wireload selection Library must support this feature*/auto_wire_load_selection=trueASIC design flownCompile and scan insert的scripts,采用bottom_up的编译方法 set_fix_multiple_port_net buffer_constants all compile scan

9、check_test create_test_pattern sample 10 preview_scan insert_scan check_test 如果模块内的子模块具有dont_touch 属性需添加如下命令,因要插入扫描 remove_attribute find(-hierarchy design,”*”)dont_touchnWrite netlist remove_unconnected_ports find(-hierarchy cell,”*”)change_names hierarchy rules BORG set_dont_touch current_design w

10、rite herarchy output active_design+”.db”write format verilog hierarchy output active_design+”.sv”ASIC design flownPre_layout 的 STA:用DC的静态时序分析引擎做block的STA,用PrimeTime做full_chip的STA。nSetup_time分析nHold_time分析 其时序约束和提供给DC做逻辑综合的约束相同。静态时序分析同综合一样,是一个迭代的过程,和cell的位置及布线关系密切,通常都执行多次,直到满足需要。ASIC design flownSDF

11、generation,pre_layout的SDF文件,用于pre_layout timing仿真,同时还需提供时序约束文件(SDF格式)给layout tool做布局布线。script文件如下:active_design=tap_controller read active_design current_design active_design link Create_clock period 33 waveform 0 16.5 tck Set_dont_touch_network tck trst set_clock_skew delay 2.0 minus_uncertainty 3.

12、0 tck set_driving_cell cell BUFF1X pin Z all_inputs()set_drive 0 tck trst set_input_delay 20.0 clock tck max all_inputs()set_output_delay 10.0 clock tck max all_outputs()write_timing format sdf-v2.1 -output active_design+”.sdf”write_constraints format sdf cover_design -output constraints.sdfASIC des

13、ign flownVerificationn利用SDF文件进行动态时序仿真:利用功能仿真时。用verilog 编写的test_bench 文件n形式验证:利用数学算法检查设计的逻辑的等效性,静态验证,需要的时间比动态仿真少,验证全面。在这里验证RTL描述与gate_level网表的逻辑等效性。nFloorolanning and global Routing;nEstimated 寄生电容和RC delay的抽取;n利用抽取的参数静态时序分析,若时序不满足要求,生成custom wire_load 做incremental synthesis即post_layout的优化,采用reoptimi

14、ze_design in_place命令,其script文件需反标抽取的参数到设计;nDetail routing;nreal寄生电容和RC delay的抽取;n利用抽取的参数静态时序分析,修正hold_time如需要做post_layout的优化;n生成post_layout的SDF文件,做gate_level仿真验证;ASIC design flownECOnEngineering change order,不属于正常的ASIC流程,一般只有在ASIC设计的后期,需要改变网表,可利用ECO,例如,在tape-out(sign-off)以后,遇见设计的硬件bug。采用ECO可仅对设计的一小部

15、分重新布线不影响chip其他部分的位置及时序,通常,修改不能大于10%。n最新版本的DC提供由ECO compiler,可使设计者手工修改网表,节省时间。n一些layout工具也具有ECO功能。DC介绍nSynopsys Design Compiler,是一个基于UNIX系统,通过命令行进行交互的综合工具,除了综合之外,它还含有一个静态时序分析引擎及FPGA和LTL(links-to-layout)的解决方案。我们就以下几个方面对DC做以介绍:nscript文件:由DC的命令构成,可使DC自动完成综合的整个过程。nDC支持的对象、变量、属性nDC支持的文件格式及类型nDC在HDL代码中的编译开

16、关,控制综合过程nTranslate_off/translate_on:指示DC终止或开始verilog 源代码转换的位置。nfull_case:阻止case语句在不完全条件下生成latch。综合环境建立n在综合之前必须用setup文件配置综合的环境,下面,我们就以下几个方面对setup文件进行介绍:nsetup文件的位置nsetup文件的内容nsetup文件举例综合环境建立nsetup文件的位置:由一个setup文件提供,文件名必须为“.synopsys_dc.setup”,通过向相关环境变量赋值,定义技术库的位置及综合需要参数。nsetup文件的位置如下:nSynopsys install

17、ation directory:它用于卸载Synopsys 技术独立库及别的参数,不包含设计相关的数据。nUsers home director:用的setup信息。nProject working directory:设计的setup信息 DC按以上顺序依次读取setup文件,最后一个读取的setup文件将覆盖前面读取的setup文件。n将设计相关的startup文件放于Project working directory下。综合环境建立nStartup文件必须定义如下变量:nSearch_path:指明库文件的位置nTarget_library:既技术库,由生产厂家提供,该库中的cells,

18、被 DC用于逻辑映射。Target library的文件名应包含在Link library的文件清单中,用于DC读取门级网表。nLink_ library:该库中的cells,DC无法进行映射,例如:RAM,ROM及Pad,在RTL设计中,这些cells以实例化的方式引用。nSymbol_library:该库文件包含技术库中cells的图形表示,用于DA生成门级示意图。Target_library和Link _library为设计者提供了将门级网表从一种技术在映射 到另一种技术的方法,将旧的Target library文件名包含在Link_library的文件清单中,而Target_libra

19、ry包含新的Target library文件名,利用translate命令实现。综合环境建立n设计相关的startup 文件的例子:.synopsys_dc.setup 文件 company =“zte corporation”;designer =“name”;technology=“0.25 micron”search_path=search_path+“.”“/usr/golden/library/std_cells”“/usr/golden/library/pads”target_library=std_cells_lib.db link_library =“*”,std_cells_

20、lib.db,pad_lib.db symbol_library=std_cells.sdb,pad_lib.sdb 其它的环境变量的设置参看DC的操作手册。逻辑综合的过程nDC通过Script文件,自动完成模块的综合过程,其内容如下:nRTL design entrynEnvironment constraintsnDesign and clock constraintsnCompile design into mapped gatesnOptimizing designnanalyze the synthesis results and debug potential problems.n

21、Save design netlistnReport constraints n(Optional)Apply critical path constraints n(Optional)Second compile to improve critical paths n(Optional)Second path compile constraint report Environment constraintsn功能:定义设计的工艺参数,I/O端口属性,统计wire-load模型。下图解释了描述设计环境约束的DC命令:set_max_capacitance set_max_transition&

22、set_max_fanout on input&output ports or current_design;Block BClockDividerLogicBlock Aset_load on output set_operating_conditions on the whole designclkset_drive on Clock set_driving_cell on input signals set_load on inputs set_wire_load for each block,including top level Top levelEnvironment constr

23、aintsnSet_operating_conditions 用于描述操作条件:process,voltage,temperature,cell和wire 的delay和操作条件呈线性关系。如:Set_operating_conditions WORST(或TYPICAL、BEST)命令set_operating_conditions min BEST max WORST 用于指示DC对设计的WORST和BEST条件,同时优化。Environment constraintsnSet_wire_load -mode 向DC提供wire_load信息,通常技术库里包含许多负载模型,每一种wire-

24、load模型都代表一定模块的尺寸,模拟模块内部nets的delay,用户也可以创建自己的wire_load模型去模拟各设计模块的net loading。这有三种wire-load mode:top,enclosed,segmented,用于模拟各设计层次的net wire_load的关系。nTop:所有层次子模块的wire_load和top-level相同,如果用户计划flatten设计去layout可选择此模式编译子模块;nEnclosed:子模块net的wire_load和enclosed 它的最小模块相同,推荐用于在layout后logical and physical hierarch

25、y相似的设计;nSegmented:子模块之间net的wire_load和enclosed该net的模块相同,需技术库提供Segmented wire_load,一般不常用;wire_load模型的选择很重要,太悲观或太乐观的模型都将产生综合的迭带,在 pre-layout的综合中应选用悲观的模型。命令格式如下:dc_shellset_wire_load MEDIUM mode topEnvironment constraintsEnvironment constraints nSet_load 定义nets或ports的电容负载,为了保证输出路径的时序,例如:Environment cons

26、traintsnSet_drive:主要用于模块的input port,0表是最大的驱动强度通常用于clock port,例如:set_drive 0 CLK RST。set_driving_cell-cell-pin:模拟input port驱动cell的驱动阻抗,为了保证输出路径的时序,确定输入信号的transition time例如:Environment constraintsnSet_min_library -min_version 允许用户同时设置worst-case和best-case libraries,从而在初步编译时,DC修正hold-time冲突时,验证setup-tim

27、e冲突。也可用于在编译时修正hold-time冲突。nDRC的设计规则约束:set_max_transition set_max_capacitance set_max_fanout 这些约束用于的input ports,output ports或current_design,一般在技术库内部设置.当技术库的内部设置不能满足时,可用以上命令设置。例如;set_max_transition 0.3 current_design set_max_capacitance 1.5 find(port,”out1”)set_max_fanout 3.0 all_outputs()design and c

28、lock constraintsn功能:描述设计的目标,包括时序和面积约束,要注意约束必须是可实现的,否则会导致面积超额,功耗增加或时序不能满足要求。设计约束的DC命令如下:set_output_delay on output Block BClockDividerLogicBlock AclkCreate_clock&set_clock_skewset_input_delay on input signals set_max_area for each block,Top leveldesign and clock constraintsn 主要包括两点n约束综合模块的最大面积(set_ma

29、x_area)n约束综合模块timing path(Create_clock,Set_input_delay,Set_output_delay)design and clock constraintsn时钟描述 时钟的描述在设计中很关键,传统上,在clock source 加很大的buffer去驱动整个时钟网络,布线时,使时钟网络成鱼骨状,用于减少时钟网络延时和clock_skew。对于VDSM,传统的方法已不适用,而是由layout工具根据cell的位置综合时钟树,以满足我们对时钟的需求。下面,我们介绍一下描述时钟的DC命令。n时钟DC命令介绍nCreate_clock:用于定义时钟的周期和

30、波形(duty及起始沿);例如:create_clock period 40 waveform0 20 CLK周期40ns 上升沿0 ns,下降沿20 ns;对于仅包含组合逻辑的模块,为了定义该模块的延时约束,需创造一个虚拟时钟定义相对于虚拟时钟的输入输出延时。例如:create_clock-name vTEMP_CLK-period 20nSet_clock_transition:在pre_layout必须设置一个固定的transition值(由技术库提供),因为时钟网有很大的fanout.这样可使DC根据该时钟计算实际的延时值。design and clock constraintsnSe

31、t_clock_skew:设置时钟的skew及delay,pre_layout 和post_layout命令选项不一样。-propagated选项让DC计算时钟的skew。design and clock constraintsn例如:Set_clock_skew uncertainty 0.5 CLK design and clock constraintsnPre-layout时钟DC 命令介绍:估计时钟树的延时和抖动,DC命令如下:create_clock period 40 waveform 0 20 CLK Set_clock_skew delay 2.5 uncertainty 0

32、.5 CLK Set_clock_transition 0.2 CLK set_dont_touch_network CLK set_drive 0 CLK 考虑到layout后时钟网络的变化可若下设置时钟skew:set_clock_skew delay 2.5 minus_uncertainty 2.0 plus_uncertainty 0.2 CLK minus_uncertainty用于setup-time的计算,plus_uncertainty 用于hole-time的计算.一个cell的delay使根据input signal的斜率和output pin的电容负载决定,对于时钟信号

33、,因为clock network的fanout 很大,从而造成clock network 末端门的时钟信号的clock transition time很慢,使DC计算的门延时失真。design and clock constraintsnpost-layout时钟DC命令介绍:这个阶段,用户不需定义时钟的延时和抖动,他们由时钟树决定。clock transition time也不需定义。如果layout 工具提供与DC的直接接口,则直接将包含有时钟树的网表回馈给DC,不需在script文件中对时钟的延时和抖动进行描述,如果layout 工具不能实现此功能,则需用户从layout 工具提取时钟的

34、延时和抖动信息,描述命令同pre_layout.如果含有时钟树的网表能够移植到DC,则clock的命令描述如下:create_clock period 40 waveform 0 20 CLK set_clock_skew propagated minus_uncertainty 2.0 plus_uncertainty 0.2 CLK set_dont_touch_network CLK set_drive 0 CLK 另外,很小的clock uncertainty定义的目的是考虑process的变化。如果无法得到包含有时钟树的网表,只有SDF文件,则对原网表只需定义时钟,并将SDF 文件回

35、馈给原网表,时钟的延时和抖动由SDF文件决定。design and clock constraintsn生成时钟DC命令介绍:对于内部产生时钟的模块,如内部含有分频逻辑,DC不能模拟时钟产生模块创造一个时钟对象。如下图:DC创造时钟命令应用于顶层输入CLK,因clkB 继承自CLK,所以Block B的时钟来自CLK,对clkA,因CLK被clk_div 内部的寄存器隔离,不能传递给clkA,所以clkA 这个时钟对象应在clk _div的output port定义,命令如下:dc_shellcreate_clock period 40 waveform 0 20 CLK dc_shellcr

36、eate_clock period 80 waveform 0 40 find(port,”clk_div/clkA”)Clk_divclkBBlock ABlock BCLKclkAdesign and clock constraintsn输入路径DC命令介绍:nSet_input_delay:定义信号相对于时钟的到达时间。指一个信号,在时钟沿之后多少时间到达。例如:set_input_delay max 23.0 clock CLK dataout set_input_delay min 0.0 clock CLK dataout design and clock constraintsn

37、输出路径DC命令介绍:nSet_output_delay:定义从输出端口数据不可用开始距后一个时钟沿的时间:既时钟周期间去cell从上一个时钟沿开始的工作时间。如:set_output_delay max 19.0 clock CLK dataout 用该命令对一些信号进行over-constrain,从而获得最大 setup-time.但可能导致面积和功耗的增加。一个负值(如:-0.5)可在layout后,被 in-place optimization用于为hold_time修正提供timing margin.design and clock constraintsn其它设计DC命令介绍:n

38、Set_dont_touch_network,常用于port或net阻止DC隔离该net,和该net向连的门具有dont_touch属性。常用于CLK和RST 例如:Set_dont_touch_networkCLK,RST 。当一个模块例用原始的时钟作为输入,在该模块内部利用分频逻辑产生了二级时钟,则应对二级时钟output port上设置set_dont_touch_network.当一个电路包含门时钟逻辑时,若在时钟的输入设置set_dont_touch_network,则阻止DC 隔离该门逻辑,导致DRC发现时钟信号冲突,对门RESET同样。nSet_dont_touch,应用于cur

39、rent_design,cell,net,references.阻止DC对模块中的这些元素进行技术映射。例如:Set_dont_touch find(cell,”sub1”)nSet_dont_use:用于.setup文件用此命令可将技术库中的某些cell滤出,禁止DC映射;例如:Set_dont_use mylib/SD*,将技术库中名字以SD起头的flip-flops.Advanced constraintsnPath:每一条路径都由startpoint 和endpointnstatrpoint:input ports 或时序cell的clock pins;nendpoint:output

40、 ports或时序cell的data pins;nPath_delay Advanced constraintsnSet_false_path:指示DC不要对指定的路径按照时序约束优化,如:异步路径或约束不可实现的路径。false path路径的鉴别在设计中很关键,如果不对false path路径进行标识,DC会对所有的路径进行优化,从而影响关键时序路径。此命令用于当因为有false path关键逻辑时序静态分析失败时。n例1,在clock 域之间的false path:set_false_path-from get_clock CLKA-to get_clock CLKB Advanced

41、constraintsn例2,logic的false path:dc_shellset_false_path through mux1/A through mux2/A dc_shell set_false_path through mux1/B through mux2/B Advanced constraintsn例3,对含有tristates 的path,DC总是认为tristates 时能,会产生false path,如下图,读写不可能在同一个周期:Advanced constraintsn例3,我们推荐将tristates 最好移致顶层,在子模块中就无false path:set_f

42、alse_path-through get_pins U1/DATA_BUS_OUT1 -through get_pins U1/DATA_BUS_IN1 Advanced constraintsnSet_multicycle_path:因为DC假设所有的路径都是单周期的,为了满足时序,对多周期路径会做不必要的优化,从而影响相邻路径或面积。所以这个命令用于隔离多周期路径,通知DC通过这条路径所需的周期数。例如:dc_shell set_multicycle_path 2-from FFA/CP -through Multiply/Out-to FFB/D Advanced constraint

43、snGroup_path:将设计中的时序关键路径绑在一起,可以使路径组间具有优先次序,命令格式:dc_shellgroup_path to out1 out2 name grp1;但添加太多的组会增加编译时间;且会增加最坏违例路径延时。Advanced constraintsnSet_max_delayn对于仅包含组合逻辑的模块,用此命令约束所有输入到输出的总延时。例如:set_max_delay 5 from all_inputs()to all_outputsn对于含有多个时钟的模块,可用通常的方法定义一个时钟,用此命令进行约束定义时钟和其他时钟的关系。例如:set_max_delay 0

44、-from CK2 -to all_register(clock_pin)n该命令还是用于包含gated clocks or resets的设计。nSet_min_delay,n对于仅包含组合逻辑的模块,定义指定路径的最小延时例如:Set_min_delay 3 from all_inputs()nset_fix_hold一起使用,只是DC添加一定延时,满足最小延时的定义。SDF文件的产生nSDF文件的生成 SDF文件分为如下两种:npre_layoutnpost_layout post_layout的SDF文件由DC在设计回注了RC延时值和lumped电容后产生。PT也 可产生SDF文 件。

45、DC命令如下:write_timing format sdf-v2.1 outputnSDF用于做gate-level动态时序仿真。nSDF包含的时序信息组成如下:nIOPATH delay:cell delay,根据输出的wire loading 和输入信号的transition计算nINTERCONNECT delay:是一条路的driving cell的output pin和driven cell的input pin RC delay。nSETUP timing check:根据技术库的描述,确定时序cell的setup-timenHOLD timing check:根据技术库的描述,确

46、定时序cell的hold-timeSDF文件的产生n生成pre_layout的SDF文件npre_layout的延时根据通用wire-load计算,因为没有时钟树的插入,所以首先需对时钟树延时进行估计,DC命令如下:create_clock period 30 waveform 0 15 CLK set_clock_skew delay 2.0 CLK set_clock_transition 0.2 CLKnDC利用以上值做静态时序分析,在生成SDF文件时,不会输出。为了使 DC用设置的clock delay代替计算,DC可对时钟的input pad(CLKPAD)作如下设置:set_ann

47、otated_delay 2.0 cell -from CLKPAD/A to CLKPAD/Zn设置clock_transition不仅用于静态时序分析,还用于计算driven cell的delay,将结果写入SDF文件中。SDF文件的产生n生成post_layout的SDF文件 需生成之前,做如下设置,反标layout数据到设计:read_timing format sdf include quiet create_clock period 30 waveform 0 15 CLK set_clock_skew propagated CLKnSDF文件的时序检查 部分设计的setup_ti

48、me和hold_time的违例常引起仿真出现Xs,引起仿真失败。但有时,我们想忽略这部分设计的违例验证其它部分,这时我们可以人为的选择伪造SDF文件中setup_time和hold_time 的值,使仿真成功。然而最好使用下列DC命令向仿真器注明setup_time和hold_time 的值为zero,确保仿真成功。set_annotated_check 0 setup hold -from REG1/CLK -to REG 1/DSDF文件的产生n阻止错误的时序计算在SDF文件的输出n Cell delay由input transition 和输出负载决定,而input transition

49、 又由driving cell的transition delay决定,所以,若driving cell由多个time arc,产生一个很大的driven cell delay,为了避免这个问题,阻止阻止错误的时序计算在SDF文件的输出,在生成SDF文件之前,使用如下DC命令:set_disable_timing U1 from A to Z reset signal_a 2ns 0.3ns U1 U2 Z I Z Affected GateDC综合简易流程n在自己的目录下创建source、scripts、output、reports四个文件夹n将.synopsys_dc.setup 放入该目录

50、下n将设计的verilog代码放入source文件夹中n将约束文件放入scripts中,如课上所说的cons.tcl、run.tclDC综合简易流程n在该目录下输入dc_shell-t,即启动DCn然后直接输入run或source./scripts/run.tcl即可时序仿真n在modelsim中创建新的一个project,将标准单元的verilog仿真模型(如umc18.v,在工艺库里找到)、在output文件夹中综合后的网表(如示例中的sd_crc16.v)和测试代码加入工程。n编译,注意将verilog仿真模型编译到另一个库中,该过程为:在Workspace-Library中新建一个库,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 医疗、心理类
版权提示 | 免责声明

1,本文(数字电路自动化设计综述课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|