14个版本 (重大更改)

0.14.0 2022年2月8日
0.13.2 2021年11月11日
0.12.1 2021年8月18日
0.12.0 2021年1月9日
0.1.0 2018年2月27日

#730硬件支持

每月44 次下载
moore 中使用

Apache-2.0 OR MIT

1.5MB
31K SLoC

moore编译器的SystemVerilog实现。

此crate实现了SystemVerilog语言的查询式编译器。它力求成为一个完整的IEEE 1800-2017实现,将任何输入源文本映射到等效的LLHD代码。

实现使用源文本的不同表示来处理编译的不同部分。这种方案是必要的,因为SystemVerilog具有非常混乱的性质,其静态和动态类型的奇怪混合。尽管编译器使用查询来处理更复杂和循环的依赖关系,但表示形成了一个处理过程的粗糙链,每个结构都通过(尽管每个都以自己的速度)

  • AST:由syntax crate中的解析器发出的抽象语法树。
  • RST:已解析的语法树,其语法中的歧义已解决。这是通过在AST表示上构建名称解析作用域和defs来实现的,并将名称解析以消除语法中的歧义。
  • HIR:高级中间表示,执行将模块体中的结构列表分解为声明、实例、参数等列表的操作。还尝试在适当的地方消除语法糖。在此表示上执行类型检查,并使用ParamEnv表示同一HIR模块/接口的不同参数化。
  • MIR:中级中间表示,其中所有隐式转换操作和参数化都已明确化并完全展开。此时,大多数SystemVerilog怪异之处都已解决,节点清晰且类型完全经过检查。
  • LLHD:低级硬件描述,作为代码生成的最后一步生成。

依赖关系

~12–24MB
~355K SLoC