xilinx ip 引发的FPGA设计怪想

xilinx ip引发的奇思怪想

背景

    入坑一年有余,实现了xilinx a7、k7、v7器件编译的整条工具链(设计文件编辑、高亮、自动补齐、lint语法检查、综合、映射、打包、布局、布线、码流生成、码流下载、码流逆向、fpga架构创建与更改),所以对各个环节都是略懂略懂。也正是由于各个方面都是略懂略懂,所以当吸收一些新知识的时候会很容易引起一些奇思妙想。

xilinx ip测试

    由于硕士是图像处理出身,所以对hdl语言基本不了解。不过对数电、模电还是略懂略懂,毕竟专业是电子信息,所以电路这些还是略懂略懂的。记得当时在学完复函数那门课之后,发现电路其实非常简单。有几个电路是不能通过复函数变换求解出来的,当时就有一种豁然开朗的感觉,觉得大学的课程安排的有点不合理,就应该把复函数学完以后再学电路。这一说就跑偏了,是吧!最近一周研究了ip,首先为了验证ip的正确性,当然是选择使用xilinx自家的vivado进行综合处理查看edif文件与电路原理文件,看ip是否被实现,如果被识别为blackbox,那就不用玩了(即说明ip不完整);接着,为了验证ip的可用性,使用mentor的工具进行综合使用,毕竟xilinx能用不代表其他家的综合工具也认识是吧,毕竟ip就是为xilinx的fpga设计的。不比不知道,一比吓一跳。mentor的综合工具尽然比xilinx自家的综合工具强,为什么这么说?

    首先xilinx必须对ip文件进行lib库处理,其实刚开始我是不理解这些的,毕竟没用过vhdl这个憨憨东西。哪里知道package、component、entity、architecture这些结构的学问哟!但是使用mentor的时候不需要将这个ip处理为lib,就可以直接使用,不过得选择好top module与xilinx fpga device,毕竟7系使用的dsp48e1,u+使用的是dsp48e2,其它系列使用的是48a、48;在mentor中选择ISE,它就不认识48e2的原语;选择vivado的库,他就不认识48a等;毕竟vivado只认识7系及以后的器件,之前的器件已经被xiinx的新工具打入冷宫了。不需要添加为lib文件,可以看出mentor的综合工具更智能,其次导出edif文件和.V文件,放入vivado对比对比,mentor实现出来的时序比xilinx的好,器件用的比xilinx少。基于这样的结果,我觉得在此次试验上可以说明mentor的综合更强一些。虽然mentor也成功的综合了ip的设计文件,但是这依旧不能说明它就可以为我所用;为什么呢?(1)不知道mentor和xilinx之间有什么样的合作;(2)mentor它是三巨头之一呀,综合工具也是名声在外吧。

