ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RapidWright系列-3. 构建一个基础的Router

2020-11-30 13:29:21  阅读:296  来源: 互联网

标签:RapidWright 布线 Site site 构建 ALUT Router Net BFF


〇、前言

本篇博文将复现FCCM 2019 Workshop上的RapidWright Tutorial——Build a Basic Router。官方的tutorial已经比较详细,但是要求读者有一些对RapidWright的基础知识,有一些基础概念并没有讲。本文给出tutorial的讲解原文,并在此基础上增添了tutorial缺失的基础知识。

一、背景

甚么是Routing?

将一根逻辑net映射到FPGA的interconnect(互联)资源上,包含两部分:intra-site布线和inter-site布线。inter-site布线主要由Vivado route_design执行,intra-site在site内部布线,即将site wires连接到net上,主要发生在布局过程中place_design。本tutorial的内容主要针对inter-site。

补充,甚么是Site?

在这里插入图片描述

描述Xilinx FPGA分成了六个抽象层次,最基础的是LUT和FF,也叫做BEL(Basic Element of Logic),若干BEL组合成一个Slice(Site),若干Slice组成一个Tile,若干Tile组成FSR,若干FSR组成SLR,若干SLR组成一个器件。FPGA做布局时,首先将一个LUT或FF找到一个Site放进去,然后把它们的输入输出连接到Site的Pin上。比如说上图是7系列FPGA SLICEL的原理图,共有4个LUT6和4个FF。假设我们想实现一个或门,在诸多Slice里我们选择X0Y0,在诸多LUT和FF里我们选择ALUT和BFF来实现我们想要的功能,这就是布局。布完局还有两件事情,一件事情是把ALUT的输出和BFF的输入连接到一起,另一件事情是把ALUT的输入和BFF的输出都接到Site的Pin上,在这里ALUT的输入连接到Slice的A6:1上,BFF的输出连接到BQ上。这就是前面所说的intra-site,在site内部布线。假设我们想把X0Y0/BFF跟X0Y1/ALUT相连,我们不能直接把ALUT和BFF连在一起,而是先把X0Y1跟X0Y0连在一起,然后再通过Site内部的线把他们连在一起。这就是前文所说的inter-site布线,即Site之间布线。

FPGA的布线资源

在这里插入图片描述

甚么是Net?

In RapidWright, we have two kinds of nets, logical and physical. A logical net is a network of connected cell pins (both hierarchical and leaf) of a netlist. A physical net is a list of PIPs that describe connections between physical site pins and crosses hierarchical boundaries of the netlist.

在RapidWright中有两种类型的Net,Logical Net和Physical Net。Logical Net记录了这根Net上都有哪些Cell Pin(在同一根线上的Pin就相当于连在一起了),Physical Net除了记录它都包含了哪些Site Pin之外,还要记录了这些Site Pin之间都经过了哪些PIP。(Cross Hierarchy我暂时还不知道是什么意思,先挖个坑后边再填)

Net TypeRapidWright ClassCrosses Hierarchy?Pins Live on a…
Logical NetEDIFNetNoCell (EDIFCellInst)
Physical NetNetYesSite (SiteInst)

Physical Net的名字来自于Source Logical Net,即与source leaf cell连着的那根线,这与Vivado也保持一致。一个典型的Physical Net主要包含如下信息:

Class MemberDescriptionAPI Getter
nameFull hierarchical name of the netpublic String Net.getName()
pinsSource/Sink site pinspublic List<SitePinInst> Net.getPins()
pipsProgrammable interconnect Points usedpublic List<PIP> Net.getPIPs()

而布线的目的就是给每一根Net选出一组合适的PIPs。

在这里给出一个具体的例子,左图是Logical Net,上边有3个端口,他的source名字叫ffWrapperInst/out0,所以右边对应的Physical Net也叫ffWrapperInst/out0

在这里插入图片描述

标签:RapidWright,布线,Site,site,构建,ALUT,Router,Net,BFF
来源: https://blog.csdn.net/lulugay/article/details/110384216

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有