put together a test case for non routing macros
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl index c94b7a0..e1186c7 100755 --- a/openlane/user_project_wrapper/config.tcl +++ b/openlane/user_project_wrapper/config.tcl
@@ -29,9 +29,14 @@ # User Configurations +# save some time +set ::env(RUN_KLAYOUT_XOR) 0 +set ::env(RUN_KLAYOUT_DRC) 0 + + ## Source Verilog Files set ::env(VERILOG_FILES) "\ - $::env(CARAVEL_ROOT)/verilog/rtl/defines.v \ + $script_dir/../../caravel/verilog/rtl/defines.v \ $script_dir/../../verilog/rtl/user_project_wrapper.v" ## Clock configurations @@ -50,14 +55,32 @@ ### Black-box verilog and views set ::env(VERILOG_FILES_BLACKBOX) "\ - $::env(CARAVEL_ROOT)/verilog/rtl/defines.v \ - $script_dir/../../verilog/rtl/user_proj_example.v" + $script_dir/../../caravel/verilog/rtl/defines.v \ + $script_dir/../../verilog/rtl/user_project_includes.v" -set ::env(EXTRA_LEFS) "\ - $script_dir/../../lef/user_proj_example.lef" +set ::env(EXTRA_LEFS) [glob $::env(DESIGN_DIR)/macros/lef/*.lef] +set ::env(EXTRA_GDS_FILES) [glob $::env(DESIGN_DIR)/macros/gds/*.gds] -set ::env(EXTRA_GDS_FILES) "\ - $script_dir/../../gds/user_proj_example.gds" +# routing adjustments +# turn off li for any routing +set ::env(GLB_RT_OBS) "li1 0 0 2920 3520" + +#set ::env(GLB_RT_TILES) 5 +set ::env(GLB_RT_ALLOW_CONGESTION) "1" + +#Reduction in the routing capacity of the edges between the cells in the global routing graph. Values range from 0 to 1. +#1 = most reduction, 0 = least reduction +set ::env(GLB_RT_ADJUSTMENT) 0.70 + +# per layer adjustment +# 0 -> 1: 1 means don't use the layer +# l2 is met1 +set ::env(GLB_RT_L2_ADJUSTMENT) 0.9 +set ::env(GLB_RT_L3_ADJUSTMENT) 0.7 + + +# use 8 cores +set ::env(ROUTING_CORES) 8 set ::env(GLB_RT_MAXLAYER) 5
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg index a7365ab..9084f2b 100644 --- a/openlane/user_project_wrapper/macro.cfg +++ b/openlane/user_project_wrapper/macro.cfg
@@ -1 +1,2 @@ -mprj 1175 1690 N +wrapped_rgb_mixer_0 344 464 N +wrapped_rgb_mixer_1 344 1208 N
diff --git a/openlane/user_project_wrapper/macros/gds/wrapped_rgb_mixer.gds b/openlane/user_project_wrapper/macros/gds/wrapped_rgb_mixer.gds new file mode 100644 index 0000000..d050573 --- /dev/null +++ b/openlane/user_project_wrapper/macros/gds/wrapped_rgb_mixer.gds Binary files differ
diff --git a/openlane/user_project_wrapper/macros/lef/wrapped_rgb_mixer.lef b/openlane/user_project_wrapper/macros/lef/wrapped_rgb_mixer.lef new file mode 100644 index 0000000..300c72a --- /dev/null +++ b/openlane/user_project_wrapper/macros/lef/wrapped_rgb_mixer.lef
@@ -0,0 +1,2062 @@ +VERSION 5.7 ; + NOWIREEXTENSIONATPIN ON ; + DIVIDERCHAR "/" ; + BUSBITCHARS "[]" ; +MACRO wrapped_rgb_mixer + CLASS BLOCK ; + FOREIGN wrapped_rgb_mixer ; + ORIGIN 0.000 0.000 ; + SIZE 130.000 BY 210.000 ; + PIN active + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 180.920 4.000 181.520 ; + END + END active + PIN io_in[0] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 43.330 0.000 43.610 4.000 ; + END + END io_in[0] + PIN io_in[10] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 68.170 206.000 68.450 210.000 ; + END + END io_in[10] + PIN io_in[11] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 195.880 4.000 196.480 ; + END + END io_in[11] + PIN io_in[12] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 178.200 130.000 178.800 ; + END + END io_in[12] + PIN io_in[13] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 66.330 0.000 66.610 4.000 ; + END + END io_in[13] + PIN io_in[14] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 42.410 206.000 42.690 210.000 ; + END + END io_in[14] + PIN io_in[15] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 186.360 130.000 186.960 ; + END + END io_in[15] + PIN io_in[16] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 31.320 130.000 31.920 ; + END + END io_in[16] + PIN io_in[17] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 19.410 206.000 19.690 210.000 ; + END + END io_in[17] + PIN io_in[18] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 24.010 206.000 24.290 210.000 ; + END + END io_in[18] + PIN io_in[19] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 119.690 0.000 119.970 4.000 ; + END + END io_in[19] + PIN io_in[1] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 63.960 4.000 64.560 ; + END + END io_in[1] + PIN io_in[20] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 112.920 4.000 113.520 ; + END + END io_in[20] + PIN io_in[21] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 74.840 4.000 75.440 ; + END + END io_in[21] + PIN io_in[22] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 76.200 130.000 76.800 ; + END + END io_in[22] + PIN io_in[23] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 16.650 206.000 16.930 210.000 ; + END + END io_in[23] + PIN io_in[24] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 9.290 206.000 9.570 210.000 ; + END + END io_in[24] + PIN io_in[25] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 104.970 0.000 105.250 4.000 ; + END + END io_in[25] + PIN io_in[26] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 102.210 0.000 102.490 4.000 ; + END + END io_in[26] + PIN io_in[27] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 57.160 130.000 57.760 ; + END + END io_in[27] + PIN io_in[28] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 92.090 0.000 92.370 4.000 ; + END + END io_in[28] + PIN io_in[29] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 128.890 206.000 129.170 210.000 ; + END + END io_in[29] + PIN io_in[2] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 46.090 0.000 46.370 4.000 ; + END + END io_in[2] + PIN io_in[30] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 91.160 130.000 91.760 ; + END + END io_in[30] + PIN io_in[31] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 174.120 4.000 174.720 ; + END + END io_in[31] + PIN io_in[32] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 86.570 0.000 86.850 4.000 ; + END + END io_in[32] + PIN io_in[33] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 102.040 4.000 102.640 ; + END + END io_in[33] + PIN io_in[34] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 95.770 206.000 96.050 210.000 ; + END + END io_in[34] + PIN io_in[35] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 111.410 206.000 111.690 210.000 ; + END + END io_in[35] + PIN io_in[36] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 137.400 130.000 138.000 ; + END + END io_in[36] + PIN io_in[37] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 114.170 206.000 114.450 210.000 ; + END + END io_in[37] + PIN io_in[3] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 70.010 206.000 70.290 210.000 ; + END + END io_in[3] + PIN io_in[4] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 133.320 130.000 133.920 ; + END + END io_in[4] + PIN io_in[5] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 201.320 130.000 201.920 ; + END + END io_in[5] + PIN io_in[6] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 121.080 4.000 121.680 ; + END + END io_in[6] + PIN io_in[7] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 83.000 4.000 83.600 ; + END + END io_in[7] + PIN io_in[8] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 144.200 130.000 144.800 ; + END + END io_in[8] + PIN io_in[9] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 13.890 206.000 14.170 210.000 ; + END + END io_in[9] + PIN io_oeb[0] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 73.690 0.000 73.970 4.000 ; + END + END io_oeb[0] + PIN io_oeb[10] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 68.040 4.000 68.640 ; + END + END io_oeb[10] + PIN io_oeb[11] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 125.160 130.000 125.760 ; + END + END io_oeb[11] + PIN io_oeb[12] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 72.120 130.000 72.720 ; + END + END io_oeb[12] + PIN io_oeb[13] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 69.400 130.000 70.000 ; + END + END io_oeb[13] + PIN io_oeb[14] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 17.720 4.000 18.320 ; + END + END io_oeb[14] + PIN io_oeb[15] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 29.530 206.000 29.810 210.000 ; + END + END io_oeb[15] + PIN io_oeb[16] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 23.160 130.000 23.760 ; + END + END io_oeb[16] + PIN io_oeb[17] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 37.810 0.000 38.090 4.000 ; + END + END io_oeb[17] + PIN io_oeb[18] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 91.170 206.000 91.450 210.000 ; + END + END io_oeb[18] + PIN io_oeb[19] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 32.290 206.000 32.570 210.000 ; + END + END io_oeb[19] + PIN io_oeb[1] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 109.570 0.000 109.850 4.000 ; + END + END io_oeb[1] + PIN io_oeb[20] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 99.320 130.000 99.920 ; + END + END io_oeb[20] + PIN io_oeb[21] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 204.040 4.000 204.640 ; + END + END io_oeb[21] + PIN io_oeb[22] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 14.810 0.000 15.090 4.000 ; + END + END io_oeb[22] + PIN io_oeb[23] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 59.890 206.000 60.170 210.000 ; + END + END io_oeb[23] + PIN io_oeb[24] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 62.650 206.000 62.930 210.000 ; + END + END io_oeb[24] + PIN io_oeb[25] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 4.120 130.000 4.720 ; + END + END io_oeb[25] + PIN io_oeb[26] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 167.320 130.000 167.920 ; + END + END io_oeb[26] + PIN io_oeb[27] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 72.770 206.000 73.050 210.000 ; + END + END io_oeb[27] + PIN io_oeb[28] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 117.850 0.000 118.130 4.000 ; + END + END io_oeb[28] + PIN io_oeb[29] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 140.120 130.000 140.720 ; + END + END io_oeb[29] + PIN io_oeb[2] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 105.890 206.000 106.170 210.000 ; + END + END io_oeb[2] + PIN io_oeb[30] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 208.120 4.000 208.720 ; + END + END io_oeb[30] + PIN io_oeb[31] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 115.090 0.000 115.370 4.000 ; + END + END io_oeb[31] + PIN io_oeb[32] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 97.960 4.000 98.560 ; + END + END io_oeb[32] + PIN io_oeb[33] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 8.200 130.000 8.800 ; + END + END io_oeb[33] + PIN io_oeb[34] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 22.170 206.000 22.450 210.000 ; + END + END io_oeb[34] + PIN io_oeb[35] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 87.080 4.000 87.680 ; + END + END io_oeb[35] + PIN io_oeb[36] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 44.920 4.000 45.520 ; + END + END io_oeb[36] + PIN io_oeb[37] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 70.760 4.000 71.360 ; + END + END io_oeb[37] + PIN io_oeb[3] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 70.930 0.000 71.210 4.000 ; + END + END io_oeb[3] + PIN io_oeb[4] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 16.360 130.000 16.960 ; + END + END io_oeb[4] + PIN io_oeb[5] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 127.880 4.000 128.480 ; + END + END io_oeb[5] + PIN io_oeb[6] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 84.360 130.000 84.960 ; + END + END io_oeb[6] + PIN io_oeb[7] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 26.770 206.000 27.050 210.000 ; + END + END io_oeb[7] + PIN io_oeb[8] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 12.050 0.000 12.330 4.000 ; + END + END io_oeb[8] + PIN io_oeb[9] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 30.450 0.000 30.730 4.000 ; + END + END io_oeb[9] + PIN io_out[0] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 197.240 130.000 197.840 ; + END + END io_out[0] + PIN io_out[10] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 121.080 130.000 121.680 ; + END + END io_out[10] + PIN io_out[11] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 10.920 4.000 11.520 ; + END + END io_out[11] + PIN io_out[12] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 29.960 4.000 30.560 ; + END + END io_out[12] + PIN io_out[13] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 112.330 0.000 112.610 4.000 ; + END + END io_out[13] + PIN io_out[14] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 171.400 130.000 172.000 ; + END + END io_out[14] + PIN io_out[15] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 161.880 4.000 162.480 ; + END + END io_out[15] + PIN io_out[16] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 118.360 130.000 118.960 ; + END + END io_out[16] + PIN io_out[17] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 118.770 206.000 119.050 210.000 ; + END + END io_out[17] + PIN io_out[18] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 0.040 130.000 0.640 ; + END + END io_out[18] + PIN io_out[19] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 93.880 4.000 94.480 ; + END + END io_out[19] + PIN io_out[1] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 82.890 206.000 83.170 210.000 ; + END + END io_out[1] + PIN io_out[20] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 104.050 206.000 104.330 210.000 ; + END + END io_out[20] + PIN io_out[21] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 157.800 4.000 158.400 ; + END + END io_out[21] + PIN io_out[22] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 89.330 0.000 89.610 4.000 ; + END + END io_out[22] + PIN io_out[23] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 103.400 130.000 104.000 ; + END + END io_out[23] + PIN io_out[24] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 76.450 0.000 76.730 4.000 ; + END + END io_out[24] + PIN io_out[25] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 93.930 206.000 94.210 210.000 ; + END + END io_out[25] + PIN io_out[26] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 21.800 4.000 22.400 ; + END + END io_out[26] + PIN io_out[27] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 98.530 206.000 98.810 210.000 ; + END + END io_out[27] + PIN io_out[28] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 47.930 0.000 48.210 4.000 ; + END + END io_out[28] + PIN io_out[29] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 19.080 130.000 19.680 ; + END + END io_out[29] + PIN io_out[2] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 20.330 0.000 20.610 4.000 ; + END + END io_out[2] + PIN io_out[30] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 25.880 4.000 26.480 ; + END + END io_out[30] + PIN io_out[31] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 55.800 4.000 56.400 ; + END + END io_out[31] + PIN io_out[32] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 185.000 4.000 185.600 ; + END + END io_out[32] + PIN io_out[33] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 42.200 130.000 42.800 ; + END + END io_out[33] + PIN io_out[34] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 174.120 130.000 174.720 ; + END + END io_out[34] + PIN io_out[35] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 163.240 130.000 163.840 ; + END + END io_out[35] + PIN io_out[36] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 35.050 206.000 35.330 210.000 ; + END + END io_out[36] + PIN io_out[37] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 190.440 130.000 191.040 ; + END + END io_out[37] + PIN io_out[3] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 170.040 4.000 170.640 ; + END + END io_out[3] + PIN io_out[4] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 129.240 130.000 129.840 ; + END + END io_out[4] + PIN io_out[5] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 55.290 206.000 55.570 210.000 ; + END + END io_out[5] + PIN io_out[6] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 124.290 206.000 124.570 210.000 ; + END + END io_out[6] + PIN io_out[7] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 78.920 4.000 79.520 ; + END + END io_out[7] + PIN io_out[8] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 53.450 0.000 53.730 4.000 ; + END + END io_out[8] + PIN io_out[9] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 59.880 4.000 60.480 ; + END + END io_out[9] + PIN la1_data_in[0] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 46.280 130.000 46.880 ; + END + END la1_data_in[0] + PIN la1_data_in[10] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 60.810 0.000 61.090 4.000 ; + END + END la1_data_in[10] + PIN la1_data_in[11] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 38.120 130.000 38.720 ; + END + END la1_data_in[11] + PIN la1_data_in[12] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 146.920 4.000 147.520 ; + END + END la1_data_in[12] + PIN la1_data_in[13] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 93.930 0.000 94.210 4.000 ; + END + END la1_data_in[13] + PIN la1_data_in[14] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 51.720 4.000 52.320 ; + END + END la1_data_in[14] + PIN la1_data_in[15] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 36.890 206.000 37.170 210.000 ; + END + END la1_data_in[15] + PIN la1_data_in[16] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 78.290 206.000 78.570 210.000 ; + END + END la1_data_in[16] + PIN la1_data_in[17] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 58.050 206.000 58.330 210.000 ; + END + END la1_data_in[17] + PIN la1_data_in[18] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 122.450 0.000 122.730 4.000 ; + END + END la1_data_in[18] + PIN la1_data_in[19] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 39.650 206.000 39.930 210.000 ; + END + END la1_data_in[19] + PIN la1_data_in[1] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 56.210 0.000 56.490 4.000 ; + END + END la1_data_in[1] + PIN la1_data_in[20] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 142.840 4.000 143.440 ; + END + END la1_data_in[20] + PIN la1_data_in[21] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 127.050 206.000 127.330 210.000 ; + END + END la1_data_in[21] + PIN la1_data_in[22] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 50.360 130.000 50.960 ; + END + END la1_data_in[22] + PIN la1_data_in[23] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 2.760 4.000 3.360 ; + END + END la1_data_in[23] + PIN la1_data_in[24] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 40.570 0.000 40.850 4.000 ; + END + END la1_data_in[24] + PIN la1_data_in[25] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 151.000 4.000 151.600 ; + END + END la1_data_in[25] + PIN la1_data_in[26] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 27.240 130.000 27.840 ; + END + END la1_data_in[26] + PIN la1_data_in[27] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 81.970 0.000 82.250 4.000 ; + END + END la1_data_in[27] + PIN la1_data_in[28] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 131.960 4.000 132.560 ; + END + END la1_data_in[28] + PIN la1_data_in[29] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 199.960 4.000 200.560 ; + END + END la1_data_in[29] + PIN la1_data_in[2] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 33.210 0.000 33.490 4.000 ; + END + END la1_data_in[2] + PIN la1_data_in[30] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 4.690 0.000 4.970 4.000 ; + END + END la1_data_in[30] + PIN la1_data_in[31] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 106.810 0.000 107.090 4.000 ; + END + END la1_data_in[31] + PIN la1_data_in[3] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 123.800 4.000 124.400 ; + END + END la1_data_in[3] + PIN la1_data_in[4] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 108.650 206.000 108.930 210.000 ; + END + END la1_data_in[4] + PIN la1_data_in[5] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 110.200 130.000 110.800 ; + END + END la1_data_in[5] + PIN la1_data_in[6] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 45.170 206.000 45.450 210.000 ; + END + END la1_data_in[6] + PIN la1_data_in[7] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 89.800 4.000 90.400 ; + END + END la1_data_in[7] + PIN la1_data_in[8] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 47.010 206.000 47.290 210.000 ; + END + END la1_data_in[8] + PIN la1_data_in[9] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 136.040 4.000 136.640 ; + END + END la1_data_in[9] + PIN la1_data_out[0] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 23.090 0.000 23.370 4.000 ; + END + END la1_data_out[0] + PIN la1_data_out[10] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 61.240 130.000 61.840 ; + END + END la1_data_out[10] + PIN la1_data_out[11] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 63.570 0.000 63.850 4.000 ; + END + END la1_data_out[11] + PIN la1_data_out[12] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 193.160 130.000 193.760 ; + END + END la1_data_out[12] + PIN la1_data_out[13] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 3.770 206.000 4.050 210.000 ; + END + END la1_data_out[13] + PIN la1_data_out[14] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 65.410 206.000 65.690 210.000 ; + END + END la1_data_out[14] + PIN la1_data_out[15] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 6.840 4.000 7.440 ; + END + END la1_data_out[15] + PIN la1_data_out[16] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 80.280 130.000 80.880 ; + END + END la1_data_out[16] + PIN la1_data_out[17] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 156.440 130.000 157.040 ; + END + END la1_data_out[17] + PIN la1_data_out[18] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 6.530 206.000 6.810 210.000 ; + END + END la1_data_out[18] + PIN la1_data_out[19] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 114.280 130.000 114.880 ; + END + END la1_data_out[19] + PIN la1_data_out[1] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 176.840 4.000 177.440 ; + END + END la1_data_out[1] + PIN la1_data_out[20] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 40.840 4.000 41.440 ; + END + END la1_data_out[20] + PIN la1_data_out[21] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 182.280 130.000 182.880 ; + END + END la1_data_out[21] + PIN la1_data_out[22] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 75.530 206.000 75.810 210.000 ; + END + END la1_data_out[22] + PIN la1_data_out[23] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 35.050 0.000 35.330 4.000 ; + END + END la1_data_out[23] + PIN la1_data_out[24] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 87.080 130.000 87.680 ; + END + END la1_data_out[24] + PIN la1_data_out[25] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 15.000 4.000 15.600 ; + END + END la1_data_out[25] + PIN la1_data_out[26] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 34.040 130.000 34.640 ; + END + END la1_data_out[26] + PIN la1_data_out[27] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 189.080 4.000 189.680 ; + END + END la1_data_out[27] + PIN la1_data_out[28] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 125.210 0.000 125.490 4.000 ; + END + END la1_data_out[28] + PIN la1_data_out[29] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 17.570 0.000 17.850 4.000 ; + END + END la1_data_out[29] + PIN la1_data_out[2] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 58.970 0.000 59.250 4.000 ; + END + END la1_data_out[2] + PIN la1_data_out[30] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 65.320 130.000 65.920 ; + END + END la1_data_out[30] + PIN la1_data_out[31] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 205.400 130.000 206.000 ; + END + END la1_data_out[31] + PIN la1_data_out[3] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 36.760 4.000 37.360 ; + END + END la1_data_out[3] + PIN la1_data_out[4] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 127.970 0.000 128.250 4.000 ; + END + END la1_data_out[4] + PIN la1_data_out[5] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 10.210 0.000 10.490 4.000 ; + END + END la1_data_out[5] + PIN la1_data_out[6] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 95.240 130.000 95.840 ; + END + END la1_data_out[6] + PIN la1_data_out[7] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 1.930 0.000 2.210 4.000 ; + END + END la1_data_out[7] + PIN la1_data_out[8] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 159.160 130.000 159.760 ; + END + END la1_data_out[8] + PIN la1_data_out[9] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 121.530 206.000 121.810 210.000 ; + END + END la1_data_out[9] + PIN la1_oenb[0] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 12.280 130.000 12.880 ; + END + END la1_oenb[0] + PIN la1_oenb[10] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 116.930 206.000 117.210 210.000 ; + END + END la1_oenb[10] + PIN la1_oenb[11] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 108.840 4.000 109.440 ; + END + END la1_oenb[11] + PIN la1_oenb[12] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 117.000 4.000 117.600 ; + END + END la1_oenb[12] + PIN la1_oenb[13] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 83.810 0.000 84.090 4.000 ; + END + END la1_oenb[13] + PIN la1_oenb[14] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 0.090 0.000 0.370 4.000 ; + END + END la1_oenb[14] + PIN la1_oenb[15] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 99.450 0.000 99.730 4.000 ; + END + END la1_oenb[15] + PIN la1_oenb[16] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 138.760 4.000 139.360 ; + END + END la1_oenb[16] + PIN la1_oenb[17] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 1.010 206.000 1.290 210.000 ; + END + END la1_oenb[17] + PIN la1_oenb[18] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 52.530 206.000 52.810 210.000 ; + END + END la1_oenb[18] + PIN la1_oenb[19] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 104.760 4.000 105.360 ; + END + END la1_oenb[19] + PIN la1_oenb[1] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 24.930 0.000 25.210 4.000 ; + END + END la1_oenb[1] + PIN la1_oenb[20] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 7.450 0.000 7.730 4.000 ; + END + END la1_oenb[20] + PIN la1_oenb[21] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 81.050 206.000 81.330 210.000 ; + END + END la1_oenb[21] + PIN la1_oenb[22] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 49.770 206.000 50.050 210.000 ; + END + END la1_oenb[22] + PIN la1_oenb[23] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 69.090 0.000 69.370 4.000 ; + END + END la1_oenb[23] + PIN la1_oenb[24] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 101.290 206.000 101.570 210.000 ; + END + END la1_oenb[24] + PIN la1_oenb[25] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 53.080 130.000 53.680 ; + END + END la1_oenb[25] + PIN la1_oenb[26] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 155.080 4.000 155.680 ; + END + END la1_oenb[26] + PIN la1_oenb[27] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 152.360 130.000 152.960 ; + END + END la1_oenb[27] + PIN la1_oenb[28] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 27.690 0.000 27.970 4.000 ; + END + END la1_oenb[28] + PIN la1_oenb[29] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 50.690 0.000 50.970 4.000 ; + END + END la1_oenb[29] + PIN la1_oenb[2] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 34.040 4.000 34.640 ; + END + END la1_oenb[2] + PIN la1_oenb[30] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 148.280 130.000 148.880 ; + END + END la1_oenb[30] + PIN la1_oenb[31] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 79.210 0.000 79.490 4.000 ; + END + END la1_oenb[31] + PIN la1_oenb[3] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 88.410 206.000 88.690 210.000 ; + END + END la1_oenb[3] + PIN la1_oenb[4] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 85.650 206.000 85.930 210.000 ; + END + END la1_oenb[4] + PIN la1_oenb[5] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 191.800 4.000 192.400 ; + END + END la1_oenb[5] + PIN la1_oenb[6] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 11.130 206.000 11.410 210.000 ; + END + END la1_oenb[6] + PIN la1_oenb[7] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met2 ; + RECT 96.690 0.000 96.970 4.000 ; + END + END la1_oenb[7] + PIN la1_oenb[8] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 49.000 4.000 49.600 ; + END + END la1_oenb[8] + PIN la1_oenb[9] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 0.000 165.960 4.000 166.560 ; + END + END la1_oenb[9] + PIN vccd1 + DIRECTION INPUT ; + USE POWER ; + PORT + LAYER met4 ; + RECT 24.545 10.640 26.145 198.800 ; + END + PORT + LAYER met4 ; + RECT 64.195 10.640 65.795 198.800 ; + END + PORT + LAYER met4 ; + RECT 103.850 10.640 105.450 198.800 ; + END + END vccd1 + PIN vssd1 + DIRECTION INPUT ; + USE GROUND ; + PORT + LAYER met4 ; + RECT 44.370 10.640 45.970 198.800 ; + END + PORT + LAYER met4 ; + RECT 84.025 10.640 85.625 198.800 ; + END + END vssd1 + PIN wb_clk_i + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met3 ; + RECT 126.000 106.120 130.000 106.720 ; + END + END wb_clk_i + OBS + LAYER li1 ; + RECT 5.520 0.425 129.575 205.615 ; + LAYER met1 ; + RECT 1.910 0.380 129.635 205.660 ; + LAYER met2 ; + RECT 1.940 205.720 3.490 208.605 ; + RECT 4.330 205.720 6.250 208.605 ; + RECT 7.090 205.720 9.010 208.605 ; + RECT 9.850 205.720 10.850 208.605 ; + RECT 11.690 205.720 13.610 208.605 ; + RECT 14.450 205.720 16.370 208.605 ; + RECT 17.210 205.720 19.130 208.605 ; + RECT 19.970 205.720 21.890 208.605 ; + RECT 22.730 205.720 23.730 208.605 ; + RECT 24.570 205.720 26.490 208.605 ; + RECT 27.330 205.720 29.250 208.605 ; + RECT 30.090 205.720 32.010 208.605 ; + RECT 32.850 205.720 34.770 208.605 ; + RECT 35.610 205.720 36.610 208.605 ; + RECT 37.450 205.720 39.370 208.605 ; + RECT 40.210 205.720 42.130 208.605 ; + RECT 42.970 205.720 44.890 208.605 ; + RECT 45.730 205.720 46.730 208.605 ; + RECT 47.570 205.720 49.490 208.605 ; + RECT 50.330 205.720 52.250 208.605 ; + RECT 53.090 205.720 55.010 208.605 ; + RECT 55.850 205.720 57.770 208.605 ; + RECT 58.610 205.720 59.610 208.605 ; + RECT 60.450 205.720 62.370 208.605 ; + RECT 63.210 205.720 65.130 208.605 ; + RECT 65.970 205.720 67.890 208.605 ; + RECT 68.730 205.720 69.730 208.605 ; + RECT 70.570 205.720 72.490 208.605 ; + RECT 73.330 205.720 75.250 208.605 ; + RECT 76.090 205.720 78.010 208.605 ; + RECT 78.850 205.720 80.770 208.605 ; + RECT 81.610 205.720 82.610 208.605 ; + RECT 83.450 205.720 85.370 208.605 ; + RECT 86.210 205.720 88.130 208.605 ; + RECT 88.970 205.720 90.890 208.605 ; + RECT 91.730 205.720 93.650 208.605 ; + RECT 94.490 205.720 95.490 208.605 ; + RECT 96.330 205.720 98.250 208.605 ; + RECT 99.090 205.720 101.010 208.605 ; + RECT 101.850 205.720 103.770 208.605 ; + RECT 104.610 205.720 105.610 208.605 ; + RECT 106.450 205.720 108.370 208.605 ; + RECT 109.210 205.720 111.130 208.605 ; + RECT 111.970 205.720 113.890 208.605 ; + RECT 114.730 205.720 116.650 208.605 ; + RECT 117.490 205.720 118.490 208.605 ; + RECT 119.330 205.720 121.250 208.605 ; + RECT 122.090 205.720 124.010 208.605 ; + RECT 124.850 205.720 126.770 208.605 ; + RECT 127.610 205.720 128.610 208.605 ; + RECT 1.940 4.280 128.710 205.720 ; + RECT 2.490 0.155 4.410 4.280 ; + RECT 5.250 0.155 7.170 4.280 ; + RECT 8.010 0.155 9.930 4.280 ; + RECT 10.770 0.155 11.770 4.280 ; + RECT 12.610 0.155 14.530 4.280 ; + RECT 15.370 0.155 17.290 4.280 ; + RECT 18.130 0.155 20.050 4.280 ; + RECT 20.890 0.155 22.810 4.280 ; + RECT 23.650 0.155 24.650 4.280 ; + RECT 25.490 0.155 27.410 4.280 ; + RECT 28.250 0.155 30.170 4.280 ; + RECT 31.010 0.155 32.930 4.280 ; + RECT 33.770 0.155 34.770 4.280 ; + RECT 35.610 0.155 37.530 4.280 ; + RECT 38.370 0.155 40.290 4.280 ; + RECT 41.130 0.155 43.050 4.280 ; + RECT 43.890 0.155 45.810 4.280 ; + RECT 46.650 0.155 47.650 4.280 ; + RECT 48.490 0.155 50.410 4.280 ; + RECT 51.250 0.155 53.170 4.280 ; + RECT 54.010 0.155 55.930 4.280 ; + RECT 56.770 0.155 58.690 4.280 ; + RECT 59.530 0.155 60.530 4.280 ; + RECT 61.370 0.155 63.290 4.280 ; + RECT 64.130 0.155 66.050 4.280 ; + RECT 66.890 0.155 68.810 4.280 ; + RECT 69.650 0.155 70.650 4.280 ; + RECT 71.490 0.155 73.410 4.280 ; + RECT 74.250 0.155 76.170 4.280 ; + RECT 77.010 0.155 78.930 4.280 ; + RECT 79.770 0.155 81.690 4.280 ; + RECT 82.530 0.155 83.530 4.280 ; + RECT 84.370 0.155 86.290 4.280 ; + RECT 87.130 0.155 89.050 4.280 ; + RECT 89.890 0.155 91.810 4.280 ; + RECT 92.650 0.155 93.650 4.280 ; + RECT 94.490 0.155 96.410 4.280 ; + RECT 97.250 0.155 99.170 4.280 ; + RECT 100.010 0.155 101.930 4.280 ; + RECT 102.770 0.155 104.690 4.280 ; + RECT 105.530 0.155 106.530 4.280 ; + RECT 107.370 0.155 109.290 4.280 ; + RECT 110.130 0.155 112.050 4.280 ; + RECT 112.890 0.155 114.810 4.280 ; + RECT 115.650 0.155 117.570 4.280 ; + RECT 118.410 0.155 119.410 4.280 ; + RECT 120.250 0.155 122.170 4.280 ; + RECT 123.010 0.155 124.930 4.280 ; + RECT 125.770 0.155 127.690 4.280 ; + RECT 128.530 0.155 128.710 4.280 ; + LAYER met3 ; + RECT 4.400 207.720 128.735 208.585 ; + RECT 4.000 206.400 128.735 207.720 ; + RECT 4.000 205.040 125.600 206.400 ; + RECT 4.400 205.000 125.600 205.040 ; + RECT 4.400 203.640 128.735 205.000 ; + RECT 4.000 202.320 128.735 203.640 ; + RECT 4.000 200.960 125.600 202.320 ; + RECT 4.400 200.920 125.600 200.960 ; + RECT 4.400 199.560 128.735 200.920 ; + RECT 4.000 198.240 128.735 199.560 ; + RECT 4.000 196.880 125.600 198.240 ; + RECT 4.400 196.840 125.600 196.880 ; + RECT 4.400 195.480 128.735 196.840 ; + RECT 4.000 194.160 128.735 195.480 ; + RECT 4.000 192.800 125.600 194.160 ; + RECT 4.400 192.760 125.600 192.800 ; + RECT 4.400 191.440 128.735 192.760 ; + RECT 4.400 191.400 125.600 191.440 ; + RECT 4.000 190.080 125.600 191.400 ; + RECT 4.400 190.040 125.600 190.080 ; + RECT 4.400 188.680 128.735 190.040 ; + RECT 4.000 187.360 128.735 188.680 ; + RECT 4.000 186.000 125.600 187.360 ; + RECT 4.400 185.960 125.600 186.000 ; + RECT 4.400 184.600 128.735 185.960 ; + RECT 4.000 183.280 128.735 184.600 ; + RECT 4.000 181.920 125.600 183.280 ; + RECT 4.400 181.880 125.600 181.920 ; + RECT 4.400 180.520 128.735 181.880 ; + RECT 4.000 179.200 128.735 180.520 ; + RECT 4.000 177.840 125.600 179.200 ; + RECT 4.400 177.800 125.600 177.840 ; + RECT 4.400 176.440 128.735 177.800 ; + RECT 4.000 175.120 128.735 176.440 ; + RECT 4.400 173.720 125.600 175.120 ; + RECT 4.000 172.400 128.735 173.720 ; + RECT 4.000 171.040 125.600 172.400 ; + RECT 4.400 171.000 125.600 171.040 ; + RECT 4.400 169.640 128.735 171.000 ; + RECT 4.000 168.320 128.735 169.640 ; + RECT 4.000 166.960 125.600 168.320 ; + RECT 4.400 166.920 125.600 166.960 ; + RECT 4.400 165.560 128.735 166.920 ; + RECT 4.000 164.240 128.735 165.560 ; + RECT 4.000 162.880 125.600 164.240 ; + RECT 4.400 162.840 125.600 162.880 ; + RECT 4.400 161.480 128.735 162.840 ; + RECT 4.000 160.160 128.735 161.480 ; + RECT 4.000 158.800 125.600 160.160 ; + RECT 4.400 158.760 125.600 158.800 ; + RECT 4.400 157.440 128.735 158.760 ; + RECT 4.400 157.400 125.600 157.440 ; + RECT 4.000 156.080 125.600 157.400 ; + RECT 4.400 156.040 125.600 156.080 ; + RECT 4.400 154.680 128.735 156.040 ; + RECT 4.000 153.360 128.735 154.680 ; + RECT 4.000 152.000 125.600 153.360 ; + RECT 4.400 151.960 125.600 152.000 ; + RECT 4.400 150.600 128.735 151.960 ; + RECT 4.000 149.280 128.735 150.600 ; + RECT 4.000 147.920 125.600 149.280 ; + RECT 4.400 147.880 125.600 147.920 ; + RECT 4.400 146.520 128.735 147.880 ; + RECT 4.000 145.200 128.735 146.520 ; + RECT 4.000 143.840 125.600 145.200 ; + RECT 4.400 143.800 125.600 143.840 ; + RECT 4.400 142.440 128.735 143.800 ; + RECT 4.000 141.120 128.735 142.440 ; + RECT 4.000 139.760 125.600 141.120 ; + RECT 4.400 139.720 125.600 139.760 ; + RECT 4.400 138.400 128.735 139.720 ; + RECT 4.400 138.360 125.600 138.400 ; + RECT 4.000 137.040 125.600 138.360 ; + RECT 4.400 137.000 125.600 137.040 ; + RECT 4.400 135.640 128.735 137.000 ; + RECT 4.000 134.320 128.735 135.640 ; + RECT 4.000 132.960 125.600 134.320 ; + RECT 4.400 132.920 125.600 132.960 ; + RECT 4.400 131.560 128.735 132.920 ; + RECT 4.000 130.240 128.735 131.560 ; + RECT 4.000 128.880 125.600 130.240 ; + RECT 4.400 128.840 125.600 128.880 ; + RECT 4.400 127.480 128.735 128.840 ; + RECT 4.000 126.160 128.735 127.480 ; + RECT 4.000 124.800 125.600 126.160 ; + RECT 4.400 124.760 125.600 124.800 ; + RECT 4.400 123.400 128.735 124.760 ; + RECT 4.000 122.080 128.735 123.400 ; + RECT 4.400 120.680 125.600 122.080 ; + RECT 4.000 119.360 128.735 120.680 ; + RECT 4.000 118.000 125.600 119.360 ; + RECT 4.400 117.960 125.600 118.000 ; + RECT 4.400 116.600 128.735 117.960 ; + RECT 4.000 115.280 128.735 116.600 ; + RECT 4.000 113.920 125.600 115.280 ; + RECT 4.400 113.880 125.600 113.920 ; + RECT 4.400 112.520 128.735 113.880 ; + RECT 4.000 111.200 128.735 112.520 ; + RECT 4.000 109.840 125.600 111.200 ; + RECT 4.400 109.800 125.600 109.840 ; + RECT 4.400 108.440 128.735 109.800 ; + RECT 4.000 107.120 128.735 108.440 ; + RECT 4.000 105.760 125.600 107.120 ; + RECT 4.400 105.720 125.600 105.760 ; + RECT 4.400 104.400 128.735 105.720 ; + RECT 4.400 104.360 125.600 104.400 ; + RECT 4.000 103.040 125.600 104.360 ; + RECT 4.400 103.000 125.600 103.040 ; + RECT 4.400 101.640 128.735 103.000 ; + RECT 4.000 100.320 128.735 101.640 ; + RECT 4.000 98.960 125.600 100.320 ; + RECT 4.400 98.920 125.600 98.960 ; + RECT 4.400 97.560 128.735 98.920 ; + RECT 4.000 96.240 128.735 97.560 ; + RECT 4.000 94.880 125.600 96.240 ; + RECT 4.400 94.840 125.600 94.880 ; + RECT 4.400 93.480 128.735 94.840 ; + RECT 4.000 92.160 128.735 93.480 ; + RECT 4.000 90.800 125.600 92.160 ; + RECT 4.400 90.760 125.600 90.800 ; + RECT 4.400 89.400 128.735 90.760 ; + RECT 4.000 88.080 128.735 89.400 ; + RECT 4.400 86.680 125.600 88.080 ; + RECT 4.000 85.360 128.735 86.680 ; + RECT 4.000 84.000 125.600 85.360 ; + RECT 4.400 83.960 125.600 84.000 ; + RECT 4.400 82.600 128.735 83.960 ; + RECT 4.000 81.280 128.735 82.600 ; + RECT 4.000 79.920 125.600 81.280 ; + RECT 4.400 79.880 125.600 79.920 ; + RECT 4.400 78.520 128.735 79.880 ; + RECT 4.000 77.200 128.735 78.520 ; + RECT 4.000 75.840 125.600 77.200 ; + RECT 4.400 75.800 125.600 75.840 ; + RECT 4.400 74.440 128.735 75.800 ; + RECT 4.000 73.120 128.735 74.440 ; + RECT 4.000 71.760 125.600 73.120 ; + RECT 4.400 71.720 125.600 71.760 ; + RECT 4.400 70.400 128.735 71.720 ; + RECT 4.400 70.360 125.600 70.400 ; + RECT 4.000 69.040 125.600 70.360 ; + RECT 4.400 69.000 125.600 69.040 ; + RECT 4.400 67.640 128.735 69.000 ; + RECT 4.000 66.320 128.735 67.640 ; + RECT 4.000 64.960 125.600 66.320 ; + RECT 4.400 64.920 125.600 64.960 ; + RECT 4.400 63.560 128.735 64.920 ; + RECT 4.000 62.240 128.735 63.560 ; + RECT 4.000 60.880 125.600 62.240 ; + RECT 4.400 60.840 125.600 60.880 ; + RECT 4.400 59.480 128.735 60.840 ; + RECT 4.000 58.160 128.735 59.480 ; + RECT 4.000 56.800 125.600 58.160 ; + RECT 4.400 56.760 125.600 56.800 ; + RECT 4.400 55.400 128.735 56.760 ; + RECT 4.000 54.080 128.735 55.400 ; + RECT 4.000 52.720 125.600 54.080 ; + RECT 4.400 52.680 125.600 52.720 ; + RECT 4.400 51.360 128.735 52.680 ; + RECT 4.400 51.320 125.600 51.360 ; + RECT 4.000 50.000 125.600 51.320 ; + RECT 4.400 49.960 125.600 50.000 ; + RECT 4.400 48.600 128.735 49.960 ; + RECT 4.000 47.280 128.735 48.600 ; + RECT 4.000 45.920 125.600 47.280 ; + RECT 4.400 45.880 125.600 45.920 ; + RECT 4.400 44.520 128.735 45.880 ; + RECT 4.000 43.200 128.735 44.520 ; + RECT 4.000 41.840 125.600 43.200 ; + RECT 4.400 41.800 125.600 41.840 ; + RECT 4.400 40.440 128.735 41.800 ; + RECT 4.000 39.120 128.735 40.440 ; + RECT 4.000 37.760 125.600 39.120 ; + RECT 4.400 37.720 125.600 37.760 ; + RECT 4.400 36.360 128.735 37.720 ; + RECT 4.000 35.040 128.735 36.360 ; + RECT 4.400 33.640 125.600 35.040 ; + RECT 4.000 32.320 128.735 33.640 ; + RECT 4.000 30.960 125.600 32.320 ; + RECT 4.400 30.920 125.600 30.960 ; + RECT 4.400 29.560 128.735 30.920 ; + RECT 4.000 28.240 128.735 29.560 ; + RECT 4.000 26.880 125.600 28.240 ; + RECT 4.400 26.840 125.600 26.880 ; + RECT 4.400 25.480 128.735 26.840 ; + RECT 4.000 24.160 128.735 25.480 ; + RECT 4.000 22.800 125.600 24.160 ; + RECT 4.400 22.760 125.600 22.800 ; + RECT 4.400 21.400 128.735 22.760 ; + RECT 4.000 20.080 128.735 21.400 ; + RECT 4.000 18.720 125.600 20.080 ; + RECT 4.400 18.680 125.600 18.720 ; + RECT 4.400 17.360 128.735 18.680 ; + RECT 4.400 17.320 125.600 17.360 ; + RECT 4.000 16.000 125.600 17.320 ; + RECT 4.400 15.960 125.600 16.000 ; + RECT 4.400 14.600 128.735 15.960 ; + RECT 4.000 13.280 128.735 14.600 ; + RECT 4.000 11.920 125.600 13.280 ; + RECT 4.400 11.880 125.600 11.920 ; + RECT 4.400 10.520 128.735 11.880 ; + RECT 4.000 9.200 128.735 10.520 ; + RECT 4.000 7.840 125.600 9.200 ; + RECT 4.400 7.800 125.600 7.840 ; + RECT 4.400 6.440 128.735 7.800 ; + RECT 4.000 5.120 128.735 6.440 ; + RECT 4.000 3.760 125.600 5.120 ; + RECT 4.400 3.720 125.600 3.760 ; + RECT 4.400 2.360 128.735 3.720 ; + RECT 4.000 1.040 128.735 2.360 ; + RECT 4.000 0.175 125.600 1.040 ; + LAYER met4 ; + RECT 43.535 10.640 43.970 198.800 ; + RECT 46.370 10.640 63.795 198.800 ; + RECT 66.195 10.640 83.625 198.800 ; + RECT 86.025 10.640 103.450 198.800 ; + RECT 105.850 10.640 115.625 198.800 ; + END +END wrapped_rgb_mixer +END LIBRARY +
diff --git a/verilog/rtl/user_project_includes.v b/verilog/rtl/user_project_includes.v new file mode 100644 index 0000000..8f45c40 --- /dev/null +++ b/verilog/rtl/user_project_includes.v
@@ -0,0 +1,8 @@ +// +------------+-----------+-----------+-----------------------------------------------+--------+ +// | project id | title | author | repo | commit | +// +------------+-----------+-----------+-----------------------------------------------+--------+ +// | 0 | RGB Mixer | Matt Venn | https://github.com/mattvenn/wrapped_rgb_mixer | mpw3 | +// | 1 | RGB Mixer | Matt Venn | https://github.com/mattvenn/wrapped_rgb_mixer | mpw3 | +// +------------+-----------+-----------+-----------------------------------------------+--------+ +`include "wrapped_rgb_mixer/wrapper.v" // 0 +`include "wrapped_rgb_mixer/wrapper.v" // 1 \ No newline at end of file
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v index 5ee1cee..342dfe5 100644 --- a/verilog/rtl/user_project_wrapper.v +++ b/verilog/rtl/user_project_wrapper.v
@@ -26,22 +26,19 @@ * example should be removed and replaced with the actual * user project. * + * THIS FILE HAS BEEN GENERATED USING multi_tools_project CODEGEN + * IF YOU NEED TO MAKE EDITS TO IT, EDIT codegen/caravel_iface_header.txt + * *------------------------------------------------------------- */ module user_project_wrapper #( parameter BITS = 32 -) ( -`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 +)( + `ifdef USE_POWER_PINS + inout vccd1, // User area 1 1.8V supply + inout vssd1, // User area 1 digital ground + `endif // Wishbone Slave ports (WB MI A) input wb_clk_i, @@ -78,46 +75,57 @@ output [2:0] user_irq ); -/*--------------------------------------*/ -/* User project is instantiated here */ -/*--------------------------------------*/ + // generate active wires + wire [31: 0] active; + assign active = la_data_in[31:0]; -user_proj_example mprj ( -`ifdef USE_POWER_PINS - .vccd1(vccd1), // User area 1 1.8V power - .vssd1(vssd1), // User area 1 digital ground -`endif + // split remaining 96 logic analizer wires into 3 chunks + wire [31: 0] la1_data_in, la1_data_out, la1_oenb; + assign la1_data_in = la_data_in[63:32]; + assign la1_data_out = la_data_out[63:32]; + assign la1_oenb = la_oenb[63:32]; - .wb_clk_i(wb_clk_i), - .wb_rst_i(wb_rst_i), + wire [31: 0] la2_data_in, la2_data_out, la2_oenb; + assign la2_data_in = la_data_in[95:64]; + assign la2_data_out = la_data_out[95:64]; + assign la2_oenb = la_oenb[95:64]; - // MGMT SoC Wishbone Slave + wire [31: 0] la3_data_in, la3_data_out, la3_oenb; + assign la3_data_in = la_data_in[127:96]; + assign la3_data_out = la_data_out[127:96]; + assign la3_oenb = la_oenb[127:96]; - .wbs_cyc_i(wbs_cyc_i), - .wbs_stb_i(wbs_stb_i), - .wbs_we_i(wbs_we_i), - .wbs_sel_i(wbs_sel_i), - .wbs_adr_i(wbs_adr_i), - .wbs_dat_i(wbs_dat_i), - .wbs_ack_o(wbs_ack_o), - .wbs_dat_o(wbs_dat_o), + wrapped_rgb_mixer wrapped_rgb_mixer_0( + `ifdef USE_POWER_PINS + .vccd1 (vccd1), + .vssd1 (vssd1), + `endif + .wb_clk_i (wb_clk_i), + .active (active[0]), + .la1_data_in (la1_data_in[31:0]), + .la1_data_out (la1_data_out[31:0]), + .la1_oenb (la1_oenb[31:0]), + .io_in (io_in[37:0]), + .io_out (io_out[37:0]), + .io_oeb (io_oeb[37:0]) + ); - // Logic Analyzer + wrapped_rgb_mixer wrapped_rgb_mixer_1( + `ifdef USE_POWER_PINS + .vccd1 (vccd1), + .vssd1 (vssd1), + `endif + .wb_clk_i (wb_clk_i), + .active (active[1]), + .la1_data_in (la1_data_in[31:0]), + .la1_data_out (la1_data_out[31:0]), + .la1_oenb (la1_oenb[31:0]), + .io_in (io_in[37:0]), + .io_out (io_out[37:0]), + .io_oeb (io_oeb[37:0]) + ); - .la_data_in(la_data_in), - .la_data_out(la_data_out), - .la_oenb (la_oenb), - - // IO Pads - - .io_in (io_in), - .io_out(io_out), - .io_oeb(io_oeb), - - // IRQ - .irq(user_irq) -); + // end of module instantiation endmodule // user_project_wrapper - -`default_nettype wire +`default_nettype wire \ No newline at end of file
diff --git a/verilog/rtl/wrapped_rgb_mixer/wrapper.v b/verilog/rtl/wrapped_rgb_mixer/wrapper.v new file mode 100644 index 0000000..36c4586 --- /dev/null +++ b/verilog/rtl/wrapped_rgb_mixer/wrapper.v
@@ -0,0 +1,126 @@ +`default_nettype none +`ifdef FORMAL + `define MPRJ_IO_PADS 38 +`endif + +//`define USE_WB 0 +`define USE_LA 1 +`define USE_IO 1 +//`define USE_MEM 0 +//`define USE_IRQ 0 + +module wrapped_rgb_mixer ( +/* +`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 +*/ +`ifdef USE_POWER_PINS + inout vccd1, + inout vssd1, +`endif + // interface as user_proj_example.v + input wire wb_clk_i, +`ifdef USE_WB + input wire wb_rst_i, + input wire wbs_stb_i, + input wire wbs_cyc_i, + input wire wbs_we_i, + input wire [3:0] wbs_sel_i, + input wire [31:0] wbs_dat_i, + input wire [31:0] wbs_adr_i, + output wire wbs_ack_o, + output wire [31:0] wbs_dat_o, +`endif + + // Logic Analyzer Signals + // only provide first 32 bits to reduce wiring congestion +`ifdef USE_LA + input wire [31:0] la1_data_in, + output wire [31:0] la1_data_out, + input wire [31:0] la1_oenb, +`endif + + // IOs +`ifdef USE_IO + input wire [`MPRJ_IO_PADS-1:0] io_in, + output wire [`MPRJ_IO_PADS-1:0] io_out, + output wire [`MPRJ_IO_PADS-1:0] io_oeb, +`endif + + // IRQ +`ifdef USE_IRQ + output wire [2:0] irq, +`endif + +`ifdef USE_CLK2 + // extra user clock + input wire user_clock2, +`endif + + // active input, only connect tristated outputs if this is high + input wire active +); + + // all outputs must be tristated before being passed onto the project + wire buf_wbs_ack_o; + wire [31:0] buf_wbs_dat_o; + wire [31:0] buf_la1_data_out; + wire [`MPRJ_IO_PADS-1:0] buf_io_out; + wire [`MPRJ_IO_PADS-1:0] buf_io_oeb; + wire [2:0] buf_irq; + + `ifdef FORMAL + // formal can't deal with z, so set all outputs to 0 if not active + assign wbs_ack_o = active ? buf_wbs_ack_o : 1'b0; + assign wbs_dat_o = active ? buf_wbs_dat_o : 32'b0; + assign la1_data_out = active ? buf_la1_data_out : 32'b0; + assign io_out = active ? buf_io_out : {`MPRJ_IO_PADS{1'b0}}; + assign io_oeb = active ? buf_io_oeb : {`MPRJ_IO_PADS{1'b0}}; + assign irq = active ? buf_irq : 3'b0; + `include "properties.v" + `else + // tristate buffers + + `ifdef USE_WB + assign wbs_ack_o = active ? buf_wbs_ack_o : 1'bz; + assign wbs_dat_o = active ? buf_wbs_dat_o : 32'bz; + `endif + `ifdef USE_LA + assign la1_data_out = active ? buf_la1_data_out : 32'bz; + `endif + `ifdef USE_IO + assign io_out = active ? buf_io_out : {`MPRJ_IO_PADS{1'bz}}; + assign io_oeb = active ? buf_io_oeb : {`MPRJ_IO_PADS{1'bz}}; + `endif + `ifdef USE_IRQ + assign irq = active ? buf_irq : 3'bz; + `endif + `endif + + // permanently set oeb so that outputs are always enabled: 0 is output, 1 is high-impedance + assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; + + // instantiate your module here, connecting what you need of the above signals + rgb_mixer rgb_mixer0( + .clk (wb_clk_i), + .reset (la1_data_in[0]), + .enc0_a (io_in[8]), + .enc0_b (io_in[9]), + .enc1_a (io_in[10]), + .enc1_b (io_in[11]), + .enc2_a (io_in[12]), + .enc2_b (io_in[13]), + .pwm0_out (buf_io_out[14]), + .pwm1_out (buf_io_out[15]), + .pwm2_out (buf_io_out[16])); + +endmodule +`default_nettype wire