大家好,我是IC修真院的Andy老师,今天我们一起来学习ASIC数字前端设计课程,在讲课程之前,我们首先来看一些基本的知识点。

那目前来看无论是ASIC设计还是SOC的设计,基本的都是TOP down。首先,我们会有需求分析,就是说你要为谁做一个的产品,有了这个需求以后,会先一步的细化,我们的芯片的规格是什么样子,把我们的spec定义出来,定义出来以后会把这个spec进一步的break down,比如说到一些子系统的模块的一些spec,然后,就可以交给数字设计工程师们,也就是我们这些设计人员,开始我们的rtl coding,那在这个过程中,设计人员和验证人员要共同的协作。

验证人员负责功能的验证,当然,也可以有设计人员进行初步的验证,那验证的依据,验证的标准都是来自于我们的spec,也就是我们的vo,我们的verification objective,也是来自于我们的spec,那关于验证,我们在后续的课程中,会进行了深入的讲解,以及练习。

那我们把coding完成以后,就是synthesis,所谓synthesis,就是把你写的代码,把你的一种表述转换成另一种的表述,比如说转化成lab里面的cells。那综合完成以后,就给到所谓的后端,进行所谓的布局布线,那在这个当中,会有很多的验证分析,你的timing是不是满足。这块目前是比较经典的一个设计流程,同学们应该已经都比较清楚了。

那从数字设计来讲,我们要具备的一些基本知识,可能需要以下的内容,就是说如果是从低往高里看,可能你要对这个晶体管,transistor,有一些了解。那更往上的,比如说有transistor搭建而成的基本的数字单元电路,像latch、加法器,这些都要了解。然后,再往上就是从具体到抽象一层,我们这个时候可能是便于开展大规模的设计。我们是用verilog的描述,那在集成电路的早期,比如说90年代,使用其他形式来进行ASIC的设计,但那个时候的效率跟现在我们用verilog,在做描述和在做综合这条路上,在效率上是不可同日而语了,但并不是说这条路是不可行的,只是说从效率上来讲,可能会偏低一些。

那有了这些基本点以后,我们要熟悉目前的开发,一般都是在UNIX或者linux这个环境里边,我们对EDA的库要有基本的掌握。

比如说,你的编译,modelsim,VCS,ICVEILOG不同厂家的,不同公司的,功能基本都差不多,但是,我们要有所掌握和有所了解,另外,设计的时候,从一些基本的单元设计起来以后,到一个顶层的时候,如果你的系统里边有一些复杂的模块,有些IP在里边,所谓的IP就是说,它是一些软核,那可能我们上面还会有一些这个互联,比如说,是不是有一些network on chip,连接到一块儿去,那你需要对这些基本的协议,基本模块的功能有一些了解。这是我们要了解的一个内容,就是说,不能因为我是做数字前端设计的。我就仅仅集中在这个verilog上面,verilog是要掌握,但是对底层也是需要掌握,比如说,后来要做ECO,ECO分析,有一些分析它需要精确到晶体管的时候,如果你具备了这方面的知识,那你的理解,定位,和其他人相比就更具有优势。尽管不是说是针对analog,analog这是毫无疑问的,所以我们要对这个transistor,对他这些曲线要很了解,但是对数字的设计,我希望同学们也要对这些有深入的了解。

另外,我们今天讲的课程的叫ASIC数字前端设计。什么是ASIC,Application Spicecific Integrated Circuit,对吧,现在大型的一个asic实际上跟soc并没有显著的差异性,AISC可能有时候,是非常专用的,那他在宏观上的理解,会比SOC可能规模上要小一点,流程上要简单一点,一会儿我们对比讲解一下。

这就是所谓的通用芯片,那另外就是我们现在都很熟悉的SOC的概念,在90年代2000年的时候,慢慢的随着工艺线条的减小,已经能把许多的模块,包括的analog的集成到一起去,把一个系统,原来可能是在一个PCB的level,那我做的SOC上面。那如果一个soc放不下,可能用几个SOC,然后把这几个soc再封装到一个package里边,IP的形式。那在这个大型的SOC设计当中,存在一个design的问题。不是说是你需要不需要的问题,是必须的。如果在一个大型的SOC或者说是一个非常复杂的ASIC电路里边,你如果里面有CPU,那工作就需要有软件的参与,那我们定义的时候,哪些东西需要有硬件来完成,哪些东西需要有软件来完成,这个在项目的初期,一定要有一个规划,有一个取舍,硬件实现有它的优点与缺点,软件实现有它的优点与缺点,那怎么去做这个折中,这是在我们的项目开始的时候要进行考虑的。

另外就是刚才也提到的design spec,这是非常非常重要的,那在一些非常成熟的企业公司里边会专门的架构师。他们一般是比较有经验的,会负责收集我们要开发的产品的各种规格。写成文档性的东西或者是图或者是表,或者是兼而有之,我们一起把它deliver出来,那这个spec是非常非常重要的。它不但作为我们设计人员的一个参考,也可以做为我们架构师今后的发现,哪个地方定义的不合格,有问题,也是依据这个进行修改。

软件人员也可以拿这个,作为一个参考,验证人员也可以拿这个参考,所以说design spec是非常重要的。我们经常会听到spec,就是说如果我们的ASIC规模非常之大,或者说是一个复杂的SOC,可以想象一下,如果上面有DSP,有MCU,甚至有CPU,还有很多其他的像DMA,很多的master,很多的slave,那这地方互联的时候,那就是一个问题了。我们一方面要考虑复杂度,另一方面要考虑它的效率,那现在比较成熟的就是所谓的片上互联NOC,NOC可能现在有很多种。

另外就是前面提到了spec,早期的spec,一般会出自于我们的所谓的架构工程师,有同学经常会听到这个,有的公司叫CONNCECT,有的公司叫architecture,涵盖的业务范围可能不太一致,但是基本都是负责这个方向,甚至有的公司叫system engineer,我们一般包含RTL coding的,设计的叫DE,验证的一般就叫VE,现在业界比较流行的就是uvm,以前的SV进化到现在的UVM。所谓的前端后端基本是以综合的那个点为界,在综合之前,那前端主要是负责功能实现,后端的主要是实现物理,进行流片。

另外,在ASIC设计当中,随着规模的增大,文件数量的增多,版本的迭代,代码的修改,我们需要有一个版本的控制,所谓的version control,那现在国内用的非常多的SVN。那一定要有一个版本的控制,大家基于共同的一个库来开发我们复杂的SOC。没有版本的控制很容易就出错了,最后可能拿到的文件不是你想要的,那就前功尽弃了,

所谓的ASIC,我们不要局限于一个概念,是没有任何意义的,那我们有的ASIC当中,有一个简单的MCU或者是有一个简单的CPU,那实际上它是可以去进行编程的,是有灵活性的。

另外就是刚才讲到的,ASIC设计呢,我们可以借鉴一下经典的SOC,最早的时候设计的几个经典的技术,一个是所谓的深亚微米,现在已经是肯定是达到了,还有一个IP,并不是说,只有在SOC的设计当中才会用到IP,无论是hard IP,soft IP,还是firm core,在我们的ASIC设计当中,现在也大量的启用IP,为什么?因为他已经经过验证了,它的功能基本OK的,只是实现的时候,随着我的TECHNOLOGY的工艺不同,可以进行不同综合的映射,他并不是说是SOC专有的。那大型的SOC当中,它的hardware software code design这是必须得,是不可避免的。这是由于SOC的复杂性所决定的,那我们开始设计的时候,最早的时候software没有东西,因为hardware也没有做出来,没有依托他写一些IP,那可能是拿一些C,SYSTE C,写出来的一些类似于behavior的东西,那有了这个东西以后,软件的人员可以在早期的时候开始他的SOFTWARE代码的开发,那这样子就是可以把一个原来是一个串行的工作,现在转化成一个并行的工作,大大地提高了我们的工作效率。

因为很多时候我们IC设计人员,一定要纠正一个错误的偏见,就是认为软件不重要,软件实际上是非常重要的。那我们作为一个IC designer,我们认为自己很重要,那是没错的,因为没有这个东西,那就无从谈起。但是,将来真正的到costumer那边去,他接触到的实际上是你的软件,所以说软件非常之重要,它直接影响到用户的感受,OK,这个地方,就是说对比经典的SOC设计,是有很多地方是有相同之处的。

