mirror of https://github.com/KLayout/klayout.git
Some more tests, a (unlikely) segfault fixed
This commit is contained in:
parent
621cb9edcd
commit
a5a4ae511d
|
|
@ -3714,6 +3714,10 @@ static bool derive_symmetry_groups (const db::NetGraph &graph, const tl::equival
|
||||||
void
|
void
|
||||||
NetlistComparer::join_symmetric_nets (db::Circuit *circuit)
|
NetlistComparer::join_symmetric_nets (db::Circuit *circuit)
|
||||||
{
|
{
|
||||||
|
if (! circuit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
tl::SelfTimer timer (tl::verbosity () >= 21, tl::to_string (tr ("Join symmetric nodes for circuit: ")) + circuit->name ());
|
tl::SelfTimer timer (tl::verbosity () >= 21, tl::to_string (tr ("Join symmetric nodes for circuit: ")) + circuit->name ());
|
||||||
|
|
||||||
db::DeviceFilter device_filter (m_cap_threshold, m_res_threshold);
|
db::DeviceFilter device_filter (m_cap_threshold, m_res_threshold);
|
||||||
|
|
|
||||||
|
|
@ -3739,7 +3739,7 @@ TEST(25_JoinSymmetricNets)
|
||||||
TEST(25b_JoinSymmetricNetsMultiple)
|
TEST(25b_JoinSymmetricNetsMultiple)
|
||||||
{
|
{
|
||||||
const char *nls =
|
const char *nls =
|
||||||
"circuit NAND2 (A=A,B=B,OUT=OUT,VSS=VSS,VDD=VDD);\n"
|
"circuit NAND3 (A=A,B=B,C=C,OUT=OUT,VSS=VSS,VDD=VDD);\n"
|
||||||
" device PMOS $1 (S=OUT,G=A,D=VDD) (L=0.25,W=1);\n"
|
" device PMOS $1 (S=OUT,G=A,D=VDD) (L=0.25,W=1);\n"
|
||||||
" device PMOS $2 (S=VDD,G=B,D=OUT) (L=0.25,W=1);\n"
|
" device PMOS $2 (S=VDD,G=B,D=OUT) (L=0.25,W=1);\n"
|
||||||
" device PMOS $3 (S=VDD,G=C,D=OUT) (L=0.25,W=1);\n"
|
" device PMOS $3 (S=VDD,G=C,D=OUT) (L=0.25,W=1);\n"
|
||||||
|
|
@ -3759,13 +3759,13 @@ TEST(25b_JoinSymmetricNetsMultiple)
|
||||||
prep_nl (nl, nls);
|
prep_nl (nl, nls);
|
||||||
|
|
||||||
db::NetlistComparer comp;
|
db::NetlistComparer comp;
|
||||||
comp.join_symmetric_nets (nl.circuit_by_name ("NAND2"));
|
comp.join_symmetric_nets (nl.circuit_by_name ("NAND3"));
|
||||||
|
|
||||||
nl.combine_devices ();
|
nl.combine_devices ();
|
||||||
|
|
||||||
// NOTE $1 and $2 are joined because they are symmetric
|
// NOTE $1 and $2 are joined because they are symmetric
|
||||||
EXPECT_EQ (nl.to_string (),
|
EXPECT_EQ (nl.to_string (),
|
||||||
"circuit NAND2 (A=A,B=B,OUT=OUT,VSS=VSS,VDD=VDD);\n"
|
"circuit NAND3 (A=A,B=B,C=C,OUT=OUT,VSS=VSS,VDD=VDD);\n"
|
||||||
" device PMOS $1 (S=OUT,G=A,D=VDD) (L=0.25,W=1,AS=0,AD=0,PS=0,PD=0);\n"
|
" device PMOS $1 (S=OUT,G=A,D=VDD) (L=0.25,W=1,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
" device PMOS $2 (S=VDD,G=B,D=OUT) (L=0.25,W=1,AS=0,AD=0,PS=0,PD=0);\n"
|
" device PMOS $2 (S=VDD,G=B,D=OUT) (L=0.25,W=1,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
" device PMOS $3 (S=VDD,G=C,D=OUT) (L=0.25,W=1,AS=0,AD=0,PS=0,PD=0);\n"
|
" device PMOS $3 (S=VDD,G=C,D=OUT) (L=0.25,W=1,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
|
@ -3776,6 +3776,45 @@ TEST(25b_JoinSymmetricNetsMultiple)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(25c_JoinSymmetricNetsMultipleMessedUp)
|
||||||
|
{
|
||||||
|
const char *nls =
|
||||||
|
"circuit NOR3 (A=A,C=C,B=B,OUT=OUT,VSS=VSS,VDD=VDD);\n"
|
||||||
|
" device PMOS $9 (S=$6,G=B,D=$3) (L=0.27,W=1.1);\n"
|
||||||
|
" device NMOS $1 (S=OUT,G=A,D=VSS) (L=0.23,W=2.05);\n"
|
||||||
|
" device PMOS $5 (S=$2,G=A,D=OUT) (L=0.27,W=1.1);\n"
|
||||||
|
" device NMOS $2 (S=OUT,G=B,D=VSS) (L=0.23,W=2.05);\n"
|
||||||
|
" device PMOS $8 (S=$2,G=B,D=$5) (L=0.27,W=1.1);\n"
|
||||||
|
" device PMOS $4 (S=$21,G=A,D=OUT) (L=0.27,W=1.1);\n"
|
||||||
|
" device PMOS $7 (S=$21,G=B,D=$4) (L=0.27,W=1.1);\n"
|
||||||
|
" device PMOS $12 (S=VDD,G=C,D=$6) (L=0.27,W=1.1);\n"
|
||||||
|
" device PMOS $10 (S=$4,G=C,D=VDD) (L=0.27,W=1.1);\n"
|
||||||
|
" device PMOS $6 (S=$3,G=A,D=OUT) (L=0.27,W=1.1);\n"
|
||||||
|
" device PMOS $11 (S=VDD,G=C,D=$5) (L=0.27,W=1.1);\n"
|
||||||
|
" device NMOS $3 (S=VSS,G=C,D=OUT) (L=0.23,W=2.05);\n"
|
||||||
|
"end;\n";
|
||||||
|
|
||||||
|
db::Netlist nl;
|
||||||
|
prep_nl (nl, nls);
|
||||||
|
|
||||||
|
db::NetlistComparer comp;
|
||||||
|
comp.join_symmetric_nets (nl.circuit_by_name ("NOR3"));
|
||||||
|
|
||||||
|
nl.combine_devices ();
|
||||||
|
|
||||||
|
// NOTE $1 and $2 are joined because they are symmetric
|
||||||
|
EXPECT_EQ (nl.to_string (),
|
||||||
|
"circuit NOR3 (A=A,C=C,B=B,OUT=OUT,VSS=VSS,VDD=VDD);\n"
|
||||||
|
" device PMOS $1 (S=$5,G=B,D=$3) (L=0.27,W=3.3,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
" device NMOS $2 (S=OUT,G=A,D=VSS) (L=0.23,W=2.05,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
" device PMOS $3 (S=$3,G=A,D=OUT) (L=0.27,W=3.3,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
" device NMOS $4 (S=OUT,G=B,D=VSS) (L=0.23,W=2.05,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
" device PMOS $8 (S=VDD,G=C,D=$5) (L=0.27,W=3.3,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
" device NMOS $12 (S=VSS,G=C,D=OUT) (L=0.23,W=2.05,AS=0,AD=0,PS=0,PD=0);\n"
|
||||||
|
"end;\n"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
TEST(26_JoinSymmetricNets)
|
TEST(26_JoinSymmetricNets)
|
||||||
{
|
{
|
||||||
const char *nls =
|
const char *nls =
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue