Merge branch 'caravel_redesign' into caravel_redesign-top-level

This commit is contained in:
marwaneltoukhy 2022-10-16 18:39:39 -07:00
commit 7ec1eeb010
21 changed files with 3240 additions and 591 deletions

View File

@ -778,7 +778,7 @@ COMPONENTS 624 ;
+ PLACED ( 204800 1744665 ) FE ;
- sky130_fd_sc_hd__tapvpwrvgnd_1_165 sky130_fd_sc_hd__tapvpwrvgnd_1
+ PLACED ( 202080 1744665 ) E ;
- sky130_fd_sc_hd__buf_8_150 sky130_fd_sc_hd__buf_8
- sky130_ef_sc_hd__decap_12_100 sky130_ef_sc_hd__decap_12
+ PLACED ( 207520 1745125 ) E ;
- sky130_fd_sc_hd__tapvpwrvgnd_1_162 sky130_fd_sc_hd__tapvpwrvgnd_1
+ PLACED ( 207520 1744665 ) E ;
@ -2122,7 +2122,7 @@ NONDEFAULTRULES 3 ;
+ LAYER met3 WIDTH 1850 ;
END NONDEFAULTRULES
NETS 265 ;
NETS 263 ;
- sky130_fd_sc_hd__buf_8_29/A ( sky130_fd_sc_hd__buf_8_29 A )
( sky130_fd_sc_hd__buf_8_19 X )
+ ROUTED met1 ( 3384835 3615175 ) mcon_170_1090
@ -5897,8 +5897,6 @@ NETS 265 ;
NEW met2 ( 205975 1740375 ) ( 206685 * )
NEW met2 ( 205975 1740195 ) ( 206685 * )
NEW met2 ( 741440 212790 ) ( 742390 * ) ;
- sky130_fd_sc_hd__buf_8_150/X ( sky130_fd_sc_hd__buf_8_150 X ) ;
- sky130_fd_sc_hd__buf_8_150/A ( sky130_fd_sc_hd__buf_8_150 A ) ;
- mgmt_io_in_unbuf[19] ( sky130_fd_sc_hd__buf_8_172 A )
+ ROUTED met1 ( 218665 3057740 ) ( * 3060710 )
NEW met1 ( 218665 3057600 ) ( 218945 * )
@ -6731,8 +6729,8 @@ NETS 265 ;
( sky130_fd_sc_hd__buf_8_151 VNB )
( sky130_fd_sc_hd__buf_8_0 VNB )
( sky130_fd_sc_hd__tapvpwrvgnd_1_162 VGND )
( sky130_fd_sc_hd__buf_8_150 VNB )
( sky130_fd_sc_hd__buf_8_150 VGND )
( sky130_ef_sc_hd__decap_12_100 VNB )
( sky130_ef_sc_hd__decap_12_100 VGND )
( sky130_fd_sc_hd__tapvpwrvgnd_1_165 VGND )
( sky130_fd_sc_hd__buf_8_152 VGND )
( sky130_fd_sc_hd__buf_8_153 VGND )
@ -7927,8 +7925,8 @@ NETS 265 ;
( sky130_fd_sc_hd__buf_8_151 VPB )
( sky130_fd_sc_hd__buf_8_0 VPB )
( sky130_fd_sc_hd__tapvpwrvgnd_1_162 VPWR )
( sky130_fd_sc_hd__buf_8_150 VPWR )
( sky130_fd_sc_hd__buf_8_150 VPB )
( sky130_ef_sc_hd__decap_12_100 VPWR )
( sky130_ef_sc_hd__decap_12_100 VPB )
( sky130_fd_sc_hd__tapvpwrvgnd_1_165 VPWR )
( sky130_fd_sc_hd__tapvpwrvgnd_1_164 VPWR )
( sky130_fd_sc_hd__buf_8_153 VPWR )

View File