需求分析,我们做一个产品的时候一定要问自己,我为谁做一个什么样的产品?无论是谁都是要解决这么一个问题。马斯克他做的这个飞机,他解决一个什么问题?那就是人类移民到火星去,那苹果做的这个产品,他当时解决什么问题,就是你的PC你的lapTOP太大了不方便,我能不能把所有的功能,集中的一块儿去,然后iPhone就面世了,那我们做IC的时候也是在规定的时间,有限的人力和物力的前提条件下来开发的。我们不是去做一个预言,做预言是另外一个概念,那如果说你要做一个产品出来的话,一定是由上市时间压力的,跟需求的,你错过了这个时间段,尽管做出来了,但是获得的收益可能就大幅的下降了,所以说在做一个东西的时候,首先它是新鲜的,还是说我要取代已有的,比如说我原来有一个东西,一直是从国外买的,那现在他不卖给我了,我要为这一个产品做一个替代的产品,那一定是有时间,人力,物力的限制。

那正规的大型的公司里面做一个产品的时候。一般都会有市场部,他会到市场上去进行分析,分析有什么样的需求,未来3到5年的,趋势是什么样子的?这个趋势一定要迎合我们的工艺,发展的趋势和节点,面向未来,还要看我们的竞争对手在做什么样的东西,我做出来以后有没有竞争力,有没有卖点?那这当中就可以体现出我就要跟他做的不一样。就是差异性,创新性,有前瞻性,那典型的例子就是苹果的这个IPhone,乔布斯当时确实是很具有前瞻性,这么一个产品当时还具有轰动性,后来大家做出了这个东西以后都去follow,那就是说我们做这个东西的时候,一般会有两种情况,一个是全新的产品,原来没有reference design,你做出来的这个东西就是一个pilot PROJECT。无论是你的架构,你的想法,你的实现,他都是全新的。

那这个时候可以想象一下,因为没有reference design,前人没有做过,所以说你这个难度非常大的,开发的周期也可能会非常长,风险也是非常高的,一旦失败那可能真的失败了,但是一旦成功那就不得了,IC行业一定是这个样子的,如果回过头来看看很多经典的公司的成长经历都是这样子的。

我们举一个intel例子,Intel原来也是这样子,他本来是做memory,做着做着被日本的公司逼得几乎要破产了,但是他另辟新径,去做一个小的MCU,转了方向,转变的观念,后来这个东西卖的很好,以前是给计算器上calculator用的,做出来以后,他处于垄断性的,只是近几年,随着AMD的崛起,他没有把它给打压下去,所以现在的处境也不太妙,那还有一些产品我们在做的时候是这样子的,就是说我已经有些reference design了。随着性能的提高,比如说我原来是这个16位的,现在要求提高了,要做成32位,甚至是做成64位。我的性能要提高。那这些是属于你的fature的改动。你有一个reference design,起码你的架构里边有一个MCU,他只是原来是16位的,performance不够,可能我的时钟频率也不够高,那现在市场上需求一个性能更高的,那我们经过充分的计算以后发现只要是把这个提高到32位去,时钟在再提高一倍,就满足了客户的需求了,那这个时候相对来说,你的难度是低的,风险也是低的。

OK,也就是说,尤其是ASIC里边,一定是有一个需求分析在里边的,那需求分析完了以后大家会说要啥要啥。

需求分析完了以后,要出什么的东西,出你的文档,把需求,展望,这些东西都列出来,性能指标是一个什么的东西,甚至是跟competitor这边的,你的这个性能指标是什么样子都列出来,形成文档性的东西,那出了这个spec以后,他尽管不够明晰,但是它可以作为我们架构师,以他为基础进一步的去进行细化。我们设计人员也可以拿到这个spec,知道接下来要做一个什么东西,可能是MCU要从16位扩到32位去,那我这个NOC是不是要做相应的改动,因为我原来也是16位的。

设计人员就可以在早期的时候进行思索,我的CLOCK又提升了,从200M可能要到500M去,那做PL的同事就得到消息了,原来他要这样子做,那就可以提前准备一下。我做CLOCK的同时要早期的准备一下,就是这个spec一定要早期形成,给到我们后面的人员。

