Skip to content

Instantly share code, notes, and snippets.

@buttercutter
Last active December 8, 2020 16:11
Show Gist options
  • Save buttercutter/d5fe38265c264a9bb45a6433a1868855 to your computer and use it in GitHub Desktop.
Save buttercutter/d5fe38265c264a9bb45a6433a1868855 to your computer and use it in GitHub Desktop.
A Look-Ahead Clock Gating Based on Auto-Gated Flip-Flops
v { version=2.9.8 file_version=1.2}
G {}
K {}
V {}
S {}
E {}
N -1490 -1370 -1480 -1370 { lab=Q1A}
N -1480 -1450 -1480 -1370 { lab=Q1A}
N -1480 -1450 -1460 -1450 { lab=Q1A}
N -1710 -1490 -1460 -1490 { lab=#net1}
N -1340 -1470 -1290 -1470 { lab=#net2}
N -1710 -1370 -1670 -1370 { lab=#net1}
N -1710 -1490 -1710 -1370 { lab=#net1}
N -1750 -1370 -1710 -1370 { lab=#net1}
N -1700 -1350 -1700 -1310 { lab=#net3}
N -1700 -1350 -1670 -1350 { lab=#net3}
N -1680 -1190 -1680 -1160 { lab=#net2}
N -1680 -1160 -1320 -1160 { lab=#net2}
N -1320 -1470 -1320 -1160 { lab=#net2}
N -1300 -1450 -1290 -1450 { lab=clk_g}
N -1300 -1450 -1300 -1130 { lab=clk_g}
N -1720 -1130 -1300 -1130 { lab=clk_g}
N -1720 -1190 -1720 -1130 { lab=clk_g}
N -1960 -1130 -1720 -1130 { lab=clk_g}
N -1960 -1350 -1960 -1130 { lab=clk_g}
N -1960 -1350 -1930 -1350 { lab=clk_g}
N -2070 -1370 -1930 -1370 { lab=#net4}
N -2070 -1370 -2070 -1320 { lab=#net4}
N -2070 -1260 -2070 -1240 { lab=GND}
N -2000 -1130 -1960 -1130 { lab=clk_g}
N -1480 -1370 -1070 -1370 { lab=Q1A}
N -1110 -1470 -1070 -1470 { lab=X1A}
N -1490 -920 -1480 -920 { lab=Q2A}
N -1480 -1000 -1480 -920 { lab=Q2A}
N -1480 -1000 -1460 -1000 { lab=Q2A}
N -1710 -1040 -1460 -1040 { lab=#net5}
N -1340 -1020 -1290 -1020 { lab=#net6}
N -1710 -920 -1670 -920 { lab=#net5}
N -1710 -1040 -1710 -920 { lab=#net5}
N -1750 -920 -1710 -920 { lab=#net5}
N -1700 -900 -1700 -860 { lab=#net7}
N -1700 -900 -1670 -900 { lab=#net7}
N -1680 -740 -1680 -710 { lab=#net6}
N -1680 -710 -1320 -710 { lab=#net6}
N -1320 -1020 -1320 -710 { lab=#net6}
N -1300 -1000 -1290 -1000 { lab=clk_g}
N -1300 -1000 -1300 -680 { lab=clk_g}
N -1720 -680 -1300 -680 { lab=clk_g}
N -1720 -740 -1720 -680 { lab=clk_g}
N -1960 -680 -1720 -680 { lab=clk_g}
N -1960 -900 -1960 -680 { lab=clk_g}
N -1960 -900 -1930 -900 { lab=clk_g}
N -2000 -680 -1960 -680 { lab=clk_g}
N -1480 -920 -1070 -920 { lab=Q2A}
N -1110 -1020 -1070 -1020 { lab=X2A}
N -1490 -460 -1480 -460 { lab=Q3A}
N -1480 -540 -1480 -460 { lab=Q3A}
N -1480 -540 -1460 -540 { lab=Q3A}
N -1710 -580 -1460 -580 { lab=#net8}
N -1340 -560 -1290 -560 { lab=#net9}
N -1710 -460 -1670 -460 { lab=#net8}
N -1710 -580 -1710 -460 { lab=#net8}
N -1750 -460 -1710 -460 { lab=#net8}
N -1700 -440 -1700 -400 { lab=#net10}
N -1700 -440 -1670 -440 { lab=#net10}
N -1680 -280 -1680 -250 { lab=#net9}
N -1680 -250 -1320 -250 { lab=#net9}
N -1320 -560 -1320 -250 { lab=#net9}
N -1300 -540 -1290 -540 { lab=clk_g}
N -1300 -540 -1300 -220 { lab=clk_g}
N -1720 -220 -1300 -220 { lab=clk_g}
N -1720 -280 -1720 -220 { lab=clk_g}
N -1960 -220 -1720 -220 { lab=clk_g}
N -1960 -440 -1960 -220 { lab=clk_g}
N -1960 -440 -1930 -440 { lab=clk_g}
N -2000 -220 -1960 -220 { lab=clk_g}
N -1480 -460 -1070 -460 { lab=Q3A}
N -1110 -560 -1070 -560 { lab=X3A}
N -2070 -920 -1930 -920 { lab=#net11}
N -2070 -920 -2070 -870 { lab=#net11}
N -2070 -810 -2070 -790 { lab=GND}
N -2070 -460 -1930 -460 { lab=#net12}
N -2070 -460 -2070 -410 { lab=#net12}
N -2070 -350 -2070 -330 { lab=GND}
N -1020 -560 -1020 -160 { lab=X3A}
N -1070 -560 -1020 -560 { lab=X3A}
N -980 -1020 -980 -160 { lab=X2A}
N -1070 -1020 -980 -1020 { lab=X2A}
N -940 -1470 -940 -160 { lab=X1A}
N -1070 -1470 -940 -1470 { lab=X1A}
N -400 150 -390 150 { lab=QC}
N -390 70 -390 150 { lab=QC}
N -390 70 -370 70 { lab=QC}
N -620 30 -370 30 { lab=#net13}
N -250 50 -200 50 { lab=#net14}
N -620 150 -580 150 { lab=#net13}
N -620 30 -620 150 { lab=#net13}
N -660 150 -620 150 { lab=#net13}
N -610 170 -610 210 { lab=#net15}
N -610 170 -580 170 { lab=#net15}
N -590 330 -590 360 { lab=#net14}
N -590 360 -230 360 { lab=#net14}
N -230 50 -230 360 { lab=#net14}
N -210 70 -200 70 { lab=clk}
N -210 70 -210 390 { lab=clk}
N -630 390 -210 390 { lab=clk}
N -630 330 -630 390 { lab=clk}
N -870 390 -630 390 { lab=clk}
N -980 150 -840 150 { lab=#net16}
N -1090 390 -1050 390 { lab=clk}
N -390 150 20 150 { lab=QC}
N -20 50 20 50 { lab=XC}
N -980 -40 -980 150 { lab=#net16}
N -950 320 -950 390 { lab=clk}
N -1050 390 -870 390 { lab=clk}
N -930 170 -840 170 { lab=#net17}
N -930 170 -930 200 { lab=#net17}
N -910 320 -910 460 { lab=#net18}
N -910 460 -870 460 { lab=#net18}
N -790 460 90 460 { lab=XC}
N 90 60 90 460 { lab=XC}
N 90 50 90 60 { lab=XC}
N 20 50 90 50 { lab=XC}
N 20 150 190 150 { lab=QC}
N -210 390 160 390 { lab=clk}
N 160 190 160 390 { lab=clk}
N 160 190 190 190 { lab=clk}
N 1060 -920 1070 -920 { lab=Q1B}
N 1070 -1000 1070 -920 { lab=Q1B}
N 1070 -1000 1090 -1000 { lab=Q1B}
N 840 -1040 1090 -1040 { lab=#net19}
N 1210 -1020 1260 -1020 { lab=#net20}
N 840 -920 880 -920 { lab=#net19}
N 840 -1040 840 -920 { lab=#net19}
N 800 -920 840 -920 { lab=#net19}
N 850 -900 850 -860 { lab=#net21}
N 850 -900 880 -900 { lab=#net21}
N 870 -740 870 -710 { lab=#net20}
N 870 -710 1230 -710 { lab=#net20}
N 1230 -1020 1230 -710 { lab=#net20}
N 1250 -1000 1260 -1000 { lab=clk_g}
N 1250 -1000 1250 -680 { lab=clk_g}
N 830 -680 1250 -680 { lab=clk_g}
N 830 -740 830 -680 { lab=clk_g}
N 590 -680 830 -680 { lab=clk_g}
N 590 -900 590 -680 { lab=clk_g}
N 590 -900 620 -900 { lab=clk_g}
N 480 -920 620 -920 { lab=#net22}
N 550 -680 590 -680 { lab=clk_g}
N 1070 -920 1480 -920 { lab=Q1B}
N 1440 -1020 1480 -1020 { lab=X1B}
N -1070 -920 -450 -920 { lab=Q2A}
N -1070 -1370 -580 -1370 { lab=Q1A}
N -580 -1370 -580 -960 { lab=Q1A}
N -580 -960 -450 -960 { lab=Q1A}
N -580 -880 -450 -880 { lab=Q3A}
N -1070 -460 -580 -460 { lab=Q3A}
N -580 -880 -580 -460 { lab=Q3A}
N -330 -920 480 -920 { lab=#net22}
N 430 -680 550 -680 { lab=clk_g}
N 430 -680 430 170 { lab=clk_g}
N 320 170 430 170 { lab=clk_g}
N 310 170 320 170 { lab=clk_g}
N 1480 -920 1520 -920 { lab=Q1B}
N 1520 -920 1520 -890 { lab=Q1B}
N 1520 -830 1520 -800 { lab=GND}
N 1560 -1020 1600 -1020 { lab=X1B}
N 1600 -1020 1600 -990 { lab=X1B}
N 1600 -930 1600 -900 { lab=GND}
N 1480 -1020 1560 -1020 { lab=X1B}
N -1210 390 -1210 440 { lab=clk}
N -1210 500 -1210 520 { lab=GND}
N -1210 390 -1090 390 { lab=clk}
C {sky130_stdcells/xor2_1.sym} -1400 -1470 0 0 {name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtp_1.sym} -1580 -1360 0 0 {name=x2 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -1200 -1460 0 0 {name=x3 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -1840 -1360 0 0 {name=x4 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/and2_1.sym} -1700 -1250 3 0 {name=x5 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {vsource.sym} -2070 -1290 0 1 {name=V1 value="pwl 0 0 100n 0 101n 1.8 150n 0 202n 1.8"}
C {gnd.sym} -2070 -1240 0 0 {name=l1 lab=GND}
C {lab_wire.sym} -2000 -1130 0 0 {name=l2 sig_type=std_logic lab=clk_g}
C {lab_wire.sym} -1080 -1370 0 0 {name=l3 sig_type=std_logic lab=Q1A}
C {lab_wire.sym} -1080 -1470 0 0 {name=l4 sig_type=std_logic lab=X1A}
C {sky130_stdcells/xor2_1.sym} -1400 -1020 0 0 {name=x6 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtp_1.sym} -1580 -910 0 0 {name=x7 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -1200 -1010 0 0 {name=x8 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -1840 -910 0 0 {name=x9 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/and2_1.sym} -1700 -800 3 0 {name=x10 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_wire.sym} -2000 -680 0 0 {name=l5 sig_type=std_logic lab=clk_g}
C {lab_wire.sym} -1080 -920 0 0 {name=l6 sig_type=std_logic lab=Q2A}
C {lab_wire.sym} -1080 -1020 0 0 {name=l7 sig_type=std_logic lab=X2A}
C {sky130_stdcells/xor2_1.sym} -1400 -560 0 0 {name=x11 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtp_1.sym} -1580 -450 0 0 {name=x12 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -1200 -550 0 0 {name=x13 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -1840 -450 0 0 {name=x14 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/and2_1.sym} -1700 -340 3 0 {name=x15 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_wire.sym} -2000 -220 0 0 {name=l8 sig_type=std_logic lab=clk_g}
C {lab_wire.sym} -1080 -460 0 0 {name=l9 sig_type=std_logic lab=Q3A}
C {lab_wire.sym} -1080 -560 0 0 {name=l10 sig_type=std_logic lab=X3A}
C {vsource.sym} -2070 -840 0 1 {name=V2 value="pwl 0 0 100n 0 102n 1.8 200n 1.8 202n 0"}
C {gnd.sym} -2070 -790 0 0 {name=l11 lab=GND}
C {vsource.sym} -2070 -380 0 1 {name=V3 value="pwl 0 0 100n 0 102n 1.8 200n 1.8 202n 0"}
C {gnd.sym} -2070 -330 0 0 {name=l12 lab=GND}
C {sky130_stdcells/xor3_1.sym} -980 -100 1 0 {name=x16 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/xor2_1.sym} -310 50 0 0 {name=x17 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtp_1.sym} -490 160 0 0 {name=x18 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -110 60 0 0 {name=x19 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} -750 160 0 0 {name=x20 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/and2_1.sym} -610 270 3 0 {name=x21 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_wire.sym} -1090 390 0 0 {name=l14 sig_type=std_logic lab=clk}
C {lab_wire.sym} 10 150 0 0 {name=l15 sig_type=std_logic lab=QC}
C {lab_wire.sym} 10 50 0 0 {name=l16 sig_type=std_logic lab=XC}
C {sky130_stdcells/and2_1.sym} -930 260 3 0 {name=x22 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_1.sym} -830 460 2 0 {name=x23 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/and2_1.sym} 250 170 0 0 {name=x24 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/xor2_1.sym} 1150 -1020 0 0 {name=x25 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtp_1.sym} 970 -910 0 0 {name=x26 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} 1350 -1010 0 0 {name=x27 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/dlxtn_1.sym} 710 -910 0 0 {name=x28 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/and2_1.sym} 850 -800 3 0 {name=x29 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_wire.sym} 550 -680 0 0 {name=l17 sig_type=std_logic lab=clk_g}
C {lab_wire.sym} 1470 -920 0 0 {name=l18 sig_type=std_logic lab=Q1B}
C {lab_wire.sym} 1470 -1020 0 0 {name=l19 sig_type=std_logic lab=X1B}
C {sky130_stdcells/and3_1.sym} -390 -920 0 0 {name=x30 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {capa.sym} 1520 -860 0 0 {name=C1
m=1
value=1p
footprint=1206
device="ceramic capacitor"}
C {gnd.sym} 1520 -800 0 0 {name=l13 lab=GND}
C {capa.sym} 1600 -960 0 0 {name=C2
m=1
value=1p
footprint=1206
device="ceramic capacitor"}
C {gnd.sym} 1600 -900 0 0 {name=l20 lab=GND}
C {vsource.sym} -1210 470 0 1 {name=V4 value="pulse 0 1.8 0 1n 1n 4n 10n"}
C {gnd.sym} -1210 520 0 0 {name=l21 lab=GND}
C {code_shown.sym} -1680 30 0 0 {name=s1 only_toplevel=false
value=".control
tran 0.01n 500n
plot clk_g clk
.endc"}
C {devices/launcher.sym} -1740 250 0 0 {name=h1
descr="sky130_models.tcl"
tclcommand="eval exec ~/xschem_sky130/scripts/sky130_models.tcl"}
C {devices/code.sym} -2070 60 0 0 {name=s2 only_toplevel=false
format="tcleval(@value )"
value="
[sky130_models]
"}
C {devices/code.sym} -1410 90 0 0 {name=TT_MODELS
only_toplevel=true
format=tcleval(@value )
value="
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_01v8/sky130_fd_pr__esd_nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_pfet_g5v0d10v5/sky130_fd_pr__esd_pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d16v0/sky130_fd_pr__nfet_g5v0d16v0__tt_discrete.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_g5v0d10v5/sky130_fd_pr__esd_nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/nonfet.spice
* Mismatch parameters
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__mismatch.corner.spice
* Resistor\\\\$::SKYWATER_MODELS\\\\/Capacitor
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical__lin.spice
* Special cells
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/specialized_cells.spice
* All models
.include \\\\$::SKYWATER_MODELS\\\\/models/all.spice
* Corner
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/rf.spice
"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment