中文 英语
知识中心
导航
知识中心

行为合成

将在高级抽象中描述的设计转换为RTL
受欢迎程度

描述

行为综合有相当长的历史,大量的学术工作可以追溯到20世纪80年代末。在20世纪90年代有几个商业化的行为合成产品,最著名的是Synopsys的行为编译器和Mentor Graphics的Monet。这些产品的历史起伏不定,大多不成功。

行为综合的原始形式只是提供了时间和资源的抽象。也就是说,输入是以过程形式编写的。合成器将对代码进行调度,并创建一个状态机,通过适当数量的时钟周期进行排序,以完成计算。计算需要多少状态的主要决定因素是可以并行执行多少操作。也就是说,在每种状态下可以发生多少操作。这是由依赖关系图和可用硬件资源的数量决定的。例如,如果一个计算需要5个相互独立的加法运算符,那么如果有5个加法器可用,则可以在一个循环中完成,如果只有一个加法器可用,则可以在5个循环中完成。

行为综合使用高级的不定时或部分定时的功能描述。行为综合不成功有几个原因。输入语言的问题是最突出的问题之一。

商业产品都使用Verilog或VHDL作为输入语言。这是一个自然的选择,实际上可能是当时唯一可行的选择。然而,尽管这两种语言都可以在其硬件描述语义的上下文中支持过程性代码,但算法的原始描述从未在这两种语言中完成。算法几乎总是最初用通用编程语言编写的,通常是C或c++。

为了使用行为综合,必须将算法转换为Verilog或VHDL。这是一个尴尬的过程,部分原因是这两种语言的底层语义不同,部分原因是VHDL和Verilog不是很好的行为语言。因此,使用行为综合并不像在更高抽象级别上设计所承诺的那样节省精力。尽管SystemVerilog在更高的抽象级别上向Verilog添加了新的结构,但它仍然没有证明自己是一种优秀的行为语言。

行为综合没有取得商业成功的另一个原因是时间上的困难。当合成程序生成RTL来执行计算时,它必须预测一个时钟周期可以容纳多少层逻辑,并相应地填充状态机的状态。然而,综合程序依赖于后来的优化程序(即逻辑综合和地点和路线)所能做的内部模型,而该模型并不是特别准确。

因此,它经常会产生RTL,其中不是所有的逻辑都可以在单个循环中执行。也就是说,在期望的时钟频率上会有一条违反计时的长路径。除了完全更改代码之外,用户几乎无法在源代码级别纠正问题。如果您更改了输入代码或约束,生成的RTL通常会与以前的RTL有很大的不同,而且它所产生的新问题与以前的问题几乎没有关系(如果有的话)。

行为综合的最后一个大问题是验证。验证环境将被编写成以其原始的行为形式与设计一起工作。设计调试完成后,合成程序将生成RTL,并在验证环境中模拟结果,以验证合成过程产生了正确的转换。然而,这往往不起作用。问题是行为代码的时间抽象反映在外部接口的验证环境代码中。结果是,综合程序将改变接口操作的周期计时,因此验证环境将不再与设计进行正确通信。

多媒体

改变设计流程

多媒体

综合:SoC设计的下一步

Baidu