mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-27 10:55:51 +00:00
Replace `cutpoint -blackbox` behaviour with `cutpoint -blackbox -instances` behaviour. Drop `-instances` flag. Add `-noscopeinfo` flag. Use `RTLIL::Selection::boxed_module()` helper to shortcut blackbox check. Update `cutpoint_blackbox.ys` tests to match.
72 lines
1.8 KiB
Text
72 lines
1.8 KiB
Text
read_verilog -specify << EOT
|
|
module top(input a, b, output o);
|
|
wire c, d, e;
|
|
bb #(.SOME_PARAM(1)) bb1 (.a (a), .b (b), .o (c));
|
|
bb #(.SOME_PARAM(2)) bb2 (.a (a), .b (b), .o (d));
|
|
wb wb1 (.a (a), .b (b), .o (e));
|
|
some_mod some_inst (.a (c), .b (d), .c (e), .o (o));
|
|
endmodule
|
|
|
|
(* blackbox *)
|
|
module bb #( parameter SOME_PARAM=0 ) (input a, b, output o);
|
|
assign o = a | b;
|
|
specify
|
|
(a => o) = 1;
|
|
endspecify
|
|
endmodule
|
|
|
|
(* whitebox *)
|
|
module wb(input a, b, output o);
|
|
assign o = a ^ b;
|
|
endmodule
|
|
|
|
module some_mod(input a, b, c, output o);
|
|
assign o = a & (b | c);
|
|
endmodule
|
|
EOT
|
|
|
|
hierarchy -top top
|
|
design -save hier
|
|
|
|
select -assert-none t:$anyseq
|
|
select -assert-count 3 =t:?b
|
|
cutpoint -blackbox
|
|
|
|
select -assert-none =t:?b
|
|
select -assert-none r:SOME_PARAM
|
|
|
|
select -assert-count 3 t:$anyseq
|
|
select -assert-count 3 t:$scopeinfo
|
|
select -assert-count 3 t:$scopeinfo r:TYPE=blackbox %i
|
|
select -assert-count 3 t:$scopeinfo n:*cutpoint.cc* %i
|
|
|
|
# -noscopeinfo works with -blackbox
|
|
design -load hier
|
|
cutpoint -blackbox -noscopeinfo
|
|
select -assert-none t:$scopeinfo
|
|
|
|
# cutpoint -blackbox === cutpoint =A:whitebox =A:blackbox %u %C
|
|
# (simplified to =A:*box %C)
|
|
design -load hier
|
|
cutpoint -blackbox
|
|
rename -enumerate -pattern A_% t:$scopeinfo
|
|
rename -enumerate -pattern B_% t:$anyseq
|
|
rename -enumerate -pattern C_% w:*Anyseq*
|
|
design -save gold
|
|
select -write cutpoint.gold.sel =*
|
|
|
|
design -load hier
|
|
cutpoint =A:*box %C
|
|
rename -enumerate -pattern A_% t:$scopeinfo
|
|
rename -enumerate -pattern B_% t:$anyseq
|
|
rename -enumerate -pattern C_% w:*Anyseq*
|
|
design -save gate
|
|
select -write cutpoint.gate.sel
|
|
select -read cutpoint.gold.sel
|
|
# nothing in gate but not gold
|
|
select -assert-none % %n
|
|
|
|
design -load gold
|
|
select -read cutpoint.gate.sel
|
|
# nothing in gold but not gate
|
|
select -assert-none % %n
|