购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第二回
两选难用核围城 IP核探秘

莎士比亚说:“生,还是死?这是一个问题。”(《哈姆雷特》)众人在下面鼓掌。贫僧今天问:“用,还是不用?这是一个问题”。台下,狄更斯回答道:“丢一个硬币决定吧!”(《远大前程》)哄笑。

贫僧曾经在免费讲座里面,简单地描述了这个问题。

“我们都是工程师,不属于时尚界,在开发的过程中也会遇到各种取舍。FPGA里面,存在着两个流派:到底是基于厂家的IP核(IP Core,Intellectual Property Core。遍寻网络汉语都叫“知识产权核/IP核”,窃以为是哪个人用谷歌工具机械翻译来的。没有考据,也不敢特别武断。时代不行了,达不到“信达雅”啊。)的快速开发,还是面向ASIC的基础开发。前者,工作量小、开发效率高,但是,却无法直接将我们在FPGA上的设计引入未来的ASIC设计。后面的方法呢,虽然存在直接将我们在FPGA上的设计引入未来的 ASIC 设计的可能,但是耗时耗力,开发周期长。还是武当、少林的说法,这两个方法都没有绝对的对和错,所谓“存在即合理”,只是要区别应用场合选择。

现在看来,即使上面的说法不是错的,也至少是片面的。在当时写的时候,鄙人犯了“老王卖瓜”的毛病。为了多拉些人来点击,竟然就信口雌黄了。这个需要反思。子曰:“知错能改,善莫大焉。”各位就宽恕贫僧则个。再做一次小人,大伙儿想想,我为了一个免费的讲座,尚且如此,推己及人,那些靠提成赚钱的市场和销售又该如何呢?

1.关于IP核的战略情报

犊子扯远了,闲言少叙,言归正传。《孙子兵法》有云:“知己知彼,百战不殆。”现在就放出流星探马、间谍细作,去探听IP核的虚实。

大家先来看看什么叫 IP 核。综合各种资料上的说法,IP 核是集成电路/FPGA 设计里面的专用名词,是指某厂家/个人具有版权的、经过验证(这点在有些时候,值得怀疑)的、具有特定功能的并且可以集成在其他设计里面的电路设计模块,这些模块可以是免费的也可以是收费的。

这个定义里面有几层意思。首先,只在集成电路/FPGA设计领域用“IP核”这个名词。换到软件行业里面,这个就叫“开源代码/程序”了。您如果和软件工程师去说什么IP 核,那就是典型的鸡同鸭讲。其次,“IP 核”具有一般意义上的版权。版权是知识产权的一种,这也就是“IP”的来源。换句话说,在别人没同意的前提下,您就使用别人的IP核,理论上是侵权的。具体操作以及实际侵权惩戒,属于知识产权保护的领域,按下不说。第三,理论上说,IP核经过验证,可以放心使用。至于这些IP核是否真的被验证,或者验证到什么程度,都是值得商榷的。俗话说:“害人之心不可有,防人之心不可无。”俗话还说了:“商场无兄弟,赌桌无父子。”话仅到此,大家自己领会精神。第四,IP核的功能是大伙儿做系统需要的。这基本属于废话,没有养猫的人非要买马嚼子的。第五,可以直接,也可能通过修改,把IP核集成到自己的设计里面。这也是必须做的,不能集成也就没用了。最后,是商业模式问题:“这些模块可以是免费的也可以是收费的。”提醒一句,如果是免费的那种,遇到问题别哭天嚎地地骂人家作者。俗话说得好:“白吃枣别嫌核大。”

IP核按照开放程度呢,又分为软核(Soft Core)、固核(Firm Core)和硬核(Hard Core)三种形态。

硬核一般是芯片网表形式的,一般输入输出信号以及内部结构都是固定的,内部较其他两种类型核的轻便性和灵活性差。硬核是指以电路版图形式提交的核。因此,其总是与特定的实现工艺相关,而且核的形状、大小以及核的端口的位置固定。所以灵活性最小,可复用性最低;但正是由于硬核具有不可更改性,使得其性能最稳定,可靠性最高。

固核一般用门级硬件描述语言(HDL)/网表形式提供,像硬核一样,固核可以携带许多配置数据,而且可以配置许多不同的应用软件,通常对应于某一特定的实现工艺,因此,与软核相比,其性能更加可靠。此外,固核一般由使用者来完成布局布线,核的形状、大小以及核的端口的位置不固定,与硬核相比,具有更大的灵活性。但是,固核也有其自身的弱点,即与实现工艺的相关性以及网表的难读性。与实现工艺的相关性限制了固核的使用范围;而网表的难读性使得一旦用户在布局布线过程中出现时序违反情况,如何排除就显得非常困难。