需求分析完了以后,就是我们的架构师要早期建立参与了,那功能架构的定义实际上就是说我们前面有需求了,我们架构师的工作方向就确定了!他可能不是一些技术控,他不太懂技术,他就是说,人家要有个什么样的东西?又能够跟谁家的相比?它里面列了一些需求。那架构师是要把这些东西进一步的break down,甚至是形成详细的条条写到我们的spec里面去,将一个原来模糊的大的功能框图,我进一步的把它BREAKDOWN细化。你可以形成一些图表,也可以一些详细的description,一些描述,甚至把这些条条分章分节列出来,这就是我们所谓的产品的spec,一般来讲,里边的图是少不了的,里面的表是少不了的,有了这个大的spec。实际上还可以进行细化,一个大的章节,针对每一个系统有一个细化,像系统的SPECIFICATIONPK,甚至是子系统的,以及模块的。比方说这个地方给大家一个例子:我一开始的时候,也不清楚,它里面可能要去从外边接收一些什么样的东西进来,进来我处理完以后,再给输出去,可能就是个这东西,从这个大体的描述上,我们知道里面就是要有一个MCU或者一个CPU,它能够把外面的接收进来,进来的是什么?是一些声音?是什么声音?这可能是需要进行处理的,然后,要把这个东西处理完,在转出去。那就需要有MCU,他会有一些创新的通讯,像UART,以及我们对外采样的这个ADC、甚至反馈的DAC,

那这个图大家看一下非常的粗,为什么,要举个例子来讲,你拿到这个图是没法去开始coding的,你的ADC,你的performance是几个channel,没有说清楚。你的memory也没有写清楚。Io port的详细情况也没有写清楚。但是没有关系,我们有了这个图以后,我们可以逐步的细化,比如说,对汽车上的某一个应用的,那我们就可以把它细化。

那这个图跟上面相比起来,他就细节上就更多了,比如说,我的ADC有很详细的,我需要是10 bit的。我需要这个flash多少?我的SRAM是多少呢?这些都给你列出来。这就是在前期,从客户需求那边到架构师在慢慢的把这个功能进行细化。

那在细化的时候还有一些选型!我这个MCU选什么样子的,我是选择ARM的比较简单的,还是选择RASC_V,还是说用简单得这个8051,这都是你需要进一步的去细化的。

功能模块的划分你的power、security、clock、reset、interrupt。这些都需要逐渐的细化出来。一共有多少个CLOCK,reset是采用什么样子的,那这个时候就可以慢慢细化出来了。如果是有多个MASTER进行互联的时候,那我就牵扯到这个偏差互联的结构,那我采用什么样的形式?这个时候也可以慢慢的细化。

接口是AXI,有DDR,可能需要AXI了,还是说简单的AHP就可以了,甚至说有一些,我就去访问配置,选择APB了,那更复杂的还有一些是OCP的?随着细化出来以后,你就知道这个SPI是需要四线的,还是2线的,URAT的波特率是多少,我的performance是需要什么样子,就可以写到我们的spec里面去,以及我们的这个port的引脚。将来出pin的是出多少个,你是要在这个国内的某个线上,还是到国外的,那你的工艺是什么,工艺定下来了,那你的电压,频率,功耗,你是用在什么样的场合?如果你说你打游戏的,这个可能要求不高,但如果你是嵌入式的话,那可能对这个功耗,温度,可靠性的要求就不一样了,那设计规划形成以后呢,我们可以进一步的break down。

接下来是比较详细的功能的划分了,刚才我提到了的功能的划分,主要是强调的是软硬件功能划分,在一些比较小型的ASIC当中,实事求是的讲这个可能不是一个重点。

但是,在一个大型的ASIC以及SOC当中,确确实实可能是一个重点,尤其是一些pilot project!就说我一开始写一些C MODULE。另外就是我借助FPGA,先把这些东西先搭出来,RTL那边你继续走,FPGA同步开发,那是不是让软件底层的开发可以在FPGA上同步进行,所有的工作都是一个软硬协同了一个问题,主要是一个效率,一定不能等到我按部就班spec,从市场上拿到需求定spec,划分,交给designer,开始去做。做完了以后产品回来了,再去开发软件,那时候太晚了,too late。

那就是说软件跟硬件的拿捏是非常重要的,你做成硬件,好处在哪里,速度快,performance高一些。但是,你的开发周期更长,关键是你的灵活性差,容错率低,你说要验证的呀,但是我们知道验证不是万能的。

