Modular design is a key challenge for enabling large-scale reuse of hardware modules. Unlike software, however, hardware designs correspond to physical circuits and inherit constraints from them. Timing constraints -- which cycle a signal arrives, when an input is read -- and structural constraints -- how often a multiplier accepts new inputs -- are fundamental to hardware interfaces. Existing hardware design languages do not provide a way to encode these constraints; a user must read documentation, build scripts, or in the worst case, a module's implementation to understand how to use it. We present Filament, a language for modular hardware design that supports the specification and enforcement of timing and structural constraints for statically scheduled pipelines. Filament uses timeline types, which describe the intervals of clock-cycle time when a given signal is available or required. Filament enables safe composition of hardware modules, ensures that the resulting designs are correctly pipelined, and predictably lowers them to efficient hardware.
翻译:----
模块化设计是实现硬件模块的大规模重复使用的主要挑战。然而,与软件不同,硬件设计对应于物理电路并继承了来自它们的约束。时序约束——一个信号到达的周期、何时读入输入——和结构约束——一个乘法器接受新输入的频率——是硬件接口的基础。现有的硬件设计语言没有提供一种编码这些约束的方法;用户必须阅读文档、构建脚本,或者在最坏情况下,了解模块的实现才能使用它。我们提出了 Filament,一种用于模块化硬件设计的语言,它支持静态调度流水线的时间和结构约束的规范和执行。Filament 使用时间线类型,描述给定信号在时钟周期时间内可用或必需的间隔。Filament 可以安全地组合硬件模块,确保生成的设计被正确地分阶段,并可预测地降低它们以实现高效的硬件。