mirror of https://github.com/YosysHQ/yosys.git
380 lines
16 KiB
Plaintext
380 lines
16 KiB
Plaintext
|
read_verilog -icells <<EOT
|
||
|
|
||
|
module dffsr0(input C, R, S, D, (* init = 4'h0 *) output [3:0] Q);
|
||
|
$_DFFSR_PPP_ ff0 (.C(C), .R(R), .S(S), .D(D), .Q(Q[0]));
|
||
|
$_DFFSR_PPN_ ff1 (.C(C), .R(R), .S(S), .D(D), .Q(Q[1]));
|
||
|
$_DFFSR_PNP_ ff2 (.C(C), .R(R), .S(S), .D(D), .Q(Q[2]));
|
||
|
$_DFFSR_NPP_ ff3 (.C(C), .R(R), .S(S), .D(D), .Q(Q[3]));
|
||
|
endmodule
|
||
|
|
||
|
module dffsr1(input C, R, S, D, (* init = 4'hf *) output [3:0] Q);
|
||
|
$_DFFSR_PPP_ ff0 (.C(C), .R(R), .S(S), .D(D), .Q(Q[0]));
|
||
|
$_DFFSR_PPN_ ff1 (.C(C), .R(R), .S(S), .D(D), .Q(Q[1]));
|
||
|
$_DFFSR_PNP_ ff2 (.C(C), .R(R), .S(S), .D(D), .Q(Q[2]));
|
||
|
$_DFFSR_NPP_ ff3 (.C(C), .R(R), .S(S), .D(D), .Q(Q[3]));
|
||
|
endmodule
|
||
|
|
||
|
module dffsre0(input C, R, S, E, D, (* init = 5'h0 *) output [4:0] Q);
|
||
|
$_DFFSRE_PPPP_ ff0 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[0]));
|
||
|
$_DFFSRE_PPPN_ ff1 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[1]));
|
||
|
$_DFFSRE_PPNP_ ff2 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[2]));
|
||
|
$_DFFSRE_PNPP_ ff3 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[3]));
|
||
|
$_DFFSRE_NPPP_ ff4 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[4]));
|
||
|
endmodule
|
||
|
|
||
|
module dffsre1(input C, R, S, E, D, (* init = 5'h1f *) output [4:0] Q);
|
||
|
$_DFFSRE_PPPP_ ff0 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[0]));
|
||
|
$_DFFSRE_PPPN_ ff1 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[1]));
|
||
|
$_DFFSRE_PPNP_ ff2 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[2]));
|
||
|
$_DFFSRE_PNPP_ ff3 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[3]));
|
||
|
$_DFFSRE_NPPP_ ff4 (.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[4]));
|
||
|
endmodule
|
||
|
|
||
|
module top(input C, E, R, S, D, output [17:0] Q);
|
||
|
dffsr0 dffsr0_(.C(C), .R(R), .S(S), .D(D), .Q(Q[3:0]));
|
||
|
dffsr1 dffsr1_(.C(C), .R(R), .S(S), .D(D), .Q(Q[7:4]));
|
||
|
dffsre0 dffsre0_(.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[12:8]));
|
||
|
dffsre1 dffsre1_(.C(C), .R(R), .S(S), .E(E), .D(D), .Q(Q[17:13]));
|
||
|
endmodule
|
||
|
|
||
|
EOT
|
||
|
|
||
|
design -save orig
|
||
|
flatten
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFF_PP0_ 0 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFF_PP0_ 1 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFF_PP1_ 0 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFF_PP1_ 1 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFE_PP0P_ 0 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFE_PP0P_ 1 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFE_PP1P_ 0 -cell $_SR_PP_ 0
|
||
|
#equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFE_PP1P_ 1 -cell $_SR_PP_ 0
|
||
|
equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFSR_PPP_ 0
|
||
|
equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFSR_PPP_ 1
|
||
|
equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFSRE_PPPP_ 0
|
||
|
equiv_opt -assert -multiclock -map +/simcells.v dfflegalize -cell $_DFFSRE_PPPP_ 1
|
||
|
|
||
|
|
||
|
# Convert everything to ADFFs.
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFF_PP0_ 0 -cell $_SR_PP_ 0
|
||
|
|
||
|
select -assert-count 14 dffsr0/t:$_NOT_
|
||
|
select -assert-count 18 dffsr1/t:$_NOT_
|
||
|
select -assert-count 16 dffsre0/t:$_NOT_
|
||
|
select -assert-count 21 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 10 dffsre0/t:$_MUX_
|
||
|
select -assert-count 10 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFF_PP0_
|
||
|
select -assert-count 8 dffsr1/t:$_DFF_PP0_
|
||
|
select -assert-count 10 dffsre0/t:$_DFF_PP0_
|
||
|
select -assert-count 10 dffsre1/t:$_DFF_PP0_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr1/t:$_AND_
|
||
|
select -assert-count 2 dffsr1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr1/t:$_OR_
|
||
|
select -assert-count 1 dffsre1/t:$_AND_
|
||
|
select -assert-count 3 dffsre1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre1/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr1/* dffsre1/* %u %n %i
|
||
|
select -assert-none t:$_DFF_PP0_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFF_PP0_ 1 -cell $_SR_PP_ 0
|
||
|
|
||
|
select -assert-count 18 dffsr0/t:$_NOT_
|
||
|
select -assert-count 14 dffsr1/t:$_NOT_
|
||
|
select -assert-count 21 dffsre0/t:$_NOT_
|
||
|
select -assert-count 16 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 10 dffsre0/t:$_MUX_
|
||
|
select -assert-count 10 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFF_PP0_
|
||
|
select -assert-count 8 dffsr1/t:$_DFF_PP0_
|
||
|
select -assert-count 10 dffsre0/t:$_DFF_PP0_
|
||
|
select -assert-count 10 dffsre1/t:$_DFF_PP0_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr0/t:$_AND_
|
||
|
select -assert-count 2 dffsr0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr0/t:$_OR_
|
||
|
select -assert-count 1 dffsre0/t:$_AND_
|
||
|
select -assert-count 3 dffsre0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre0/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr0/* dffsre0/* %u %n %i
|
||
|
select -assert-none t:$_DFF_PP0_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFF_PP1_ 0 -cell $_SR_PP_ 0
|
||
|
|
||
|
select -assert-count 18 dffsr0/t:$_NOT_
|
||
|
select -assert-count 14 dffsr1/t:$_NOT_
|
||
|
select -assert-count 21 dffsre0/t:$_NOT_
|
||
|
select -assert-count 16 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 10 dffsre0/t:$_MUX_
|
||
|
select -assert-count 10 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFF_PP1_
|
||
|
select -assert-count 8 dffsr1/t:$_DFF_PP1_
|
||
|
select -assert-count 10 dffsre0/t:$_DFF_PP1_
|
||
|
select -assert-count 10 dffsre1/t:$_DFF_PP1_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr0/t:$_AND_
|
||
|
select -assert-count 2 dffsr0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr0/t:$_OR_
|
||
|
select -assert-count 1 dffsre0/t:$_AND_
|
||
|
select -assert-count 3 dffsre0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre0/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr0/* dffsre0/* %u %n %i
|
||
|
select -assert-none t:$_DFF_PP1_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFF_PP1_ 1 -cell $_SR_PP_ 0
|
||
|
|
||
|
select -assert-count 14 dffsr0/t:$_NOT_
|
||
|
select -assert-count 18 dffsr1/t:$_NOT_
|
||
|
select -assert-count 16 dffsre0/t:$_NOT_
|
||
|
select -assert-count 21 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 10 dffsre0/t:$_MUX_
|
||
|
select -assert-count 10 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFF_PP1_
|
||
|
select -assert-count 8 dffsr1/t:$_DFF_PP1_
|
||
|
select -assert-count 10 dffsre0/t:$_DFF_PP1_
|
||
|
select -assert-count 10 dffsre1/t:$_DFF_PP1_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr1/t:$_AND_
|
||
|
select -assert-count 2 dffsr1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr1/t:$_OR_
|
||
|
select -assert-count 1 dffsre1/t:$_AND_
|
||
|
select -assert-count 3 dffsre1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre1/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr1/* dffsre1/* %u %n %i
|
||
|
select -assert-none t:$_DFF_PP1_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
|
||
|
# Convert everything to ADFFEs.
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFE_PP0P_ 0 -cell $_SR_PP_ 1
|
||
|
|
||
|
select -assert-count 18 dffsr0/t:$_NOT_
|
||
|
select -assert-count 14 dffsr1/t:$_NOT_
|
||
|
select -assert-count 23 dffsre0/t:$_NOT_
|
||
|
select -assert-count 18 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 5 dffsre0/t:$_MUX_
|
||
|
select -assert-count 5 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFFE_PP0P_
|
||
|
select -assert-count 8 dffsr1/t:$_DFFE_PP0P_
|
||
|
select -assert-count 10 dffsre0/t:$_DFFE_PP0P_
|
||
|
select -assert-count 10 dffsre1/t:$_DFFE_PP0P_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr0/t:$_AND_
|
||
|
select -assert-count 2 dffsr0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr0/t:$_OR_
|
||
|
select -assert-count 1 dffsre0/t:$_AND_
|
||
|
select -assert-count 3 dffsre0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre0/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr0/* dffsre0/* %u %n %i
|
||
|
select -assert-none t:$_DFFE_PP0P_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFE_PP0P_ 1 -cell $_SR_PP_ 1
|
||
|
|
||
|
select -assert-count 14 dffsr0/t:$_NOT_
|
||
|
select -assert-count 18 dffsr1/t:$_NOT_
|
||
|
select -assert-count 18 dffsre0/t:$_NOT_
|
||
|
select -assert-count 23 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 5 dffsre0/t:$_MUX_
|
||
|
select -assert-count 5 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFFE_PP0P_
|
||
|
select -assert-count 8 dffsr1/t:$_DFFE_PP0P_
|
||
|
select -assert-count 10 dffsre0/t:$_DFFE_PP0P_
|
||
|
select -assert-count 10 dffsre1/t:$_DFFE_PP0P_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr1/t:$_AND_
|
||
|
select -assert-count 2 dffsr1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr1/t:$_OR_
|
||
|
select -assert-count 1 dffsre1/t:$_AND_
|
||
|
select -assert-count 3 dffsre1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre1/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr1/* dffsre1/* %u %n %i
|
||
|
select -assert-none t:$_DFFE_PP0P_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFE_PP1P_ 0 -cell $_SR_PP_ 1
|
||
|
|
||
|
select -assert-count 14 dffsr0/t:$_NOT_
|
||
|
select -assert-count 18 dffsr1/t:$_NOT_
|
||
|
select -assert-count 18 dffsre0/t:$_NOT_
|
||
|
select -assert-count 23 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 5 dffsre0/t:$_MUX_
|
||
|
select -assert-count 5 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFFE_PP1P_
|
||
|
select -assert-count 8 dffsr1/t:$_DFFE_PP1P_
|
||
|
select -assert-count 10 dffsre0/t:$_DFFE_PP1P_
|
||
|
select -assert-count 10 dffsre1/t:$_DFFE_PP1P_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr1/t:$_AND_
|
||
|
select -assert-count 2 dffsr1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr1/t:$_OR_
|
||
|
select -assert-count 1 dffsre1/t:$_AND_
|
||
|
select -assert-count 3 dffsre1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre1/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr1/* dffsre1/* %u %n %i
|
||
|
select -assert-none t:$_DFFE_PP1P_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFE_PP1P_ 1 -cell $_SR_PP_ 1
|
||
|
|
||
|
select -assert-count 18 dffsr0/t:$_NOT_
|
||
|
select -assert-count 14 dffsr1/t:$_NOT_
|
||
|
select -assert-count 23 dffsre0/t:$_NOT_
|
||
|
select -assert-count 18 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_MUX_
|
||
|
select -assert-count 4 dffsr1/t:$_MUX_
|
||
|
select -assert-count 5 dffsre0/t:$_MUX_
|
||
|
select -assert-count 5 dffsre1/t:$_MUX_
|
||
|
select -assert-count 8 dffsr0/t:$_DFFE_PP1P_
|
||
|
select -assert-count 8 dffsr1/t:$_DFFE_PP1P_
|
||
|
select -assert-count 10 dffsre0/t:$_DFFE_PP1P_
|
||
|
select -assert-count 10 dffsre1/t:$_DFFE_PP1P_
|
||
|
select -assert-count 4 dffsr0/t:$_SR_PP_
|
||
|
select -assert-count 4 dffsr1/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre0/t:$_SR_PP_
|
||
|
select -assert-count 5 dffsre1/t:$_SR_PP_
|
||
|
select -assert-count 1 dffsr0/t:$_AND_
|
||
|
select -assert-count 2 dffsr0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr0/t:$_OR_
|
||
|
select -assert-count 1 dffsre0/t:$_AND_
|
||
|
select -assert-count 3 dffsre0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre0/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr0/* dffsre0/* %u %n %i
|
||
|
select -assert-none t:$_DFFE_PP1P_ t:$_SR_PP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
|
||
|
# Convert everything to DFFSRs.
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFSR_PPP_ 0
|
||
|
|
||
|
select -assert-count 3 dffsr0/t:$_NOT_
|
||
|
select -assert-count 11 dffsr1/t:$_NOT_
|
||
|
select -assert-count 3 dffsre0/t:$_NOT_
|
||
|
select -assert-count 13 dffsre1/t:$_NOT_
|
||
|
select -assert-count 0 dffsr0/t:$_MUX_
|
||
|
select -assert-count 0 dffsr1/t:$_MUX_
|
||
|
select -assert-count 5 dffsre0/t:$_MUX_
|
||
|
select -assert-count 5 dffsre1/t:$_MUX_
|
||
|
select -assert-count 4 dffsr0/t:$_DFFSR_PPP_
|
||
|
select -assert-count 4 dffsr1/t:$_DFFSR_PPP_
|
||
|
select -assert-count 5 dffsre0/t:$_DFFSR_PPP_
|
||
|
select -assert-count 5 dffsre1/t:$_DFFSR_PPP_
|
||
|
select -assert-count 1 dffsr1/t:$_AND_
|
||
|
select -assert-count 2 dffsr1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr1/t:$_OR_
|
||
|
select -assert-count 1 dffsre1/t:$_AND_
|
||
|
select -assert-count 3 dffsre1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre1/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr1/* dffsre1/* %u %n %i
|
||
|
select -assert-none t:$_DFFSR_PPP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFSR_PPP_ 1
|
||
|
|
||
|
select -assert-count 11 dffsr0/t:$_NOT_
|
||
|
select -assert-count 3 dffsr1/t:$_NOT_
|
||
|
select -assert-count 13 dffsre0/t:$_NOT_
|
||
|
select -assert-count 3 dffsre1/t:$_NOT_
|
||
|
select -assert-count 0 dffsr0/t:$_MUX_
|
||
|
select -assert-count 0 dffsr1j/t:$_MUX_
|
||
|
select -assert-count 5 dffsre0/t:$_MUX_
|
||
|
select -assert-count 5 dffsre1/t:$_MUX_
|
||
|
select -assert-count 4 dffsr0/t:$_DFFSR_PPP_
|
||
|
select -assert-count 4 dffsr1/t:$_DFFSR_PPP_
|
||
|
select -assert-count 5 dffsre0/t:$_DFFSR_PPP_
|
||
|
select -assert-count 5 dffsre1/t:$_DFFSR_PPP_
|
||
|
select -assert-count 1 dffsr0/t:$_AND_
|
||
|
select -assert-count 2 dffsr0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr0/t:$_OR_
|
||
|
select -assert-count 1 dffsre0/t:$_AND_
|
||
|
select -assert-count 3 dffsre0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre0/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr0/* dffsre0/* %u %n %i
|
||
|
select -assert-none t:$_DFFSR_PPP_ t:$_MUX_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
|
||
|
# Convert everything to DFFSREs.
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFSRE_PPPP_ 0
|
||
|
|
||
|
select -assert-count 3 dffsr0/t:$_NOT_
|
||
|
select -assert-count 11 dffsr1/t:$_NOT_
|
||
|
select -assert-count 4 dffsre0/t:$_NOT_
|
||
|
select -assert-count 14 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 4 dffsr1/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 5 dffsre0/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 5 dffsre1/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 1 dffsr1/t:$_AND_
|
||
|
select -assert-count 2 dffsr1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr1/t:$_OR_
|
||
|
select -assert-count 1 dffsre1/t:$_AND_
|
||
|
select -assert-count 3 dffsre1/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre1/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr1/* dffsre1/* %u %n %i
|
||
|
select -assert-none t:$_DFFSRE_PPPP_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|
||
|
|
||
|
design -load orig
|
||
|
dfflegalize -cell $_DFFSRE_PPPP_ 1
|
||
|
|
||
|
select -assert-count 11 dffsr0/t:$_NOT_
|
||
|
select -assert-count 3 dffsr1/t:$_NOT_
|
||
|
select -assert-count 14 dffsre0/t:$_NOT_
|
||
|
select -assert-count 4 dffsre1/t:$_NOT_
|
||
|
select -assert-count 4 dffsr0/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 4 dffsr1/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 5 dffsre0/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 5 dffsre1/t:$_DFFSRE_PPPP_
|
||
|
select -assert-count 1 dffsr0/t:$_AND_
|
||
|
select -assert-count 2 dffsr0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsr0/t:$_OR_
|
||
|
select -assert-count 1 dffsre0/t:$_AND_
|
||
|
select -assert-count 3 dffsre0/t:$_ANDNOT_
|
||
|
select -assert-count 1 dffsre0/t:$_OR_
|
||
|
select -assert-count 0 t:$_AND_ t:$_OR_ t:$_ANDNOT_ %% dffsr0/* dffsre0/* %u %n %i
|
||
|
select -assert-none t:$_DFFSRE_PPPP_ t:$_NOT_ t:$_AND_ t:$_ANDNOT_ t:$_OR_ top/* %% %n t:* %i
|