@ -16,15 +16,21 @@ VIAS 18 ;
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( 245 -75 ) ( 395 75 )
+ RECT via ( 565 -75 ) ( 715 75 ) ;
- via_260_260_hv
+ RECT met1 ( -160 -130 ) ( 160 130 )
+ RECT met2 ( -130 -160 ) ( 130 160 )
+ RECT via ( -75 -75 ) ( 75 75 ) ;
- via_260_660_vh
+ RECT met1 ( -130 -360 ) ( 130 360 )
+ RECT met2 ( -160 -330 ) ( 160 330 )
+ RECT via ( -75 -235 ) ( 75 -85 )
+ RECT via ( -75 85 ) ( 75 235 ) ;
- via_260_260_hv
+ RECT met1 ( -160 -130 ) ( 160 130 )
+ RECT met2 ( -130 -160 ) ( 130 160 )
+ RECT via ( -75 -75 ) ( 75 75 ) ;
- via_1090_260_hv
+ RECT met1 ( -575 -130 ) ( 575 130 )
+ RECT met2 ( -545 -160 ) ( 545 160 )
+ RECT via ( -395 -75 ) ( -245 75 )
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( 245 -75 ) ( 395 75 ) ;
- via_300_1785_hh
+ RECT met1 ( -180 -892.5 ) ( 180 892.5 )
+ RECT met2 ( -180 -892.5 ) ( 180 892.5 )
@ -33,12 +39,6 @@ VIAS 18 ;
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( -75 245 ) ( 75 395 )
+ RECT via ( -75 565 ) ( 75 715 ) ;
- via_1090_260_hv
+ RECT met1 ( -575 -130 ) ( 575 130 )
+ RECT met2 ( -545 -160 ) ( 545 160 )
+ RECT via ( -395 -75 ) ( -245 75 )
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( 245 -75 ) ( 395 75 ) ;
- via_260_260_vh
+ RECT met1 ( -130 -160 ) ( 130 160 )
+ RECT met2 ( -160 -130 ) ( 160 130 )
@ -60,12 +60,6 @@ VIAS 18 ;
+ RECT mcon ( -85 -445 ) ( 85 -275 )
+ RECT mcon ( -85 -85 ) ( 85 85 )
+ RECT mcon ( -85 275 ) ( 85 445 ) ;
- via_260_1090_vh
+ RECT met1 ( -130 -575 ) ( 130 575 )
+ RECT met2 ( -160 -545 ) ( 160 545 )
+ RECT via ( -75 -395 ) ( 75 -245 )
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( -75 245 ) ( 75 395 ) ;
- via_1785_300_hh
+ RECT met1 ( -922.5 -150 ) ( 922.5 150 )
+ RECT met2 ( -922.5 -150 ) ( 922.5 150 )
@ -74,6 +68,12 @@ VIAS 18 ;
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( 245 -75 ) ( 395 75 )
+ RECT via ( 565 -75 ) ( 715 75 ) ;
- via_260_1090_vh
+ RECT met1 ( -130 -575 ) ( 130 575 )
+ RECT met2 ( -160 -545 ) ( 160 545 )
+ RECT via ( -75 -395 ) ( 75 -245 )
+ RECT via ( -75 -75 ) ( 75 75 )
+ RECT via ( -75 245 ) ( 75 395 ) ;
- mcon_1090_170
+ RECT li1 ( -545 -85 ) ( 545 85 )
+ RECT met1 ( -575 -115 ) ( 575 115 )
@ -927,11 +927,6 @@ PINS 98 ;
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -627.5 -70 ) ( 627.5 70 ) + PLACED ( 665242.5 221390 ) N ;
- mgmt_io_in_unbuf[9] + NET mgmt_io_in_unbuf[9]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 220065 3058127.5 ) N ;
- vssd + NET vssd
+ DIRECTION INPUT
+ USE GROUND
@ -952,16 +947,6 @@ PINS 98 ;
+ USE POWER
+ PORT
+ LAYER met3 ( -225 -742.5 ) ( 225 742.5 ) + PLACED ( 200490 3017942.5 ) N ;
- mgmt_io_in_unbuf[7] + NET mgmt_io_in_unbuf[7]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 217825 3062127.5 ) N ;
- mgmt_io_in_unbuf[8] + NET mgmt_io_in_unbuf[8]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 218945 3060127.5 ) N ;
- mgmt_io_in_unbuf[15] + NET mgmt_io_in_unbuf[15]
+ DIRECTION INPUT
+ USE SIGNAL
@ -982,16 +967,6 @@ PINS 98 ;
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -735 ) ( 70 735 ) + PLACED ( 223285 1772915 ) N ;
- mgmt_io_in_unbuf[11] + NET mgmt_io_in_unbuf[11]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 222305 3054127.5 ) N ;
- mgmt_io_in_unbuf[10] + NET mgmt_io_in_unbuf[10]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 221185 3056127.5 ) N ;
- mgmt_io_in_buf[4] + NET mgmt_io_in_buf[4]
+ DIRECTION OUTPUT
+ USE SIGNAL
@ -1242,31 +1217,6 @@ PINS 98 ;
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -717.5 ) ( 70 717.5 ) + PLACED ( 3370290 3639887.5 ) N ;
- mgmt_io_out_buf[7] + NET mgmt_io_out_buf[7]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 218385 3061127.5 ) N ;
- mgmt_io_out_buf[8] + NET mgmt_io_out_buf[8]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 219505 3059127.5 ) N ;
- mgmt_io_out_buf[9] + NET mgmt_io_out_buf[9]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 220625 3057127.5 ) N ;
- mgmt_io_out_buf[10] + NET mgmt_io_out_buf[10]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 221745 3055127.5 ) N ;
- mgmt_io_out_buf[11] + NET mgmt_io_out_buf[11]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 222865 3053127.5 ) N ;
- mgmt_io_out_buf[12] + NET mgmt_io_out_buf[12]
+ DIRECTION OUTPUT
+ USE SIGNAL
@ -1307,6 +1257,44 @@ PINS 98 ;
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -627.5 -70 ) ( 627.5 70 ) + PLACED ( 662382.5 222930 ) N ;
- mgmt_io_out_buf[11] + NET mgmt_io_out_buf[11]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 222865 3053127.5 ) N ;
- mgmt_io_out_buf[10] + NET mgmt_io_out_buf[10]
+ DIRECTION OUTPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 221745 3055127.5 ) N ;
- mgmt_io_in_unbuf[10] + NET mgmt_io_in_unbuf[10]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 221185 3056127.5 ) N ;
- mgmt_io_in_unbuf[11] + NET mgmt_io_in_unbuf[11]
+ DIRECTION INPUT
+ USE SIGNAL
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 222305 3054127.5 ) N ;
- mgmt_io_out_buf[9] + NET mgmt_io_out_buf[9]
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 220625 3057322.5 ) N ;
- mgmt_io_in_unbuf[9] + NET mgmt_io_in_unbuf[9]
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 220065 3058322.5 ) N ;
- mgmt_io_out_buf[8] + NET mgmt_io_out_buf[8]
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 219505 3059322.5 ) N ;
- mgmt_io_in_unbuf[8] + NET mgmt_io_in_unbuf[8]
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 218945 3060322.5 ) N ;
- mgmt_io_out_buf[7] + NET mgmt_io_out_buf[7]
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 218385 3061187.5 ) N ;
- mgmt_io_in_unbuf[7] + NET mgmt_io_in_unbuf[7]
+ PORT
+ LAYER met1 ( -70 -652.5 ) ( 70 652.5 ) + PLACED ( 217825 3062187.5 ) N ;
END PINS
NONDEFAULTRULES 4 ;
@ -2787,7 +2775,7 @@ NETS 147 ;
NEW met1 ( 203105 2997310 ) ( 203225 * )
NEW met1 ( 203165 2997845 ) via_260_1090_vh ;
- mgmt_io_in_unbuf[9] ( sky130_fd_sc_hd__buf_8_175 A )
+ ROUTED met1 ( 220065 3002785 ) ( * 3058710 )
+ ROUTED met1 ( 220065 3002785 ) ( * 3058905 )
NEW met1 ( 219945 3002645 ) ( 220065 * )
NEW met1 ( 220005 3002555 ) via_260_260_vh ( * 3002495 )
( 221530 * )
@ -2916,7 +2904,7 @@ NETS 147 ;
NEW met2 ( 3366060 2219805 ) ( 3367490 * )
NEW met1 ( 3367630 2219775 ) ( 3367750 * ) ;
- mgmt_io_out_buf[9] ( sky130_fd_sc_hd__buf_8_174 X )
+ ROUTED met1 ( 220625 3055225 ) ( * 3057710 )
+ ROUTED met1 ( 220625 3055225 ) ( * 3057905 )
NEW met1 ( 220345 3055085 ) ( 220625 * )
NEW met1 ( 220345 3001815 ) ( * 3054945 )
NEW met1 ( 220225 3001675 ) ( 220345 * )
@ -3113,9 +3101,9 @@ NETS 147 ;
NEW met1 ( 203105 3003290 ) ( 203225 * )
NEW met1 ( 203165 3003825 ) via_260_1090_vh ;
- mgmt_io_out_buf[8] ( sky130_fd_sc_hd__buf_8_173 X )
+ ROUTED met1 ( 219505 3057280 ) ( * 3059710 )
NEW met1 ( 219225 3057140 ) ( 219505 * )
NEW met1 ( 219225 3007795 ) ( * 3057000 )
+ ROUTED met1 ( 219505 3057440 ) ( * 3059905 )
NEW met1 ( 219225 3057300 ) ( 219505 * )
NEW met1 ( 219225 3007795 ) ( * 3057160 )
NEW met1 ( 219105 3007655 ) ( 219225 * )
NEW met1 ( 219165 3007565 ) via_260_260_vh ( * 3007505 )
( 221530 * )
@ -3237,7 +3225,7 @@ NETS 147 ;
NEW met1 ( 2168770 212875 ) via_260_850_vh
NEW met1 ( 2168775 212875 ) mcon_170_850 ;
- mgmt_io_in_unbuf[8] ( sky130_fd_sc_hd__buf_8_172 A )
+ ROUTED met1 ( 218945 3008765 ) ( * 3060710 )
+ ROUTED met1 ( 218945 3008765 ) ( * 3060905 )
NEW met1 ( 218825 3008625 ) ( 218945 * )
NEW met1 ( 218885 3008535 ) via_260_260_vh ( * 3008475 )
( 221530 * )
@ -3356,7 +3344,7 @@ NETS 147 ;
NEW li1 ( 2169725 215935 ) mcon_1090_170
NEW met2 ( 2169250 215850 ) ( 2170200 * ) ;
- mgmt_io_in_unbuf[7] ( sky130_fd_sc_hd__buf_8_171 A )
+ ROUTED met1 ( 217825 3014745 ) ( * 3062710 )
+ ROUTED met1 ( 217825 3014745 ) ( * 3062770 )
NEW met1 ( 217705 3014605 ) ( 217825 * )
NEW met1 ( 217765 3014515 ) via_260_260_vh ( * 3014455 )
( 221530 * )
@ -3429,7 +3417,7 @@ NETS 147 ;
NEW li1 ( 2163745 215935 ) mcon_1090_170
NEW met2 ( 2163270 215850 ) ( 2164220 * ) ;
- mgmt_io_out_buf[7] ( sky130_fd_sc_hd__buf_8_170 X )
+ ROUTED met1 ( 218385 3059305 ) ( * 3061710 )
+ ROUTED met1 ( 218385 3059305 ) ( * 3061770 )
NEW met1 ( 218105 3059165 ) ( 218385 * )
NEW met1 ( 218105 3013775 ) ( * 3059025 )
NEW met1 ( 217985 3013635 ) ( 218105 * )

Binary file not shown.

Binary file not shown.

View File

