紫光同创国产FPGA学习之Physical Constraint Editor

紫光同创国产FPGA学习之Physical Constraint Editor从紫光的参考书拷贝的。很详细。他们要写那么详细,好辛苦啊。一、   功能介绍(一) PCE简介该文档详细描述了PhysicalConstraintEditor(以后简称PCE)的使用方法和各项功能。PCE能够对实例和IO进行布局约束、区域约束和I/O设置。PCE主界面,如图1-1所示。图1-1PCE主界面 (二) 启动PCE打开PangoDes…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

从紫光的参考书拷贝的。很详细。他们要写那么详细,好辛苦啊。

一、       功能介绍

(一)   PCE简介

该文档详细描述了Physical Constraint Editor(以后简称PCE)的使用方法和各项功能。PCE能够对实例和IO进行布局约束、区域约束和I/O设置。
PCE主界面,如图1-1所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图1-1 PCE主界面
 
(二)   启动PCE

打开Pango Design Suite,新建工程,添加add.vm(在FAB安装后所在目录内)。以下两种方式可以启动PCE:
1.        在PDS中打开PCE

(1)点击工具栏的Physical Constraint Editor图标,如图1-2所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图1-2 工具栏的Physical Constraint Editor图标
我毛华望QQ849886241,深圳工程师。博客http://blog.csdn.net/my_shar

(2)点击菜单栏“Tools”下的“Physical Constraint Editor(Post-Map)”,如图1-3所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图1-3 Tool菜单下的Physical Constraint Editor(Post-Map)
 
在PDS中启动PCE时,当PDS原工程中没有Physical Constraint File(以下简称PCF)文件时,将弹出输入PCF文件对话框,文本框内容为空,如图1-4所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图1-4 PDS中没有PCF文件的Input Physical Constraint File
 

当PDS原工程中有PCF文件时,则弹出的输入PCF文件对话框的文本框内容为工程中现有的PCF文件,如图1-5所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图1-5 PDS中有PCF文件的Input Physical Constraint File
 
【Add to project.】:可以直接输入需要新建的PCF文件名或者选择已经存在的PCF文件添加到PDS工程中,则点击【OK】按钮后可以将该PCF文件加载到PCE中。如果输入的是不存在的合法的PCF文件名,则会在点击【OK】按钮后在工作目录下创建该名字的PCF文件(可以手动加上后缀.pcf也可以不加后缀,若未加后缀则软件会在新建PCF文件时自动加上后缀.pcf)。如果选择的PCF和工程中原有的PCF文件不一致,那么选择的PCF文件将替换工程中原有的PCF文件,并影响PDS工程的状态。如果文本框为空,【OK】按钮将不可使用(如图1-4)。
【Delete from project.】:将PDS工程中已有的PCF文件移除,打开的PCE不会加载任何的PCF文件。如果PDS工程中没有PCF文件,选择该选项,【OK】将不可使用。
【None.】既不添加也不删除PCF文件,即对PDS工程没有任何影响。如果文本框中有PCF文件,则打开的PCE会加载该PCF文件。
如果选中的PCF文件有error,则会报error,但是仍然可以进去PCE,给用户修改的机会;而在pnr阶段,如果PCF中有error则会报error,并终止flow的执行。
2.        在安装目录下单独打开PCE

点击安装目录下的bin文件夹的phyconstraint_editor.exe可执行性文件启动PCE。通过这种单独启动PCE的方式,需要用户手动选择需要加载的Map DB文件,如图1-6所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图1-6 选择需要加载的Map DB文件

二、       菜单工具栏介绍

(一)   工具栏介绍

1.        文件File相关操作

工具栏中File相关操作如图2-1所示。

图2-1 工具栏中File相关操作

紫光同创国产FPGA学习之Physical Constraint Editor
图2-1中的File相关操作的介绍如下:
Add PCF File:选择需要加载到PCE中的PCF文件。
Open PCF File As Text:在PCE的Text Editor中打开PCF文件
Remove PCF File:从PCE中移除当前正在使用的PCF文件。
Save:将约束保存到PCE的PCF文件中。
Save as:将约束以当前的文件名或重命名保存到指定的目录中,同时在PCE中打开该新保存的PCF文件。
Reset:清空PCE中所有的约束设置。
2.        视图View相关操作

工具栏中视图View相关操作如图2-2所示。

图2-2 工具栏中视图View相关操作