IC设计是有复杂性的,大家可以想象一下,咱们不说现在的这个五纳米七纳米,大家可以想象一下成千上万的管子在上面,你的逻辑有一个地方出错了,你做成硬件的,一旦没有补救措施,可能就因为这一个BUG。这整个产品就fail了。需要严谨再严谨。光个人的严谨是不够的,还需要有有成熟的flow,我们照着这个flow去看一遍,知道是这个思路,我们在产品定义的时候,要把这些东西想清楚,开发的时候要严谨,不能说产品开发初期的时候,举个例子来讲,我现在要做一个很高清的电视的芯片,我作为一个32K的,我要用到IP,PCIE的这个性能要到多少,HDMI的性能要到多少,但是,现在市场上就没有这些IP对不对,你说你自己去研发吗?那来不及?这就不切实际了。那我们做了前期的,如果是切合实际,开发中,我们一定要慎之又慎,验证的时候,把VO定义清楚,严格的按照流程。你的spec lass,认认真真地分析一下CDC,RDC认认真真的看一下。这是设计阶段出来以后,你就没有办法了,那就是说你在前期的时候,你要把DFT的东西要做进去。出来以后,他能够帮你把这些里边有defactor的地方,给你筛选掉。这些都做过了,去跑功能,那一旦fail了,我有没有手段能够定位到是在哪一个模块里面出问题了,这就是所谓的DEBUG AND trans。这也是在我们项目开发的初期,架构师定义的时候,需要考虑的。千万不能说不需要,我都是跑软件,软件去看就OK了。对一个大型的SOC,这是非常不切实际的。

回过头来再说一下,就是说我们做这个东西的时候,刚才我也讲到了,你不要做的不切实际,你有多大的能量,你做多大的事儿。不要不切实际的去定义性能指标,对不对,他一定不是一个一维的空间,你说我有坚强的毅力,我爬过喜马拉雅山,很好。做IC不是光有毅力的,我细心,我非常细心,也不是光有细心就可以做到的。

我们在这ASIC设计当中的一些小的asic,我们完全可以借鉴很多大型的ASIC当中的一些开发经验,开发技术,因为你说现在的大型ASIC不比soc复杂度低。那我们很多技术可以互相来借鉴来用,另外,就EDA tooling的重要性,现在IC design里边,说实话,你人多你加班不解决根本性的问题,EDA tooling是非常关键的。但是,这几乎都是垄断性的所以说,希望同学们的在这方面也多多的努力。这个呢,就是我如何是从一个soc最后把内部的东西呢定义出来,这个东西我们就是skip了。

这个地方讲一个例子,就是说DMA,我们知道在很多系统里面有DMA,那DMA这个东西跟我们设计的初期功能划分的时候,我们就要考虑CPU能力足够强不?这些东西在早期的时候一定要定义清楚,不要说一开始有问题到后来发现报错,特别CPU那儿,data来不及处理,那这就出问题了。

另外呢,一个比较典型的例子,比如说像这个DVFS,那在一些这嵌入式的应用当中,像手机会经常会用到这个DVFS,因为动态的跳动。

比如说,手机,我一会儿黑屏了,把他踹到口袋里边,那这个时候,他是实际是没有关机的。这个时候因为你只是从battery进行供电的,这是他唯一的power的来源,我要想方设法地去降低功耗,那我们知道这个功耗,除了静态功耗,动态功耗,那他跟工作频率,工作电压是有很大的相关性。那么,这个时候他不怎么工作,他可能只是跟基站间歇性的去交换一些信息,那么这时候,我可不可以把频率降下来,原来是两个G,现在不需要了,可不可以降到200M。随之电压是不是也可以降下来?这些省下来的都是功耗,那就意味着你的电池的寿命更长。

比如待机,我用的这家整天下来我八个小时不充电,但人家那个是十六个小时不充电,那这个卖点,这个芯片的竞争力是不是就很强了。那这个DVFS呢,做的时候也要想清楚,我是通过硬件来做,从状态机,有一个去监测这个monitor的这个workload的?发现workload低了以后呢,把频率降下来个,把电压降下来,这个workload来了以后,把这个电压起来,频率再升起来,还是说通过软件的方式来做,那么放一个小的MCU它去monitor去workload,他负责调整。

未完-待续…