@ -231,30 +231,6 @@ MACRO gpio_signal_buffering_alt
RECT 3364.340 1184.250 3364.480 1185.685 ;
END
END mgmt_io_in_buf[0]
PIN mgmt_io_out_buf[7]
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER met1 ;
RECT 218.315 3060.475 218.455 3061.780 ;
END
END mgmt_io_out_buf[7]
PIN mgmt_io_out_buf[8]
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER met1 ;
RECT 219.435 3058.475 219.575 3059.780 ;
END
END mgmt_io_out_buf[8]
PIN mgmt_io_out_buf[9]
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER met1 ;
RECT 220.555 3056.475 220.695 3057.780 ;
END
END mgmt_io_out_buf[9]
PIN mgmt_io_out_buf[10]
DIRECTION OUTPUT ;
USE SIGNAL ;
@ -287,30 +263,6 @@ MACRO gpio_signal_buffering_alt
RECT 221.115 3055.475 221.255 3056.780 ;
END
END mgmt_io_in_unbuf[10]
PIN mgmt_io_in_unbuf[9]
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER met1 ;
RECT 219.995 3057.475 220.135 3058.780 ;
END
END mgmt_io_in_unbuf[9]
PIN mgmt_io_in_unbuf[8]
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER met1 ;
RECT 218.875 3059.475 219.015 3060.780 ;
END
END mgmt_io_in_unbuf[8]
PIN mgmt_io_in_unbuf[7]
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER met1 ;
RECT 217.755 3061.475 217.895 3062.780 ;
END
END mgmt_io_in_unbuf[7]
PIN mgmt_io_out_buf[12]
DIRECTION OUTPUT ;
USE SIGNAL ;
@ -751,6 +703,42 @@ MACRO gpio_signal_buffering_alt
RECT 200.265 3017.200 200.715 3018.685 ;
END
END vccd
PIN mgmt_io_out_buf[9]
PORT
LAYER met1 ;
RECT 220.555 3056.670 220.695 3057.975 ;
END
END mgmt_io_out_buf[9]
PIN mgmt_io_in_unbuf[9]
PORT
LAYER met1 ;
RECT 219.995 3057.670 220.135 3058.975 ;
END
END mgmt_io_in_unbuf[9]
PIN mgmt_io_out_buf[8]
PORT
LAYER met1 ;
RECT 219.435 3058.670 219.575 3059.975 ;
END
END mgmt_io_out_buf[8]
PIN mgmt_io_in_unbuf[8]
PORT
LAYER met1 ;
RECT 218.875 3059.670 219.015 3060.975 ;
END
END mgmt_io_in_unbuf[8]
PIN mgmt_io_out_buf[7]
PORT
LAYER met1 ;
RECT 218.315 3060.535 218.455 3061.840 ;
END
END mgmt_io_out_buf[7]
PIN mgmt_io_in_unbuf[7]
PORT
LAYER met1 ;
RECT 217.755 3061.535 217.895 3062.840 ;
END
END mgmt_io_in_unbuf[7]
OBS
LAYER nwell ;
RECT 3377.675 3601.870 3379.280 3608.690 ;
@ -12146,8 +12134,8 @@ MACRO gpio_signal_buffering_alt
RECT 205.735 2986.200 206.705 2986.460 ;
RECT 207.170 2984.730 207.650 3024.940 ;
RECT 209.890 2984.730 210.370 3019.030 ;
RECT 217.755 3014.675 217.895 3061.475 ;
RECT 218.315 3059.235 218.455 3060.475 ;
RECT 217.755 3014.675 217.895 3061.535 ;
RECT 218.315 3059.235 218.455 3060.535 ;
RECT 217.635 3014.355 217.895 3014.675 ;
RECT 218.035 3059.095 218.455 3059.235 ;
RECT 218.035 3013.705 218.175 3059.095 ;
@ -12197,11 +12185,11 @@ MACRO gpio_signal_buffering_alt
RECT 217.495 1726.450 217.755 1726.770 ;
RECT 217.895 3009.520 218.155 3009.840 ;
RECT 217.895 1725.800 218.035 3009.520 ;
RECT 218.875 3008.695 219.015 3059.475 ;
RECT 219.435 3057.210 219.575 3058.475 ;
RECT 218.875 3008.695 219.015 3059.670 ;
RECT 219.435 3057.370 219.575 3058.670 ;
RECT 218.755 3008.375 219.015 3008.695 ;
RECT 219.155 3057.070 219.575 3057.210 ;
RECT 219.155 3007.725 219.295 3057.070 ;
RECT 219.155 3057.230 219.575 3057.370 ;
RECT 219.155 3007.725 219.295 3057.230 ;
RECT 219.035 3007.405 219.295 3007.725 ;
RECT 217.775 1725.480 218.035 1725.800 ;
RECT 218.735 3004.160 218.995 3004.480 ;
@ -12213,8 +12201,8 @@ MACRO gpio_signal_buffering_alt
RECT 218.615 1720.470 218.875 1720.790 ;
RECT 219.015 3003.540 219.275 3003.860 ;
RECT 219.015 1719.820 219.155 3003.540 ;
RECT 219.995 3002.715 220.135 3057.475 ;
RECT 220.555 3055.155 220.695 3056.475 ;
RECT 219.995 3002.715 220.135 3057.670 ;
RECT 220.555 3055.155 220.695 3056.670 ;
RECT 219.875 3002.395 220.135 3002.715 ;
RECT 220.275 3055.015 220.695 3055.155 ;
RECT 220.275 3001.745 220.415 3055.015 ;

View File

@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
timestamp 1665943375
timestamp 1665957051
<< locali >>
rect 416588 996667 416806 996673
rect 661989 996585 662207 996591
@ -7576,6 +7576,10 @@ use sky130_ef_sc_hd__decap_12 sky130_ef_sc_hd__decap_12_99
timestamp 1663859327
transform 0 -1 676117 -1 0 441604
box -38 -48 1142 592
use sky130_ef_sc_hd__decap_12 sky130_ef_sc_hd__decap_12_100
timestamp 1663859327
transform 0 1 41504 -1 0 350129
box -38 -48 1142 592
use sky130_fd_sc_hd__buf_8 sky130_fd_sc_hd__buf_8_0 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
timestamp 1663859327
transform 0 -1 41504 -1 0 351325
@ -8172,10 +8176,6 @@ use sky130_fd_sc_hd__buf_8 sky130_fd_sc_hd__buf_8_149
timestamp 1663859327
transform 0 -1 41504 -1 0 345345
box -38 -48 1142 592
use sky130_fd_sc_hd__buf_8 sky130_fd_sc_hd__buf_8_150
timestamp 1663859327
transform 0 1 41504 -1 0 350129
box -38 -48 1142 592
use sky130_fd_sc_hd__buf_8 sky130_fd_sc_hd__buf_8_151
timestamp 1663859327
transform 0 1 40416 1 0 350221

View File

