强音在逻辑综合中占据了一个中间层次。我们讨论过定位之前,但一个简洁的看待它的方式可能是:
- ANSI C/ c++提供了一个非结构化的、不定时的设计描述。
- SystemC提供了一个结构化的、不定时的设计描述。
- RTL提供了一个结构化的、定时的设计描述。
中间的一个没有那么简单:接口是定时的,无论是在事务级还是引脚级。但内部活动的时机是综合的产物,需要权衡取舍。
在DAC的一次更新对话中,Forte指出,他们最新的高级合成(HLS)版本(Cynthesizer 5)的一个重大改进是,除了性能和面积之外,还能够在权衡中包括功率。这实际上需要完全重做底层基础设施,所以很多代码都是全新的。
返工的结果之一就是改变了调度和分配的方式。对于给定的微架构,调度是指将事件分配给特定时钟边缘的过程。例如,如果两条逻辑流汇聚在一起,其中一条需要8个时钟周期才能完成,而另一条只需要3个时钟周期,那么您可以让短链逻辑提前启动,然后等待(“渴望”),或者让长逻辑链及时启动,然后到达(“懒惰”)。分配分配资源。
他们的工具通常先进行调度,然后再进行分配。现在它们同时发生,这意味着它们可以协同优化。
他们还可以进行更多的设计空间探索,具有蒙特卡罗功能。这方面的一个例子是乘数的选择。在过去,他们有一个乘数架构;现在他们有几个,不同的性能/功率/面积的权衡。在手动输入接近的选择数量后,您可以使用蒙特卡罗分析来确定哪个是最好的。(手动部分只是为了避免设计空间太大。)半小时左右的时间通常可以让该工具从数千个不同的配置中找到最优的配置。
功率优化带来了一个新的考虑因素:状态机编码。您通常希望最小化切换的比特数(甚至门时钟只命中将要更改的寄存器)。但是one-hot,这是一个极端的例子,需要太多的人字拖。因此,他们有一个统计算法来确定,除了一个hot之外,最低功率的编码方案将是什么。
最后,他们在工具中加入了一个算法查看器,让那些执行算法的人(他们可能是从编写算法的人那里收到的)更好地了解算法本身发生了什么。
你可以在他们的公告.