mirror of https://github.com/llvm/circt.git
83 lines
2.2 KiB
Plaintext
83 lines
2.2 KiB
Plaintext
; RUN: firtool -export-module-hierarchy %s | FileCheck %s
|
|
|
|
; This test checks for interactions between hierarchy files generated by the
|
|
; HWExportModuleHierarchy pass and any renaming which may happen in the circuit.
|
|
;
|
|
; See: https://github.com/llvm/circt/issues/5478
|
|
FIRRTL version 4.0.0
|
|
circuit Foo: %[[
|
|
{
|
|
"class": "sifive.enterprise.firrtl.ModuleHierarchyAnnotation",
|
|
"filename": "dut_hier.json"
|
|
},
|
|
{
|
|
"class": "sifive.enterprise.firrtl.TestHarnessHierarchyAnnotation",
|
|
"filename": "tb_hier.json"
|
|
},
|
|
{
|
|
"class": "sifive.enterprise.firrtl.MarkDUTAnnotation",
|
|
"target": "~Foo|Bar"
|
|
},
|
|
{
|
|
"class": "firrtl.transforms.DontTouchAnnotation",
|
|
"target": "~Foo|Baz>a"
|
|
},
|
|
{
|
|
"class": "chisel3.util.experimental.ForceNameAnnotation",
|
|
"target": "~Foo|Foo>bar",
|
|
"name": "PREFIX_bar"
|
|
},
|
|
{
|
|
"class": "chisel3.util.experimental.ForceNameAnnotation",
|
|
"target": "~Foo|Bar>baz",
|
|
"name": "PREFIX_baz"
|
|
}
|
|
]]
|
|
module Baz:
|
|
wire a: UInt<1>
|
|
invalidate a
|
|
module Bar:
|
|
inst baz of Baz
|
|
public module Foo:
|
|
inst bar of Bar
|
|
|
|
; CHECK-LABEL: module Baz()
|
|
|
|
; CHECK-LABEL: module Bar()
|
|
; CHECK-NEXT: Baz [[Bar_baz:[_a-zA-Z0-9]+]]
|
|
|
|
; CHECK-LABEL: module Foo()
|
|
; CHECK-NEXT: Bar [[Foo_bar:[_a-zA-Z0-9]+]]
|
|
|
|
; CHECK-LABEL: FILE "dut_hier.json"
|
|
; CHECK: {
|
|
; CHECK-NEXT: "instance_name": "Bar",
|
|
; CHECK-NEXT: "module_name": "Bar",
|
|
; CHECK-NEXT: "instances": [
|
|
; CHECK-NEXT: {
|
|
; CHECK-NEXT: "instance_name": "[[Bar_baz]]",
|
|
; CHECK-NEXT: "module_name": "Baz",
|
|
; CHECK-NEXT: "instances": []
|
|
; CHECK-NEXT: }
|
|
; CHECK-NEXT: ]
|
|
; CHECK-NEXT: }
|
|
|
|
; CHECK-LABEL: FILE "tb_hier.json"
|
|
; CHECK: {
|
|
; CHECK-NEXT: "instance_name": "Foo",
|
|
; CHECK-NEXT: "module_name": "Foo",
|
|
; CHECK-NEXT: "instances": [
|
|
; CHECK-NEXT: {
|
|
; CHECK-NEXT: "instance_name": "[[Foo_bar]]",
|
|
; CHECK-NEXT: "module_name": "Bar",
|
|
; CHECK-NEXT: "instances": [
|
|
; CHECK-NEXT: {
|
|
; CHECK-NEXT: "instance_name": "[[Bar_baz]]",
|
|
; CHECK-NEXT: "module_name": "Baz",
|
|
; CHECK-NEXT: "instances": []
|
|
; CHECK-NEXT: }
|
|
; CHECK-NEXT: ]
|
|
; CHECK-NEXT: }
|
|
; CHECK-NEXT: ]
|
|
; CHECK-NEXT: }
|