@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
timestamp 1665943807
timestamp 1665967863
<< locali >>
rect 676332 721460 676338 721678
rect 41261 602778 41267 602996
@ -311,8 +311,8 @@ rect 41978 603414 42000 603771
rect 42060 603414 42074 603771
rect 41219 602996 41271 603008
rect 41978 603006 42074 603414
rect 43551 602935 43579 612556
rect 43663 611847 43691 612356
rect 43551 602935 43579 612568
rect 43663 611847 43691 612368
rect 43527 602929 43579 602935
rect 43527 602871 43579 602877
rect 43607 611819 43691 611847
@ -384,12 +384,12 @@ rect 43579 601962 43631 601968
rect 43579 601904 43631 601910
rect 41241 345185 41293 345197
rect 43579 345160 43607 601904
rect 43775 601739 43803 612156
rect 43887 611442 43915 611956
rect 43775 601739 43803 612195
rect 43887 611474 43915 611995
rect 43751 601733 43803 601739
rect 43751 601675 43803 601681
rect 43831 611414 43915 611442
rect 43831 601545 43859 611414
rect 43831 611446 43915 611474
rect 43831 601545 43859 611446
rect 43807 601539 43859 601545
rect 43807 601481 43859 601487
rect 43555 345154 43607 345160
@ -480,8 +480,8 @@ rect 43723 344094 43775 344100
rect 43803 600766 43855 600772
rect 43803 600708 43855 600714
rect 43803 343964 43831 600708
rect 43999 600543 44027 611756
rect 44111 611031 44139 611556
rect 43999 600543 44027 611795
rect 44111 611031 44139 611595
rect 43975 600537 44027 600543
rect 43975 600479 44027 600485
rect 44055 611003 44139 611031
@ -5363,8 +5363,6 @@ flabel metal1 132723 44376 132974 44404 0 FreeSans 288 0 0 0 mgmt_io_oeb_buf[0]
port 91 nsew signal output
flabel metal1 132923 44264 133174 44292 0 FreeSans 288 0 0 0 mgmt_io_oeb_buf[1]
port 92 nsew signal output
flabel metal1 43999 611495 44027 611756 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[9]
port 70 nsew signal input
flabel metal3 40074 346985 40164 347282 0 FreeSans 400 90 0 0 vssd
port 135 nsew ground input
flabel metal3 40076 345792 40166 346089 0 FreeSans 400 90 0 0 vccd
@ -5373,10 +5371,6 @@ flabel metal3 40053 604641 40143 604938 0 FreeSans 400 90 0 0 vssd
port 135 nsew ground input
flabel metal3 40053 603440 40143 603737 0 FreeSans 400 90 0 0 vccd
port 136 nsew power input
flabel metal1 43551 612295 43579 612556 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[7]
port 72 nsew signal input
flabel metal1 43775 611895 43803 612156 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[8]
port 71 nsew signal input
flabel metal1 45315 353236 45343 353530 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[15]
port 78 nsew signal input
flabel metal1 45091 353636 45119 353930 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[14]
@ -5385,10 +5379,6 @@ flabel metal1 44867 354036 44895 354330 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[1
port 80 nsew signal input
flabel metal1 44643 354436 44671 354730 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[12]
port 81 nsew signal input
flabel metal1 44447 610695 44475 610956 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[11]
port 68 nsew signal input
flabel metal1 44223 611095 44251 611356 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[10]
port 69 nsew signal input
flabel metal1 673764 235250 673792 235537 0 FreeSans 288 90 0 0 mgmt_io_in_buf[4]
port 44 nsew signal output
flabel metal1 674212 234450 674240 234737 0 FreeSans 288 90 0 0 mgmt_io_in_buf[6]
@ -5489,16 +5479,6 @@ flabel metal1 673848 455768 673876 456055 0 FreeSans 288 90 0 0 mgmt_io_out_buf[
port 24 nsew signal output
flabel metal1 674044 727834 674072 728121 0 FreeSans 288 90 0 0 mgmt_io_out_buf[6]
port 12 nsew signal output
flabel metal1 43663 612095 43691 612356 0 FreeSans 288 90 0 0 mgmt_io_out_buf[7]
port 63 nsew signal output
flabel metal1 43887 611695 43915 611956 0 FreeSans 288 90 0 0 mgmt_io_out_buf[8]
port 64 nsew signal output
flabel metal1 44111 611295 44139 611556 0 FreeSans 288 90 0 0 mgmt_io_out_buf[9]
port 65 nsew signal output
flabel metal1 44335 610895 44363 611156 0 FreeSans 288 90 0 0 mgmt_io_out_buf[10]
port 66 nsew signal output
flabel metal1 44559 610495 44587 610756 0 FreeSans 288 90 0 0 mgmt_io_out_buf[11]
port 67 nsew signal output
flabel metal1 44755 354236 44783 354530 0 FreeSans 288 90 0 0 mgmt_io_out_buf[12]
port 74 nsew signal output
flabel metal1 44979 353836 45007 354130 0 FreeSans 288 90 0 0 mgmt_io_out_buf[13]
@ -5515,6 +5495,26 @@ flabel metal1 131951 44740 132202 44768 0 FreeSans 288 0 0 0 mgmt_io_out_buf[18]
port 85 nsew signal output
flabel metal1 132351 44572 132602 44600 0 FreeSans 288 0 0 0 mgmt_io_out_buf[19]
port 86 nsew signal output
flabel metal1 44559 610495 44587 610756 0 FreeSans 288 90 0 0 mgmt_io_out_buf[11]
port 67 nsew signal output
flabel metal1 44335 610895 44363 611156 0 FreeSans 288 90 0 0 mgmt_io_out_buf[10]
port 66 nsew signal output
flabel metal1 44223 611095 44251 611356 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[10]
port 69 nsew signal input
flabel metal1 44447 610695 44475 610956 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[11]
port 68 nsew signal input
flabel metal1 44111 611334 44139 611595 0 FreeSans 288 90 0 0 mgmt_io_out_buf[9]
port 137 nsew
flabel metal1 43999 611534 44027 611795 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[9]
port 138 nsew
flabel metal1 43887 611734 43915 611995 0 FreeSans 288 90 0 0 mgmt_io_out_buf[8]
port 140 nsew
flabel metal1 43775 611934 43803 612195 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[8]
port 141 nsew
flabel metal1 43663 612107 43691 612368 0 FreeSans 288 90 0 0 mgmt_io_out_buf[7]
port 142 nsew
flabel metal1 43551 612307 43579 612568 0 FreeSans 288 90 0 0 mgmt_io_in_unbuf[7]
port 143 nsew
<< properties >>
string FIXED_BBOX 0 0 717600 1037600
<< end >>

View File

@ -26,7 +26,7 @@ ce49f9af199b5f16d2c39c417d58e5890bc7bab2 verilog/rtl/digital_pll_controller.v
9c92ddf1391fa75ee906e452e168ca2cdd23bd18 verilog/rtl/gpio_defaults_block.v
32d395d5936632f3c92a0de4867d6dd7cd4af1bb verilog/rtl/gpio_logic_high.v
095aba3128be2f6f776ddf66596249c85471cd75 verilog/rtl/gpio_signal_buffering.v
c710b0f81476b05e26edbf7d62c1b4b30486d9ff verilog/rtl/gpio_signal_buffering_alt.v
1a7e1e050b963054f5b62784249f713c90eaaaf0 verilog/rtl/gpio_signal_buffering_alt.v
4290fcaf6bbcff701c2c47c7a23ce4fd4698e888 verilog/rtl/housekeeping.v
3030f955d5f110d24012bd1562c0e18c1a0d04e2 verilog/rtl/housekeeping_spi.v
ee3fbd794fcc6d221562147b09891e315873ac4c verilog/rtl/mgmt_protect.v

View File

@ -230,6 +230,9 @@ if {\
}
proc report_results {design rc_corner proc_corner} {
report_global_timing -separate_all_groups -significant_digits 4 > $::env(OUT_DIR)/reports/${rc_corner}/${design}.${proc_corner}${proc_corner}-global.rpt
report_analysis_coverage -significant_digits 4 -nosplit -status_details {untested} > $::env(OUT_DIR)/reports/${rc_corner}/${design}.${proc_corner}${proc_corner}-coverage.rpt
report_constraint -all_violators -significant_digits 4 -nosplit > $::env(OUT_DIR)/reports/${rc_corner}/${design}.${proc_corner}${proc_corner}-all_viol.rpt
report_timing -delay min -path_type full_clock_expanded -transition_time -capacitance -nets -nosplit \

View File

@ -151,7 +151,7 @@ def run_sta(caravel_root, mcw_root, pt_lib_root, log_dir, signoff_dir, design):
"-d",
f"{design}",
"-o",
f"{signoff_dir}/{design}/standalone_pvr",
f"{signoff_dir}/{design}",
"-l",
f"{log_dir}",
]

View File

@ -42,7 +42,7 @@ from tests.timer.timer import *
from tests.uart.uart import *
from tests.spi_master.spi_master import *
from tests.logicAnalyzer.la import *
from tests.debug.debug import *
# archive tests

View File

@ -2,273 +2,12 @@
"Tests": {
"_comment0" :"level is priorty of the test low is better, SW spcify if the test uses SW, RTL regressions run this test in RTL ",
"_comment1" :"GL regressions run this test in gatelevel, GL_SDF regression run this test with SDF included"
,"bitbang_no_cpu_all_o" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":[],
"GL_SDF":[],
"description":"test disable CPU and control the wishbone to configure gpio[4:37] as mgmt output using bitbang and check them"}
,"bitbang_cpu_all_o" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt output using bitbang and check them"}
,"gpio_all_o" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt output using automatic approach firmware and check them"}
,"gpio_all_o_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user output using automatic approach firmware and check them"}
,"gpio_all_i" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt input using automatic approach firmware and check them"}
,"gpio_all_i_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user input using automatic approach firmware and check them"}
,"gpio_all_i_pu" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt input pull up using automatic approach firmware and check them"}
,"gpio_all_i_pu_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user input pull up using automatic approach firmware and check them"}
,"gpio_all_i_pd" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt input pull down using automatic approach firmware and check them"}
,"gpio_all_i_pd_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user input pull down using automatic approach firmware and check them"}
,"gpio_all_bidir_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user bidir using automatic approach firmware and check them"}
,"bitbang_cpu_all_10" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 10"}
,"bitbang_cpu_all_01" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 01"}
,"bitbang_cpu_all_1100" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 1100"}
,"bitbang_cpu_all_0011" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 0011"}
,"bitbang_no_cpu_all_i" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":[],
"GL_SDF":[],
"description":"test disable CPU and control the wishbone to configure gpio[0:31] as mgmt input using bitbang and check them"}
,"bitbang_cpu_all_i" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":" configure gpio[0:37] as mgmt input using bitbang and check them"}
,"bitbang_spi_o" :{"level":0,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"SW":true,
"description":"Same as bitbang_cpu_all but configure the gpio using the SPI not the firmware"}
,"bitbang_spi_i" :{"level":0,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"SW":true,
"description":"Same as bitbang_cpu_all_i but configure the gpio using the SPI not the firmware"}
,"hk_regs_wr_wb_cpu" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"bit bash test for housekeeping registers"}
,"hk_regs_wr_wb" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":[],
"GL_SDF":[],
"description":"write then read (the written value) from random housekeeping registers through the firmware but without using CPU, the SPI and system regs can't be read using firmware so the test only GPIO regs inside housekeeping "}
,"hk_regs_wr_spi" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"write then read(the written value) from random housekeeping registers through the SPI housekeeping"}
,"hk_regs_rst_spi" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check reset value of house keeping registers by reading them trough the spi housekeeping"}
,"helloWorld" :{"level":3,
"SW":false,
"RTL":[],
"GL":[],
"GL_SDF":[],
"description":"hello world test"}
,"cpu_stress" :{"level":2,
"SW":true,
"RTL":["r_rtl","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"stress the cpu with heavy processing"}
,"mem_dff2" :{"level":2,
"SW":true,
"RTL":["r_rtl","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"Memory stress for all space of dff2"}
,"mem_dff" :{"level":2,
"SW":true,
"RTL":["r_rtl","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"Memory stress for all space of dff"}
,"IRQ_external" :{"level":2,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test external interrupt by mprj 7"}
,"IRQ_timer" :{"level":2,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test timer0 interrupt"}
,"IRQ_uart" :{"level":2,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test timer0 interrupt"}
,"mgmt_gpio_out" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"tests blinking of mgmt gpio bit as an output"}
,"mgmt_gpio_in" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"tests blinking of mgmt gpio bit as an output"}
,"mgmt_gpio_bidir" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"send random number of blinks through mgmt_gpio and expect to recieve the same number back "}
,"timer0_oneshot" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check timer0 oneshot mode"}
,"timer0_periodic" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check timer0 periodic mode"}
,"uart_tx" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test uart transmit"}
,"uart_rx" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test uart reception"}
,"uart_loopback" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test uart in loopback mode input and output is shorted"}
,"spi_master_rd" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"using SPI master for reading from external memory"}
,"spi_master_temp" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"To be deleted"}
,"user_pass_thru_rd" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"use the housekeeping spi in user pass thru mode to read from external mem"}
,"pll" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"Check pll diffrent configuration"}
,"clock_redirect" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check clock redirect is working as expected"}
,"hk_disable" :{"level":0,
"SW":true,
@ -276,6 +15,197 @@
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check Housekeeping SPI disable register is working"}
,"uart_rx" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test uart reception"}
,"hk_regs_rst_spi" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check reset value of house keeping registers by reading them trough the spi housekeeping"}
,"gpio_all_i_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user input using automatic approach firmware and check them"}
,"gpio_all_i_pu" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt input pull up using automatic approach firmware and check them"}
,"gpio_all_i_pu_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user input pull up using automatic approach firmware and check them"}
,"gpio_all_i_pd" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt input pull down using automatic approach firmware and check them"}
,"gpio_all_i_pd_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user input pull down using automatic approach firmware and check them"}
,"gpio_all_bidir_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user bidir using automatic approach firmware and check them"}
,"gpio_all_o" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt output using automatic approach firmware and check them"}
,"gpio_all_o_user" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as user output using automatic approach firmware and check them"}
,"hk_regs_wr_wb_cpu" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"bit bash test for housekeeping registers"}
,"IRQ_timer" :{"level":2,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test timer0 interrupt"}
,"bitbang_cpu_all_i" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":" configure gpio[0:37] as mgmt input using bitbang and check them"}
,"bitbang_spi_o" :{"level":0,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"SW":true,
"description":"Same as bitbang_cpu_all but configure the gpio using the SPI not the firmware"}
,"mgmt_gpio_out" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"tests blinking of mgmt gpio bit as an output"}
,"bitbang_spi_i" :{"level":0,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"SW":true,
"description":"Same as bitbang_cpu_all_i but configure the gpio using the SPI not the firmware"}
,"hk_regs_wr_spi" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"write then read(the written value) from random housekeeping registers through the SPI housekeeping"}
,"IRQ_external" :{"level":2,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test external interrupt by mprj 7"}
,"IRQ_uart" :{"level":2,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test timer0 interrupt"}
,"mgmt_gpio_in" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"tests blinking of mgmt gpio bit as an output"}
,"timer0_oneshot" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check timer0 oneshot mode"}
,"uart_loopback" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test uart in loopback mode input and output is shorted"}
,"timer0_periodic" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check timer0 periodic mode"}
,"uart_tx" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"test uart transmit"}
,"spi_master_rd" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"using SPI master for reading from external memory"}
,"user_pass_thru_rd" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"use the housekeeping spi in user pass thru mode to read from external mem"}
,"clock_redirect" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check clock redirect is working as expected"}
,"mgmt_gpio_bidir" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"send random number of blinks through mgmt_gpio and expect to recieve the same number back "}
,"la" :{"level":0,
"SW":true,
@ -283,5 +213,104 @@
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"check logic analyzer input and output enable"}
,"pll" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"Check pll diffrent configuration"}
,"spi_master_temp" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"To be deleted"}
,"bitbang_cpu_all_o" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","gpio_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"configure all gpios as mgmt output using bitbang and check them"}
,"mem_dff" :{"level":2,
"SW":true,
"RTL":["r_rtl","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"Memory stress for all space of dff"}
,"bitbang_cpu_all_01" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 01"}
,"mem_dff2" :{"level":2,
"SW":true,
"RTL":["r_rtl","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"Memory stress for all space of dff2"}
,"bitbang_cpu_all_10" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 10"}
,"bitbang_cpu_all_1100" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 1100"}
,"bitbang_cpu_all_0011" :{"level":0,
"SW":true,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":["r_gl","push_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"shift all the register with 0011"}
,"cpu_stress" :{"level":2,
"SW":true,
"RTL":["r_rtl","nightly","weekly","tape_out"],
"GL":["r_gl","nightly","weekly","tape_out"],
"GL_SDF":["r_sdf","weekly","tape_out"],
"description":"stress the cpu with heavy processing"}
,"bitbang_no_cpu_all_o" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","gpio_rtl","push","push_gl","nightly","weekly","tape_out"],
"GL":[],
"GL_SDF":[],
"description":"test disable CPU and control the wishbone to configure gpio[4:37] as mgmt output using bitbang and check them"}
,"bitbang_no_cpu_all_i" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":[],
"GL_SDF":[],
"description":"test disable CPU and control the wishbone to configure gpio[0:31] as mgmt input using bitbang and check them"}
,"hk_regs_wr_wb" :{"level":0,
"SW":false,
"RTL":["r_rtl","setup","push","push_gl","nightly","weekly","tape_out"],
"GL":[],
"GL_SDF":[],
"description":"write then read (the written value) from random housekeeping registers through the firmware but without using CPU, the SPI and system regs can't be read using firmware so the test only GPIO regs inside housekeeping "}
,"helloWorld" :{"level":3,
"SW":false,
"RTL":[],
"GL":[],
"GL_SDF":[],
"description":"hello world test"}
,"debug" :{"level":0,
"SW":true,
"RTL":[],
"GL":[],
"GL_SDF":[],
"description":""}
}
}

View File

@ -80,6 +80,7 @@ async def bitbang_no_cpu_all_o(dut):
await clock_in_right_o_left_i_standard(cpu,0) # 1 and 36
await clock_in_end_output(cpu) # 0 and 37 and load
await caravelEnv.release_csb()
await cpu.drive_data2address(reg.get_addr('reg_mprj_datal'),0x0)
await cpu.drive_data2address(reg.get_addr('reg_mprj_datah'),0x0)

View File

@ -57,7 +57,7 @@ async def bitbang_cpu_all_o(dut):
@cocotb.test()
@repot_test
async def bitbang_cpu_all_10(dut):
caravelEnv = await test_configure(dut,timeout_cycles=2863378)
caravelEnv,clock = await test_configure(dut,timeout_cycles=1581680)
cpu = RiskV(dut)
cpu.cpu_force_reset()
cpu.cpu_release_reset()
@ -68,11 +68,17 @@ async def bitbang_cpu_all_10(dut):
gpios_h= ("gpio_control_in_2[0]","gpio_control_in_2[1]","gpio_control_in_2[2]","gpio_control_in_2[3]","gpio_control_in_2[4]","gpio_control_in_2[5]","gpio_control_in_2[6]","gpio_control_in_2[7]","gpio_control_in_2[8]","gpio_control_in_2[9]","gpio_control_in_2[10]","gpio_control_in_2[11]","gpio_control_in_2[12]","gpio_control_in_2[13]","gpio_control_in_2[14]","gpio_control_in_2[15]","gpio_control_bidir_2[0]","gpio_control_bidir_2[1]","gpio_control_bidir_2[2]")
type = True # type of shifting 01 or 10
for gpio in gpios_l:
shift(uut._id(gpio,False),type)
if not Macros['GL']:
shift(uut._id(gpio,False),type)
else:
shift(uut._id(f'\\{gpio} ',False),type)
type = not type
type = True # type of shifting 01 or 10
for gpio in reversed(gpios_h):
shift(uut._id(gpio,False),type)
if not Macros['GL']:
shift(uut._id(gpio,False),type)
else:
shift(uut._id(f'\\{gpio} ',False),type)
type = not type
@ -82,9 +88,14 @@ def shift(gpio,shift_type):
else:
bits = "1010101010101"
fail = False
cocotb.log.info(f"[TEST] gpio {gpio} shift {gpio._id(f'shift_register',False).value} expected {bits}")
if not Macros['GL']:
cocotb.log.info(f"[TEST] gpio {gpio} shift {gpio._id(f'shift_register',False).value} expected {bits}")
for i in range(13):
if gpio._id(f"shift_register",False).value.binstr[i] != bits[i]:
if not Macros['GL']:
shift_register = gpio._id(f"shift_register",False).value.binstr[i]
else:
shift_register = gpio._id(f"\\shift_register[{i}] ",False).value.binstr
if shift_register != bits[i]:
fail = True
cocotb.log.error(f"[TEST] wrong shift register {i} in {gpio}")
if not fail:
@ -104,11 +115,17 @@ async def bitbang_cpu_all_01(dut):
gpios_h= ("gpio_control_in_2[0]","gpio_control_in_2[1]","gpio_control_in_2[2]","gpio_control_in_2[3]","gpio_control_in_2[4]","gpio_control_in_2[5]","gpio_control_in_2[6]","gpio_control_in_2[7]","gpio_control_in_2[8]","gpio_control_in_2[9]","gpio_control_in_2[10]","gpio_control_in_2[11]","gpio_control_in_2[12]","gpio_control_in_2[13]","gpio_control_in_2[14]","gpio_control_in_2[15]","gpio_control_bidir_2[0]","gpio_control_bidir_2[1]","gpio_control_bidir_2[2]")
type = False # type of shifting 01 or 10
for gpio in gpios_l:
shift(uut._id(gpio,False),type)
if not Macros['GL']:
shift(uut._id(gpio,False),type)
else:
shift(uut._id(f'\\{gpio} ',False),type)
type = not type
type = False # type of shifting 01 or 10
for gpio in reversed(gpios_h):
shift(uut._id(gpio,False),type)
if not Macros['GL']:
shift(uut._id(gpio,False),type)
else:
shift(uut._id(f'\\{gpio} ',False),type)
type = not type
@cocotb.test()
@ -123,13 +140,19 @@ async def bitbang_cpu_all_0011(dut):
gpios_l = ("gpio_control_bidir_1[0]","gpio_control_bidir_1[1]","gpio_control_in_1a[0]","gpio_control_in_1a[1]","gpio_control_in_1a[2]","gpio_control_in_1a[3]","gpio_control_in_1a[4]","gpio_control_in_1a[5]","gpio_control_in_1[0]","gpio_control_in_1[1]","gpio_control_in_1[2]","gpio_control_in_1[3]","gpio_control_in_1[4]","gpio_control_in_1[5]","gpio_control_in_1[6]","gpio_control_in_1[7]","gpio_control_in_1[8]","gpio_control_in_1[9]","gpio_control_in_1[10]")
gpios_h= ("gpio_control_in_2[0]","gpio_control_in_2[1]","gpio_control_in_2[2]","gpio_control_in_2[3]","gpio_control_in_2[4]","gpio_control_in_2[5]","gpio_control_in_2[6]","gpio_control_in_2[7]","gpio_control_in_2[8]","gpio_control_in_2[9]","gpio_control_in_2[10]","gpio_control_in_2[11]","gpio_control_in_2[12]","gpio_control_in_2[13]","gpio_control_in_2[14]","gpio_control_in_2[15]","gpio_control_bidir_2[0]","gpio_control_bidir_2[1]","gpio_control_bidir_2[2]")
type = 0 # type of shifting 01 or 10
type = 2 # type of shifting 01 or 10
for gpio in gpios_l:
shift_2(uut._id(gpio,False),type)
if not Macros['GL']:
shift_2(uut._id(gpio,False),type)
else:
shift_2(uut._id(f'\\{gpio} ',False),type)
type = (type + 1) %4
type = 0 # type of shifting 01 or 10
type = 2 # type of shifting 01 or 10
for gpio in reversed(gpios_h):
shift_2(uut._id(gpio,False),type)
if not Macros['GL']:
shift_2(uut._id(gpio,False),type)
else:
shift_2(uut._id(f'\\{gpio} ',False),type)
type = (type + 1) %4
@cocotb.test()
@ -144,28 +167,44 @@ async def bitbang_cpu_all_1100(dut):
gpios_l = ("gpio_control_bidir_1[0]","gpio_control_bidir_1[1]","gpio_control_in_1a[0]","gpio_control_in_1a[1]","gpio_control_in_1a[2]","gpio_control_in_1a[3]","gpio_control_in_1a[4]","gpio_control_in_1a[5]","gpio_control_in_1[0]","gpio_control_in_1[1]","gpio_control_in_1[2]","gpio_control_in_1[3]","gpio_control_in_1[4]","gpio_control_in_1[5]","gpio_control_in_1[6]","gpio_control_in_1[7]","gpio_control_in_1[8]","gpio_control_in_1[9]","gpio_control_in_1[10]")
gpios_h= ("gpio_control_in_2[0]","gpio_control_in_2[1]","gpio_control_in_2[2]","gpio_control_in_2[3]","gpio_control_in_2[4]","gpio_control_in_2[5]","gpio_control_in_2[6]","gpio_control_in_2[7]","gpio_control_in_2[8]","gpio_control_in_2[9]","gpio_control_in_2[10]","gpio_control_in_2[11]","gpio_control_in_2[12]","gpio_control_in_2[13]","gpio_control_in_2[14]","gpio_control_in_2[15]","gpio_control_bidir_2[0]","gpio_control_bidir_2[1]","gpio_control_bidir_2[2]")
type = 2 # type of shifting 01 or 10
type = 0 # type of shifting 01 or 10
for gpio in gpios_l:
shift_2(uut._id(gpio,False),type)
if not Macros['GL']:
shift_2(uut._id(gpio,False),type)
else:
shift_2(uut._id(f'\\{gpio} ',False),type)
type = (type + 1) %4
type = 2 # type of shifting 01 or 10
type = 0 # type of shifting 01 or 10
for gpio in reversed(gpios_h):
shift_2(uut._id(gpio,False),type)
if not Macros['GL']:
shift_2(uut._id(gpio,False),type)
else:
shift_2(uut._id(f'\\{gpio} ',False),type)
type = (type + 1) %4
def shift_2(gpio,shift_type):
if shift_type == 0:
bits = "1001100110011"
elif shift_type == 1:
bits = "1100110011001"
elif shift_type == 2:
bits = "0110011001100"
elif shift_type == 3:
bits = "0011001100110"
elif shift_type == 1:
bits = "0110011001100"
elif shift_type == 2:
bits = "1100110011001"
elif shift_type == 3:
bits = "1001100110011"
fail = False
cocotb.log.info(f"[TEST] gpio {gpio} shift {gpio._id(f'shift_register',False).value} expected {bits}")
if not Macros['GL']:
cocotb.log.info(f"[TEST] gpio {gpio} shift {gpio._id(f'shift_register',False).value.binstr[::-1]} expected {bits}")
else :
shift_reg =''
for i in range(13):
shift_reg += gpio._id(f"\\shift_register[{i}] ",False).value.binstr
cocotb.log.info(f"[TEST] gpio {gpio} shift {shift_reg} expected {bits}")
for i in range(13):
if gpio._id(f"shift_register",False).value.binstr[i] != bits[i]:
if not Macros['GL']:
shift_register = gpio._id(f"shift_register",False).value.binstr[12-i]
else:
shift_register = gpio._id(f"\\shift_register[{i}] ",False).value.binstr
if shift_register != bits[i]:
fail = True
cocotb.log.error(f"[TEST] wrong shift register {i} in {gpio}")
if not fail:

View File

@ -0,0 +1,72 @@
/*
* 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
*/
#include <defs.h>
#include <stub.c>
// --------------------------------------------------------
void main()
{
int j;
reg_wb_enable =1; // for enable writing to reg_debug_1 and reg_debug_2
reg_debug_1 = 0x0;
reg_debug_2 = 0x0;
reg_mprj_io_6 = GPIO_MODE_MGMT_STD_OUTPUT;
reg_mprj_io_5 = GPIO_MODE_MGMT_STD_INPUT_NOPULL;
// Set clock to 64 kbaud and enable the UART. It is important to do this
// before applying the configuration, or else the Tx line initializes as
// zero, which indicates the start of a byte to the receiver.
// Now, apply the configuration
reg_mprj_xfer = 1;
while (reg_mprj_xfer == 1);
// reg_uart_enable = 1;
// start of the test
reg_debug_1 = 0xAA;
// very long wait
for (j = 0; j < 160; j++);
for (j = 0; j < 160; j++);
for (j = 0; j < 160; j++);
// Set clock to 64 kbaud and enable the UART. It is important to do this
// before applying the configuration, or else the Tx line initializes as
// zero, which indicates the start of a byte to the receiver.
// // these instruction work without using interrupt, they seem to be timing dependent
// reg_uart_enable = 1;
// reg_debug_irq_en = 1;
// reg_reset = 1;
// irq_setmask(0);
// irq_setie(1);
// irq_setmask(irq_getmask() | (1 << USER_IRQ_3_INTERRUPT));
// for (j = 0; j < 500; j++);
// // reg_uart_data = 0xab;
// // Allow transmission to complete before signalling that the program
// // has ended.
// for (j = 0; j < 160; j++);
}

View File

@ -0,0 +1,114 @@
from curses import baudrate
import random
import cocotb
from cocotb.triggers import FallingEdge,RisingEdge,ClockCycles,Timer,Edge
import cocotb.log
from interfaces.cpu import RiskV
from interfaces.defsParser import Regs
from cocotb.result import TestSuccess
from tests.common_functions.test_functions import *
from tests.bitbang.bitbang_functions import *
from interfaces.caravel import GPIO_MODE
from interfaces.common import Macros
bit_time_ns = 0
reg = Regs()
@cocotb.test()
@repot_test
async def debug(dut):
caravelEnv,clock = await test_configure(dut,timeout_cycles=375862)
cpu = RiskV(dut)
cpu.cpu_force_reset()
cpu.cpu_release_reset()
# calculate bit time
clk = clock.period/1000
global bit_time_ns
bit_time_ns = round(10**5 * clk / (96))
cocotb.log.info(f"[TEST] bit time in nano second = {bit_time_ns}")
caravelEnv.drive_gpio_in((0,0),0) # IO[0] affects the uart selecting btw system and debug
caravelEnv.drive_gpio_in((5,5),1)
# wait for start of sending
await wait_reg1(cpu,caravelEnv,0XAA)
cocotb.log.info(f"[TEST] Start debug test")
# send random data to address 30'h00400024 and expect to recieve the same data back it back
address = 0x00000410
data = random.getrandbits(32)
data = 0xFFFFFFFF
cocotb.log.info (f"[TEST] Executing DFF2 write address={hex(address)} data = {hex(data)}")
await wb_write(caravelEnv,address,data)
receieved_data = await wb_read(caravelEnv,address)
if data != receieved_data:
cocotb.log.error(f"[TEST] DFF2 write failed expected data = {hex(data)} recieved data = {hex(receieved_data)}")
else:
cocotb.log.info(f"[TEST] DFF2 write succeeded")
async def start_of_tx(caravelEnv):
while (True): # wait for the start of the transimission it 1 then 0
if (caravelEnv.monitor_gpio((6,6)).integer == 0):
break
await Timer(bit_time_ns, units='ns')
await Timer(bit_time_ns, units='ns')
async def uart_send_char(caravelEnv,char):
cocotb.log.info (f"[uart_send_char] start sending on uart {char}")
#send start bit
caravelEnv.drive_gpio_in((5,5),0)
await Timer(bit_time_ns, units='ns')
#send bits
for i in range(8):
caravelEnv.drive_gpio_in((5,5),char[i])
await Timer(bit_time_ns, units='ns')
# stop of frame
caravelEnv.drive_gpio_in((5,5),1)
await Timer(bit_time_ns, units='ns')
await Timer(bit_time_ns, units='ns')
# insert 4 bit delay just for debugging
await Timer(bit_time_ns, units='ns')
await Timer(bit_time_ns, units='ns')
await Timer(bit_time_ns, units='ns')
await Timer(bit_time_ns, units='ns')
async def uart_get_char(caravelEnv):
await start_of_tx(caravelEnv)
char = ''
for i in range (8):
char = char + caravelEnv.monitor_gpio((6,6)).binstr
await Timer(bit_time_ns, units='ns')
cocotb.log.info (f"[uart_get_char] recieving {char} from uart")
return char
async def wb_write(caravelEnv,addr,data):
addr_bits = bin(addr)[2:].zfill(32)[::-1]
data_bits = bin(data)[2:].zfill(32)[::-1]
cocotb.log.info(f"[TEST] address bits = {addr_bits} {type(addr_bits)}")
await uart_send_char(caravelEnv, '10000000') # write cmd
await uart_send_char(caravelEnv, '10000000') # size
await uart_send_char(caravelEnv, addr_bits[24:32])
await uart_send_char(caravelEnv, addr_bits[16:24])
await uart_send_char(caravelEnv, addr_bits[8:16])
await uart_send_char(caravelEnv, addr_bits[0:8])
await uart_send_char(caravelEnv, data_bits[24:32])
await uart_send_char(caravelEnv, data_bits[16:24])
await uart_send_char(caravelEnv, data_bits[8:16])
await uart_send_char(caravelEnv, data_bits[0:8])
async def wb_read(caravelEnv,addr):
addr_bits = bin(addr)[2:].zfill(32)[::-1]
await uart_send_char(caravelEnv, '01000000') # read cmd
await uart_send_char(caravelEnv, '10000000') # size
await uart_send_char(caravelEnv, addr_bits[24:32])
await uart_send_char(caravelEnv, addr_bits[16:24])
await uart_send_char(caravelEnv, addr_bits[8:16])
await uart_send_char(caravelEnv, addr_bits[0:8])
data_bits = await uart_get_char(caravelEnv)
data_bits += await uart_get_char(caravelEnv)
data_bits += await uart_get_char(caravelEnv)
data_bits += await uart_get_char(caravelEnv)
return int(data_bits,2)

View File

@ -231,6 +231,7 @@ class RunRegression:
self.test_arg = test
self.testlist_arg = testlist
self.corners = corner
self.total_start_time = datetime.now()
if type_arg is None:
type_arg = "RTL"
self.type_arg = type_arg
@ -338,13 +339,13 @@ class RunRegression:
def update_reg_log(self):
file_name=f"sim/{os.getenv('RUNTAG')}/runs.log"
f = open(file_name, "w")
f.write(f"{'Test':<25} {'status':<10} {'start':<15} {'end':<15} {'duration':<13} {'p/f':<5}\n")
f.write(f"{'Test':<33} {'status':<10} {'start':<15} {'end':<15} {'duration':<13} {'p/f':<5}\n")
for test,sim_types in self.tests.items():
for sim_type,corners in sim_types.items():
for corner,status in corners.items():
new_test_name= f"{sim_type}-{test}-{corner}"
f.write(f"{new_test_name:<33} {status['status']:<10} {status['starttime']:<15} {status['endtime']:<15} {status['duration']:<13} {status['pass']:<5}\n")
f.write(f"\n\nTotal: ({self.passed_tests})passed ({self.failed_tests})failed ({self.unknown_tests})unknown ")
f.write(f"\n\nTotal: ({self.passed_tests})passed ({self.failed_tests})failed ({self.unknown_tests})unknown ({('%.10s' % (datetime.now() - self.total_start_time))})time consumed ")
f.close()
def write_command_log(self):

View File

@ -1,101 +0,0 @@
// This is the unpowered netlist.
module buff_flash_clkrst (in_n,
in_s,
out_n,
out_s);
input [11:0] in_n;
input [2:0] in_s;
output [2:0] out_n;
output [11:0] out_s;
sky130_fd_sc_hd__clkbuf_8 \BUF[0] (.A(in_s[0]),
.X(out_n[0]));
sky130_fd_sc_hd__clkbuf_8 \BUF[10] (.A(in_n[7]),
.X(out_s[7]));
sky130_fd_sc_hd__clkbuf_8 \BUF[11] (.A(in_n[8]),
.X(out_s[8]));
sky130_fd_sc_hd__clkbuf_8 \BUF[12] (.A(in_n[9]),
.X(out_s[9]));
sky130_fd_sc_hd__clkbuf_8 \BUF[13] (.A(in_n[10]),
.X(out_s[10]));
sky130_fd_sc_hd__clkbuf_8 \BUF[14] (.A(in_n[11]),
.X(out_s[11]));
sky130_fd_sc_hd__clkbuf_8 \BUF[1] (.A(in_s[1]),
.X(out_n[1]));
sky130_fd_sc_hd__clkbuf_8 \BUF[2] (.A(in_s[2]),
.X(out_n[2]));
sky130_fd_sc_hd__clkbuf_8 \BUF[3] (.A(in_n[0]),
.X(out_s[0]));
sky130_fd_sc_hd__clkbuf_8 \BUF[4] (.A(in_n[1]),
.X(out_s[1]));
sky130_fd_sc_hd__clkbuf_8 \BUF[5] (.A(in_n[2]),
.X(out_s[2]));
sky130_fd_sc_hd__clkbuf_8 \BUF[6] (.A(in_n[3]),
.X(out_s[3]));
sky130_fd_sc_hd__clkbuf_8 \BUF[7] (.A(in_n[4]),
.X(out_s[4]));
sky130_fd_sc_hd__clkbuf_8 \BUF[8] (.A(in_n[5]),
.X(out_s[5]));
sky130_fd_sc_hd__clkbuf_8 \BUF[9] (.A(in_n[6]),
.X(out_s[6]));
sky130_fd_sc_hd__decap_3 PHY_0 ();
sky130_fd_sc_hd__decap_3 PHY_1 ();
sky130_fd_sc_hd__decap_3 PHY_2 ();
sky130_fd_sc_hd__decap_3 PHY_3 ();
sky130_fd_sc_hd__decap_3 PHY_4 ();
sky130_fd_sc_hd__decap_3 PHY_5 ();
sky130_fd_sc_hd__decap_3 PHY_6 ();
sky130_fd_sc_hd__decap_3 PHY_7 ();
sky130_fd_sc_hd__decap_3 PHY_8 ();
sky130_fd_sc_hd__decap_3 PHY_9 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_10 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_11 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_12 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_13 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_14 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_15 ();
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_16 ();
sky130_fd_sc_hd__decap_4 FILLER_0_3 ();
sky130_fd_sc_hd__fill_1 FILLER_0_7 ();
sky130_fd_sc_hd__decap_8 FILLER_0_19 ();
sky130_fd_sc_hd__fill_1 FILLER_0_27 ();
sky130_ef_sc_hd__decap_12 FILLER_0_29 ();
sky130_fd_sc_hd__fill_2 FILLER_0_41 ();
sky130_fd_sc_hd__fill_2 FILLER_0_54 ();
sky130_fd_sc_hd__fill_2 FILLER_0_57 ();
sky130_fd_sc_hd__decap_4 FILLER_0_70 ();
sky130_fd_sc_hd__fill_1 FILLER_0_74 ();
sky130_fd_sc_hd__decap_3 FILLER_1_3 ();
sky130_fd_sc_hd__decap_4 FILLER_1_17 ();
sky130_fd_sc_hd__decap_4 FILLER_1_32 ();
sky130_fd_sc_hd__decap_8 FILLER_1_47 ();
sky130_fd_sc_hd__fill_1 FILLER_1_55 ();
sky130_fd_sc_hd__fill_2 FILLER_1_57 ();
sky130_fd_sc_hd__decap_4 FILLER_1_70 ();
sky130_fd_sc_hd__fill_1 FILLER_1_74 ();
sky130_ef_sc_hd__decap_12 FILLER_2_3 ();
sky130_fd_sc_hd__fill_2 FILLER_2_26 ();
sky130_ef_sc_hd__decap_12 FILLER_2_29 ();
sky130_fd_sc_hd__decap_4 FILLER_2_52 ();
sky130_fd_sc_hd__decap_8 FILLER_2_67 ();
sky130_ef_sc_hd__decap_12 FILLER_3_3 ();
sky130_fd_sc_hd__fill_1 FILLER_3_15 ();
sky130_fd_sc_hd__decap_4 FILLER_3_27 ();
sky130_ef_sc_hd__decap_12 FILLER_3_42 ();
sky130_fd_sc_hd__fill_2 FILLER_3_54 ();
sky130_fd_sc_hd__fill_2 FILLER_3_57 ();
sky130_fd_sc_hd__decap_4 FILLER_3_70 ();
sky130_fd_sc_hd__fill_1 FILLER_3_74 ();
sky130_fd_sc_hd__decap_4 FILLER_4_3 ();
sky130_fd_sc_hd__fill_1 FILLER_4_7 ();
sky130_fd_sc_hd__decap_8 FILLER_4_19 ();
sky130_fd_sc_hd__fill_1 FILLER_4_27 ();
sky130_ef_sc_hd__decap_12 FILLER_4_29 ();
sky130_ef_sc_hd__decap_12 FILLER_4_41 ();
sky130_fd_sc_hd__decap_3 FILLER_4_53 ();
sky130_fd_sc_hd__fill_2 FILLER_4_57 ();
sky130_fd_sc_hd__decap_4 FILLER_4_70 ();
sky130_fd_sc_hd__fill_1 FILLER_4_74 ();
endmodule