紫光同创国产FPGA学习之Physical Constraint Editor
图2-2中由左至右各个按钮代表的操作如下:
Design Browser:显示/隐藏Design Browser窗口。
I/O Table:显示/隐藏I/O Table窗口。
TCL:打开/隐藏命令行控制台。
View All:显示完整视图。
Zoom In:放大视图。
Zoom Out:缩小视图。
Previous View:上一视图。
Next View:下一视图。
Region Mode:打开/关闭区域约束模式。
Show Differential IO:在package view中显示/隐藏差分IO。
Search:在Device界面打开device instance搜索框。
 
(二)   右键菜单介绍

1.        工具栏右键菜单

右键点击工具栏空白区域,会出现如图2-3所示的右键菜单。

紫光同创国产FPGA学习之Physical Constraint Editor

图2-3 PCE工具栏的右键菜单
Design Browser:显示/隐藏Design Browser按钮。
I/O Table:显示/隐藏I/O Table按钮。
Fab Command:显示/隐藏PCE Command按钮。
File:显示/隐藏工具栏File相关操作的按钮。
Zoom:显示/隐藏工具栏View All、Zoom In、Zoom Out图标。
History:显示/隐藏工具栏Previous View、Next View图标。
Mode:显示/隐藏工具栏Region Mode图标。
Search Inst:显示/隐藏搜索框按钮。
Show Differential IO:显示/隐藏Differential IO按钮。
 
2.        标题右键菜单

右键点击标题处,会出现右键菜单,如图2-4所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图2-4 PCE标题栏的右键菜单
Close:关闭当前窗口。
Close All But This:关闭除了当前窗口外的全部其他窗口。
Open Containing Folder:打开该PCF文件所在的文件夹。
 
 

三、       窗口介绍

以下详细介绍各窗口的功能和使用方法。
(一)   资源浏览器Design Browser

Design窗口分类显示当前所有的实例。主要有Primitives、IO、CarryChain、Group等分类。在Design窗口可查找特定实例和IO,也可以点击类型名称拖动至右侧Floorplan view或Package view窗口进行约束。
Device窗口主要展示硬件上的信息,分为Design、Device、I/O Banks。三种类型下分别为约束的object、硬件上的device、硬件上的I/O。若相应类型的前面状态为被选中,则表示该种类型在floorplan view/package view中显示。若没有被选中,则表示该种类型在floorplan view/package view中不会显示。
Design Browser窗口如图3-1所示。

紫光同创国产FPGA学习之Physical Constraint Editor

紫光同创国产FPGA学习之Physical Constraint Editor

图3-1资源浏览器Design Browser
Design Browser下方为器件缩略图,如图3-2、图3-3分别表示floorplan view和package view的缩略图。用户在进行放大操作时,能在缩略图中观察全局的约束情况,并且鼠标拖动缩略图中的方框,可以移动视角,单击缩略图中任意位置也能迅速定位到该范围。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-2 floorplan view缩略图
紫光同创国产FPGA学习之Physical Constraint Editor

图3-3 package view缩略图
缩略图同样可以显示约束的相关信息,在floorplan view或package view中约束后,可以在缩略图中查看相应的约束信息,包括区域约束和非区域约束。
 
 
(二)   Floorplan View

该窗口显示芯片的资源位置,四周为IO资源,中间为逻辑资源。可把实例拖动到当前窗口与其匹配的device中,已约束的位置会高亮显示。取消约束后,恢复默认状态。窗口还可显示区域约束的范围,放入该区域的实例会在自动布局时,布局到该区域内。
点击“view”窗口下方的按钮,可切换窗口,如图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-4 view窗口下的窗口切换标签
点击“floorplan view”标签进入相应窗口,如图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-5 floorplan view窗口
(三)   Package View

该窗口显示芯片的管脚封装位置,可将IO实例约束到该窗口。已约束的位置会高亮显示,取消约束则恢复默认状态。
点击图3-4中“package view”,切换到图3-6,该窗口显示已约束的IO位置。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-6 Package View窗口
右键点击该窗口空白处可选择“Package Top View”或“Package Bottom View”,如图3-7所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-7 package view窗口的右键菜单
(四)   I/O Table

