From 63dbe08cf115890984bb82216ecef6b1de079169 Mon Sep 17 00:00:00 2001 From: apaj Date: Sep 21 2023 11:57:58 +0000 Subject: added to wrapper.mag --- diff --git a/mag/dac.mag b/mag/dac.mag new file mode 100644 index 0000000..e8eff4b --- /dev/null +++ b/mag/dac.mag @@ -0,0 +1,138 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695199131 +<< viali >> +rect 1132 6906 1180 7272 +rect 78 508 528 544 +rect 1686 74 1730 442 +rect 1708 -938 1744 -566 +rect 2152 -958 2188 -586 +<< metal1 >> +rect 1170 14168 1622 14414 +rect 200 14118 2430 14168 +rect 200 13802 2436 14118 +rect 200 7278 384 13802 +rect 2104 13214 2436 13802 +rect 1302 13062 3210 13214 +rect 1322 7654 3230 7806 +rect 2094 7364 2432 7654 +rect 1124 7278 1186 7284 +rect 200 7272 1186 7278 +rect 200 6906 1132 7272 +rect 1180 6906 1186 7272 +rect 1312 7212 3220 7364 +rect 200 6902 1186 6906 +rect 200 2912 384 6902 +rect 1124 6894 1186 6902 +rect 200 2852 390 2912 +rect 204 1704 390 2852 +rect 1296 1788 3204 1940 +rect 204 1584 392 1704 +rect 206 932 392 1584 +rect 2100 1364 2438 1788 +rect 1312 1342 2438 1364 +rect 1312 1288 2436 1342 +rect 206 688 214 932 +rect 380 688 392 932 +rect 206 558 392 688 +rect 1310 1132 2436 1288 +rect 56 544 548 558 +rect 56 508 78 544 +rect 528 508 548 544 +rect 56 496 548 508 +rect 206 376 392 496 +rect 434 170 1280 356 +rect 1310 354 1506 1132 +rect 1672 442 1746 460 +rect 210 -248 390 150 +rect 782 -248 932 170 +rect 210 -310 932 -248 +rect 208 -372 932 -310 +rect 1312 -208 1518 148 +rect 1672 74 1686 442 +rect 1730 356 1746 442 +rect 1998 356 2244 424 +rect 1730 344 2244 356 +rect 1730 160 2060 344 +rect 1730 74 1746 160 +rect 1874 158 2060 160 +rect 1998 134 2060 158 +rect 2192 134 2244 344 +rect 1998 74 2244 134 +rect 1672 48 1746 74 +rect 208 -794 394 -372 +rect 1312 -376 2580 -208 +rect 1312 -646 1518 -376 +rect 1692 -566 2202 -548 +rect 772 -848 1276 -652 +rect 772 -1136 982 -848 +rect 1324 -1536 1522 -856 +rect 1692 -938 1708 -566 +rect 1744 -586 2202 -566 +rect 1744 -656 2152 -586 +rect 1744 -866 1870 -656 +rect 1998 -866 2152 -656 +rect 1744 -938 2152 -866 +rect 1692 -958 2152 -938 +rect 2188 -958 2202 -586 +rect 2376 -668 2578 -376 +rect 2620 -876 3264 -676 +rect 1692 -972 2202 -958 +rect 2374 -1526 2566 -884 +<< via1 >> +rect 214 688 380 932 +rect 2060 134 2192 344 +rect 1870 -866 1998 -656 +<< metal2 >> +rect 202 932 2204 966 +rect 202 836 214 932 +rect 200 688 214 836 +rect 380 842 2204 932 +rect 380 688 388 842 +rect 200 682 388 688 +rect 2018 426 2204 842 +rect 1994 344 2242 426 +rect 1994 134 2060 344 +rect 2192 134 2242 344 +rect 1994 86 2242 134 +rect 1816 -98 2242 86 +rect 1818 -574 2048 -98 +rect 1782 -656 2082 -574 +rect 1782 -866 1870 -656 +rect 1998 -866 2082 -656 +rect 1782 -964 2082 -866 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_0 +timestamp 1695142129 +transform 0 1 302 -1 0 263 +box -358 -397 358 397 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_1 +timestamp 1695142129 +transform 0 1 1408 -1 0 255 +box -358 -397 358 397 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_2 +timestamp 1695142129 +transform 0 1 2472 -1 0 -773 +box -358 -397 358 397 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_3 +timestamp 1695142129 +transform 0 1 1424 -1 0 -753 +box -358 -397 358 397 +use sky130_fd_pr__res_iso_pw_25QSVZ sky130_fd_pr__res_iso_pw_25QSVZ_0 +timestamp 1695142129 +transform 1 0 2264 0 1 7507 +box -1248 -6017 1248 6017 +<< labels >> +rlabel metal1 226 -772 364 -598 1 iin +port 6 n +rlabel metal1 1214 13938 1570 14364 1 vdd +port 1 n +rlabel metal1 1352 -1514 1482 -1302 1 iout +port 4 n +rlabel metal1 2404 -1506 2534 -1294 1 iout_neg +port 3 n +rlabel metal1 3084 -862 3244 -698 1 vbias +port 2 n +rlabel metal1 792 -1108 952 -944 1 vsw +port 5 n +<< end >> diff --git a/mag/mock_dac/dac.mag b/mag/mock_dac/dac.mag new file mode 100644 index 0000000..e8eff4b --- /dev/null +++ b/mag/mock_dac/dac.mag @@ -0,0 +1,138 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695199131 +<< viali >> +rect 1132 6906 1180 7272 +rect 78 508 528 544 +rect 1686 74 1730 442 +rect 1708 -938 1744 -566 +rect 2152 -958 2188 -586 +<< metal1 >> +rect 1170 14168 1622 14414 +rect 200 14118 2430 14168 +rect 200 13802 2436 14118 +rect 200 7278 384 13802 +rect 2104 13214 2436 13802 +rect 1302 13062 3210 13214 +rect 1322 7654 3230 7806 +rect 2094 7364 2432 7654 +rect 1124 7278 1186 7284 +rect 200 7272 1186 7278 +rect 200 6906 1132 7272 +rect 1180 6906 1186 7272 +rect 1312 7212 3220 7364 +rect 200 6902 1186 6906 +rect 200 2912 384 6902 +rect 1124 6894 1186 6902 +rect 200 2852 390 2912 +rect 204 1704 390 2852 +rect 1296 1788 3204 1940 +rect 204 1584 392 1704 +rect 206 932 392 1584 +rect 2100 1364 2438 1788 +rect 1312 1342 2438 1364 +rect 1312 1288 2436 1342 +rect 206 688 214 932 +rect 380 688 392 932 +rect 206 558 392 688 +rect 1310 1132 2436 1288 +rect 56 544 548 558 +rect 56 508 78 544 +rect 528 508 548 544 +rect 56 496 548 508 +rect 206 376 392 496 +rect 434 170 1280 356 +rect 1310 354 1506 1132 +rect 1672 442 1746 460 +rect 210 -248 390 150 +rect 782 -248 932 170 +rect 210 -310 932 -248 +rect 208 -372 932 -310 +rect 1312 -208 1518 148 +rect 1672 74 1686 442 +rect 1730 356 1746 442 +rect 1998 356 2244 424 +rect 1730 344 2244 356 +rect 1730 160 2060 344 +rect 1730 74 1746 160 +rect 1874 158 2060 160 +rect 1998 134 2060 158 +rect 2192 134 2244 344 +rect 1998 74 2244 134 +rect 1672 48 1746 74 +rect 208 -794 394 -372 +rect 1312 -376 2580 -208 +rect 1312 -646 1518 -376 +rect 1692 -566 2202 -548 +rect 772 -848 1276 -652 +rect 772 -1136 982 -848 +rect 1324 -1536 1522 -856 +rect 1692 -938 1708 -566 +rect 1744 -586 2202 -566 +rect 1744 -656 2152 -586 +rect 1744 -866 1870 -656 +rect 1998 -866 2152 -656 +rect 1744 -938 2152 -866 +rect 1692 -958 2152 -938 +rect 2188 -958 2202 -586 +rect 2376 -668 2578 -376 +rect 2620 -876 3264 -676 +rect 1692 -972 2202 -958 +rect 2374 -1526 2566 -884 +<< via1 >> +rect 214 688 380 932 +rect 2060 134 2192 344 +rect 1870 -866 1998 -656 +<< metal2 >> +rect 202 932 2204 966 +rect 202 836 214 932 +rect 200 688 214 836 +rect 380 842 2204 932 +rect 380 688 388 842 +rect 200 682 388 688 +rect 2018 426 2204 842 +rect 1994 344 2242 426 +rect 1994 134 2060 344 +rect 2192 134 2242 344 +rect 1994 86 2242 134 +rect 1816 -98 2242 86 +rect 1818 -574 2048 -98 +rect 1782 -656 2082 -574 +rect 1782 -866 1870 -656 +rect 1998 -866 2082 -656 +rect 1782 -964 2082 -866 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_0 +timestamp 1695142129 +transform 0 1 302 -1 0 263 +box -358 -397 358 397 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_1 +timestamp 1695142129 +transform 0 1 1408 -1 0 255 +box -358 -397 358 397 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_2 +timestamp 1695142129 +transform 0 1 2472 -1 0 -773 +box -358 -397 358 397 +use sky130_fd_pr__pfet_g5v0d10v5_6H9SE5 sky130_fd_pr__pfet_g5v0d10v5_6H9SE5_3 +timestamp 1695142129 +transform 0 1 1424 -1 0 -753 +box -358 -397 358 397 +use sky130_fd_pr__res_iso_pw_25QSVZ sky130_fd_pr__res_iso_pw_25QSVZ_0 +timestamp 1695142129 +transform 1 0 2264 0 1 7507 +box -1248 -6017 1248 6017 +<< labels >> +rlabel metal1 226 -772 364 -598 1 iin +port 6 n +rlabel metal1 1214 13938 1570 14364 1 vdd +port 1 n +rlabel metal1 1352 -1514 1482 -1302 1 iout +port 4 n +rlabel metal1 2404 -1506 2534 -1294 1 iout_neg +port 3 n +rlabel metal1 3084 -862 3244 -698 1 vbias +port 2 n +rlabel metal1 792 -1108 952 -944 1 vsw +port 5 n +<< end >> diff --git a/mag/mock_dac/sky130_fd_pr__pfet_g5v0d10v5_6H9SE5.mag b/mag/mock_dac/sky130_fd_pr__pfet_g5v0d10v5_6H9SE5.mag new file mode 100644 index 0000000..9aca93b --- /dev/null +++ b/mag/mock_dac/sky130_fd_pr__pfet_g5v0d10v5_6H9SE5.mag @@ -0,0 +1,99 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695142129 +<< nwell >> +rect -358 -397 358 397 +<< mvpmos >> +rect -100 -100 100 100 +<< mvpdiff >> +rect -158 88 -100 100 +rect -158 -88 -146 88 +rect -112 -88 -100 88 +rect -158 -100 -100 -88 +rect 100 88 158 100 +rect 100 -88 112 88 +rect 146 -88 158 88 +rect 100 -100 158 -88 +<< mvpdiffc >> +rect -146 -88 -112 88 +rect 112 -88 146 88 +<< mvnsubdiff >> +rect -292 319 292 331 +rect -292 285 -184 319 +rect 184 285 292 319 +rect -292 273 292 285 +rect -292 223 -234 273 +rect -292 -223 -280 223 +rect -246 -223 -234 223 +rect 234 223 292 273 +rect -292 -273 -234 -223 +rect 234 -223 246 223 +rect 280 -223 292 223 +rect 234 -273 292 -223 +rect -292 -285 292 -273 +rect -292 -319 -184 -285 +rect 184 -319 292 -285 +rect -292 -331 292 -319 +<< mvnsubdiffcont >> +rect -184 285 184 319 +rect -280 -223 -246 223 +rect 246 -223 280 223 +rect -184 -319 184 -285 +<< poly >> +rect -100 181 100 197 +rect -100 147 -84 181 +rect 84 147 100 181 +rect -100 100 100 147 +rect -100 -147 100 -100 +rect -100 -181 -84 -147 +rect 84 -181 100 -147 +rect -100 -197 100 -181 +<< polycont >> +rect -84 147 84 181 +rect -84 -181 84 -147 +<< locali >> +rect -280 285 -184 319 +rect 184 285 280 319 +rect -280 223 -246 285 +rect 246 223 280 285 +rect -100 147 -84 181 +rect 84 147 100 181 +rect -146 88 -112 104 +rect -146 -104 -112 -88 +rect 112 88 146 104 +rect 112 -104 146 -88 +rect -100 -181 -84 -147 +rect 84 -181 100 -147 +rect -280 -285 -246 -223 +rect 246 -285 280 -223 +rect -280 -319 -184 -285 +rect 184 -319 280 -285 +<< viali >> +rect -84 147 84 181 +rect -146 -88 -112 88 +rect 112 -88 146 88 +rect -84 -181 84 -147 +<< metal1 >> +rect -96 181 96 187 +rect -96 147 -84 181 +rect 84 147 96 181 +rect -96 141 96 147 +rect -152 88 -106 100 +rect -152 -88 -146 88 +rect -112 -88 -106 88 +rect -152 -100 -106 -88 +rect 106 88 152 100 +rect 106 -88 112 88 +rect 146 -88 152 88 +rect 106 -100 152 -88 +rect -96 -147 96 -141 +rect -96 -181 -84 -147 +rect 84 -181 96 -147 +rect -96 -187 96 -181 +<< properties >> +string FIXED_BBOX -263 -302 263 302 +string gencell sky130_fd_pr__pfet_g5v0d10v5 +string library sky130 +string parameters w 1 l 1 m 1 nf 1 diffcov 100 polycov 100 guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8 sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt sky130_fd_pr__pfet_g5v0d10v5} full_metal 1 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0 +<< end >> diff --git a/mag/mock_dac/sky130_fd_pr__res_iso_pw_25QSVZ.mag b/mag/mock_dac/sky130_fd_pr__res_iso_pw_25QSVZ.mag new file mode 100644 index 0000000..e9b3353 --- /dev/null +++ b/mag/mock_dac/sky130_fd_pr__res_iso_pw_25QSVZ.mag @@ -0,0 +1,186 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695142129 +<< dnwell >> +rect -1168 -5937 1168 5937 +<< nwell >> +rect -1248 5731 1248 6017 +rect -1248 -5731 -962 5731 +rect 962 -5731 1248 5731 +rect -1248 -6017 1248 -5731 +<< pwell >> +rect -962 5573 -140 5731 +rect -962 115 -140 273 +rect 140 5573 962 5731 +rect 140 115 962 273 +rect -962 -273 -140 -115 +rect -962 -5731 -140 -5573 +rect 140 -273 962 -115 +rect 140 -5731 962 -5573 +<< rpw >> +rect -962 273 -140 5573 +rect 140 273 962 5573 +rect -962 -5573 -140 -273 +rect 140 -5573 962 -273 +<< psubdiff >> +rect -922 5573 -898 5679 +rect -204 5573 -180 5679 +rect 180 5573 204 5679 +rect 898 5573 922 5679 +rect -922 167 -898 273 +rect -204 167 -180 273 +rect 180 167 204 273 +rect 898 167 922 273 +rect -922 -273 -898 -167 +rect -204 -273 -180 -167 +rect 180 -273 204 -167 +rect 898 -273 922 -167 +rect -922 -5679 -898 -5573 +rect -204 -5679 -180 -5573 +rect 180 -5679 204 -5573 +rect 898 -5679 922 -5573 +<< nsubdiff >> +rect -1122 5857 -1026 5891 +rect 1026 5857 1122 5891 +rect -1122 5795 -1088 5857 +rect 1088 5795 1122 5857 +rect -1122 -5857 -1088 -5795 +rect 1088 -5857 1122 -5795 +rect -1122 -5891 -1026 -5857 +rect 1026 -5891 1122 -5857 +<< psubdiffcont >> +rect -898 5573 -204 5679 +rect 204 5573 898 5679 +rect -898 167 -204 273 +rect 204 167 898 273 +rect -898 -273 -204 -167 +rect 204 -273 898 -167 +rect -898 -5679 -204 -5573 +rect 204 -5679 898 -5573 +<< nsubdiffcont >> +rect -1026 5857 1026 5891 +rect -1122 -5795 -1088 5795 +rect 1088 -5795 1122 5795 +rect -1026 -5891 1026 -5857 +<< locali >> +rect -1122 5857 -1026 5891 +rect 1026 5857 1122 5891 +rect -1122 5795 -1088 5857 +rect 1088 5795 1122 5857 +rect -914 5643 -898 5679 +rect -204 5643 -188 5679 +rect -914 5590 -910 5643 +rect -192 5590 -188 5643 +rect -914 5573 -898 5590 +rect -204 5573 -188 5590 +rect 188 5643 204 5679 +rect 898 5643 914 5679 +rect 188 5590 192 5643 +rect 910 5590 914 5643 +rect 188 5573 204 5590 +rect 898 5573 914 5590 +rect -914 256 -898 273 +rect -204 256 -188 273 +rect -914 203 -910 256 +rect -192 203 -188 256 +rect -914 167 -898 203 +rect -204 167 -188 203 +rect 188 256 204 273 +rect 898 256 914 273 +rect 188 203 192 256 +rect 910 203 914 256 +rect 188 167 204 203 +rect 898 167 914 203 +rect -914 -203 -898 -167 +rect -204 -203 -188 -167 +rect -914 -256 -910 -203 +rect -192 -256 -188 -203 +rect -914 -273 -898 -256 +rect -204 -273 -188 -256 +rect 188 -203 204 -167 +rect 898 -203 914 -167 +rect 188 -256 192 -203 +rect 910 -256 914 -203 +rect 188 -273 204 -256 +rect 898 -273 914 -256 +rect -914 -5590 -898 -5573 +rect -204 -5590 -188 -5573 +rect -914 -5643 -910 -5590 +rect -192 -5643 -188 -5590 +rect -914 -5679 -898 -5643 +rect -204 -5679 -188 -5643 +rect 188 -5590 204 -5573 +rect 898 -5590 914 -5573 +rect 188 -5643 192 -5590 +rect 910 -5643 914 -5590 +rect 188 -5679 204 -5643 +rect 898 -5679 914 -5643 +rect -1122 -5857 -1088 -5795 +rect 1088 -5857 1122 -5795 +rect -1122 -5891 -1026 -5857 +rect 1026 -5891 1122 -5857 +<< viali >> +rect -910 5590 -898 5643 +rect -898 5590 -204 5643 +rect -204 5590 -192 5643 +rect 192 5590 204 5643 +rect 204 5590 898 5643 +rect 898 5590 910 5643 +rect -910 203 -898 256 +rect -898 203 -204 256 +rect -204 203 -192 256 +rect 192 203 204 256 +rect 204 203 898 256 +rect 898 203 910 256 +rect -910 -256 -898 -203 +rect -898 -256 -204 -203 +rect -204 -256 -192 -203 +rect 192 -256 204 -203 +rect 204 -256 898 -203 +rect 898 -256 910 -203 +rect -910 -5643 -898 -5590 +rect -898 -5643 -204 -5590 +rect -204 -5643 -192 -5590 +rect 192 -5643 204 -5590 +rect 204 -5643 898 -5590 +rect 898 -5643 910 -5590 +<< metal1 >> +rect -922 5643 -180 5649 +rect -922 5590 -910 5643 +rect -192 5590 -180 5643 +rect -922 5584 -180 5590 +rect 180 5643 922 5649 +rect 180 5590 192 5643 +rect 910 5590 922 5643 +rect 180 5584 922 5590 +rect -922 256 -180 262 +rect -922 203 -910 256 +rect -192 203 -180 256 +rect -922 197 -180 203 +rect 180 256 922 262 +rect 180 203 192 256 +rect 910 203 922 256 +rect 180 197 922 203 +rect -922 -203 -180 -197 +rect -922 -256 -910 -203 +rect -192 -256 -180 -203 +rect -922 -262 -180 -256 +rect 180 -203 922 -197 +rect 180 -256 192 -203 +rect 910 -256 922 -203 +rect 180 -262 922 -256 +rect -922 -5590 -180 -5584 +rect -922 -5643 -910 -5590 +rect -192 -5643 -180 -5590 +rect -922 -5649 -180 -5643 +rect 180 -5590 922 -5584 +rect 180 -5643 192 -5590 +rect 910 -5643 922 -5590 +rect 180 -5649 922 -5643 +<< properties >> +string FIXED_BBOX -1105 -5874 1105 5874 +string gencell sky130_fd_pr__res_iso_pw +string library sky130 +string parameters w 4.110 l 26.50 m 2 nx 2 wmin 2.650 lmin 26.50 rho 975 val 6.694k dummy 0 dw 0.25 term 1.0 guard 1 endcov 100 full_metal 1 vias 1 viagb 0 viagt 0 viagl 0 viagr 0 +<< end >> diff --git a/mag/mock_dac/top_dac.mag b/mag/mock_dac/top_dac.mag new file mode 100644 index 0000000..4cafdb9 --- /dev/null +++ b/mag/mock_dac/top_dac.mag @@ -0,0 +1,27 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695288709 +<< metal1 >> +rect 0 164000 4000 168000 +rect 44000 164000 48000 168000 +rect 88000 164000 92000 168000 +rect 132000 164000 136000 168000 +rect 0 0 4000 4000 +rect 44000 0 48000 4000 +rect 88000 0 92000 4000 +rect 132000 0 136000 4000 +use dac dac_0 +timestamp 1695199131 +transform 1 0 119831 0 1 144764 +box -95 -1536 3512 14414 +<< labels >> +rlabel metal1 0 164000 4000 168000 1 bit3 +rlabel metal1 44000 164000 48000 168000 1 bit2 +rlabel metal1 88000 164000 92000 168000 1 bit1 +rlabel metal1 132000 164000 136000 168000 1 bit0 +rlabel metal1 0 0 4000 4000 1 power +rlabel metal1 44000 0 48000 4000 1 ground +rlabel metal1 88000 0 92000 4000 1 outsig +rlabel metal1 132000 0 136000 4000 1 vsw +<< end >> diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_6H9SE5.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_6H9SE5.mag new file mode 100644 index 0000000..9aca93b --- /dev/null +++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_6H9SE5.mag @@ -0,0 +1,99 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695142129 +<< nwell >> +rect -358 -397 358 397 +<< mvpmos >> +rect -100 -100 100 100 +<< mvpdiff >> +rect -158 88 -100 100 +rect -158 -88 -146 88 +rect -112 -88 -100 88 +rect -158 -100 -100 -88 +rect 100 88 158 100 +rect 100 -88 112 88 +rect 146 -88 158 88 +rect 100 -100 158 -88 +<< mvpdiffc >> +rect -146 -88 -112 88 +rect 112 -88 146 88 +<< mvnsubdiff >> +rect -292 319 292 331 +rect -292 285 -184 319 +rect 184 285 292 319 +rect -292 273 292 285 +rect -292 223 -234 273 +rect -292 -223 -280 223 +rect -246 -223 -234 223 +rect 234 223 292 273 +rect -292 -273 -234 -223 +rect 234 -223 246 223 +rect 280 -223 292 223 +rect 234 -273 292 -223 +rect -292 -285 292 -273 +rect -292 -319 -184 -285 +rect 184 -319 292 -285 +rect -292 -331 292 -319 +<< mvnsubdiffcont >> +rect -184 285 184 319 +rect -280 -223 -246 223 +rect 246 -223 280 223 +rect -184 -319 184 -285 +<< poly >> +rect -100 181 100 197 +rect -100 147 -84 181 +rect 84 147 100 181 +rect -100 100 100 147 +rect -100 -147 100 -100 +rect -100 -181 -84 -147 +rect 84 -181 100 -147 +rect -100 -197 100 -181 +<< polycont >> +rect -84 147 84 181 +rect -84 -181 84 -147 +<< locali >> +rect -280 285 -184 319 +rect 184 285 280 319 +rect -280 223 -246 285 +rect 246 223 280 285 +rect -100 147 -84 181 +rect 84 147 100 181 +rect -146 88 -112 104 +rect -146 -104 -112 -88 +rect 112 88 146 104 +rect 112 -104 146 -88 +rect -100 -181 -84 -147 +rect 84 -181 100 -147 +rect -280 -285 -246 -223 +rect 246 -285 280 -223 +rect -280 -319 -184 -285 +rect 184 -319 280 -285 +<< viali >> +rect -84 147 84 181 +rect -146 -88 -112 88 +rect 112 -88 146 88 +rect -84 -181 84 -147 +<< metal1 >> +rect -96 181 96 187 +rect -96 147 -84 181 +rect 84 147 96 181 +rect -96 141 96 147 +rect -152 88 -106 100 +rect -152 -88 -146 88 +rect -112 -88 -106 88 +rect -152 -100 -106 -88 +rect 106 88 152 100 +rect 106 -88 112 88 +rect 146 -88 152 88 +rect 106 -100 152 -88 +rect -96 -147 96 -141 +rect -96 -181 -84 -147 +rect 84 -181 96 -147 +rect -96 -187 96 -181 +<< properties >> +string FIXED_BBOX -263 -302 263 302 +string gencell sky130_fd_pr__pfet_g5v0d10v5 +string library sky130 +string parameters w 1 l 1 m 1 nf 1 diffcov 100 polycov 100 guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8 sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt sky130_fd_pr__pfet_g5v0d10v5} full_metal 1 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0 +<< end >> diff --git a/mag/sky130_fd_pr__res_iso_pw_25QSVZ.mag b/mag/sky130_fd_pr__res_iso_pw_25QSVZ.mag new file mode 100644 index 0000000..e9b3353 --- /dev/null +++ b/mag/sky130_fd_pr__res_iso_pw_25QSVZ.mag @@ -0,0 +1,186 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695142129 +<< dnwell >> +rect -1168 -5937 1168 5937 +<< nwell >> +rect -1248 5731 1248 6017 +rect -1248 -5731 -962 5731 +rect 962 -5731 1248 5731 +rect -1248 -6017 1248 -5731 +<< pwell >> +rect -962 5573 -140 5731 +rect -962 115 -140 273 +rect 140 5573 962 5731 +rect 140 115 962 273 +rect -962 -273 -140 -115 +rect -962 -5731 -140 -5573 +rect 140 -273 962 -115 +rect 140 -5731 962 -5573 +<< rpw >> +rect -962 273 -140 5573 +rect 140 273 962 5573 +rect -962 -5573 -140 -273 +rect 140 -5573 962 -273 +<< psubdiff >> +rect -922 5573 -898 5679 +rect -204 5573 -180 5679 +rect 180 5573 204 5679 +rect 898 5573 922 5679 +rect -922 167 -898 273 +rect -204 167 -180 273 +rect 180 167 204 273 +rect 898 167 922 273 +rect -922 -273 -898 -167 +rect -204 -273 -180 -167 +rect 180 -273 204 -167 +rect 898 -273 922 -167 +rect -922 -5679 -898 -5573 +rect -204 -5679 -180 -5573 +rect 180 -5679 204 -5573 +rect 898 -5679 922 -5573 +<< nsubdiff >> +rect -1122 5857 -1026 5891 +rect 1026 5857 1122 5891 +rect -1122 5795 -1088 5857 +rect 1088 5795 1122 5857 +rect -1122 -5857 -1088 -5795 +rect 1088 -5857 1122 -5795 +rect -1122 -5891 -1026 -5857 +rect 1026 -5891 1122 -5857 +<< psubdiffcont >> +rect -898 5573 -204 5679 +rect 204 5573 898 5679 +rect -898 167 -204 273 +rect 204 167 898 273 +rect -898 -273 -204 -167 +rect 204 -273 898 -167 +rect -898 -5679 -204 -5573 +rect 204 -5679 898 -5573 +<< nsubdiffcont >> +rect -1026 5857 1026 5891 +rect -1122 -5795 -1088 5795 +rect 1088 -5795 1122 5795 +rect -1026 -5891 1026 -5857 +<< locali >> +rect -1122 5857 -1026 5891 +rect 1026 5857 1122 5891 +rect -1122 5795 -1088 5857 +rect 1088 5795 1122 5857 +rect -914 5643 -898 5679 +rect -204 5643 -188 5679 +rect -914 5590 -910 5643 +rect -192 5590 -188 5643 +rect -914 5573 -898 5590 +rect -204 5573 -188 5590 +rect 188 5643 204 5679 +rect 898 5643 914 5679 +rect 188 5590 192 5643 +rect 910 5590 914 5643 +rect 188 5573 204 5590 +rect 898 5573 914 5590 +rect -914 256 -898 273 +rect -204 256 -188 273 +rect -914 203 -910 256 +rect -192 203 -188 256 +rect -914 167 -898 203 +rect -204 167 -188 203 +rect 188 256 204 273 +rect 898 256 914 273 +rect 188 203 192 256 +rect 910 203 914 256 +rect 188 167 204 203 +rect 898 167 914 203 +rect -914 -203 -898 -167 +rect -204 -203 -188 -167 +rect -914 -256 -910 -203 +rect -192 -256 -188 -203 +rect -914 -273 -898 -256 +rect -204 -273 -188 -256 +rect 188 -203 204 -167 +rect 898 -203 914 -167 +rect 188 -256 192 -203 +rect 910 -256 914 -203 +rect 188 -273 204 -256 +rect 898 -273 914 -256 +rect -914 -5590 -898 -5573 +rect -204 -5590 -188 -5573 +rect -914 -5643 -910 -5590 +rect -192 -5643 -188 -5590 +rect -914 -5679 -898 -5643 +rect -204 -5679 -188 -5643 +rect 188 -5590 204 -5573 +rect 898 -5590 914 -5573 +rect 188 -5643 192 -5590 +rect 910 -5643 914 -5590 +rect 188 -5679 204 -5643 +rect 898 -5679 914 -5643 +rect -1122 -5857 -1088 -5795 +rect 1088 -5857 1122 -5795 +rect -1122 -5891 -1026 -5857 +rect 1026 -5891 1122 -5857 +<< viali >> +rect -910 5590 -898 5643 +rect -898 5590 -204 5643 +rect -204 5590 -192 5643 +rect 192 5590 204 5643 +rect 204 5590 898 5643 +rect 898 5590 910 5643 +rect -910 203 -898 256 +rect -898 203 -204 256 +rect -204 203 -192 256 +rect 192 203 204 256 +rect 204 203 898 256 +rect 898 203 910 256 +rect -910 -256 -898 -203 +rect -898 -256 -204 -203 +rect -204 -256 -192 -203 +rect 192 -256 204 -203 +rect 204 -256 898 -203 +rect 898 -256 910 -203 +rect -910 -5643 -898 -5590 +rect -898 -5643 -204 -5590 +rect -204 -5643 -192 -5590 +rect 192 -5643 204 -5590 +rect 204 -5643 898 -5590 +rect 898 -5643 910 -5590 +<< metal1 >> +rect -922 5643 -180 5649 +rect -922 5590 -910 5643 +rect -192 5590 -180 5643 +rect -922 5584 -180 5590 +rect 180 5643 922 5649 +rect 180 5590 192 5643 +rect 910 5590 922 5643 +rect 180 5584 922 5590 +rect -922 256 -180 262 +rect -922 203 -910 256 +rect -192 203 -180 256 +rect -922 197 -180 203 +rect 180 256 922 262 +rect 180 203 192 256 +rect 910 203 922 256 +rect 180 197 922 203 +rect -922 -203 -180 -197 +rect -922 -256 -910 -203 +rect -192 -256 -180 -203 +rect -922 -262 -180 -256 +rect 180 -203 922 -197 +rect 180 -256 192 -203 +rect 910 -256 922 -203 +rect 180 -262 922 -256 +rect -922 -5590 -180 -5584 +rect -922 -5643 -910 -5590 +rect -192 -5643 -180 -5590 +rect -922 -5649 -180 -5643 +rect 180 -5590 922 -5584 +rect 180 -5643 192 -5590 +rect 910 -5643 922 -5590 +rect 180 -5649 922 -5643 +<< properties >> +string FIXED_BBOX -1105 -5874 1105 5874 +string gencell sky130_fd_pr__res_iso_pw +string library sky130 +string parameters w 4.110 l 26.50 m 2 nx 2 wmin 2.650 lmin 26.50 rho 975 val 6.694k dummy 0 dw 0.25 term 1.0 guard 1 endcov 100 full_metal 1 vias 1 viagb 0 viagt 0 viagl 0 viagr 0 +<< end >> diff --git a/mag/top_dac.mag b/mag/top_dac.mag new file mode 100644 index 0000000..4cafdb9 --- /dev/null +++ b/mag/top_dac.mag @@ -0,0 +1,27 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1695288709 +<< metal1 >> +rect 0 164000 4000 168000 +rect 44000 164000 48000 168000 +rect 88000 164000 92000 168000 +rect 132000 164000 136000 168000 +rect 0 0 4000 4000 +rect 44000 0 48000 4000 +rect 88000 0 92000 4000 +rect 132000 0 136000 4000 +use dac dac_0 +timestamp 1695199131 +transform 1 0 119831 0 1 144764 +box -95 -1536 3512 14414 +<< labels >> +rlabel metal1 0 164000 4000 168000 1 bit3 +rlabel metal1 44000 164000 48000 168000 1 bit2 +rlabel metal1 88000 164000 92000 168000 1 bit1 +rlabel metal1 132000 164000 136000 168000 1 bit0 +rlabel metal1 0 0 4000 4000 1 power +rlabel metal1 44000 0 48000 4000 1 ground +rlabel metal1 88000 0 92000 4000 1 outsig +rlabel metal1 132000 0 136000 4000 1 vsw +<< end >> diff --git a/mag/user_analog_proj_example.mag b/mag/user_analog_proj_example.mag index fcac6f8..cf24f5d 100644 --- a/mag/user_analog_proj_example.mag +++ b/mag/user_analog_proj_example.mag @@ -1,18 +1,8 @@ magic -tech $PDK -magscale 1 2 -timestamp 1639841760 -<< error_p >> -rect 5036 7870 5051 7898 -rect 5008 7676 5023 7870 -rect 20366 7862 20381 7890 -rect 20394 7668 20409 7862 -use example_por example_por_1 -timestamp 1639841760 -transform 1 0 14132 0 1 -22 -box 0 0 11344 8338 -use example_por example_por_0 -timestamp 1639841760 -transform -1 0 11285 0 1 -14 -box 0 0 11344 8338 +tech sky130A +timestamp 1695294858 +use top_dac top_dac_0 +timestamp 1695288709 +transform 1 0 7068 0 1 -9 +box 0 0 68000 84000 << end >> diff --git a/mag/user_analog_project_wrapper.gds b/mag/user_analog_project_wrapper.gds new file mode 100644 index 0000000..4bf2402 Binary files /dev/null and b/mag/user_analog_project_wrapper.gds differ diff --git a/verilog/rtl/user_analog_proj_dac.v b/verilog/rtl/user_analog_proj_dac.v new file mode 100644 index 0000000..94412da --- /dev/null +++ b/verilog/rtl/user_analog_proj_dac.v @@ -0,0 +1,221 @@ +// SPDX-FileCopyrightText: 2020 Efabless Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 + +`default_nettype none + +`include "example_por.v" + +/* + * I/O mapping for analog + * + * mprj_io[37] io_in/out/oeb/in_3v3[26] --- --- + * mprj_io[36] io_in/out/oeb/in_3v3[25] --- --- + * mprj_io[35] io_in/out/oeb/in_3v3[24] gpio_analog/noesd[17] --- + * mprj_io[34] io_in/out/oeb/in_3v3[23] gpio_analog/noesd[16] --- + * mprj_io[33] io_in/out/oeb/in_3v3[22] gpio_analog/noesd[15] --- + * mprj_io[32] io_in/out/oeb/in_3v3[21] gpio_analog/noesd[14] --- + * mprj_io[31] io_in/out/oeb/in_3v3[20] gpio_analog/noesd[13] --- + * mprj_io[30] io_in/out/oeb/in_3v3[19] gpio_analog/noesd[12] --- + * mprj_io[29] io_in/out/oeb/in_3v3[18] gpio_analog/noesd[11] --- + * mprj_io[28] io_in/out/oeb/in_3v3[17] gpio_analog/noesd[10] --- + * mprj_io[27] io_in/out/oeb/in_3v3[16] gpio_analog/noesd[9] --- + * mprj_io[26] io_in/out/oeb/in_3v3[15] gpio_analog/noesd[8] --- + * mprj_io[25] io_in/out/oeb/in_3v3[14] gpio_analog/noesd[7] --- + * mprj_io[24] --- --- user_analog[10] + * mprj_io[23] --- --- user_analog[9] + * mprj_io[22] --- --- user_analog[8] + * mprj_io[21] --- --- user_analog[7] + * mprj_io[20] --- --- user_analog[6] clamp[2] + * mprj_io[19] --- --- user_analog[5] clamp[1] + * mprj_io[18] --- --- user_analog[4] clamp[0] + * mprj_io[17] --- --- user_analog[3] + * mprj_io[16] --- --- user_analog[2] + * mprj_io[15] --- --- user_analog[1] + * mprj_io[14] --- --- user_analog[0] + * mprj_io[13] io_in/out/oeb/in_3v3[13] gpio_analog/noesd[6] --- + * mprj_io[12] io_in/out/oeb/in_3v3[12] gpio_analog/noesd[5] --- + * mprj_io[11] io_in/out/oeb/in_3v3[11] gpio_analog/noesd[4] --- + * mprj_io[10] io_in/out/oeb/in_3v3[10] gpio_analog/noesd[3] --- + * mprj_io[9] io_in/out/oeb/in_3v3[9] gpio_analog/noesd[2] --- + * mprj_io[8] io_in/out/oeb/in_3v3[8] gpio_analog/noesd[1] --- + * mprj_io[7] io_in/out/oeb/in_3v3[7] gpio_analog/noesd[0] --- + * mprj_io[6] io_in/out/oeb/in_3v3[6] --- --- + * mprj_io[5] io_in/out/oeb/in_3v3[5] --- --- + * mprj_io[4] io_in/out/oeb/in_3v3[4] --- --- + * mprj_io[3] io_in/out/oeb/in_3v3[3] --- --- + * mprj_io[2] io_in/out/oeb/in_3v3[2] --- --- + * mprj_io[1] io_in/out/oeb/in_3v3[1] --- --- + * mprj_io[0] io_in/out/oeb/in_3v3[0] --- --- + * + */ + +/* + *---------------------------------------------------------------- + * + * user_analog_proj_example + * + * This is an example of a (trivially simple) analog user project, + * showing how the user project can connect to the I/O pads, both + * the digital pads, the analog connection on the digital pads, + * and the dedicated analog pins used as an additional power supply + * input, with a connected ESD clamp. + * + * See the testbench in directory "mprj_por" for the example + * program that drives this user project. + * + *---------------------------------------------------------------- + */ + +module user_analog_proj_example ( +`ifdef USE_POWER_PINS + inout vdda1, // User area 1 3.3V supply + inout vdda2, // User area 2 3.3V supply + inout vssa1, // User area 1 analog ground + inout vssa2, // User area 2 analog ground + inout vccd1, // User area 1 1.8V supply + inout vccd2, // User area 2 1.8v supply + inout vssd1, // User area 1 digital ground + inout vssd2, // User area 2 digital ground +`endif + + // Wishbone Slave ports (WB MI A) + input wb_clk_i, + input wb_rst_i, + input wbs_stb_i, + input wbs_cyc_i, + input wbs_we_i, + input [3:0] wbs_sel_i, + input [31:0] wbs_dat_i, + input [31:0] wbs_adr_i, + output wbs_ack_o, + output [31:0] wbs_dat_o, + + // Logic Analyzer Signals + input [127:0] la_data_in, + output [127:0] la_data_out, + input [127:0] la_oenb, + + // IOs + input [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_in, + input [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_in_3v3, + output [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_out, + output [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_oeb, + + // GPIO-analog + inout [`MPRJ_IO_PADS-`ANALOG_PADS-10:0] gpio_analog, + inout [`MPRJ_IO_PADS-`ANALOG_PADS-10:0] gpio_noesd, + + // Dedicated analog + inout [`ANALOG_PADS-1:0] io_analog, + inout [2:0] io_clamp_high, + inout [2:0] io_clamp_low, + + // Clock + input user_clock2, + + // IRQ + output [2:0] irq +); + wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_in; + wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_in_3v3; + wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_out; + wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] io_oeb; + wire [`ANALOG_PADS-1:0] io_analog; + + // wire [31:0] rdata; + // wire [31:0] wdata; + + // wire valid; + // wire [3:0] wstrb; + + wire isupply; // Independent 3.3V supply + wire io16, io15, io12, io11; + + // WB MI A + // assign valid = wbs_cyc_i && wbs_stb_i; + // assign wstrb = wbs_sel_i & {4{wbs_we_i}}; + // assign wbs_dat_o = rdata; + // assign wdata = wbs_dat_i; + + // IO --- unused (no need to connect to anything) + // assign io_out[`MPRJ_IO_PADS-`ANALOG_PADS-1:17] = 0; + // assign io_out[14:13] = 11'b0; + // assign io_out[10:0] = 11'b0; + + // assign io_oeb[`MPRJ_IO_PADS-`ANALOG_PADS-1:17] = -1; + // assign io_oeb[14:13] = 11'b1; + // assign io_oeb[10:0] = 11'b1; + + // IO --- enable outputs on 11, 12, 15, and 16 + assign io_out[12:11] = {io12, io11}; + assign io_oeb[12:11] = {vssd1, vssd1}; + + assign io_out[16:15] = {io16, io15}; + assign io_oeb[16:15] = {vssd1, vssd1}; + + // IRQ + assign irq = 3'b000; // Unused + + // LA --- unused (no need to connect to anything) + // assign la_data_out = {128{1'b0}}; // Unused + + // Instantiate the POR. Connect the digital power to user area 1 + // VCCD, and connect the analog power to user area 1 VDDA. + + // Monitor the 3.3V output with mprj_io[10] = gpio_analog[3] + // Monitor the 1.8V outputs with mprj_io[11,12] = io_out[11,12] + + example_por por1 ( + `ifdef USE_POWER_PINS + .vdd3v3(vdda1), + .vdd1v8(vccd1), + .vss(vssa1), + `endif + .porb_h(gpio_analog[3]), // 3.3V domain output + .porb_l(io11), // 1.8V domain output + .por_l(io12) // 1.8V domain output + ); + + // Instantiate 2nd POR with the analog power supply on one of the + // analog pins. NOTE: io_analog[4] = mproj_io[18] and is the same + // pad with io_clamp_high/low[0]. + + `ifdef USE_POWER_PINS + assign isupply = io_analog[4]; + assign io_clamp_high[0] = isupply; + assign io_clamp_low[0] = vssa1; + + // Tie off remaining clamps + assign io_clamp_high[2:1] = vssa1; + assign io_clamp_low[2:1] = vssa1; + `endif + + // Monitor the 3.3V output with mprj_io[25] = gpio_analog[7] + // Monitor the 1.8V outputs with mprj_io[26,27] = io_out[15,16] + + example_por por2 ( + `ifdef USE_POWER_PINS + .vdd3v3(isupply), + .vdd1v8(vccd1), + .vss(vssa1), + `endif + .porb_h(gpio_analog[7]), // 3.3V domain output + .porb_l(io15), // 1.8V domain output + .por_l(io16) // 1.8V domain output + ); + +endmodule + +`default_nettype wire diff --git a/verilog/rtl/user_defines.v b/verilog/rtl/user_defines.v index ee44b08..88585d5 100644 --- a/verilog/rtl/user_defines.v +++ b/verilog/rtl/user_defines.v @@ -52,14 +52,14 @@ // up in a state that can be used immediately without depending on // the management SoC to run a startup program to configure the GPIOs. -`define USER_CONFIG_GPIO_5_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_6_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_7_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_8_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_9_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_10_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_11_INIT `GPIO_MODE_INVALID -`define USER_CONFIG_GPIO_12_INIT `GPIO_MODE_INVALID +`define USER_CONFIG_GPIO_5_INIT `GPIO_MODE_USER_STD_INPUT_NOPULL +`define USER_CONFIG_GPIO_6_INIT `GPIO_MODE_USER_STD_INPUT_NOPULL +`define USER_CONFIG_GPIO_7_INIT `GPIO_MODE_USER_STD_INPUT_NOPULL +`define USER_CONFIG_GPIO_8_INIT `GPIO_MODE_USER_STD_INPUT_NOPULL +`define USER_CONFIG_GPIO_9_INIT `GPIO_MODE_USER_STD_BIDIRECTIONAL +`define USER_CONFIG_GPIO_10_INIT `GPIO_MODE_USER_STD_BIDIRECTIONAL +`define USER_CONFIG_GPIO_11_INIT `GPIO_MODE_USER_STD_BIDIRECTIONAL +`define USER_CONFIG_GPIO_12_INIT `GPIO_MODE_USER_STD_OUTPUT `define USER_CONFIG_GPIO_13_INIT `GPIO_MODE_INVALID // Configurations of GPIO 14 to 24 are used on caravel but not caravan.