View File

@ -0,0 +1,323 @@
module buff_flash_clkrst (VPWR,
VGND,
in_n,
in_s,
out_n,
out_s);
input VPWR;
input VGND;
input [11:0] in_n;
input [2:0] in_s;
output [2:0] out_n;
output [11:0] out_s;
sky130_fd_sc_hd__clkbuf_8 \BUF[0] (.A(in_s[0]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_n[0]));
sky130_fd_sc_hd__clkbuf_8 \BUF[10] (.A(in_n[7]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[7]));
sky130_fd_sc_hd__clkbuf_8 \BUF[11] (.A(in_n[8]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[8]));
sky130_fd_sc_hd__clkbuf_8 \BUF[12] (.A(in_n[9]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[9]));
sky130_fd_sc_hd__clkbuf_8 \BUF[13] (.A(in_n[10]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[10]));
sky130_fd_sc_hd__clkbuf_8 \BUF[14] (.A(in_n[11]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[11]));
sky130_fd_sc_hd__clkbuf_8 \BUF[1] (.A(in_s[1]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_n[1]));
sky130_fd_sc_hd__clkbuf_8 \BUF[2] (.A(in_s[2]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_n[2]));
sky130_fd_sc_hd__clkbuf_8 \BUF[3] (.A(in_n[0]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[0]));
sky130_fd_sc_hd__clkbuf_8 \BUF[4] (.A(in_n[1]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[1]));
sky130_fd_sc_hd__clkbuf_8 \BUF[5] (.A(in_n[2]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[2]));
sky130_fd_sc_hd__clkbuf_8 \BUF[6] (.A(in_n[3]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[3]));
sky130_fd_sc_hd__clkbuf_8 \BUF[7] (.A(in_n[4]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[4]));
sky130_fd_sc_hd__clkbuf_8 \BUF[8] (.A(in_n[5]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[5]));
sky130_fd_sc_hd__clkbuf_8 \BUF[9] (.A(in_n[6]),
.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR),
.X(out_s[6]));
sky130_fd_sc_hd__decap_3 PHY_0 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_1 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_2 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_3 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_4 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_5 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_6 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_7 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_8 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 PHY_9 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_10 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_11 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_12 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_13 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_14 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_15 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_16 (.VGND(VGND),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_0_3 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_0_7 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_8 FILLER_0_19 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_0_27 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_0_29 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_0_41 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_0_54 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_0_57 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_0_70 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_0_74 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 FILLER_1_3 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_1_17 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_1_32 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_8 FILLER_1_47 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_1_55 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_1_57 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_1_70 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_1_74 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_2_3 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_2_26 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_2_29 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_2_52 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_8 FILLER_2_67 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_3_3 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_3_15 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_3_27 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_3_42 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_3_54 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_3_57 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_3_70 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_3_74 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_4_3 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_4_7 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_8 FILLER_4_19 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_4_27 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_4_29 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_ef_sc_hd__decap_12 FILLER_4_41 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_3 FILLER_4_53 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_2 FILLER_4_57 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__decap_4 FILLER_4_70 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
sky130_fd_sc_hd__fill_1 FILLER_4_74 (.VGND(VGND),
.VNB(VGND),
.VPB(VPWR),
.VPWR(VPWR));
endmodule

File diff suppressed because it is too large Load Diff

View File

@ -103,10 +103,10 @@ module gpio_signal_buffering_alt (
/* Instantiate 48 + 48 + 6 = 101 buffers of size 8 */
wire [100:0] buf_in;
wire [100:0] buf_out;
wire [101:0] buf_in;
wire [101:0] buf_out;
sky130_fd_sc_hd__buf_8 signal_buffers [100:0] (
sky130_fd_sc_hd__buf_8 signal_buffers [101:0] (
`ifdef USE_POWER_PINS
.VPWR(vccd),
.VGND(vssd),
@ -149,71 +149,71 @@ module gpio_signal_buffering_alt (
// mgmt_io_in, left-hand side
//----------------------------------------
assign buf_in[8] = mgmt_io_in_unbuf[8];
assign buf_in[8] = mgmt_io_in_unbuf[7];
assign buf_in[9] = buf_out[8];
assign buf_in[10] = buf_out[9];
assign buf_in[11] = buf_out[10];
assign mgmt_io_in_buf[8] = buf_out[11];
assign mgmt_io_in_buf[7] = buf_out[11];
assign buf_in[12] = mgmt_io_in_unbuf[9];
assign buf_in[12] = mgmt_io_in_unbuf[8];
assign buf_in[13] = buf_out[12];
assign buf_in[14] = buf_out[13];
assign buf_in[15] = buf_out[14];
assign mgmt_io_in_buf[9] = buf_out[15];
assign mgmt_io_in_buf[8] = buf_out[15];
assign buf_in[16] = mgmt_io_in_unbuf[10];
assign buf_in[16] = mgmt_io_in_unbuf[9];
assign buf_in[17] = buf_out[16];
assign buf_in[18] = buf_out[17];
assign buf_in[19] = buf_out[18];
assign mgmt_io_in_buf[10] = buf_out[19];
assign mgmt_io_in_buf[9] = buf_out[19];
assign buf_in[20] = mgmt_io_in_unbuf[11];
assign buf_in[20] = mgmt_io_in_unbuf[10];
assign buf_in[21] = buf_out[20];
assign buf_in[22] = buf_out[21];
assign buf_in[23] = buf_out[22];
assign mgmt_io_in_buf[11] = buf_out[23];
assign mgmt_io_in_buf[10] = buf_out[23];
assign buf_in[24] = mgmt_io_in_unbuf[12];
assign buf_in[24] = mgmt_io_in_unbuf[11];
assign buf_in[25] = buf_out[24];
assign buf_in[26] = buf_out[25];
assign buf_in[27] = buf_out[26];
assign mgmt_io_in_buf[12] = buf_out[27];
assign mgmt_io_in_buf[11] = buf_out[27];
assign buf_in[28] = mgmt_io_in_unbuf[13];
assign buf_in[28] = mgmt_io_in_unbuf[12];
assign buf_in[29] = buf_out[28];
assign buf_in[30] = buf_out[29];
assign mgmt_io_in_buf[13] = buf_out[30];
assign mgmt_io_in_buf[12] = buf_out[30];
assign buf_in[31] = mgmt_io_in_unbuf[14];
assign buf_in[31] = mgmt_io_in_unbuf[13];
assign buf_in[32] = buf_out[31];
assign buf_in[33] = buf_out[32];
assign mgmt_io_in_buf[14] = buf_out[33];
assign mgmt_io_in_buf[13] = buf_out[33];
assign buf_in[34] = mgmt_io_in_unbuf[15];
assign buf_in[34] = mgmt_io_in_unbuf[14];
assign buf_in[35] = buf_out[34];
assign buf_in[36] = buf_out[35];
assign mgmt_io_in_buf[15] = buf_out[36];
assign mgmt_io_in_buf[14] = buf_out[36];
assign buf_in[37] = mgmt_io_in_unbuf[16];
assign buf_in[37] = mgmt_io_in_unbuf[15];
assign buf_in[38] = buf_out[37];
assign buf_in[39] = buf_out[38];
assign mgmt_io_in_buf[16] = buf_out[39];
assign mgmt_io_in_buf[15] = buf_out[39];
assign buf_in[40] = mgmt_io_in_unbuf[17];
assign buf_in[40] = mgmt_io_in_unbuf[16];
assign buf_in[41] = buf_out[40];
assign mgmt_io_in_buf[17] = buf_out[41];
assign mgmt_io_in_buf[16] = buf_out[41];
assign buf_in[42] = mgmt_io_in_unbuf[18];
assign buf_in[42] = mgmt_io_in_unbuf[17];
assign buf_in[43] = buf_out[42];
assign mgmt_io_in_buf[18] = buf_out[43];
assign mgmt_io_in_buf[17] = buf_out[43];
assign buf_in[44] = mgmt_io_in_unbuf[19];
assign buf_in[44] = mgmt_io_in_unbuf[18];
assign buf_in[45] = buf_out[44];
assign mgmt_io_in_buf[19] = buf_out[45];
assign mgmt_io_in_buf[18] = buf_out[45];
assign buf_in[46] = mgmt_io_in_unbuf[20];
assign buf_in[46] = mgmt_io_in_unbuf[19];
assign buf_in[47] = buf_out[46];
assign mgmt_io_in_buf[20] = buf_out[47];
assign mgmt_io_in_buf[19] = buf_out[47];
//----------------------------------------
// mgmt_io_out, right-hand side