mirror of
https://github.com/YosysHQ/yosys
synced 2025-10-09 09:21:58 +00:00
93 lines
2.2 KiB
Text
93 lines
2.2 KiB
Text
read_verilog <<EOF
|
|
(* whitebox *)
|
|
(* final_name=$sformatf("aa%d", X) *)
|
|
module aa(input wire d, output wire q);
|
|
parameter [1:0] X = 0;
|
|
assign q = X[d];
|
|
endmodule
|
|
|
|
(* whitebox *)
|
|
(* final_name=$sformatf("bb%d", X) *)
|
|
module bb(input wire d, output wire q);
|
|
parameter [1:0] X = 0;
|
|
assign q = X[~d];
|
|
endmodule
|
|
|
|
(* whitebox *)
|
|
(* final_name=$sformatf("cc%d", X) *)
|
|
module cc(input wire d, output wire q);
|
|
parameter [1:0] X = 0;
|
|
assign q = ~X[d];
|
|
endmodule
|
|
|
|
module top;
|
|
wire d, q1, q2, q3, q3, q4, q5, q6;
|
|
|
|
aa #(.X(1)) aa1(.d(d), .q(q1));
|
|
aa #(.X(2)) aa2(.d(d), .q(q2));
|
|
|
|
bb #(.X(1)) bb1(.d(d), .q(q3));
|
|
bb #(.X(3)) bb2(.d(d), .q(q4));
|
|
|
|
cc #(.X(1)) cc1(.d(d), .q(q5));
|
|
cc #(.X(1)) cc2(.d(d), .q(q6));
|
|
endmodule
|
|
EOF
|
|
|
|
design -save before
|
|
box_derive -naming_attr final_name top
|
|
|
|
select -assert-mod-count 1 =aa1
|
|
select -assert-mod-count 1 =aa2
|
|
select -assert-mod-count 0 =aa3
|
|
|
|
select -assert-mod-count 1 =bb1
|
|
select -assert-mod-count 0 =bb2
|
|
select -assert-mod-count 1 =bb3
|
|
|
|
select -assert-mod-count 1 =cc1
|
|
select -assert-mod-count 0 =cc2
|
|
select -assert-mod-count 0 =cc3
|
|
|
|
# no instances of the new derived modules
|
|
# you could use wildcards like t:aa* here - if that wasn't just broken
|
|
select -assert-count 0 t:aa1 t:aa2 t:aa3
|
|
select -assert-count 0 t:bb1 t:bb2 t:bb3
|
|
select -assert-count 0 t:cc1 t:cc2 t:cc3
|
|
|
|
design -load before
|
|
|
|
# same command but with -apply
|
|
box_derive -apply -naming_attr final_name top
|
|
|
|
# same derived modules created as without -apply
|
|
select -assert-mod-count 1 =aa1
|
|
select -assert-mod-count 1 =aa2
|
|
select -assert-mod-count 0 =aa3
|
|
|
|
select -assert-mod-count 1 =bb1
|
|
select -assert-mod-count 0 =bb2
|
|
select -assert-mod-count 1 =bb3
|
|
|
|
select -assert-mod-count 1 =cc1
|
|
select -assert-mod-count 0 =cc2
|
|
select -assert-mod-count 0 =cc3
|
|
|
|
# but we have instances of the new derived modules
|
|
select -assert-count 1 t:aa1
|
|
select -assert-count 1 t:aa2
|
|
select -assert-count 0 t:aa3
|
|
|
|
select -assert-count 1 t:bb1
|
|
select -assert-count 0 t:bb2
|
|
select -assert-count 1 t:bb3
|
|
|
|
select -assert-count 2 t:cc1
|
|
select -assert-count 0 t:cc2
|
|
select -assert-count 0 t:cc3
|
|
|
|
|
|
|
|
# we are expecting the original aa, bb, cc modules
|
|
# and 5 specializations generated by box_derive
|
|
select -assert-mod-count 8 =A:whitebox
|