三者之中最具灵活性的是软核,可以以一个网络列表(一列逻辑门位和互相连接而成的集成电路)或者硬件描述语言(HDL)代码的形式存在。软核不依赖于最终的实现工艺,因此具有很大的灵活性。使用者可以非常方便地将其映射到自己所使用的工艺上,可复用性最高。此外,软核的使用者完全拥有源代码,使用者可以通过修改源代码,并对源代码进行优化生成自己的软核。但由于软核所提供的是RTL级描述,而用户将其嵌入到自己的设计中,必须对从RTL到版图的转换全过程负责,从而使得设计的复杂性大大增加;同时核的性能在这种转换过程中也难以得到保证。

“抄”了很多别人的描述,连贫僧看着都快睡着了。这些科技论文非要写成八股文似的,叫人费解,难道是为了体现理论水平?贫僧更欣赏“深入浅出”的写法,就是:“最高的理论水平,就是解释得连文科生都能懂。”某虽然没有达到这个要求,但是最少也在向这个方向努力。

下面就是在下的原创了,用一个例子说明这三种“核”的区别。列位展开想象,大伙都是大老板,去买一个累加器的IP核去。累加器及其输入输出如图1.8所示,输入输出除了包括数据之外,还包括复位(RST)、清零(CLR)和使能(EN)等。

图1.8 累加器及其输入输出

您到了第一家店,国营军工的“硬核”。在店里,有货叫硬核16比特宽度累加器。你看了看,性能还算不错。但是,和您的设计有点出入,你只需要8比特宽度的就够了。

于是你问店员:“能改成8比特宽度不?”

得到的答案是“No!这是洋文,你不懂。”

“能不要使能不?”

"No!"

……

所有的回答都是“No!”。

您去的第二家店,合资的“固核”。在店里,有货叫固核16比特宽度累加器。怎么还是16比特宽度的啊,16这个数目是数字设计的吉祥数字?

于是,你陪着小心和店员打商量:“能改成8比特宽度不,亲?”

经理听到这个,小跑出来了:“尊敬的顾客,改比特宽度难了点。”

您有些失望了,怎么都是这个德行啊。别急,经理还有话说:“要是去掉一些信号,例如使能信号,那个没问题。”

您不得不去了最后一家店,个体的“软核”。在店里,有货叫软核16比特宽度累加器。16!看着16都头大了。说句粗话成不?不成?不成就没话了。

你二话不说,也不想去触霉头了,转身正想走。店主奔出来了:“大爷慢走!您老有什么要求,只要不犯法的,小店都可以满足。”

你一听有门,战战兢兢地问:“能改成8比特宽度不”。

“别说8位了,就是80比特都成!”然后,声音轻了很多地补充道:“您老,需要自己改。”

以上摘录来自参谋部综合细作的各种情报总结而成的关于IP核的有关报告,供大家参考。

2.关于CPLD/FPGA的战术情报

贫僧掐指一算,客官们做可编程逻辑的居多。所以这里略微介绍一下 CPLD/FPGA的IP核设计情况。

FPGA厂家为了方便客户,也是为了长期效益,在设计环境中,提供了多种IP核给工程师们使用。贫僧对于商业模式啊,市场策略啊之类涉猎不多,在此再多说就是“关公门前卖大刀”的感觉了。

图1.9是Xilinx公司的IP核生成器界面的截图,可以看到这个生成器可以提供的一部分IP核的名称,看起来有很多名字,一种很强大的感觉。(插播广告)诸位不必忙着崇拜。等你们读完本书之后,大部分的IP核,你们都会自己设计了。

图1.9 Xilinx的IP核生成器界面

具体可以用的IP核内容、接口,以及是否免费,需要去对应器件提供厂家的网页上查找。

这些IP核又分为两种,下面分别介绍。闲话一句,技术上,就是喜欢分类总结,这是套路,大伙学着点。

一类的IP核与CPLD/FPGA内部器件有关,例如块RAM(Block RAM)和锁相环(PLL,Phase Lock Loop),所以这些都是免费的。这些器件是CPLD/FPGA内部的,需要通过IP核的形式与您的设计联系起来。这里的IP核的说法,有些牵强。可是已经约定俗成,我们就不去较真了。当贫僧还是小沙弥的时候,就犯过错。当时,某家要用一个乒乓RAM做接口,这个就是用IP生成器做两个块RAM的事情,简单得大家都不屑于讨论。但是,沙弥不懂这个,直接用逻辑自己做了RAM。结果布局布线三个小时都没出来,被老方丈骂得那个惨啊。

