高层次综合C to RTL

一、高层次综合C TO RTL
1.顶层函数的实参综合为RTL 的IO端口
2.C语言函数综合到RTL层级内的module
3.C语言的代码和RTL设计代码并不完全是一一对应的
4.C语言函数中的循环默认情况下是roll的,分时复用,修改为unroll,就是用资源换空间;
5.有限状态机细颗粒度流水线-循环pipeline
6.较粗颗粒度的握手实现-data stream数据流
7.C语言中数组,高层次综合可以综合为RAM或者UtraRAM,注意的是不要随便用UtraRAM,
UtraRAM是一堆block RAM组合而成,非常耗费资源。

二、关于资源的使用
1.LUT查找表
组合逻辑使用LUT:包括加法,减法,比较(if),移位,位运算,MUX多路选择器(if-else,case)
逻辑操作,算术操作,调剂判断,都会用LUT
状态机FSM的状态编码,逻辑转移,也会使用LUT和FF

算术运算:加法、减法、比较器、移位器、位运算(与/或/非/异或)等,默认使用 LUT 构成的组合逻辑。

多路选择器:if-else、switch、三元运算符 ?: 会生成 MUX,占用 LUT。

逻辑函数:任何自定义的组合逻辑表达式

2.FF触发器

3.DSP
乘法,乘累加,除法,模运算。

4.BRAM

三、什么情况LUT使用比较多
1.大位宽乘法或乘累加,却强制不用 DSP
2.大量未流水化的长组合逻辑链
3.巨大多路选择器(MUX)
几十到几百个分支的 switch 语句;
多路输入的并行选择,如 data = arr[idx](大数组的读操作也隐含 MUX);
为什么费: M 选 1 的 MUX,当 M 很大且数据位宽宽时,LUT 消耗接近 M×W 的量级(W 位宽)

四、HLS中费LUT的操作
1.完全分区的数组做随机读取(多个读端口),每个读端口就是一个大 MUX。
2.过度循环展开(UNROLL)导致逻辑爆炸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值