Commiting work done as of friday, so far everything is configured and ready to go, just need to harden FSM, wrapper, and then run precheck, NOTE the GDS has not been copied over nor has the lef files
diff --git a/gds/user_proj_example.gds b/gds/user_proj_example.gds
index 8b542fd..d973302 100644
--- a/gds/user_proj_example.gds
+++ b/gds/user_proj_example.gds
Binary files differ
diff --git a/gds/user_project_wrapper.gds b/gds/user_project_wrapper.gds
index 0bcc1f7..a1e7ccf 100644
--- a/gds/user_project_wrapper.gds
+++ b/gds/user_project_wrapper.gds
Binary files differ
diff --git a/mag/user_proj_example.mag b/mag/user_proj_example.mag
index 69ccd18..f9ae5e1 100644
--- a/mag/user_proj_example.mag
+++ b/mag/user_proj_example.mag
@@ -1,7 +1,7 @@
magic
tech sky130B
magscale 1 2
-timestamp 1657064812
+timestamp 1662747017
<< viali >>
rect 4077 117249 4111 117283
rect 5089 117249 5123 117283
@@ -138615,7 +138615,7 @@
rect 173400 2144 173416 2208
rect 173480 2144 173488 2208
rect 173168 2128 173488 2144
-use sky130_fd_sc_hd__diode_2 ANTENNA__341__A1 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__diode_2 ANTENNA__341__A1 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 104604 0 1 4352
box -38 -48 222 592
@@ -141427,7 +141427,7 @@
timestamp 1649977179
transform -1 0 29072 0 1 25024
box -38 -48 222 592
-use sky130_ef_sc_hd__decap_12 FILLER_0_3 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_ef_sc_hd__decap_12 FILLER_0_3 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 1380 0 1 2176
box -38 -48 1142 592
@@ -141435,7 +141435,7 @@
timestamp 1649977179
transform 1 0 2484 0 1 2176
box -38 -48 1142 592
-use sky130_fd_sc_hd__fill_1 FILLER_0_27 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__fill_1 FILLER_0_27 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 3588 0 1 2176
box -38 -48 130 592
@@ -141447,7 +141447,7 @@
timestamp 1649977179
transform 1 0 4876 0 1 2176
box -38 -48 1142 592
-use sky130_fd_sc_hd__decap_3 FILLER_0_53 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__decap_3 FILLER_0_53 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 5980 0 1 2176
box -38 -48 314 592
@@ -141515,7 +141515,7 @@
timestamp 1649977179
transform 1 0 19228 0 1 2176
box -38 -48 1142 592
-use sky130_fd_sc_hd__decap_8 FILLER_0_209 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__decap_8 FILLER_0_209 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 20332 0 1 2176
box -38 -48 774 592
@@ -141523,7 +141523,7 @@
timestamp 1649977179
transform 1 0 21068 0 1 2176
box -38 -48 130 592
-use sky130_fd_sc_hd__decap_4 FILLER_0_220 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__decap_4 FILLER_0_220 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 21344 0 1 2176
box -38 -48 406 592
@@ -141563,7 +141563,7 @@
timestamp 1649977179
transform 1 0 27600 0 1 2176
box -38 -48 406 592
-use sky130_fd_sc_hd__decap_6 FILLER_0_302 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__decap_6 FILLER_0_302 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 28888 0 1 2176
box -38 -48 590 592
@@ -141795,7 +141795,7 @@
timestamp 1649977179
transform 1 0 65136 0 1 2176
box -38 -48 406 592
-use sky130_fd_sc_hd__fill_2 FILLER_0_701 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__fill_2 FILLER_0_701 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 65596 0 1 2176
box -38 -48 222 592
@@ -319051,7 +319051,7 @@
timestamp 1649977179
transform -1 0 178848 0 -1 117504
box -38 -48 314 592
-use sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_424 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__tapvpwrvgnd_1 TAP_424 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 3680 0 1 2176
box -38 -48 130 592
@@ -348155,51 +348155,51 @@
timestamp 1649977179
transform 1 0 176272 0 -1 117504
box -38 -48 130 592
-use sky130_fd_sc_hd__and2b_1 _340_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and2b_1 _340_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 105708 0 -1 4352
box -38 -48 590 592
-use sky130_fd_sc_hd__a21oi_4 _341_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a21oi_4 _341_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 106168 0 1 4352
box -38 -48 1234 592
-use sky130_fd_sc_hd__clkbuf_4 _342_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkbuf_4 _342_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 104972 0 -1 17408
box -38 -48 590 592
-use sky130_fd_sc_hd__inv_12 _343_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__inv_12 _343_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 108468 0 -1 22848
box -38 -48 1234 592
-use sky130_fd_sc_hd__mux2_2 _344_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__mux2_2 _344_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 21896 0 1 4352
box -38 -48 866 592
-use sky130_fd_sc_hd__buf_1 _345_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__buf_1 _345_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 21804 0 -1 5440
box -38 -48 314 592
-use sky130_fd_sc_hd__nand2_4 _346_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nand2_4 _346_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 23920 0 1 4352
box -38 -48 866 592
-use sky130_fd_sc_hd__nor2_2 _347_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nor2_2 _347_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 23736 0 -1 7616
box -38 -48 498 592
-use sky130_fd_sc_hd__buf_4 _348_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__buf_4 _348_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 64860 0 -1 9792
box -38 -48 590 592
-use sky130_fd_sc_hd__nand2_8 _349_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nand2_8 _349_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 101660 0 1 13056
box -38 -48 1510 592
-use sky130_fd_sc_hd__buf_2 _350_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__buf_2 _350_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 16100 0 1 11968
box -38 -48 406 592
-use sky130_fd_sc_hd__clkinv_2 _351_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkinv_2 _351_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 13524 0 -1 6528
box -38 -48 406 592
@@ -348207,23 +348207,23 @@
timestamp 1649977179
transform -1 0 105708 0 -1 20672
box -38 -48 590 592
-use sky130_fd_sc_hd__inv_2 _353_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__inv_2 _353_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 27140 0 1 9792
box -38 -48 314 592
-use sky130_fd_sc_hd__clkbuf_2 _354_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkbuf_2 _354_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 46000 0 -1 10880
box -38 -48 406 592
-use sky130_fd_sc_hd__dlymetal6s2s_1 _355_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__dlymetal6s2s_1 _355_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 43424 0 -1 8704
box -38 -48 958 592
-use sky130_fd_sc_hd__nand2_1 _356_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nand2_1 _356_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 42688 0 1 9792
box -38 -48 314 592
-use sky130_fd_sc_hd__and2_4 _357_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and2_4 _357_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 24380 0 1 4352
box -38 -48 682 592
@@ -348235,7 +348235,7 @@
timestamp 1649977179
transform -1 0 84364 0 -1 10880
box -38 -48 406 592
-use sky130_fd_sc_hd__a41o_1 _360_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a41o_1 _360_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 79304 0 -1 9792
box -38 -48 774 592
@@ -348251,7 +348251,7 @@
timestamp 1649977179
transform 1 0 86848 0 1 9792
box -38 -48 774 592
-use sky130_fd_sc_hd__and3_1 _364_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and3_1 _364_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 86664 0 1 8704
box -38 -48 498 592
@@ -348271,19 +348271,19 @@
timestamp 1649977179
transform 1 0 79304 0 1 4352
box -38 -48 774 592
-use sky130_fd_sc_hd__and4_1 _369_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and4_1 _369_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 74152 0 -1 6528
box -38 -48 682 592
-use sky130_fd_sc_hd__and4b_2 _370_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and4b_2 _370_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 72036 0 -1 9792
box -38 -48 866 592
-use sky130_fd_sc_hd__a21o_2 _371_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a21o_2 _371_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 42596 0 1 10880
box -38 -48 682 592
-use sky130_fd_sc_hd__and3_2 _372_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and3_2 _372_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 43148 0 1 8704
box -38 -48 590 592
@@ -348291,19 +348291,19 @@
timestamp 1649977179
transform -1 0 86756 0 -1 10880
box -38 -48 406 592
-use sky130_fd_sc_hd__and3b_2 _374_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and3b_2 _374_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 78016 0 -1 9792
box -38 -48 774 592
-use sky130_fd_sc_hd__a221o_1 _375_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a221o_1 _375_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 27508 0 1 9792
box -38 -48 774 592
-use sky130_fd_sc_hd__and2_1 _376_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and2_1 _376_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 29256 0 -1 21760
box -38 -48 498 592
-use sky130_fd_sc_hd__clkbuf_1 _377_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkbuf_1 _377_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 28428 0 1 22848
box -38 -48 314 592
@@ -348323,7 +348323,7 @@
timestamp 1649977179
transform 1 0 7912 0 1 15232
box -38 -48 314 592
-use sky130_fd_sc_hd__or2_1 _382_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__or2_1 _382_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 7912 0 1 16320
box -38 -48 498 592
@@ -348347,7 +348347,7 @@
timestamp 1649977179
transform 1 0 49220 0 -1 6528
box -38 -48 958 592
-use sky130_fd_sc_hd__a32o_2 _388_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a32o_2 _388_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 48208 0 1 4352
box -38 -48 866 592
@@ -348359,15 +348359,15 @@
timestamp 1649977179
transform -1 0 23828 0 1 18496
box -38 -48 406 592
-use sky130_fd_sc_hd__o21a_1 _391_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__o21a_1 _391_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 8924 0 1 17408
box -38 -48 590 592
-use sky130_fd_sc_hd__nand3_1 _392_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nand3_1 _392_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 7820 0 1 14144
box -38 -48 406 592
-use sky130_fd_sc_hd__a21o_1 _393_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a21o_1 _393_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 8464 0 -1 15232
box -38 -48 590 592
@@ -348399,7 +348399,7 @@
timestamp 1649977179
transform -1 0 15180 0 -1 18496
box -38 -48 314 592
-use sky130_fd_sc_hd__a31o_1 _401_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a31o_1 _401_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 10488 0 1 15232
box -38 -48 682 592
@@ -348423,11 +348423,11 @@
timestamp 1649977179
transform 1 0 21528 0 1 19584
box -38 -48 958 592
-use sky130_fd_sc_hd__o21ai_1 _407_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__o21ai_1 _407_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 19688 0 1 18496
box -38 -48 406 592
-use sky130_fd_sc_hd__a21oi_1 _408_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a21oi_1 _408_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 19596 0 -1 19584
box -38 -48 406 592
@@ -348483,7 +348483,7 @@
timestamp 1649977179
transform 1 0 25484 0 1 17408
box -38 -48 406 592
-use sky130_fd_sc_hd__or3b_4 _422_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__or3b_4 _422_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 81420 0 -1 11968
box -38 -48 866 592
@@ -348491,11 +348491,11 @@
timestamp 1649977179
transform 1 0 29532 0 1 7616
box -38 -48 314 592
-use sky130_fd_sc_hd__o211a_1 _424_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__o211a_1 _424_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 29532 0 1 17408
box -38 -48 774 592
-use sky130_fd_sc_hd__nor2_1 _425_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nor2_1 _425_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 27784 0 1 25024
box -38 -48 314 592
@@ -348523,7 +348523,7 @@
timestamp 1649977179
transform -1 0 61364 0 1 6528
box -38 -48 958 592
-use sky130_fd_sc_hd__a32o_1 _432_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a32o_1 _432_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 57868 0 1 5440
box -38 -48 774 592
@@ -348543,7 +348543,7 @@
timestamp 1649977179
transform -1 0 44068 0 -1 11968
box -38 -48 590 592
-use sky130_fd_sc_hd__xnor2_1 _437_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__xnor2_1 _437_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 39652 0 -1 17408
box -38 -48 682 592
@@ -348619,7 +348619,7 @@
timestamp 1649977179
transform 1 0 46092 0 -1 19584
box -38 -48 406 592
-use sky130_fd_sc_hd__or3b_2 _456_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__or3b_2 _456_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 85192 0 -1 13056
box -38 -48 682 592
@@ -348791,7 +348791,7 @@
timestamp 1649977179
transform 1 0 46552 0 -1 9792
box -38 -48 314 592
-use sky130_fd_sc_hd__a21o_4 _499_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__a21o_4 _499_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 48852 0 1 10880
box -38 -48 1142 592
@@ -348799,7 +348799,7 @@
timestamp 1649977179
transform 1 0 81328 0 1 18496
box -38 -48 406 592
-use sky130_fd_sc_hd__o32a_1 _501_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__o32a_1 _501_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 82800 0 1 17408
box -38 -48 774 592
@@ -349047,7 +349047,7 @@
timestamp 1649977179
transform 1 0 97336 0 -1 10880
box -38 -48 314 592
-use sky130_fd_sc_hd__and3_4 _563_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and3_4 _563_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 45080 0 -1 9792
box -38 -48 866 592
@@ -349067,7 +349067,7 @@
timestamp 1649977179
transform -1 0 102120 0 1 28288
box -38 -48 498 592
-use sky130_fd_sc_hd__and4_2 _568_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and4_2 _568_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 100464 0 1 28288
box -38 -48 774 592
@@ -349119,7 +349119,7 @@
timestamp 1649977179
transform -1 0 96508 0 -1 17408
box -38 -48 682 592
-use sky130_fd_sc_hd__and3b_1 _581_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__and3b_1 _581_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 95956 0 1 11968
box -38 -48 682 592
@@ -349215,7 +349215,7 @@
timestamp 1649977179
transform -1 0 108928 0 1 11968
box -38 -48 590 592
-use sky130_fd_sc_hd__nand4_1 _605_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__nand4_1 _605_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 108008 0 1 16320
box -38 -48 498 592
@@ -349243,7 +349243,7 @@
timestamp 1649977179
transform -1 0 110952 0 1 22848
box -38 -48 314 592
-use sky130_fd_sc_hd__mux2_1 _612_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__mux2_1 _612_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 7636 0 1 10880
box -38 -48 866 592
@@ -349523,15 +349523,15 @@
timestamp 1649977179
transform 1 0 63572 0 -1 11968
box -38 -48 314 592
-use sky130_fd_sc_hd__dfxtp_1 _682_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__dfxtp_1 _682_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 14260 0 -1 6528
box -38 -48 1510 592
-use sky130_fd_sc_hd__dfxtp_2 _683_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__dfxtp_2 _683_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 28704 0 -1 25024
box -38 -48 1602 592
-use sky130_fd_sc_hd__dfxtp_4 _684_ dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__dfxtp_4 _684_ dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 6716 0 1 19584
box -38 -48 1786 592
@@ -350055,11 +350055,11 @@
timestamp 1649977179
transform -1 0 76912 0 1 10880
box -38 -48 314 592
-use sky130_fd_sc_hd__clkbuf_16 clkbuf_0_counter.clk dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkbuf_16 clkbuf_0_counter.clk dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 61732 0 1 18496
box -38 -48 1878 592
-use sky130_fd_sc_hd__clkbuf_8 clkbuf_1_0_0_counter.clk dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkbuf_8 clkbuf_1_0_0_counter.clk dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 47196 0 1 18496
box -38 -48 1050 592
@@ -351135,7 +351135,7 @@
timestamp 1649977179
transform -1 0 106812 0 -1 115328
box -38 -48 406 592
-use sky130_fd_sc_hd__buf_6 repeater254 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__buf_6 repeater254 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform 1 0 108376 0 1 22848
box -38 -48 866 592
@@ -351199,7 +351199,7 @@
timestamp 1649977179
transform -1 0 30360 0 1 25024
box -38 -48 866 592
-use sky130_fd_sc_hd__conb_1 user_proj_example_270 dep/pdk/sky130B/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__conb_1 user_proj_example_270 dependencies/pdks/sky130B/libs.ref/sky130_fd_sc_hd/mag
timestamp 1649977179
transform -1 0 177100 0 -1 117504
box -38 -48 314 592
diff --git a/mag/user_project_wrapper.mag b/mag/user_project_wrapper.mag
index 45c638d..0da2b37 100644
--- a/mag/user_project_wrapper.mag
+++ b/mag/user_project_wrapper.mag
@@ -1,7 +1,7 @@
magic
tech sky130B
magscale 1 2
-timestamp 1657065155
+timestamp 1662748239
<< metal1 >>
rect 71774 702992 71780 703044
rect 71832 703032 71838 703044
diff --git a/maglef/user_proj_example.mag b/maglef/user_proj_example.mag
index 55535af..f0f8e12 100644
--- a/maglef/user_proj_example.mag
+++ b/maglef/user_proj_example.mag
@@ -1,7 +1,7 @@
magic
tech sky130B
magscale 1 2
-timestamp 1657064826
+timestamp 1662747075
<< nwell >>
rect 1066 116677 178886 117243
rect 1066 115589 178886 116155
@@ -2588,7 +2588,7 @@
string LEFclass BLOCK
string LEFview TRUE
string GDS_END 7763560
-string GDS_FILE /home/kareem_farid/cup_5-7-22/openlane/user_proj_example/runs/user_proj_example/results/signoff/user_proj_example.magic.gds
+string GDS_FILE /ECE_TOOLS/BeMOSC_Projects/MPW7/mpw7-digital-chaotic-trng/openlane/user_proj_example/runs/22_09_09_18_02/results/signoff/user_proj_example.magic.gds
string GDS_START 391678
<< end >>
diff --git a/maglef/user_project_wrapper.mag b/maglef/user_project_wrapper.mag
index c4f8a63..7961eb4 100644
--- a/maglef/user_project_wrapper.mag
+++ b/maglef/user_project_wrapper.mag
@@ -1,7 +1,7 @@
magic
tech sky130B
magscale 1 2
-timestamp 1657065162
+timestamp 1662748266
<< obsli1 >>
rect 236104 340159 413848 455521
<< obsm1 >>
@@ -3791,7 +3791,7 @@
string LEFclass BLOCK
string LEFview TRUE
string GDS_END 9575458
-string GDS_FILE /home/kareem_farid/cup_5-7-22/openlane/user_project_wrapper/runs/user_project_wrapper/results/signoff/user_project_wrapper.magic.gds
+string GDS_FILE /ECE_TOOLS/BeMOSC_Projects/MPW7/mpw7-digital-chaotic-trng/openlane/user_project_wrapper/runs/22_09_09_18_21/results/signoff/user_project_wrapper.magic.gds
string GDS_START 7763614
<< end >>
diff --git a/openlane/user_proj_example/config.tcl b/openlane/user_proj_example/config.tcl
deleted file mode 100644
index 216cba6..0000000
--- a/openlane/user_proj_example/config.tcl
+++ /dev/null
@@ -1,54 +0,0 @@
-# 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
-
-set ::env(PDK) $::env(PDK)
-set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
-
-set script_dir [file dirname [file normalize [info script]]]
-
-set ::env(DESIGN_NAME) user_proj_example
-
-set ::env(VERILOG_FILES) "\
- $::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
- $script_dir/../../verilog/rtl/user_proj_example.v"
-
-set ::env(DESIGN_IS_CORE) 0
-
-set ::env(CLOCK_PORT) "wb_clk_i"
-set ::env(CLOCK_NET) "counter.clk"
-set ::env(CLOCK_PERIOD) "10"
-
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 900 600"
-
-set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
-
-set ::env(PL_BASIC_PLACEMENT) 0
-set ::env(PL_TARGET_DENSITY) 0.05
-
-# Maximum layer used for routing is metal 4.
-# This is because this macro will be inserted in a top level (user_project_wrapper)
-# where the PDN is planned on metal 5. So, to avoid having shorts between routes
-# in this macro and the top level metal 5 stripes, we have to restrict routes to metal4.
-#
-set ::env(RT_MAX_LAYER) {met4}
-
-# You can draw more power domains if you need to
-set ::env(VDD_NETS) [list {vccd1}]
-set ::env(GND_NETS) [list {vssd1}]
-
-set ::env(DIODE_INSERTION_STRATEGY) 4
-# If you're going to use multiple power domains, then disable cvc run.
-set ::env(RUN_CVC) 1
diff --git a/openlane/user_proj_example/pin_order.cfg b/openlane/user_proj_example/pin_order.cfg
deleted file mode 100644
index 2fda806..0000000
--- a/openlane/user_proj_example/pin_order.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-#BUS_SORT
-
-#S
-wb_.*
-wbs_.*
-la_.*
-irq.*
-
-#N
-io_.*
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index 2b03104..cd2967a 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -39,14 +39,14 @@
## Clock configurations
set ::env(CLOCK_PORT) "user_clock2"
-set ::env(CLOCK_NET) "mprj.clk"
+set ::env(CLOCK_NET) "FSM1.user_clock2"
set ::env(CLOCK_PERIOD) "10"
## Internal Macros
### Macro PDN Connections
set ::env(FP_PDN_MACRO_HOOKS) "\
- mprj vccd1 vssd1 vccd1 vssd1"
+ FSM1 vccd1 vssd1 vccd1 vssd1"
### Macro Placement
set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro.cfg
@@ -54,13 +54,13 @@
### 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/../../verilog/rtl/FSM.v"
set ::env(EXTRA_LEFS) "\
- $script_dir/../../lef/user_proj_example.lef"
+ $script_dir/../../lef/FSM.lef"
set ::env(EXTRA_GDS_FILES) "\
- $script_dir/../../gds/user_proj_example.gds"
+ $script_dir/../../gds/FSM.gds"
# set ::env(GLB_RT_MAXLAYER) 5
set ::env(RT_MAX_LAYER) {met4}
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index a7365ab..5a286b1 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1 +1 @@
-mprj 1175 1690 N
+FSM1 1175 1690 N
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project
index 31ab09b..167d081 100644
--- a/verilog/includes/includes.rtl.caravel_user_project
+++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -1,5 +1,5 @@
# Caravel user project includes
-v $(USER_PROJECT_VERILOG)/rtl/user_project_wrapper.v
--v $(USER_PROJECT_VERILOG)/rtl/user_proj_example.v
+-v $(USER_PROJECT_VERILOG)/rtl/FSM.v
-
\ No newline at end of file
+
diff --git a/verilog/rtl/FSM.v b/verilog/rtl/FSM.v
new file mode 100644
index 0000000..63302c2
--- /dev/null
+++ b/verilog/rtl/FSM.v
@@ -0,0 +1,308 @@
+`timescale 1ns / 1ps
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+`default_nettype none
+/*
+ *-------------------------------------------------------------
+ *
+ * user_project_wrapper
+ *
+ * This wrapper enumerates all of the pins available to the
+ * user for the user project.
+ *
+ * An example user project is provided in this wrapper. The
+ * example should be removed and replaced with the actual
+ * user project.
+ *
+ *-------------------------------------------------------------
+ */
+
+module FSM #(
+ parameter BITS = 32
+) (
+`ifdef USE_POWER_PINS
+ inout vdda1, // User area 1 3.3V supply
+ inout vdda2, // User area 2 3.3V supply
+
+`endif
+ // Logic Analyzer Signals
+ input [127:0] la_data_in,
+ output [127:0] la_data_out,
+
+
+
+ // Independent clock (on independent integer divider)
+ input user_clock2,
+
+
+);
+
+/*--------------------------------------*/
+/* User project is instantiated here */
+/*--------------------------------------*/
+
+
+TOP
+ #(32)//Module parametrization //
+ project( //
+ // Inputs //
+ user_clock2, //
+ la_data_in[32], //
+ la_data_in[31:0],
+ // Output
+ la_data_out[64:33], //
+ la_data_out[65]
+ );
+
+
+endmodule // user_project_wrapper
+
+
+
+
+module TOP
+ #(parameter BIT = 32)//Module parametrization //
+ ( //
+ // Inputs //
+ input clk, //
+ input reset, //
+ input [ BIT - 1 : 0 ] external_bus,
+ // Output
+ output [ BIT - 1 : 0 ] output_bus, //
+ output series_ready
+ );
+
+wire [BIT-1:0] x_tent,x_log,x,CL,CT,internal_bus,x_n;
+wire [2:0] en_mode;
+wire ldX,ldL,ldT,ldE;
+assign output_bus = x;
+controller
+ #(BIT)//Module parametrization //
+ control_block(
+ clk,
+ reset,
+ external_bus,
+ x_n,
+ ldE,
+ ldX,
+ ldL,
+ ldT,
+ internal_bus,
+ series_ready
+
+ );
+ld_parameter
+ #(BIT)//Module parametrization //
+ X(
+ clk,
+ ldX,
+ internal_bus,
+ x
+ ) ;
+ld_parameter
+ #(BIT)//Module parametrization //
+ C_L(
+ clk,
+ ldL,
+ internal_bus,
+ CL
+ ) ;
+ld_parameter
+ #(BIT)//Module parametrization //
+ C_T(
+ clk,
+ ldT,
+ internal_bus,
+ CT
+ ) ;
+ld_parameter
+ #(3)//Module parametrization //
+ mode(
+ clk,
+ ldE,
+ internal_bus[2:0],
+ en_mode
+ ) ;
+map
+ #(BIT)//Module parametrization //
+ a(
+ x,
+ CL,
+ CT,
+
+ x_tent,
+ x_log
+ ) ;
+ //
+decoder
+ #(BIT)//Module parametrization //
+ b( //
+ // Inputs //
+ x_tent, //
+ x_log, //
+ en_mode,
+ // Output
+ x_n //
+ );
+endmodule
+module decoder
+ #(parameter BIT = 64)//Module parametrization //
+ ( //
+ // Inputs //
+ input [ BIT - 1 : 0 ] x_tent, //
+ input [ BIT - 1 : 0 ] x_log, //
+ input [ 2 : 0 ] en_mode,
+ // Output
+ output [ BIT - 1 : 0 ] x_n //
+ );
+wire [BIT -1 :0] flipped,unflipped,NLCS,FPCS,to_flip;
+wire [ 2*BIT - 4 : 0 ] FPCS_temp;
+wire [BIT -1 :0] double_map,single_map;
+
+
+
+assign to_flip = (~en_mode[0]) ? (x_tent):(x_log);
+assign unflipped = (~en_mode[1]) ? (x_tent):(x_log);
+
+assign flipped= {~|to_flip[BIT-1:0],~to_flip[BIT-2:0]+1'b1};
+assign FPCS_temp= flipped*unflipped;
+assign NLCS= x_tent+x_log;
+assign FPCS =FPCS_temp[ 2*BIT - 4 : BIT - 3 ];
+
+assign double_map = (~en_mode[1] | en_mode[0]) ? (FPCS):(NLCS);
+assign single_map = (en_mode[1] ^ en_mode[0]) ? (flipped):(unflipped);
+assign x_n = (~en_mode[2] ) ? (double_map):(single_map);
+
+
+
+endmodule
+module ld_parameter
+ #(parameter BIT = 64)//Module parametrization //
+ (
+ input clk,
+ input ld,
+ input [BIT-1:0] internal_bus,
+ output reg [BIT -1:0] para_meter
+ );
+
+always @(posedge clk)
+ begin
+ if (ld) para_meter <= internal_bus;
+ end
+endmodule
+module map
+ #(parameter BIT = 64)//Module parametrization //
+ ( //
+ // Inputs //
+ input [ BIT - 1 : 0 ] x, //
+ input [ BIT - 1 : 0 ] CL, //
+ input [ BIT - 1 : 0 ] CT,
+ //
+ // Outputs //
+ output [ BIT - 1 : 0 ] x_tent, //
+ output [ BIT - 1 : 0 ] x_log //
+ );
+wire [BIT -1 :0] one_minux_x, x_input;
+wire [ 2*BIT -3 : 0 ] tent; //
+wire [ 3*BIT -5 : 0 ] log;
+wire router;
+
+
+assign router = x[BIT-2]||x[BIT-1];
+
+assign one_minux_x= {~|x[BIT-1:0],~x[BIT-2:0]+1'b1};
+
+assign x_input = (router) ? (one_minux_x):(x);
+
+
+assign tent = x_input* CT;
+assign log = x*one_minux_x * CL;
+
+assign x_tent = tent[ 2*BIT - 3 : BIT - 2 ];
+assign x_log = log [ 3*BIT - 5 : 2*BIT - 4 ];
+
+endmodule
+
+
+
+
+
+module controller
+ #(parameter BIT = 64)//Module parametrization //
+ (
+ input CLK,
+ input reset,
+ input [BIT-1:0]external_bus,
+ input [BIT-1:0] x_n,
+ output reg ldE,
+ output reg ldX,
+ output reg ldL,
+ output reg ldT,
+ output [BIT-1:0] internal_bus,
+ output series_ready
+
+ );
+reg [2:0] state;
+localparam S0=3'b000,S1=3'b001,S2=3'b010,S3=3'b011,S4=3'b100,S5=3'b101,S6=3'b110,S7=3'b111;
+reg [12:0] counter=0;
+reg bus_mode=1;
+
+
+wire control_signal,repeate_signal;
+assign control_signal=&external_bus[BIT-1:BIT-3];
+assign repeate_signal=(&counter);
+assign internal_bus=(bus_mode)?(external_bus): (x_n);
+assign series_ready = ldX;
+
+always @(posedge CLK )
+ begin
+ case (state)
+ S0: if (control_signal) state <=S1;
+ S1: state<=S2;
+ S2: state<=S3;
+ S3: state<=S4;
+ S4: begin state<=S5; counter<=0; end
+ S5:begin
+ counter<=counter+1;
+ if (reset) state <= S7;
+ else if (control_signal) state <= S6;
+ end
+ S6: if (control_signal) state <= S5;
+ S7: state<=S0;
+ default :state <=S0;
+ endcase
+ end
+always @(state or counter)
+ begin
+ case (state)
+ S0: begin ldE = 0; ldX = 0; ldL = 0; ldT = 0; bus_mode =1 ;end
+ S1: begin ldE = 1; ldX = 0; ldL = 0; ldT = 0; bus_mode =1 ;end
+ S2: begin ldE = 0; ldX = 1; ldL = 0; ldT = 0; bus_mode =1 ;end
+ S3: begin ldE = 0; ldX = 0; ldL = 1; ldT = 0; bus_mode =1 ;end
+ S4: begin ldE = 0; ldX = 0; ldL = 0; ldT = 1; bus_mode =1 ;end
+ S5: begin
+ if (counter==13'b1111111111111) begin
+ ldX=1;
+ end else begin ldX=0; end
+ bus_mode = 0 ;ldE = 0; ldL = 0; ldT = 0;
+ end
+ S6: begin ldE = 0; ldX = 0; ldL = 0; ldT = 0; bus_mode = 0 ; end
+ S7: begin ldE = 1; ldX = 1; ldL = 1; ldT = 1; bus_mode = 1 ; end
+ endcase
+ end
+
+endmodule
+`default_nettype wire
diff --git a/verilog/rtl/user_proj_example.v b/verilog/rtl/user_proj_example.v
deleted file mode 100644
index 26081e9..0000000
--- a/verilog/rtl/user_proj_example.v
+++ /dev/null
@@ -1,165 +0,0 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-`default_nettype none
-/*
- *-------------------------------------------------------------
- *
- * user_proj_example
- *
- * This is an example of a (trivially simple) user project,
- * showing how the user project can connect to the logic
- * analyzer, the wishbone bus, and the I/O pads.
- *
- * This project generates an integer count, which is output
- * on the user area GPIO pads (digital output only). The
- * wishbone connection allows the project to be controlled
- * (start and stop) from the management SoC program.
- *
- * See the testbenches in directory "mprj_counter" for the
- * example programs that drive this user project. The three
- * testbenches are "io_ports", "la_test1", and "la_test2".
- *
- *-------------------------------------------------------------
- */
-
-module user_proj_example #(
- parameter BITS = 32
-)(
-`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,
- input wb_rst_i,
- input wbs_stb_i,
- input wbs_cyc_i,
- input wbs_we_i,
- input [3:0] wbs_sel_i,
- input [31:0] wbs_dat_i,
- input [31:0] wbs_adr_i,
- output wbs_ack_o,
- output [31:0] wbs_dat_o,
-
- // Logic Analyzer Signals
- input [127:0] la_data_in,
- output [127:0] la_data_out,
- input [127:0] la_oenb,
-
- // IOs
- input [`MPRJ_IO_PADS-1:0] io_in,
- output [`MPRJ_IO_PADS-1:0] io_out,
- output [`MPRJ_IO_PADS-1:0] io_oeb,
-
- // IRQ
- output [2:0] irq
-);
- wire clk;
- wire rst;
-
- wire [`MPRJ_IO_PADS-1:0] io_in;
- wire [`MPRJ_IO_PADS-1:0] io_out;
- wire [`MPRJ_IO_PADS-1:0] io_oeb;
-
- wire [31:0] rdata;
- wire [31:0] wdata;
- wire [BITS-1:0] count;
-
- wire valid;
- wire [3:0] wstrb;
- wire [31:0] la_write;
-
- // WB MI A
- assign valid = wbs_cyc_i && wbs_stb_i;
- assign wstrb = wbs_sel_i & {4{wbs_we_i}};
- assign wbs_dat_o = rdata;
- assign wdata = wbs_dat_i;
-
- // IO
- assign io_out = count;
- assign io_oeb = {(`MPRJ_IO_PADS-1){rst}};
-
- // IRQ
- assign irq = 3'b000; // Unused
-
- // LA
- assign la_data_out = {{(127-BITS){1'b0}}, count};
- // Assuming LA probes [63:32] are for controlling the count register
- assign la_write = ~la_oenb[63:32] & ~{BITS{valid}};
- // Assuming LA probes [65:64] are for controlling the count clk & reset
- assign clk = (~la_oenb[64]) ? la_data_in[64]: wb_clk_i;
- assign rst = (~la_oenb[65]) ? la_data_in[65]: wb_rst_i;
-
- counter #(
- .BITS(BITS)
- ) counter(
- .clk(clk),
- .reset(rst),
- .ready(wbs_ack_o),
- .valid(valid),
- .rdata(rdata),
- .wdata(wbs_dat_i),
- .wstrb(wstrb),
- .la_write(la_write),
- .la_input(la_data_in[63:32]),
- .count(count)
- );
-
-endmodule
-
-module counter #(
- parameter BITS = 32
-)(
- input clk,
- input reset,
- input valid,
- input [3:0] wstrb,
- input [BITS-1:0] wdata,
- input [BITS-1:0] la_write,
- input [BITS-1:0] la_input,
- output ready,
- output [BITS-1:0] rdata,
- output [BITS-1:0] count
-);
- reg ready;
- reg [BITS-1:0] count;
- reg [BITS-1:0] rdata;
-
- always @(posedge clk) begin
- if (reset) begin
- count <= 0;
- ready <= 0;
- end else begin
- ready <= 1'b0;
- if (~|la_write) begin
- count <= count + 1;
- end
- if (valid && !ready) begin
- ready <= 1'b1;
- rdata <= count;
- if (wstrb[0]) count[7:0] <= wdata[7:0];
- if (wstrb[1]) count[15:8] <= wdata[15:8];
- if (wstrb[2]) count[23:16] <= wdata[23:16];
- if (wstrb[3]) count[31:24] <= wdata[31:24];
- end else if (|la_write) begin
- count <= la_write & la_input;
- end
- end
- end
-
-endmodule
-`default_nettype wire
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 5ee1cee..740328d 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -82,40 +82,21 @@
/* User project is instantiated here */
/*--------------------------------------*/
-user_proj_example mprj (
+FSM FSM1(
`ifdef USE_POWER_PINS
.vccd1(vccd1), // User area 1 1.8V power
.vssd1(vssd1), // User area 1 digital ground
`endif
- .wb_clk_i(wb_clk_i),
- .wb_rst_i(wb_rst_i),
-
- // MGMT SoC Wishbone Slave
-
- .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),
// Logic Analyzer
.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)
+ // user defined clock
+ .user_clock2(user_clock2)
);
endmodule // user_project_wrapper