2022年Astro布局布线流程[整 .pdf

上传人:C****o 文档编号:32496649 上传时间:2022-08-09 格式:PDF 页数:26 大小:2.79MB
返回 下载 相关 举报
2022年Astro布局布线流程[整 .pdf_第1页
第1页 / 共26页
2022年Astro布局布线流程[整 .pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《2022年Astro布局布线流程[整 .pdf》由会员分享,可在线阅读,更多相关《2022年Astro布局布线流程[整 .pdf(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Astro 布局布线流程随着深亚微米工艺的应用,逻辑门间的连线主导了电路的时序性能。在实际设计时,设计者不再只是完成简单的逻辑门摆放和连线工作,更重要的是要降低实际的连线延迟,使最后的物理设计时序性能满足设计要求。Astro 是由 Synopsys公司开发的物理设计软件, 适用于现在的主流设计。 Astro 提供了一套完整的物理设计流程, 布局布线同时还具有时序优化功能,可以在一次流程中使设计电路达到预设指标。但Astro 步骤繁多、设定复杂,本章将针对Astro 的设计流程借助一个简单的设计实例,对 Astro 一次流程中的主要步骤进行简单说明, 使读者短时间内可以了解Astro。一.数据准

2、备本流程中需要的输入数据包括:网表文件(Netlist File ) 、时序约束SDC 文件( Timing Constraint File ) 、参考库( Reference Library) 、定义 PAD 顺序或位置信息的TDF 文件( Top Design File) 、工艺 tf 文件( Technology File) 。其中工艺文件和部分参考库文件由Foundry 提供。1.网表:网表文件由前端工程师提供,格式一般采用verilog(.v)格式。布局布线用网表文件一般由Design Compiler (DC)综合得到。从DC 中输出网表时,需要在脚本中如下命令,以满足Astro

3、的要求。2.时序约束文件:时序约束文件由前端工程师提供,格式一般采用SDC(.sdc)格式, SDC 文件也由DC 中输出。时序约束文件中所加的约束只能针对顶层端口,文件中时钟定义可能需要加以修改。因为从DC中输出的时钟定义一般不指定具体的单元及其端口,Astro 通常很难根据这样的时钟定义找到真正的时钟源,因此需要先在网表中找到真正的时钟端口,并据此在SDC 文件中加以修改。例如,原来的SDC 文件中时钟的定义片段为:原来的时序约束文件是给予综合的DC 用,而不是用来布局布线的。所以综合用的SDC 文件中只给出了一个“产生时钟(create clock) ”的命令,根据上面这段时序约束文件中

4、的片段,Astro 一般无法找到 clk_div/clk ,因此需要将“ get_pin”的目标修改替换为在网表中的一个实际的时钟产生的单元:clk_div/CK01D1/Z. 。修改 SDC 片段结果如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 26 页 - - - - - - - - - 3.参考库:参考库包括标准单元(STD)库、输入输出单元(I/O)库和 IP 库。前两种都由Foundary 提供,IP 库可以由 Foundary 提供,也可以用户自己建立

5、。举一个简单的例子简要说明下IP 库的建立。在某些项目中, 比较典型的用户自定义RAM IP 模块。使用 Memory Compiler可以产生GDSII 文件,需要自己建立Milkyway格式 IP 库以作为参考库代入Astro 设计流程。其具体步骤为:1.运行 Memory Compiler ,产生需要的Memory block ,具体参考 memory compiler 的使用手册。2.运行 Astro, 把 GDSII 文件导入,Smash, 进行 Blockage Pin Via Extraction 后产生 FRAM view 。3.在 Astro 中把 memory compil

6、er 产生的 lib 文件转换成clf 文件并读入,或者读入.db 文件,生成 TIM/LM view。关于导入 GDSII 文件具体参考milkyway database preparation ,需要注意两点:1.层号( Layer Number )问题,不同的工艺下的相同层的层号可能不同。如若不同,需要写一个映射文件在读入GDSII 文件转换。2.特殊自定义模拟单元的IP 库的, ib 文件、 clf 文件等需要自己写,由Astro 读入生成IP 库的LM view ,若仅由 GDSII 文件生成一个Fram view,IP 库的 Milkyway格式的库中没有TIM view ,在时序

7、驱动( Timing Driven)流程中处理到和这些模块相关的Net/Port 的时候会有许多相关的Warning 或 Timing Error 。为了消除这些Warning 和 Timing Error ,就需要把相应的.lib 或者 .db 文件导入库中,以生成一个TIM/LM view。这时可以简单地手工写一个lib 文件,导入库中即可。例如:4.TDF 文件:这里用到的TDF 文件定义了Pad的排列顺序。 需要注意的是: 综合产生的网表中没有定义某些没有逻辑意义的Pad,如 corner cell,split cell 以及 power cell 的顺序,这些Pad 和 I/O Pa

8、d 的摆放边和顺序都在该 TDF 文件中定义。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 26 页 - - - - - - - - - 二.开始(Setup :Design Setup + Timing Setup)在 Terminal 中,引导到运行目录下内输入命令:启动软件后,很多布局布线步骤都可以写成脚本,直接载入运行即可。这样既免去了一次次点鼠标提高工作效率, 也减少手工操作可能会带来的失误。 该命令“Astro” 也包括“-logd、-cmdd”等参数来记录

9、命令和软件运行历史。考虑到读者初次接触Astro,随后章节中多采用图形界面的操作方式。基本的步骤是:1.建立库( cmCreateLib )Library Create 在弹出“Create Library ” 窗口中,填上“Library Name 、 Technology File Name ”相应的表格。“Library Name”是设计库的名字,库是设计单元的集合。“Technology File Name ”即为第一节数据准备中提及的工艺 tf 文件和文件引导路径。一般前端综合DC 输出网表是对大小写敏感的,因此建立库的时候要注意把“Set Case Sensitive”选项选上(默

10、认) 。图 2-1 点击“ OK”按钮, Library 建立成功。 Astro 启动目录下会产生一个以“Library Name ”命名的文件夹,随后的单元的设计数据都将会保存在本目录下。图 2-2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 26 页 - - - - - - - - - 2.读入 Verilog (auVerilogToCell )1.在 Astro 的主窗口内输入命令这条命令集合了旧版Astro 设计流程中的加上参考库(cmRefLib ) 、读

11、入网表( auVerilogIn )和打平网表( cmCmdExpand)等几个个步骤。图 2-3 2.在弹出窗口中填入“Library Name 、Cell Name、Verilog File Name ” 。 “Library Name ”是刚刚建立的设计库名。“Cell Name” 单元名即随后具体的设计对象。“Verilog File Name ”是第一节数据准备中提及的网表文件和文件引导路径。3.点击“Reference Library ”按钮, 顺序添加几个参考库后,点击“Hide”按钮隐藏窗口。“Reference Library ”是第一节数据准备中提及的参考库文件。参考库可以

12、是一个或者多个,如STD、IO 、IP 等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 26 页 - - - - - - - - - 图 2-4 4.点击“ Global Net Options ”按钮,“Net Name、Port Pattern”分别都设置为“VDD 、VSS” ,并且“Apply ”一下,点击“Hide”按钮隐藏窗口。5.点击“OK” 按钮。网表将被参照参考库或Astro 默认的库读入, 在设计库文件夹下产生一个以“Cell Name”命名的文件

13、夹,其中包含几种设计观点cell view 。图 2-5 3.打开库(geOpenLib )Library Open 在弹出窗口中填入“Library Name ” ,点击“ OK ”按钮。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 26 页 - - - - - - - - - 图 2-6 4.打开单元( geOpenCell )Cell Open 打开本节第2 步中生成的单元,图2-7 为弹出的窗口视图。图 2-7 为使图片清晰,截图中,笔者将结构视图内容部分进行了

14、反色处理。可以发现,该部分由一些大小不一的方框“堆积”而成,这些方框就是STD、 IO 、 IP 单元的 Fram view 。 由于设计尚未进行布局规划(floorplan ) ,它们都被“堆积”在视图的左下角(low-left ) 。若网表是层次化的,还需要使用(astMarkHierAsPreserved )命令来标记保留层次化,至此设计启动部分( Design Setup)流程结束。5.装载 SDC 文件 (ataLoadSDC) TimingLoad SDC 1.在 Astro 的主窗口内输入命令:推荐在装载SDC 文件前移除设计中所有的时序相关的约束。2.在弹出窗口中“SDC Fi

15、le Name ”表格中填入,SDC 文件名极其引导路径。SDC 文件是第一节数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 26 页 - - - - - - - - - 据准备中提及的时序约束文件。图 2-8 3.点击“ OK”按钮载入SDC 文件。图 2-9 6.时序设置( atTimingSetup )Timing Timing Setup 在弹出窗口中,根据需要选择相应的选项,设置相关环境参数、优化目标。注意!这些设置选项在流程的后面可能会有改变。另外本流程中部

16、分选项设定使用系统默认,设定不作改变部分不在图2-10 中作图示方式列出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 26 页 - - - - - - - - - 图 2-10 7.保存单元数据(geSaveAs)Cell Save As 填入自定义单元名称,阶段性保存设计数据。图 2-11 补充说明:综合产生的网表一般不包含电源、地的Pad、 Corner、 Split、Power 等单元,可以利用(geAddCell )Create Cell 命令在设计单元中建立

17、这些单元。笔者个人偏好在DC 输出的Verilog 网表中手动修改网表,以引用Reference Library 中的单元的方式在网表中加入这些Cell。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 26 页 - - - - - - - - - 三.布局规划( Floorplan )Floorplan 在整个流程中处于十分重要的地位,Floorplan 不单指 Astro 中的 axgPlanner命令,还包括 macro的放置,电源布线设计( Power Plan)

18、。因为 Floorplan 一旦确定,则整个芯片的面积就已经确定了。 Floorplan 的质量也与整个设计的timing 和布通率有着密切的关系。流程中的反复主要是发生在这一步中,如果这本步骤开始就规划得比较好,则随后的以便通过一步流程通过的几率就较高;反之,很可能出现完成了随后若干步骤后,发现设计无法通过修正继续布通的情况,那时只能返回到这一步,造成很大时间人力的浪费。1.载入 TDF 文件( axgLoadTDF )Design Setup Load TDF 将设计单元名称和TDF 文件以极其路径填入弹出表格中的“Cell Name 、TDF File Name ” ,此处TDF 文件即

19、为是第一节数据准备中提及的TDF 文件。图 3-1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 26 页 - - - - - - - - - 2.全局的 Floorplan (axgPlanner )Design Setup Set Up Floorpan 图 3-2 如图 3-2 中的参数来完成设置,并且点击“OK”完成初步的布局规划。本设计流程中包含了一些的macro 单元,不能简单地通过指定根据core 的利用率( Aspect ratio)来让 Astro 决

20、定设计的尺寸,而只能通过指定宽/长( width/hight )来确定。同时考虑到标准单元支持背对背摆放 (Double Back ) ,把 Double Back 选中(默认)。 另外如果设计允许的话,周边(Core To Left 、Right、Botton、Top)可以留的宽一些,这样外圈的电源环(Power Ring)可以尽量设计得粗一些,保证芯片的电源供电安全。图 3-3 可以发现,图3-3 中已经具有芯片的雏形:Chip Area 中,Pad包围着 Core Area。有待布局的宏单元( Macro)水平放置在Chip Area 上方,标准单元(STD)垂直堆积在Chip Area

21、 右方。3.添加 Pad Filler单元(axgAddPadFiller)PostPlaceFiller Cell :Add Pad Fillers 参考 Reference Library 中提供的 Padfiller 单元,填入弹出窗口中的“Filler ”表格并且点击“OK ”按钮。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 26 页 - - - - - - - - - 图 3-4 4.连接电源和地(aprPGConnect )PreRoute Connec

22、t Ports to P/G “Cell Types、Port Pattern”分别设置成VDD 、 VSS 并点击“ Apply ”按钮,其余按图3-5 中设置方式设置。图 3-5 5.生成 Pad Ring (axgCreatePadRings) PreRoutePad Rings Pad Ring 是给 Pad 供电的环状电源通路。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 26 页 - - - - - - - - - 图 3-6 6.放置 Macro 单元。

23、放置 Macro 没有特别的固定的规则,主要是根据设计要求以及设计本身来合理地摆放macro 单元的位置。本设计流程中网表是打平的,为了走线方便标准单元(STD)都放在一起。放置Macro 时,根据其在设计中所起的作用以及和Pad 的连线关系,将其放置在标准单元(STD)周围,靠近Pad 的位置。放置时还需要注意Macro 的 port 的位置,必要时进行适当旋转以方便后续走线。1.在此过程中Astro 提供一种叫做“飞线” (flyline )的工具,形象表示单元间连接关系,来帮助放置单元。(aprSetFlyline )Query Flyline : Show Net Connection

24、图 3-7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 26 页 - - - - - - - - - 由图 3-7 中可以看出,连接单元端口间的斜线就是Flyline ,它随着单元移动而移动,始终连接在有物理关联的单元的端口之间。2.是用热键“ P”选中Macro 模块,并且使用热键“M”根据飞线的提示,将宏模块移动到合适位置。如图 3-6 所示。图 3-8 3.在摆放好的Macro 上画上 blockage( axgAddSoftBlockage )Preplac

25、e Create Soft Blockage如图 3-9,在视图窗口中用拖动鼠标,在放置好的Macro 上设置 Soft Blockage ,如此可以防止随后的 STD Cell 被放置重叠到该区域。图 3-9 7.设计电源线( Power Plan )如果条件许可,则电源线应该尽可能地宽,并能够与macro 单元的所有电源端口相联接。总的原则就是:在保证提供足够电流密度的前提下,有尽量大的电源线宽度。1.在 Core Area 中规划电源带(axgCreateStraps)PreRoute Straps名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

26、- - - - - - 名师精心整理 - - - - - - - 第 13 页,共 26 页 - - - - - - - - - 图 3-10 如图 3-10 中设置规划的电源带,Strap 为平衡 Core Area 内部单元供电的而存在的横向或者纵向的电源通道。图3-11 是横向纵向Strap 布线完成时的视图,其中Core Area 中横向 1 条,纵向 6条为 Strap。图 3-11 2.在 Macro 周围产生为其供电的Macro Ring (axgCreateRectangularRings)对于每个 Macro,使用热键 “P”选中 Macro 后在 Astro 主界面中输入命

27、令,根据需要如下图,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 26 页 - - - - - - - - - 生成包围在Macro 周围的 Macro Ring 。注意根据Macro 的位置,跳过Macro 靠近 Core Ring 或者Strap 的边,节省布线资源。图 3-12 3.将 Mcro Ring 连接到电源和地上。 (axgPrerouteInstances)PreRoute Macros/Pads4.放置将 STD Cell 的轨道连接到电源和地上。

28、 (axgPrerouteStandardCells)PreRoute Standard Cells如图 3-13、图 3-14 设置并点击“ OK ”按钮执行,可以发现,之前放置的Macro、Power Pad单元都已经连接到了Core Ring 或者 Strap 上。图 3-13 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 26 页 - - - - - - - - - 图 3-14 5.完成之后要检查正确与否,(axgVeriPGConn)PreRoute Ve

29、rify P/G Connectivity3-15 在完成这些步骤后,可以把floorplan 和 net 都 dump 出来保存。Dump floorplan : Design Setup Dump FloorplanDump net:Route Utility Dump Routing 。再次强调: Floorplan 的工作非常重要,整体规划的好坏将直接影响到最后布线的成功率或者说返工的次数,所以应该尽量的合理。到此PR 的准备工作已就绪,版图只剩下STD 没有摆放,这时应该把整个库备份一次。前面所有的工作都可以load 一个 start.cmd 脚本一次自动跑完。名师资料总结 - -

30、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 26 页 - - - - - - - - - 四.布局(Place )布局优化的步骤如下:1.打断扫描链1.1(axgScanTrace)PrePlace Trace Scan Chain1.2(axgScanChainOptim )PrePlaceOptimize/Delete Scan Chain图 4-1 2.设置放置参数(astPlaceOptions )InPlace Placement Common Options 在弹出窗口中点击

31、“Default ”按钮使用默认的放置参数,并且点击“OK”确认。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 26 页 - - - - - - - - - 图 4-2 3.放置标准单元(astPrePS)PrePlace Pre-Placement Optimization,同时进行第一次优化。使用如图 4-3 中的优化选项设置。图 4-3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

32、 - - - - - - - 第 18 页,共 26 页 - - - - - - - - - 4.放置( astPlaceDesign )InPlace Design Placement 使用默认设置,自动放置标准单元(STD) 。图 4-4 5.查看布局拥塞视图(axgDisplayPLCongestionMap)InPlace Placement Maps :Display Congestion Map 使用默认的配色设置,观察两个方向上的各个布线通道的拥塞情况。图 4-5 6.查看时序报告(ataReportSummary)图 4-5 名师资料总结 - - -精品资料欢迎下载 - - -

33、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 26 页 - - - - - - - - - 可以发现图4-5 中已经 Setup Time 和 Hold Time 的 violation 都为 0 了,其实本步还可以允许存在部分 Hold Time 的 violation 。7.查看布局概况(axgListPRSummary)图 4-6 8.存储设计数据(Cell Save)填入自定义单元名称,阶段性保存设计数据。图 4-7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -

34、- - - - - 名师精心整理 - - - - - - - 第 20 页,共 26 页 - - - - - - - - - 五.时钟树综合( Clock Tree Synthesis)时钟树综合步骤如下:1.(astClockOptions )Clock Clock Common Options 设置好上面的时钟线名字,buffer 单元, delay 单元,以及Target 之后,还可以设置一些其它的Constraints,按下 Constraints 按钮:如果是需要综合全部时钟,Clock Nets 中不填就可以了;如果是多个但不是全部时钟,则填上时钟名,重复上面的步骤。图 5-1 2

35、.综合完以后检查clock skew (astSkewAnalysis )Timing Skew Analysis 图 5-2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 26 页 - - - - - - - - - 3.连接电源和地(aprPGConnect )PreRoute Connect Ports to PG 因为时钟树综合(CTS)时插入了新的buffer 单元,有的标准单元库可能和Astro 配合得不是很好,因此需要再次连接电源和地。图 5-3 补充说

36、明:至此设计流程已经完成了60%多,电路大小、网表也已经基本确定。CTS 大部分都是机器时间,人工干预的可能并不是很多。此时应该对设计数据作一次备份了,因为后面是布线耗时更长,万一中间断电或者发生一点小小的意外,不仅布线没法成功,这种耗费大量机器时间的工作在重复劳动上。其实正常情况下, 设计者应该养成经常备份的好习惯。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 26 页 - - - - - - - - - 六.布线(Route )1.重 新 连 接 扫 描 链 (

37、asgScanChainOptim) PrePlace Optimize/Delete Scan Chain图 6-1 如图 6-1,注意选中“ Optimize ”选项,而不是“Delete only” 。2.时序设置( atTimingSetup )Timing Timing Setup 图 6-2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 26 页 - - - - - - - - - 3.设置布线的选项(axgSetRouteOptions )Route S

38、etup Route Common Options :按照图 6-3 设置一般布线选项。图 6-3 4.布时钟线( axgRouteGroup )Route Route Net Group 如图 6-4 设置,注意选中“All clock nets ” 。图 6-4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 26 页 - - - - - - - - - 5.布线( axgAutoRoute )Route Auto Route 图 6-5 6.全局布线后优化 (as

39、tPostRouteOpt ) Route Global Route : Global Router Optimization 图 6-6 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 26 页 - - - - - - - - - 参照 6-6 设置优化选项,注意选中“Global Route ” 。7.在进行一次全局布线(axgAutoRoute )RouteAuto Route 图 6-7 参照 6-7 设置优化选项,注意这次选中“Global” 。补充说明:图6

40、-7 中布线结果Violation 数目为 0,若布线结果Violation 数目很大。则需要考虑修改 floorplan 再来一次了。七.一些常用技巧I.在整个过程的每一个大环节完成后,最好把整个库重新备份一次,而不只是把单元另存为一个新的单元。II.中间过程中的命令要全部记录下来,以提高效率,减少多次体力劳动。III. 把记录下来的命令文件串成脚本,花费时间长的步骤可以放在非工作时间自动完成。IV. 设计过程中,经常注意观察Astro 占用的内存。如果在某一耗费内存的大的环节完成后,最好退出 Astro,再重新进入。 Astro 可能存在内存管理缺陷,无法释放内存导致崩溃。另外不要把过多的命令让一次Astro 进程运行,应该在脚本中分阶段调用Astro 完成不同的命令组。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 26 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com