该窗口可以对I/O进行设置,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-8 I/O Table界面
可设置的选项包括:
I/O NAME:显示I/O 名称。
I/O DIRECTION:显示I/O类型,共input、output、inout三种。
LOC:约束的管脚。
BANK:该管脚所在的bank。
VCCIO:IO输入输出电压。
IOSTANDARD:IO标准。
DRIVE:驱动电流。
BUS_KEEPER:设置上拉下拉电阻。
SLEW:转换速率。
HYS_DRIVE_MODE:输入迟滞模式。
VREF_MODE:参考电压VREF模式。
VREF_MODE_VALUE:内部产生VREF和专用VREF输入管脚模式设置。
DDR_TERM_MODE:DDR memory应用输入匹配电阻设置。
DIFF_IN_TERM_MODE:差分输入的输入匹配电阻设置。
OPEN_DRAIN:驱动模式选择。
IODELAY:输入或输出延迟。
CP_IPT:修正poly电流的default值。
CAL_MODE:DDR模式输入内置端接电阻校准功能控制。
DDR_RES:使用校准功能使能时的内置电阻值。
(五)   Region

区域约束是指划定某区域,将实例拖至该区域内,后续的布局将保证该实例布局在该区域内。Region窗口如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图3-9区域窗口
(六)   窗口关联

floorplan view中的IO和package view中的IO以及I/O Table中IO的约束是一一对应的,当其中一个窗口某IO实例的约束位置改变时,其它窗口会同时改变以保持一致。
 
 
 

四、       详细操作

(一)   搜索实例

在搜索框中搜索支持 “*”(匹配0至多个字符)和“?”(仅匹配一个字符)两种模糊匹配符,并且它们不区分大小写。
举例1:搜索条件输入I*F,搜索结果如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-1 使用“*”搜索实例
举例2:搜索条件输入I?F,无匹配结果,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-2 使用一个“?”搜索实例
举例3:搜索条件输入I??F,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-3使用多个“?”搜索实例
(二)   约束实例

在Design Browser中点击某实例名,例如T_GTP_INV/opit_5,按住鼠标左键,拖至floorplan view上某位置,若约束成功,则该位置资源高亮,实例名前图标消失,如图4-4所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-4 约束实例
(三)   查看已约束实例

如果要查看已约束的实例的放置位置,可以在Design Browser中点击该实例的名称,然后可以看到右侧floorplan ciew中该实例会高亮显示,如图4-5所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-5 查看已约束的实例
(四)   IO约束

1.        在floorplan view/package view窗口约束IO

在Design Browser中点击某IO的名称,例如LUT_INIT[4],按住鼠标左键,拖至floorplan view或package view的某个pin脚中,若约束成功,则该位置资源高亮,实例名前图标消失,如下两图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-6 将IO拖放到floorplan view的IO Device中
紫光同创国产FPGA学习之Physical Constraint Editor

图4-7将IO拖放到package view的pin脚中
2.        在I/O Table中约束IO

通过点击工具栏的I/O Table按钮打开I/O Table窗口,如图4-8所示。点击任一栏的Loc的空白处,可以手动输入合法管脚或从下拉列表中选择需要约束的管脚,Bank栏自动显示该管脚所属的bank,同时与Loc关联的其他项也会给出默认值,点击给出默认值的列可以打开下拉列表,并且可以从下拉列表中选择需要设置的值,如图4-9所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-8 I/O Table窗口
IO Table中的入口输入是Loc,必须要先给出位置信息,后面的才可以编辑。其中一旦Loc确定了,Bank也会确定,同时给出默认的VCCIO电压值和默认的IOSTANDARD标准值。IO Table中所有的列若是可以编辑,点击了之后就会出现下拉框。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-9 Loc设置举例
其中,需要注意的是:若一个Loc位置已经被一个port占用了,则其他的port不再可以选择此Loc位置。Loc中输入的位置信息对大小写不敏感,但是若是输入有误,则返回之前正确的Loc值。
同一个Bank中的VCCIO电压值是一致的,若是改变其中任何一个电压值,其余的也都会跟着改变;对于某一个port,其所在的Bank若是已经设置了VCCIO电压值,则默认设置已有的电压值。示例如图4-10所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-10 同一Bank中VCCIO值一致
设置有Delay的design,则IODELAY列才可以编辑,如图4-11所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-11 包含IODELAY的输入
其中,IODELAY输入合法值为0到127的整数。
对于差分IO(Diff IO),因为是成对出现的,所以在设置值时,若是设置其中一个,另外一个也会跟着一起设置,并且除了Loc不同,其他项的值均一致。如图所示:

紫光同创国产FPGA学习之Physical Constraint Editor

图4-12 差分IO约束
其中INVOUTCO与INVOUTCOB为一对差分IO对。
 
(五)   区域约束

1.        通过Region窗口进行新建区域和区域约束操作

打开Region窗口,在空白处打开右键菜单,如图4-13所示,右键菜单包括New Region、Delete Region和Show Region Info选项。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-13 New Region
(1)点击New Region选项,出现新建区域编辑框,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-14 约束区域编辑框
新建区域编辑框包括:
【Name】:region名称,可修改。
【XMin(xx-XMax)】:区域左边框横坐标。
【XMax(XMin-xx)】:区域右边框横坐标。
【YMin(yy-YMax)】:区域下边框纵坐标。
【YMax(YMin-yy)】:区域上边框纵坐标。
(2)输入区域范围相关值,点击OK后,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-15 区域范围
(3)先点击工具栏的Region Mode按钮进入region模式,然后从Design Browser中将一个instance拖放到region1区域内,约束成功,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-16 region1区域
2.        进入Region模式后进行新建区域操作

(1)点击工具栏的Region Mode按钮进入Region模式,如图4-17所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-17 点击Region Mode按钮进入Region模式
(2)在floorplan view中右键点击可以看到draw region命令,然后可以直接在PCE中利用鼠标选择区域来指定约束区域,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-18 指定约束区域
鼠标选择区域之后会出现命名提示框,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-19 区域命名提示框
3.        查看区域信息

    选中某一区域,点击右键菜单中Show Region Info可以查看区域中包含的device信息以及区域中使用的device信息,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-20 Region Info
(六)   取消约束

1.        在Design Browser中取消约束

在Design Browser窗口选中已约束的instance,打开右键菜单,选择“Undo constraint”,如下图所示,则可以取消约束。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-21取消约束
2.        在floorplan view/package view中取消约束

在floorplan view或package view上选中已约束的资源,拖回至Design Browser窗口内或在floorplan view和package view中点击右键菜单的Undo constraint选项,都可以取消约束。
 
(七)   改变约束位置

1.        改变单个已约束instance的位置

在floorplan view或package view上选中已约束的资源,将其拖放到其它可约束的位置。
2.        改变多个已约束instance的位置

按住Ctrl键,选择多个已约束的instance,将其拖放到其它可约束的位置,如下图所示。若某实例已被选中,按住Ctrl键单击该实例可取消选中。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-22选择多个实例
 
(八) 重新加载 Design DB/PCF

当载入进PCE的Design DB或者PCF文件在外部发生变化后,PCE界面将提示是否reload,如下图所示。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-23重载提示
点击“Yes”按钮,将把被改动后的文件(Design DB或者PCF)重新加载到PCE中并替换原来的文件,选择“No”按钮,将不把被改动后的文件重新载入到PCE中。
如果被改动的是Design DB文件,当Design DB文件重新加载失败时,将提示Design DB加载失败,如下图所示。点击“OK”按钮后,PCE将退出。

紫光同创国产FPGA学习之Physical Constraint Editor

图4-24重载失败提示
(九) TCL命令的使用

PCE的控制台目前支持的命令有:constraint、unconstraint、region、save、select和editor。
 
1. 约束相关

(1) constraint命令
constraint –design_instance  –grid_dev_instance  [-prim_dev_instance]
或者
constraint –design_instance  [–region]
中括号内容表示可选设置项。
示例:
constraint –design_instance  aaa  –grid_dev_instance  CLMA_5_4
constraint –design_instance  aaa  –grid_dev_instance  CLMA_5_4  FGA
constraint –design_instance  aaa  –region  region1
constraint –design_instance  aaa  –region  (2,4,5,9)
上面的四条命令用于约束操作。其中第四条命令并未指出region name,而是给出一个坐标系,PCE会根据该坐标系创建一个region,坐标系必须为“(xmin,xmax,ymin,ymax)”这种格式,创建的region name按照region1、region2的顺序递增。
(2) unconstraint命令
unconstraint –design_instance
上面的这条命令用于取消约束。
需要注意的是:若要将design_instance约束到region区域,必须在Region Mode下才能成功。如果design_instance名字中包含‘[’和‘]’字符,则需要使用‘{ }’将整个design_instance名字括起来,多个design_instance名字之间使用‘;’进行分割。
 