另一类的IP核才是真正意义上,本文上面讨论的IP核,可以帮上大家。这类IP核有免费的,但是大多数是需要付费的。图 1.9 里面选中的就是一个乘法器的核。这种简单的核估计是免费的,这叫钓鱼的饵。复杂的核,例如通信协议里面的译码器,就是价格不菲了。还有,一般这些核属于固核的范畴,可以参数化修改。

所有核的输入输出信号以及时序,厂家有详细的数据手册来介绍,大伙儿只要细心也不难。这种核的连接方法和外部器件基本一样。本书后面也有内容介绍如何匹配。

然后,自然有厂家的销售会向你们说IP核的好处,不外乎如下几条。

(1)通用性,即具有某一功能的IP核,可以在不同应用方面使用。IP核具有满足子功能可配置甚至可编程的特点,如最常见的嵌入式CPU模块具有非常好的通用性。

(2)正确性,即有百分之百的保证。IP核的实现严格遵守一系列的可重用设计开发规范,IP核的验证用例必须具有完备性,功能覆盖率、测试覆盖率都能达到百分之百。IP核工作的临界条件提供相应的大流量测试、随机性测试,甚至能够提供软硬件协同仿真的测试环境等。

(3)可移植性,即IP核的实现,如行为描述、网表、GDSII文件,具有可移植性,其设计输入可以在不同的开发平台上重现;综合用批处理文件具有可移植性,IP核的综合结果可以用不同的综合工具,在不同的综合库条件下正确重现;IP核的验证可以用不同的仿真器,在不同的仿真库条件下重现。(说句他们不喜欢听的,这个可移植,一般最多是一个厂家的不同器件之间的移植。A公司不会“仁”到这种程度:为作为竞争对手的B公司,去做免费IP核。这个就是唐诗里的“却为人做嫁衣裳”的行为,只有大脑有些贵恙的人才玩。这是商场,不是“失弓得弓”那么简单的事情。)

至于这些优点里面是否有水分和掺了几成水,列位自己琢磨。

3.维谷,又见维谷

现在,大家来尝试着讨论一下,“一个项目里面是否该采用IP核,以及该采用多少?”这个问题。

IP 核的概念和优点,前面说了很多了。接下来该发挥贫僧嘴贱的特点了,聊聊 IP核的坏处和问题。

首先,一般稳定的,特别是可以供ASIC设计的,IP核是要花钱的。这有点废话的感觉,自己开发也要花人力资源和实践,这对老板而言也是钱。但是,很多IP核要持续花钱。也就是说,你用一次就要交一次钱。这个是固定成本。相对而言,自己开发则是一次性投资,后期会被出货量平均掉。这个不是一般开发工程师的事情,大伙儿看看热闹好了,不必追究细节。

其次,采用IP核的系统结构,就必须符合这些IP核的结构,不利于结构的优化。本书的后面,大家将会看到:好的结构,需要把单元的界限打破,重新组合。用了IP核,这种重新组合的限制就很大了。

最后,用IP核会损伤一些工程师的自尊心,还会造成一些人不求甚解的倾向。这个又是管理的事情,我们不关心。说一个故事吧,在《市场学》里面常作为案例。

话说,20 世纪80 年代米国市场上有两种鸡汤产品:一种是汤罐头,直接用微波炉加热就可以喝;另一种是浓缩汤,需要放进锅里面,加水煮煮才能喝。大家猜猜哪种卖得好?(请自觉盖住下面的文字,思考五分钟)揭晓答案的时候到了:是浓缩汤。因为,这个可以满足家庭主妇们的虚荣心:这个是我煮的。虚伪的美国人……

再发挥一下下,有没有不用这两种产品的人?当然有了,至少专业厨子是绝不会用的。在座想做主妇(house-wife)呢,还是厨师(chef)?这是职业生涯里面需要好好考虑的问题。(鄙人的倾向性很明显了,为了不被追杀,言仅到此,点到为止,点到为止。)还有一句话,那些IP核也是工程师开发的。

具体到一个系统,还是那句废话:根据产品时间和成本要求,酌情处理。

这正是,“焦点话题产权核,优势宣传满牛车;开发迅速周期短,品种繁多开发乐。系统优化或成奢,可靠兼容心忐忑;毁誉参半详分析,系统需求定取舍”。 ad7CtAoN6EOe4IBpKRNlfFRU1Ea1MTB+z9QdPFpOJi28SyOhQObHz5LroV6T9TYk

点击中间区域
呼出菜单
上一章
目录
下一章
×