让IP为我所用

    xilinx 综合工具都做不到的事情,我肯定也做不到呀!所以我老老实实的把它们封装成lib调用。但是,这些ip是为xilinx的device而写呀,肯定会用xilinx的原语呀!所以呢,我得去把这个问题解决吧!最简单的方法直接使用unisim_VCOMP.vhd咯!其实我当时是不知道为什么的,不关注设计文件,只关注综合后网表文件。由于综合出来总是有blackbox,所以可以肯定的是这里面肯定是某个环节出错了,因为blackbox就意味着fpga架构文件中有相对应的原语实现。很显然,xilinx器件的架构文件肯定不可能有这些东西,毕竟每个人都可以用xilinx工具生成ip,不可能把架构文件做的这么自适应吧!再说了,综合肯定不用架构文件呀,要是需要架构文件,mentor也不能综合出来呀!不管多大的商业合作,我想xilinx也不会把自己器件的架构文件开放给mentor吧!所以对此,我肯定是自己综合的有问题。

    遇到问题,当然是找到问题,然后解决问题。首先是从xilinx的库文件下手,vivado下的数据文件,发现了一个很有意思的事情。那就是它不经提供了vcomp文件,还开放了所有原语的设计文件。这就令我很好奇了,因为我不喜欢做仿真,看见那些01的波形图就反感,所以发现这些原语的设计文件比较晚,不过我想应该有很多经常做仿真的人也不会发现这个吧!毕竟就算做仿真,也不一定需要研究这些文件,一般跟着所用仿真工具的教程走就行了。看到这些原语的设计文件,我就想到了一个有意思的事情——xilinx把自己器件的设计文件开源了?根据一个同学提供的先验知识(曾经有一位从事FPGA开发同学告诉我,你就把xilinx的原语当作一种硬ip就行了,那这些设计文件不就是ip的源码么?),又根据另一个先验知识(老哥是从事ic的资深开发人员了,自从入坑eda这东西,遇到我哥,我就喜欢问这、问那,对ip这东西映像比较深,因为卖的贵),再根据那几天查阅的vhdl语法,我得出一个奇怪的假象——xilinx器件其实就是这些开源ip设计出来的,它器件上的node应该就是entity上的映射端口。想到这,我就去对比了vhdl文件与器件图,从dsp、bram来看这个猜想确实又一定正确性,毕竟我没有一个一个查对,不能确切的证明这一点。

    一晃就是四天,四天时间里我基本尽我所能把这个东西研究了个遍,能做的实验基本都做了一遍。组长看我研究了几天基本处理无计可施的状态了,就提出了让我先放一放,根据实验数据我们都觉得ip需要重构。要不说,工作氛围还是挺好的呢,不需要有太大的心理负担,不会在一个点上被施加高压。话虽如此,一方面,我遇到的问题岂能绕过;另一方面,部门内有能力重构这个ip的估计也就副主任了,哈哈!让其它人重构的话太费时间了,不到万不得已肯定不能让其它人为难呀!第五天,这个问题终于突破了,通过更改综合工具代码与设计文件终于将门级网表综合出来了,门是出来了,不过对不对又是个问题了,哈哈!还是有对比实验需要做的(更改后的设计文件与xilinx、mentor实现出来的一样)。前路依旧是坑,哈哈!

有xilinx器件IP,是不是可以像xilinx一样出FPGA了

    xilinx的硬件ip都有了,我是不是可以自己组装出一个FPGA呢?如果用xilinx的硬件单元实现FPGA,会不会被xilinx起诉呢?这其实是我最大的疑问,为什么呢,毕竟已知xilinx器件的架构实现、现在又有了硬IP的设计文件,是不是可以改一个新器件出来呢?公司就像我的及时雨,骑自行车缺手套,公司就发手套了;正思考这个问题呢,公司就推通告forgeFPGA,一个仅售0.5美元的fpga;下载软件,使用一波,通过我敏锐的眼光基本可以断定这个公司的工具链是(yosys+nextpnr)。为什么这么猜测呢,由于yosys有申明可以商用但是不能不申明;nextpnr就是布局、布线、码流生成一键走完,不分步执行的工具;而且也是实现完看布线图;还有nextpnr也是yosys团队开发的。当看见它综合时候使用xilinx原语,我就很纳闷了;布局布线码流生成后,查看布线图,发现果然是使用了xilinx的硬件单元,为啥没有被xilinx起诉呢?

    很好奇的是,forgeFPGA布线图中tile内布线非常清晰但是tile间竟然毫无分辨率可言。这就太不科学了吧,能把tile内画的这么清晰,怎么可能画不出tile间连线关系呢?是不是想要隐藏什么呢?然后对比xilinx画的图,发现xilinx的线都是静态的线,可以选择是否凸显实例化、可以选择全部显现出来;可以高亮使用的线与选择的线,看它可以通过放大、缩小,我真想不到除了OpenGL以外的渲染工具可以做这个,direct3d应该不会用来做这个东西吧!

    说到画图,怎么架构它呢?首先得有一个draw的基类是吧,然后得有几种形状的继承是吧;tile、site、bel;其次是数据结构,得有个几种tile吧,tile中有site,他们都有节点,节点的行为是连线;然后是tile内连线的静态布线、其次是tile间的静态布线;反正线肯定要是静态的,至于高亮哪些,那就看布线结果文件,可能与布线结果之间还有一个中间map坐标转换。然后就要考虑渲染速度与资源消耗了。(其实我没有研究过这个问题,就胡说八道一番)

都说不喜欢写文档的程序员不是好程序员,确实得多写写文档,文档可以提炼架构,文档可以巩固知识,虽然文档会影响开发速率!万事万物都在得失平衡间,没多少人可以不做选择全要,哈哈!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容