微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 基本运算单元的高层次综合:C/C++ to RTL

基本运算单元的高层次综合:C/C++ to RTL

时间:10-02 整理:3721RD 点击:
本文以加法为例:
----------------------------------------------------
adder.c
---------------------------------------------------
void adder(int a, int b, int *sum)
{
        *sum = a + b;
}
---------------------------------------------------
HLS工具(AutoPilot)综合之后的结果:
---------------------------------------------------
adder.v
---------------------------------------------------
`timescale 1 ns / 1 ps
module adder (
        a,
        b,
        sum
);
input  [31:0] a;
input  [31:0] b;
output  [31:0] sum;
assign sum = (b + a);
endmodule //adder
---------------------------------------------------
adder.vhd
---------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
library work;
use work.AESL_components.all;
entity adder is
port (
    a : IN STD_LOGIC_VECTOR (31 downto 0);
    b : IN STD_LOGIC_VECTOR (31 downto 0);
    sum : OUT STD_LOGIC_VECTOR (31 downto 0) );
end;
architecture behav of adder is
begin
    sum <= esl_add(b, a);
end behav;
---------------------------------------------------

备注:加减乘除、位运算、逻辑运算等等基本的C/C++运算都可以很方便的用AutoPilot综合成对应的RTL代码(verilog/vhdl)

这个例子实在是让人费解啊。到底是C是高级语言还是VerilogHDL是高级语言呢?我看明明HDL是高级语言。比如加法。a和b在HDL里面可以是任意位,1024位都可以。可C里面a和b只能是int。

2# jiku
这里只是正好用了int(32位),工具也支持任意位的C版本,例如:int1,int2,uint3等等。
另外,这个例子是最简单的例子,高层次综合和直接RTL设计相比没有什么优势。但是如果是一个复杂的项目,采用高层次综合流程要省时省力的多。比如mpeg4 decoder,DQPSK Receiver等设计

?

分卷多那 我也就多支持下啊

这个例子和高层次综合有什么关系?

AutoPilot?

6# zhenleo
这个例子的确简单。
主要是说明From C to RTL的可行性
任何算法都是由这些基本单元组成,基本单元可以用HLS(High-level Synthesis)工具综合成RTL,那么一个个完整的算法用这种工具也完全可行。

7# whxqq 嘿嘿,不错,就是AutoPilot

大学生千万不要学习高级综合,先把电路基础打扎实,
学习数字逻辑设计和数字信号处理,以及计算机系统结构才是更有价值的东西。
了解高级综合可以,学习高级综合有点好高骛远,眼高手低了。

看看一下

10# usb_geek 同意这个观点。
学生还是要从基础学起,毕竟高层次综合还很不成熟。
但是IC设计公司来说,尝试采用新的工具,新的流程还是很有必要的。

大学生千万不要学习高级综合,先把电路基础打扎实,
学习数字逻辑设计和数字信号处理,以及计算机系统结构才是更有价值的东西。
了解高级综合可以,学习高级综合有点好高骛远,眼高手低了。
    ---------------这是真理------------

这个还没仔细研究过,得好好看一下

这玩意没有什么实用价值

这个例子的确简单。
主要是说明From C to RTL的可行性

同意10楼观点,
再说,以后真要玩高级语言,也应是SV,SC之类的开始吧,靠得更近点,且已经发展了好久了

我看很多硬件设计大公司都是从C/C++开始设计的,不是从verilog。硬件设计的C/C++和软件设计里面C/C++侧重点有不同吗?有没有什么书讲硬件C/C++建模的?

第一次听说这个软件,长见识了
不过是否好用呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top