mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-07 13:16:26 +00:00
50 lines
1.3 KiB
Text
50 lines
1.3 KiB
Text
read_verilog << EOT
|
|
module top(input a, b, output o);
|
|
wire c, d, e;
|
|
bb bb1 (.a (a), .b (b), .o (c));
|
|
sub_mod sub_inst (.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);
|
|
endmodule
|
|
|
|
module sub_mod(input a, b, output o);
|
|
bb bb2 (.a (a), .b (b), .o (o));
|
|
endmodule
|
|
|
|
module some_mod(input a, b, c, output o);
|
|
assign o = a & (b | c);
|
|
endmodule
|
|
EOT
|
|
|
|
hierarchy -top top
|
|
design -stash hier
|
|
|
|
# removing cell
|
|
design -load hier
|
|
logger -expect log "Removing cell .*, making all cell outputs cutpoints" 1
|
|
cutpoint sub_mod/bb2
|
|
logger -check-expected
|
|
logger -werror "Removing cell .*, making all cell outputs cutpoints"
|
|
|
|
# removing wires
|
|
design -load hier
|
|
logger -expect log "Making wire .* a cutpoint" 1
|
|
cutpoint top/c
|
|
logger -check-expected
|
|
logger -werror "Making wire .* a cutpoint"
|
|
|
|
# removing output wires
|
|
design -load hier
|
|
logger -expect log "Making output wire .* a cutpoint" 1
|
|
cutpoint sub_mod/o
|
|
logger -check-expected
|
|
logger -werror "Making output wire .* a cutpoint"
|
|
|
|
# whole module optimization, doesn't do any of the previous
|
|
design -load hier
|
|
logger -expect log "Making all outputs of module .* cut points, removing module contents" 1
|
|
cutpoint sub_mod
|
|
logger -check-expected
|