树芯计划-ASIC数字IC设计讲解(1)连载中......相关推荐

  1. 树芯计划-ASIC数字IC设计讲解(3)连载中......

    大家好,我是IC修真院的Andy老师,接下来跟同学们一起来分享ASIC数字IC设计. 大家可以想象一下,一个项目,从市场上经过分析,定义了要做的东西,其给我的architecture,经过架构师们努力 ...

  2. 数字IC设计(ASIC设计)完整流程详解

    目录 I.ASIC设计流程 一.确定项目需求 二.前端流程 三.后端流程 II.IC设计流程相关名词梳理(含各流程EDA工具梳理) III.IC设计流程整理(图片) I.ASIC设计流程 一.确定项目 ...

  3. linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

    点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...

  4. verilog hdl数字集成电路设计原理与应用_数字IC设计经典书籍推荐

    数字IC设计流程很复杂,从前端到后端,也有很多职位.在这里整理了个数字IC各个环节的经典必读书籍.市面上的书籍种类纷繁复杂,这里每种只推荐两本左右,如果需要,建议知识类的书籍还是购买正版,尊重作者,也 ...

  5. 数字IC设计经典书籍

    1 <Verilog HDL高级数字设计> 中文版和原著.这本书本人以为是讲Verilog方面的最好的一本书,看完此书后,相信大家的code水平会有很大提高.书中例子及其丰富,涵盖了RIS ...

  6. 数字IC设计入门方法与资料大全

    0. 前言 正准备入行数字芯片设计的同志们可以看看以下几篇行业入门介绍的文章,因水平有限,文中难免存在疏漏.错误之处,与最新技术脱节之处必定不少,敬请细心的读者不吝指教.有用的您带走,没用的就当笑话看 ...

  7. 数字IC设计工程师的知识结构

    刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要.然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构, ...

  8. 数字IC设计工程师的知识结构(转载学习)

    I. 技能清单 作为一个真正合格的数字IC设计工程师,你永远都需要去不断学习更加先进的知识和技术.因此,这里列出来的技能永远都不会是完整的.我尽量每年都对这个列表进行一次更新.如果你觉得这个清单不全面 ...

  9. 数字IC设计需要学什么?

    看到不少同学在网上提问数字IC设计如何入门,在学习过程中面临着各种各样的问题,比如书本知识艰涩难懂,有知识问题难解决,网络资源少,质量参差不齐.那么数字IC设计到底需要学什么呢? 首先来看看数字IC设 ...

最新文章

  1. xshell问题汇总
  2. PHP数组基本的操作方法
  3. Compass 编译.scss文件的问题
  4. 一步一步部署微软工作流解决方案(MWMS)到生产环境
  5. JQUERY的parent()
  6. Javascrip—前端本地存储讲解(16)
  7. php获取不重复的随机数字,php如何生成不重复的随机数字
  8. python---之plt.subplot画图详解
  9. java文件运行错误_java项目中运行错误
  10. c++ 多线程 垃圾回收器_新一代垃圾回收器ZGC的探索与实践
  11. mybatis中mysql递归查询多级_Mybatis + mysql 实现两级级联的查询
  12. PR曲线以及ROC曲线的绘制
  13. swift5函数和Collection
  14. 主页被锁定为 hao.360.cn
  15. html导航栏的颜色怎么改变,我怎样才能改变导航栏的背景颜色
  16. 稀土配合物Ln(DBM)3(Cz-PBM)|Tb(DBM)3(Cz-PBM)|Gd(DBM)3(Cz-PBM)|Ir(L)2(DBM-Ox)Ir(L)2(DBM-Cz)qiyue
  17. 自己动手写ORB特征
  18. TCP之长连接与短连接
  19. vsCode安装使用教程和插件安装
  20. Data too long for column ‘xxx‘ at row 1解决方法

热门文章

  1. 称重传感器的构造与测重形式
  2. linux 挂载新硬盘
  3. 什么是Ground-truth,Ground-truth什么意思
  4. jupyther_python基础系列 09 第九章 有益的探索
  5. Python网络爬虫-xpath模块
  6. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
  7. C语言—指针数组与数组指针
  8. 计算机网络原理(谢希仁第八版)第三章课后习题答案
  9. ZZULIOJ:1071: 分解质因子
  10. jquery获取兄弟节点