2. Region相关

region命令可用于进入或退出Region模式,也可用于创建或删除region。
(1)创建region的命令
region  –create  –name  –value
上面的命令用于创建一个region,需要给出region name以及想要在哪个坐标区域(xmin,xmax,ymin,ymax)创建该region。value参数的第一个值为x坐标的开始值,第二个参数为x坐标的结束值,第三个参数为y坐标的开始值,第四个参数为y坐标的结束值。开始值必须小于等于结束值,且都必须为整数。
(2)删除region的命令
region –delete –name
上面的命令用于删除一个region。需要指定将要删除的region name。
(3)进入Region模式的命令
region –in
上面的命令用于进入Region模式。
(4)退出Region模式的命令
region –out
上面的命令用于退出Region模式。
 
3. 保存PCF文件相关

(1)保存PCF文件的命令
约束完毕之后可用该命令进行约束文件保存。
命令格式:
save_constraint –file_name <PCF file name>
(2)注意事项
1)如果当前PCE窗口已有PCF文件,则指定的PCF路径被自动忽略,保存到当前PCF文件中。不管用户是否制定详细文件路径,都会给出提示信息,告诉用户将改动保存到了当前PCF文件中。
2)如果当前PCE窗口没有PCF文件,则输入不同类型的命令会得到以下不同结果:
①只输入save_constraint,将在当前工作目录下默认保存为placement.pcf文件。
②输入保存PCF文件的路径为相对路径时,将在当前工作目录下创建该相对路径并保存。
③只输入后缀“.pcf”,没有文件名,将会给出提示信息,告诉用户要以正确的格式保存。
④输入的PCF文件的后缀名(.pcf)不对,将会给出提示信息,告诉用户要以正确的格式保存。
⑤如果保存的路径或者文件名中有非法字符时,将会给出提示信息,告诉用户要以正确的格式保存。
3)如果给出的绝对路径不存在或者在创建路径的时候失败,则将PCF保存到当前工程所在目录下。
 
4. Select命令相关

使用select命令可以选择device_instance或者design_instance进行定位。
命令格式:
select  –dev_instance

select  –design_instance
eg:
select  -design_instance  aaa
select  -dev_instance  CLMA_5_4
 

5. Editor相关

在PCE中editor只能用来退出PCE,具体命令为:editor –exit。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179522.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • docker 开启2375端口,提供外部访问docker

    docker 开启2375端口,提供外部访问docker编辑docker文件:/usr/lib/systemd/system/docker.servicevim/usr/lib/systemd/system/docker.service修改ExecStart行为下面内容ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375-Hunix://var/run/docker.sock\…

  • Eigen库学习教程(全)

    Eigen库学习教程(全)说明:本教程主要是对eigen官网文档做了一个简要的翻译,参考了eigen官网以及一些博主的技术贴,在此表示感谢。Eigen是一个高层次的C++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。1.Eigen安装及使用1.1安装eigen3在linux下的安装教程可以参考下面链接:eigen安装教程1.2CMakeLists.txt编写eigen库仅由一些头文件组成,十分的神奇。用cmake管理项目的时候,只需要在

    2022年10月19日
  • Timus 1796. Amusement Park 聪明题[通俗易懂]

    Timus 1796. Amusement Park 聪明题

  • 能否利用Hadoop搭建完整的云计算平台「建议收藏」

    Hadoop并不完全代表云计算,所以,要用Hadoop搭建完整的云计算平台,答案是不够。我们常说云计算,实际上还是通过计算机的大规模或者说海量处理来为生活中各式各样的人和各行各业服务——所以,核心在“服务”。关于服务,展开来就是常用的那3种(也是事实上的标准):SaaS,PaaS,IaaS。对云计算来说,公有和私有,虚拟和存储,这其实是相对讨论的核心。回头说Hadoop。在Google三大…

  • Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)「建议收藏」

    Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)「建议收藏」通过前面几篇的学习,我们知道创建线程的方式有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,那如果我们想要获取返回结果该如何实现呢?还记上一篇Executor框架结构中提到的Callable接口和Future接口吗?,是的,从JAVASE5.0开始引入了Callable和Future,通过它们构建的线程,在

  • MongoDB 服务无法启动

    MongoDB 服务无法启动MongoDB 服务无法启动

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号