1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
read_verilog <<EOT
(* module_attr = "module_attr" *)
module some_mod(input a, output y);
assign y = a;
endmodule
module top(input a, output y);
(* inst_attr = "inst_attr" *)
some_mod some_inst(.a(a), .y(y));
endmodule
EOT
hierarchy -top top
flatten
select -assert-count 1 top/n:some_inst top/t:$scopeinfo %i
select -assert-count 1 top/n:some_inst top/r:TYPE=module %i
select -assert-count 1 top/n:some_inst top/a:cell_inst_attr=inst_attr %i
select -assert-count 1 top/n:some_inst top/a:module_module_attr=module_attr %i
select -assert-count 1 top/n:some_inst top/a:cell_src %i
select -assert-count 1 top/n:some_inst top/a:module_src %i
opt_clean
select -assert-count 1 top/t:$scopeinfo
opt_clean -purge
select -assert-count 0 top/t:$scopeinfo
design -reset
read_verilog <<EOT
(* module_attr = "module_attr_deep" *)
module some_mod_deep(input a, output y);
assign y = a;
endmodule
(* module_attr = "module_attr" *)
module some_mod(input a, output y);
(* inst_attr = "inst_attr_deep" *)
some_mod_deep some_inst_deep(.a(a), .y(y));
endmodule
module top(input a, output y);
(* inst_attr = "inst_attr" *)
some_mod some_inst(.a(a), .y(y));
endmodule
EOT
hierarchy -top top
flatten
select -assert-count 2 top/t:$scopeinfo
select -assert-count 1 top/n:some_inst top/t:$scopeinfo %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep
select -assert-count 1 top/n:some_inst top/r:TYPE=module %i
select -assert-count 1 top/n:some_inst top/a:cell_inst_attr=inst_attr %i
select -assert-count 1 top/n:some_inst top/a:module_module_attr=module_attr %i
select -assert-count 1 top/n:some_inst top/a:cell_src %i
select -assert-count 1 top/n:some_inst top/a:module_src %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/r:TYPE=module %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:cell_inst_attr=inst_attr_deep %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:module_module_attr=module_attr_deep %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:cell_src %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:module_src %i
design -reset
read_verilog <<EOT
(* module_attr = "module_attr_deep" *)
(* keep_hierarchy *)
module some_mod_deep(input a, output y);
assign y = a;
endmodule
(* module_attr = "module_attr" *)
module some_mod(input a, output y);
(* inst_attr = "inst_attr_deep" *)
some_mod_deep some_inst_deep(.a(a), .y(y));
endmodule
module top(input a, output y);
(* inst_attr = "inst_attr" *)
some_mod some_inst(.a(a), .y(y));
endmodule
EOT
hierarchy -top top
flatten top
select -assert-count 1 top/t:$scopeinfo
setattr -mod -unset keep_hierarchy *
flatten
select -assert-count 2 top/t:$scopeinfo
select -assert-count 1 top/n:some_inst top/t:$scopeinfo %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep
select -assert-count 1 top/n:some_inst top/r:TYPE=module %i
select -assert-count 1 top/n:some_inst top/a:cell_inst_attr=inst_attr %i
select -assert-count 1 top/n:some_inst top/a:module_module_attr=module_attr %i
select -assert-count 1 top/n:some_inst top/a:cell_src %i
select -assert-count 1 top/n:some_inst top/a:module_src %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/r:TYPE=module %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:cell_inst_attr=inst_attr_deep %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:module_module_attr=module_attr_deep %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:cell_src %i
select -assert-count 1 top/a:hdlname=some_inst?some_inst_deep top/a:module_src %i
|