summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatarGravatar Kevin Eshbach <keshbach@comcast.net>2020-05-19 20:42:50 -0400
committerGravatarGravatar GitHub <noreply@github.com>2020-05-19 20:42:50 -0400
commit4a69cf6ba063ab24a6b8e4740260be0c274a7c37 (patch) (github)
treec3f448248a6e18ebeaed01f8fb891ecd4959e428
parent6128e42e4d8b7cad28a3995b66458314b2569083 (diff)
downloadmame-4a69cf6ba063ab24a6b8e4740260be0c274a7c37.tar.bz2
mame-4a69cf6ba063ab24a6b8e4740260be0c274a7c37.zip
jedutil updates: [keshbach]
* Initial support for viewing the logic equations of the PLS100, 82S100, PLS101 and 82S101. * Initial support for viewing the logic equations of the PLS100, 82S100, PLS101 and 82S101. * Added support to view the the logic equations of the PALCE22V10 device * Improved the documentation on the Magix game and the undumped PAL's (security fuses blown) * Added PAL22V10 as another device that is equivalent to ythe PALCE22V10 device. * Added initial registration test for the PALCE22V10/PAL22V10 devices * Adding PAL22V10 combinatorial regression test data. * Updated jedutil with a new command that will take a jed file and list the devices that the jed file could represent * Initial work on supporting the GAL20V8 device. * Adding an initial regression test for the GAL20V8. * Tweaked the function to print text to handle the end of line character. * Fixed some mis-configurations of the GAL20V8 device. * Added regression tests for the GAL20V8 device. * Fixed the output of the GAL20V8 when viewing a jed in simple mode to properly display outputs as also being inputs for certain pins * Fixed the output of a GAL16V8 device in Simple Mode to mark relevant output pins as providing feedback as documented in the datasheet. * Corrected the output feedback state when in simple mode for the GAL16V8 and GAL20V8 devices.
-rw-r--r--regtests/jedutil/baseline/atf22v10/atf22v10_power_down_mode.txt100
-rw-r--r--regtests/jedutil/baseline/gal16v8/gal16v8_complex_mode.txt49
-rw-r--r--regtests/jedutil/baseline/gal16v8/gal16v8_registered_mode.txt62
-rw-r--r--regtests/jedutil/baseline/gal16v8/gal16v8_simple_mode.txt51
-rw-r--r--regtests/jedutil/baseline/gal20v8/gal20v8_simple_mode.txt14
-rw-r--r--regtests/jedutil/baseline/gal20v8/pal14h8-to-gal20v8.txt12
-rw-r--r--regtests/jedutil/baseline/gal20v8/pal14l8-to-gal20v8.txt12
-rw-r--r--regtests/jedutil/baseline/gal20v8/pal16h6-to-gal20v8.txt8
-rw-r--r--regtests/jedutil/baseline/gal20v8/pal16l6-to-gal20v8.txt8
-rw-r--r--regtests/jedutil/baseline/gal20v8/pal18l4-to-gal20v8.txt4
-rw-r--r--regtests/jedutil/baseline/gal22v10/gal22v10_combinatorial_mode.txt97
-rw-r--r--regtests/jedutil/baseline/gal22v10/gal22v10_registered_mode.txt59
-rw-r--r--regtests/jedutil/baseline/gal22v10/pal22v10-combinatorial-to-gal22v10.txt159
-rw-r--r--regtests/jedutil/baseline/gal22v10/pal22v10-registered-to-gal22v10.txt159
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal10h8-as-palce16v8.txt14
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal10l8-as-palce16v8.txt14
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal12h6-as-palce16v8.txt10
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal12l6-as-palce16v8.txt10
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal14h4-as-palce16v8.txt6
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal14l4-as-palce16v8.txt6
-rw-r--r--regtests/jedutil/baseline/palce16v8/pal16l8-as-palce16v8.txt4
-rw-r--r--regtests/jedutil/eqns/WinCUPL/atf22v10/atf22v10_power_down_mode.pld123
-rw-r--r--regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_complex_mode.pld69
-rw-r--r--regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_registered_mode.pld78
-rw-r--r--regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_simple_mode.pld81
-rw-r--r--regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_combinatorial_mode.pld124
-rw-r--r--regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_registered_mode.pld83
-rw-r--r--regtests/jedutil/jeds/atf22v10/atf22v10_power_down_mode.jed120
-rw-r--r--regtests/jedutil/jeds/gal16v8/gal16v8_complex_mode.jed54
-rw-r--r--regtests/jedutil/jeds/gal16v8/gal16v8_registered_mode.jed62
-rw-r--r--regtests/jedutil/jeds/gal16v8/gal16v8_simple_mode.jed52
-rw-r--r--regtests/jedutil/jeds/gal22v10/gal22v10_combinatorial_mode.jed119
-rw-r--r--regtests/jedutil/jeds/gal22v10/gal22v10_registered_mode.jed74
-rw-r--r--regtests/jedutil/jeds/gal22v10/pal22v10-combinatorial-to-gal22v10.jed176
-rw-r--r--regtests/jedutil/jeds/gal22v10/pal22v10-registered-to-gal22v10.jed176
-rw-r--r--src/tools/jedutil.cpp874
36 files changed, 2658 insertions, 465 deletions
diff --git a/regtests/jedutil/baseline/atf22v10/atf22v10_power_down_mode.txt b/regtests/jedutil/baseline/atf22v10/atf22v10_power_down_mode.txt
new file mode 100644
index 00000000000..4da526ec21d
--- /dev/null
+++ b/regtests/jedutil/baseline/atf22v10/atf22v10_power_down_mode.txt
@@ -0,0 +1,100 @@
+Inputs:
+
+1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
+
+Outputs:
+
+15 (Combinatorial, Output feedback output, Active high)
+16 (Combinatorial, Output feedback output, Active high)
+17 (Combinatorial, Output feedback output, Active high)
+18 (Combinatorial, Output feedback output, Active low)
+19 (Combinatorial, Output feedback output, Active high)
+20 (Combinatorial, Output feedback output, Active high)
+21 (Combinatorial, Output feedback output, Active low)
+22 (Combinatorial, Output feedback output, Active high)
+
+Equations:
+
+o15 = i1 & /i2 +
+ i3 +
+ /i5 & i6 & i7 & /i8 & i9 +
+ /i10 & /i11 +
+ i13 +
+ i14 +
+ i23
+o15.oe = /i23
+
+o16 = i1 & i2 & i3 & i5 +
+ i6 & i7 & i8 & i9 & i10 +
+ i13 +
+ i14 & /o21 +
+ i23 +
+ /i5 & o17 & o18 +
+ /i2
+o16.oe = vcc
+
+o17 = /i7 & o21 +
+ i8 +
+ /i3 +
+ /i1 & /i2 & i3 +
+ /i5 +
+ /i6 & /i7 & /i8 & /i9 & /i10 +
+ /o18
+o17.oe = vcc
+
+/o18 = i1 +
+ i3 +
+ i5 +
+ i7 +
+ i9 +
+ i11 +
+ i13
+o18.oe = vcc
+
+o19 = /i13 +
+ /i11 +
+ /i9 +
+ /i7 +
+ /i5 +
+ /i3 +
+ /i1
+o19.oe = vcc
+
+o20 = i6 +
+ i13 & o19 +
+ i1 & /i7 +
+ o18 +
+ i9 & /i13 +
+ i14 & /o17 +
+ /o16
+o20.oe = vcc
+
+/o21 = /i1 & i2 +
+ /i3 +
+ i5 & /i6 & /i7 & i8 & /i9 +
+ i10 & i11 +
+ /i13 +
+ /i14 +
+ /i23
+o21.oe = /i23
+
+o22 = /i8 & i23 +
+ /o19 & i23 +
+ /o18 +
+ o17 +
+ o16 +
+ /i2 & i8 & i14 +
+ /i2 & /i6 & /i8 & /i10 & /i14
+o22.oe = vcc
+
+Synchronous Preset:
+
+o19 & /o20 & o21 & /o22 & i23
+
+Asynchronous Reset:
+
+/i2 & o15 & /o16 & o17 & /o18
+
+Pin 4 (DIP/SOIC package) and Pin 5 (PLCC package) Controls Power Down Mode
+
+
diff --git a/regtests/jedutil/baseline/gal16v8/gal16v8_complex_mode.txt b/regtests/jedutil/baseline/gal16v8/gal16v8_complex_mode.txt
new file mode 100644
index 00000000000..382ff83a8c6
--- /dev/null
+++ b/regtests/jedutil/baseline/gal16v8/gal16v8_complex_mode.txt
@@ -0,0 +1,49 @@
+Inputs:
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18
+
+Outputs:
+
+12 (Combinatorial, No output feedback, Active high)
+15 (Combinatorial, Output feedback output, Active high)
+16 (Combinatorial, Output feedback output, Active low)
+19 (Combinatorial, No output feedback, Active low)
+
+Equations:
+
+o12 = i1 & i3 & i5 & /o16 +
+ i7 & i9 & i11 +
+ i13 & o16 & i17 +
+ i8 & i14 & /i17 +
+ /i8 & /i14 +
+ /i1 & /i2 & /i3 & /i4 & /i5 & /i7 +
+ i2 & i4 & i6 & /o16
+o12.oe = /o15 & o16
+
+o15 = /i1 & /i3 & /i5 +
+ /i7 & /i9 & /i11 +
+ /i13 & /i17 +
+ /i2 & /i4 & i13 +
+ i4 & i18 +
+ /i2 & /i4 & /i6 +
+ /i8 & /i14 & i17
+o15.oe = vcc
+
+/o16 = i17 & /i18 +
+ /i11 & /i13 & /i14 +
+ i6 & i7 & i8 & i9 +
+ /i1 & /i2 & /i3 & /i4 & /i5 +
+ i1 & i2 & i3 & i4 & i5 & i13 & /i17 +
+ i11 & i13 & i14 +
+ /i6 & /i7 & /i8 & /i9
+o16.oe = vcc
+
+/o19 = /i1 & /i3 +
+ /i5 & /i7 +
+ /i9 & /i11 & o15 +
+ /i13 & /o15 +
+ /i14 & i17 +
+ i2 & i4 & i6 +
+ i8 & i9 & i14
+o19.oe = o15 & /o16
+
diff --git a/regtests/jedutil/baseline/gal16v8/gal16v8_registered_mode.txt b/regtests/jedutil/baseline/gal16v8/gal16v8_registered_mode.txt
new file mode 100644
index 00000000000..9bf4580ec3a
--- /dev/null
+++ b/regtests/jedutil/baseline/gal16v8/gal16v8_registered_mode.txt
@@ -0,0 +1,62 @@
+Inputs:
+
+2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19
+
+Outputs:
+
+12 (Registered, Output feedback registered, Active low)
+14 (Combinatorial, Output feedback output, Active high)
+15 (Registered, Output feedback registered, Active high)
+16 (Combinatorial, Output feedback output, Active low)
+19 (Registered, Output feedback registered, Active low)
+
+Equations:
+
+/rf12 := i3 & i5 & /o16 +
+ i7 & i9 +
+ i13 & o16 & i17 +
+ i8 & o14 & /i17 +
+ /i8 & /o14 +
+ /i2 & /i3 & /i4 +
+ /i5 & /i7 +
+ i2 & i4 & i6 & /o16
+rf12.oe = OE
+
+o14 = i2 +
+ i3 +
+ i4 +
+ i5 +
+ i6 +
+ i7 +
+ i8
+o14.oe = i9 & rf12 & i13 & i17 & i18
+
+rf15 := /i3 & /i5 +
+ /i7 & /i9 +
+ /i13 & /i17 +
+ /i2 & /i4 & i13 +
+ i4 & /rf12 & i18 +
+ /i2 & /i4 & /i6 +
+ /i8 & /o14 & i17 +
+ i3 & rf12 & o14
+rf15.oe = OE
+
+/o16 = rf12 & i17 & /i18 +
+ /i13 & /o14 +
+ i6 & i7 & i8 & i9 +
+ /i2 & /i3 & /i4 & /i5 +
+ i2 & i3 & i4 & i5 & i13 & /i17 +
+ /rf12 & i13 & o14 +
+ /i6 & /i7 & /i8 & /i9
+o16.oe = /rf12 & o14 & /rf15 & rf19
+
+/rf19 := /i3 & /o14 +
+ /i5 & /i7 & /o16 +
+ /i9 & rf15 +
+ /i13 & /rf15 +
+ /o14 & i17 +
+ i2 & i4 & i6 & o16 +
+ i8 & i9 & o14 +
+ o14 & rf15
+rf19.oe = OE
+
diff --git a/regtests/jedutil/baseline/gal16v8/gal16v8_simple_mode.txt b/regtests/jedutil/baseline/gal16v8/gal16v8_simple_mode.txt
new file mode 100644
index 00000000000..ad9c01960c8
--- /dev/null
+++ b/regtests/jedutil/baseline/gal16v8/gal16v8_simple_mode.txt
@@ -0,0 +1,51 @@
+Inputs:
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
+
+Outputs:
+
+12 (Combinatorial, Output feedback output, Active low)
+15 (Combinatorial, No output feedback, Active low)
+16 (Combinatorial, No output feedback, Active high)
+18 (Combinatorial, Output feedback output, Active low)
+
+Equations:
+
+/o12 = i1 & i3 & i5 +
+ i7 & i9 & i11 +
+ i13 & i17 +
+ /i17 +
+ /i8 +
+ /i1 & /i2 & /i3 & /i4 & /i5 & /i7 +
+ i2 & i4 & i6 +
+ i8 & i14
+o12.oe = vcc
+
+/o15 = /i1 & /i3 & /i5 +
+ /i7 & /i9 & /i11 +
+ /i13 & /i17 +
+ /i2 & /i4 +
+ i4 +
+ /i8 & /i14 +
+ i13 & i17
+o15.oe = vcc
+
+o16 = /i11 & /i13 & /i14 & i17 +
+ i6 & i7 & i8 & i9 +
+ /i1 & /i2 & /i3 & /i4 & /i5 +
+ /i17 +
+ i11 & i13 & i14 +
+ /i6 & /i7 & /i8 & /i9 +
+ i1 & i2 & i3 & i4 & i5
+o16.oe = vcc
+
+/o18 = /i1 & /i3 +
+ /i5 & /i7 +
+ /i9 & /i11 +
+ /i13 & i19 +
+ i17 +
+ i2 & i4 & i6 +
+ i8 & i9 +
+ i14
+o18.oe = vcc
+
diff --git a/regtests/jedutil/baseline/gal20v8/gal20v8_simple_mode.txt b/regtests/jedutil/baseline/gal20v8/gal20v8_simple_mode.txt
index 60e7a69f7bb..52a0fca1e1b 100644
--- a/regtests/jedutil/baseline/gal20v8/gal20v8_simple_mode.txt
+++ b/regtests/jedutil/baseline/gal20v8/gal20v8_simple_mode.txt
@@ -4,21 +4,21 @@ Inputs:
Outputs:
-16 (Combinatorial, Output feedback combinatorial, Active low)
+16 (Combinatorial, Output feedback output, Active low)
18 (Combinatorial, No output feedback, Active high)
19 (Combinatorial, No output feedback, Active low)
-21 (Combinatorial, Output feedback combinatorial, Active high)
+21 (Combinatorial, Output feedback output, Active high)
Equations:
/o16 = i1 & i2 & i3 & i4 & i5 +
- /i6 & /i7 & /i8 & /i9 & /i10 & of21 +
+ /i6 & /i7 & /i8 & /i9 & /i10 & o21 +
i11 & i13 & i14 & i15 +
/i17 & /i20 & /i22 & /i23 +
/i1 & /i2 & /i3 & /i4 & /i5 +
- i6 & i7 & i8 & i9 & i10 & of16 +
+ i6 & i7 & i8 & i9 & i10 & o16 +
/i11 & /i13 & /i14 & /i15 +
- i17 & i20 & /of21 & i22 & i23
+ i17 & i20 & /o21 & i22 & i23
o16.oe = vcc
o18 = i17 & i20 & i22 & i23 +
@@ -26,14 +26,14 @@ o18 = i17 & i20 & i22 & i23 +
i6 & i7 & i8 & i9 & i10 +
/i1 & /i2 & /i3 & /i4 & /i5 +
/i17 & /i20 & /i22 & /i23 +
- i11 & i13 & i14 & i15 & /of16 & /of21 +
+ i11 & i13 & i14 & i15 & /o16 & /o21 +
/i6 & /i7 & /i8 & /i9 & /i10 +
i1 & i2 & i3 & i4 & i5
o18.oe = vcc
/o19 = /i1 & /i3 +
/i5 & /i7 +
- /i9 & /i11 & of16 & of21 +
+ /i9 & /i11 & o16 & o21 +
/i13 & /i15 +
i17 & i23 +
i2 & i4 & i6 +
diff --git a/regtests/jedutil/baseline/gal20v8/pal14h8-to-gal20v8.txt b/regtests/jedutil/baseline/gal20v8/pal14h8-to-gal20v8.txt
index 75a693fc895..ac2360bd22e 100644
--- a/regtests/jedutil/baseline/gal20v8/pal14h8-to-gal20v8.txt
+++ b/regtests/jedutil/baseline/gal20v8/pal14h8-to-gal20v8.txt
@@ -4,14 +4,14 @@ Inputs:
Outputs:
-15 (Combinatorial, Output feedback combinatorial, Active high)
-16 (Combinatorial, Output feedback combinatorial, Active high)
-17 (Combinatorial, Output feedback combinatorial, Active high)
+15 (Combinatorial, Output feedback output, Active high)
+16 (Combinatorial, Output feedback output, Active high)
+17 (Combinatorial, Output feedback output, Active high)
18 (Combinatorial, No output feedback, Active high)
19 (Combinatorial, No output feedback, Active high)
-20 (Combinatorial, Output feedback combinatorial, Active high)
-21 (Combinatorial, Output feedback combinatorial, Active high)
-22 (Combinatorial, Output feedback combinatorial, Active high)
+20 (Combinatorial, Output feedback output, Active high)
+21 (Combinatorial, Output feedback output, Active high)
+22 (Combinatorial, Output feedback output, Active high)
Equations:
diff --git a/regtests/jedutil/baseline/gal20v8/pal14l8-to-gal20v8.txt b/regtests/jedutil/baseline/gal20v8/pal14l8-to-gal20v8.txt
index 9a691d5daab..752f2ba6554 100644
--- a/regtests/jedutil/baseline/gal20v8/pal14l8-to-gal20v8.txt
+++ b/regtests/jedutil/baseline/gal20v8/pal14l8-to-gal20v8.txt
@@ -4,14 +4,14 @@ Inputs:
Outputs:
-15 (Combinatorial, Output feedback combinatorial, Active low)
-16 (Combinatorial, Output feedback combinatorial, Active low)
-17 (Combinatorial, Output feedback combinatorial, Active low)
+15 (Combinatorial, Output feedback output, Active low)
+16 (Combinatorial, Output feedback output, Active low)
+17 (Combinatorial, Output feedback output, Active low)
18 (Combinatorial, No output feedback, Active low)
19 (Combinatorial, No output feedback, Active low)
-20 (Combinatorial, Output feedback combinatorial, Active low)
-21 (Combinatorial, Output feedback combinatorial, Active low)
-22 (Combinatorial, Output feedback combinatorial, Active low)
+20 (Combinatorial, Output feedback output, Active low)
+21 (Combinatorial, Output feedback output, Active low)
+22 (Combinatorial, Output feedback output, Active low)
Equations:
diff --git a/regtests/jedutil/baseline/gal20v8/pal16h6-to-gal20v8.txt b/regtests/jedutil/baseline/gal20v8/pal16h6-to-gal20v8.txt
index 5f904d2d6ea..558fc63a280 100644
--- a/regtests/jedutil/baseline/gal20v8/pal16h6-to-gal20v8.txt
+++ b/regtests/jedutil/baseline/gal20v8/pal16h6-to-gal20v8.txt
@@ -4,12 +4,12 @@ Inputs:
Outputs:
-16 (Combinatorial, Output feedback combinatorial, Active high)
-17 (Combinatorial, Output feedback combinatorial, Active high)
+16 (Combinatorial, Output feedback output, Active high)
+17 (Combinatorial, Output feedback output, Active high)
18 (Combinatorial, No output feedback, Active high)
19 (Combinatorial, No output feedback, Active high)
-20 (Combinatorial, Output feedback combinatorial, Active high)
-21 (Combinatorial, Output feedback combinatorial, Active high)
+20 (Combinatorial, Output feedback output, Active high)
+21 (Combinatorial, Output feedback output, Active high)
Equations:
diff --git a/regtests/jedutil/baseline/gal20v8/pal16l6-to-gal20v8.txt b/regtests/jedutil/baseline/gal20v8/pal16l6-to-gal20v8.txt
index f2f706cef05..39a9412c51c 100644
--- a/regtests/jedutil/baseline/gal20v8/pal16l6-to-gal20v8.txt
+++ b/regtests/jedutil/baseline/gal20v8/pal16l6-to-gal20v8.txt
@@ -4,12 +4,12 @@ Inputs:
Outputs:
-16 (Combinatorial, Output feedback combinatorial, Active low)
-17 (Combinatorial, Output feedback combinatorial, Active low)
+16 (Combinatorial, Output feedback output, Active low)
+17 (Combinatorial, Output feedback output, Active low)
18 (Combinatorial, No output feedback, Active low)
19 (Combinatorial, No output feedback, Active low)
-20 (Combinatorial, Output feedback combinatorial, Active low)
-21 (Combinatorial, Output feedback combinatorial, Active low)
+20 (Combinatorial, Output feedback output, Active low)
+21 (Combinatorial, Output feedback output, Active low)
Equations:
diff --git a/regtests/jedutil/baseline/gal20v8/pal18l4-to-gal20v8.txt b/regtests/jedutil/baseline/gal20v8/pal18l4-to-gal20v8.txt
index 1fadeb9f43a..2bbc22136f5 100644
--- a/regtests/jedutil/baseline/gal20v8/pal18l4-to-gal20v8.txt
+++ b/regtests/jedutil/baseline/gal20v8/pal18l4-to-gal20v8.txt
@@ -4,10 +4,10 @@ Inputs:
Outputs:
-17 (Combinatorial, Output feedback combinatorial, Active low)
+17 (Combinatorial, Output feedback output, Active low)
18 (Combinatorial, No output feedback, Active low)
19 (Combinatorial, No output feedback, Active low)
-20 (Combinatorial, Output feedback combinatorial, Active low)
+20 (Combinatorial, Output feedback output, Active low)
Equations:
diff --git a/regtests/jedutil/baseline/gal22v10/gal22v10_combinatorial_mode.txt b/regtests/jedutil/baseline/gal22v10/gal22v10_combinatorial_mode.txt
new file mode 100644
index 00000000000..d4f015b2516
--- /dev/null
+++ b/regtests/jedutil/baseline/gal22v10/gal22v10_combinatorial_mode.txt
@@ -0,0 +1,97 @@
+Inputs:
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
+
+Outputs:
+
+15 (Combinatorial, Output feedback output, Active high)
+16 (Combinatorial, Output feedback output, Active high)
+17 (Combinatorial, Output feedback output, Active high)
+18 (Combinatorial, Output feedback output, Active low)
+19 (Combinatorial, Output feedback output, Active high)
+20 (Combinatorial, Output feedback output, Active high)
+21 (Combinatorial, Output feedback output, Active low)
+22 (Combinatorial, Output feedback output, Active high)
+
+Equations:
+
+o15 = i1 & /i2 +
+ i3 +
+ i4 & /i5 & i6 & i7 & /i8 & i9 +
+ /i10 & /i11 +
+ i13 +
+ i14 +
+ i23
+o15.oe = /i23
+
+o16 = i1 & i2 & i3 & i4 & i5 +
+ i6 & i7 & i8 & i9 & i10 +
+ i13 +
+ i14 & /o21 +
+ i23 +
+ /i5 & o17 & o18 +
+ /i2
+o16.oe = vcc
+
+o17 = /i7 & o21 +
+ i8 +
+ /i3 +
+ /i1 & /i2 & i3 +
+ /i4 & /i5 +
+ /i6 & /i7 & /i8 & /i9 & /i10 +
+ /o18
+o17.oe = vcc
+
+/o18 = i1 +
+ i3 +
+ i5 +
+ i7 +
+ i9 +
+ i11 +
+ i13
+o18.oe = vcc
+
+o19 = /i13 +
+ /i11 +
+ /i9 +
+ /i7 +
+ /i5 +
+ /i3 +
+ /i1
+o19.oe = vcc
+
+o20 = i6 +
+ i13 & o19 +
+ i1 & /i7 +
+ o18 +
+ i9 & /i13 +
+ i14 & /o17 +
+ /o16
+o20.oe = vcc
+
+/o21 = /i1 & i2 +
+ /i3 +
+ /i4 & i5 & /i6 & /i7 & i8 & /i9 +
+ i10 & i11 +
+ /i13 +
+ /i14 +
+ /i23
+o21.oe = /i23
+
+o22 = /i8 & i23 +
+ /o19 & i23 +
+ /o18 +
+ o17 +
+ o16 +
+ /i2 & i8 & i14 +
+ /i2 & /i4 & /i6 & /i8 & /i10 & /i14
+o22.oe = vcc
+
+Synchronous Preset:
+
+o19 & /o20 & o21 & /o22 & i23
+
+Asynchronous Reset:
+
+/i2 & o15 & /o16 & o17 & /o18
+
diff --git a/regtests/jedutil/baseline/gal22v10/gal22v10_registered_mode.txt b/regtests/jedutil/baseline/gal22v10/gal22v10_registered_mode.txt
new file mode 100644
index 00000000000..e3d7c003d73
--- /dev/null
+++ b/regtests/jedutil/baseline/gal22v10/gal22v10_registered_mode.txt
@@ -0,0 +1,59 @@
+Inputs:
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
+
+Outputs:
+
+18 (Registered, Output feedback registered, Active low)
+19 (Registered, Output feedback registered, Active low)
+20 (Registered, Output feedback registered, Active high)
+22 (Registered, Output feedback registered, Active high)
+
+Equations:
+
+/rf18 := i3 & rf19 +
+ i5 +
+ i7 +
+ i9 +
+ i11 +
+ i15 & /rf19 +
+ i17
+rf18.oe = /i17 & /i21 & i23
+
+/rf19 := /i10 & /i23 +
+ /i11 & rf18 +
+ /i9 +
+ /i7 & i21 +
+ /i5 +
+ /i3 & /rf18 +
+ /i2 +
+ i4
+rf19.oe = vcc
+
+rf20 := i6 +
+ i10 & rf19 +
+ /i7 & i17 +
+ rf18 +
+ i9 & /i10 +
+ i14 & /i17 +
+ /i16 +
+ /rf19 & i23
+rf20.oe = vcc
+
+rf22 := /i8 & i23 +
+ /rf19 & i23 +
+ /rf18 +
+ i17 +
+ i16 +
+ /i2 & i8 & i14 +
+ /i2 & /i4 & /i6 & /i8 & /i10 & /i14
+rf22.oe = vcc
+
+Synchronous Preset:
+
+/rf19 & /rf20 & /i21 & /i23
+
+Asynchronous Reset:
+
+i2 & /i15 & i16 & /i17 & rf18
+
diff --git a/regtests/jedutil/baseline/gal22v10/pal22v10-combinatorial-to-gal22v10.txt b/regtests/jedutil/baseline/gal22v10/pal22v10-combinatorial-to-gal22v10.txt
new file mode 100644
index 00000000000..c4fe984a870
--- /dev/null
+++ b/regtests/jedutil/baseline/gal22v10/pal22v10-combinatorial-to-gal22v10.txt
@@ -0,0 +1,159 @@
+Inputs:
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
+
+Outputs:
+
+14 (Combinatorial, Output feedback output, Active high)
+15 (Combinatorial, Output feedback output, Active low)
+16 (Combinatorial, Output feedback output, Active low)
+17 (Combinatorial, Output feedback output, Active high)
+18 (Combinatorial, Output feedback output, Active high)
+19 (Combinatorial, Output feedback output, Active low)
+20 (Combinatorial, Output feedback output, Active low)
+21 (Combinatorial, Output feedback output, Active low)
+22 (Combinatorial, Output feedback output, Active low)
+23 (Combinatorial, Output feedback output, Active high)
+
+Equations:
+
+o14 = /i9 +
+ /i8 +
+ /i7 +
+ /i6 +
+ /i5 +
+ /i4 +
+ /i3 +
+ /i2
+o14.oe = vcc
+
+/o15 = i3 +
+ i7 & i8 +
+ i9 & i10 +
+ i11 & i13 +
+ i8 +
+ i4 & i6 +
+ i2 & i5 +
+ /i13 +
+ /i11 +
+ /i10
+o15.oe = vcc
+
+/o16 = /i4 & /i5 & /i6 +
+ i2 & i3 & i11 & i13 +
+ i2 & i3 +
+ /i2 & i3 & /i4 +
+ /i3 & /i4 & /i13 +
+ /i5 & /i11 & /i13 +
+ i11 & i13 +
+ i9 & i10 +
+ i7 & i8 +
+ i5 & i6 +
+ i3 & i4 +
+ i1 & i2
+o16.oe = o14
+
+o17 = /i6 & /i7 & /i8 & /i9 & /i10 +
+ /i1 & /i2 & /i3 & /i4 & /i5 +
+ i1 +
+ i2 +
+ i3 +
+ i4 +
+ i5 +
+ i6 +
+ i7 +
+ i8 +
+ i9 +
+ i10 +
+ i11 +
+ i13
+o17.oe = /o15
+
+o18 = /i7 & /i8 +
+ i1 & i2 & /i5 & /i6 +
+ i13 & /o20 +
+ /i9 & /i10 & /i11 +
+ /i5 & /i6 & o20 +
+ o17 & /o20 +
+ i1 & i3 & /o17 +
+ i9 & i11 +
+ /i7 & /i9 & /i13 +
+ i5 & i6 & /i10 +
+ /i3 & i4 +
+ /i3 & /o17 +
+ i1 & i2 & i4 +
+ /i3 & /i4 & o17 +
+ /i1 & /i2 & o17 +
+ /o17
+o18.oe = /i11 & /i13
+
+/o19 = i4 +
+ i3 +
+ i2 +
+ /i13 +
+ /i11 +
+ /i10 +
+ /i9 +
+ /i8 +
+ /i7 +
+ /i6 +
+ /i5 +
+ /i4 +
+ /i3 +
+ /i2 +
+ /o14 +
+ i1 & o14
+o19.oe = vcc
+
+/o20 = /i8 +
+ /i9 +
+ /i10 +
+ /i11 +
+ /i13 +
+ i13 +
+ i11 +
+ i10 +
+ i9 +
+ i8 +
+ i7 +
+ i6 +
+ i5 +
+ i1 & /i2
+o20.oe = i3 & /i9 & /i10 & i11
+
+/o21 = i5 & /i6 +
+ i4 & /i5 +
+ i3 & /i4 +
+ i2 & /i3 +
+ /i11 & /i13 +
+ /i9 & /i10 +
+ /i7 & /i8 +
+ /i5 & /i6 +
+ /i3 & /i4 +
+ /i2 & /i3 +
+ /o17 & /o23 +
+ i1 & i10
+o21.oe = vcc
+
+/o22 = i9 & i10 & i11 & i13 +
+ i5 & i6 & i7 & i8 +
+ i1 & i2 & i3 & i4 +
+ i11 & /i13 +
+ i10 & /i11 +
+ i9 & /i10 +
+ i8 & /i9 +
+ i7 & /i8 +
+ i6 & /i7 +
+ o23
+o22.oe = /i13
+
+o23 = /i1 & /i2 & /i3 & /i4 & /i5 & /i6 & /i7 & /i8 & /i9 & /i10 & /i11 & /i13 +
+ /i1 & i2 & /i3 & i4 & /i5 & i6 & /i7 & i8 & /i9 & i10 & /i11 & i13 +
+ i1 & /i2 & i3 & /i4 & i5 & /i6 & i7 & /i8 & i9 & /i10 & i11 & /i13 +
+ /i1 & /i13 +
+ /i1 & /i2 & /i3 & /i4 & /i5 & /i6 & /i7 & /i8 & /i9 & /i10 & /i11 & /i13 +
+ /i3 & i4 +
+ i1 & i2 & i3 & i4 & i5 & i6 & i7 & i8 & i9 & i10 & i11 & i13 +
+ i3 & /i4
+o23.oe = /o15 & o21
+
diff --git a/regtests/jedutil/baseline/gal22v10/pal22v10-registered-to-gal22v10.txt b/regtests/jedutil/baseline/gal22v10/pal22v10-registered-to-gal22v10.txt
new file mode 100644
index 00000000000..d1ef28e28e4
--- /dev/null
+++ b/regtests/jedutil/baseline/gal22v10/pal22v10-registered-to-gal22v10.txt
@@ -0,0 +1,159 @@
+Inputs:
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
+
+Outputs:
+
+14 (Registered, Output feedback registered, Active low)
+15 (Registered, Output feedback registered, Active high)
+16 (Registered, Output feedback registered, Active high)
+17 (Registered, Output feedback registered, Active low)
+18 (Registered, Output feedback registered, Active low)
+19 (Registered, Output feedback registered, Active high)
+20 (Registered, Output feedback registered, Active high)
+21 (Registered, Output feedback registered, Active high)
+22 (Registered, Output feedback registered, Active high)
+23 (Registered, Output feedback registered, Active low)
+
+Equations:
+
+/rf14 := i2 +
+ i3 +
+ i4 +
+ i5 +
+ i6 +
+ i7 +
+ i8 +
+ i9
+rf14.oe = /i1
+
+rf15 := i10 +
+ i11 +
+ i13 +
+ /i2 & /i5 +
+ /i4 & /i6 +
+ /i8 +
+ /i11 & /i13 +
+ /i9 & /i10 +
+ /i7 & /i8 +
+ /i3
+rf15.oe = i1
+
+rf16 := /i1 & /i2 +
+ /i3 & /i4 +
+ /i5 & /i6 +
+ /i7 & /i8 +
+ /i9 & /i10 +
+ /i11 & /i13 +
+ i5 & i11 & i13 +
+ i3 & i4 & i13 +
+ i2 & /i3 & i4 +
+ /i2 & /i3 +
+ /i2 & /i3 & /i11 & /i13 +
+ i4 & i5 & i6
+rf16.oe = /rf14
+
+/rf17 := /i13 +
+ /i11 +
+ /i10 +
+ /i9 +
+ /i8 +
+ /i7 +
+ /i6 +
+ /i5 +
+ /i4 +
+ /i3 +
+ /i2 +
+ /i1 +
+ i1 & i2 & i3 & i4 & i5 +
+ i6 & i7 & i8 & i9 & i10
+rf17.oe = vcc
+
+/rf18 := rf17 +
+ i1 & i2 & /rf17 +
+ i3 & i4 & /rf17 +
+ /i1 & /i2 & /i4 +
+ i3 & rf17 +
+ i3 & /i4 +
+ /i5 & /i6 & i10 +
+ i7 & i9 & i13 +
+ /i9 & /i11 +
+ /i1 & /i3 & rf17 +
+ /rf17 & /rf20 +
+ i5 & i6 & rf20 +
+ i9 & i10 & i11 +
+ /i13 & /rf20 +
+ /i1 & /i2 & i5 & i6 +
+ i7 & i8
+rf18.oe = i11 & i13
+
+rf19 := /i1 & /rf14 +
+ rf14 +
+ i2 +
+ i3 +
+ i4 +
+ i5 +
+ i6 +
+ i7 +
+ i8 +
+ i9 +
+ i10 +
+ i11 +
+ i13 +
+ /i2 +
+ /i3 +
+ /i4
+rf19.oe = /i3 & i9 & i10 & /i11
+
+rf20 := /i1 & i2 +
+ /i5 +
+ /i6 +
+ /i7 +
+ /i8 +
+ /i9 +
+ /i10 +
+ /i11 +
+ /i13 +
+ i13 +
+ i11 +
+ i10 +
+ i9 +
+ i8
+rf20.oe = vcc
+
+rf21 := /i1 & /i10 +
+ rf17 & rf23 +
+ i2 & i3 +
+ i3 & i4 +
+ i5 & i6 +
+ i7 & i8 +
+ i9 & i10 +
+ i11 & i13 +
+ /i2 & i3 +
+ /i3 & i4 +
+ /i4 & i5 +
+ /i5 & i6
+rf21.oe = i13
+
+rf22 := /rf23 +
+ /i6 & i7 +
+ /i7 & i8 +
+ /i8 & i9 +
+ /i9 & i10 +
+ /i10 & i11 +
+ /i11 & i13 +
+ /i1 & /i2 & /i3 & /i4 +
+ /i5 & /i6 & /i7 & /i8 +
+ /i9 & /i10 & /i11 & /i13
+rf22.oe = vcc
+
+/rf23 := /i3 & i4 +
+ /i1 & /i2 & /i3 & /i4 & /i5 & /i6 & /i7 & /i8 & /i9 & /i10 & /i11 & /i13 +
+ i3 & /i4 +
+ i1 & i2 & i3 & i4 & i5 & i6 & i7 & i8 & i9 & i10 & i11 & i13 +
+ i1 & i13 +
+ /i1 & i2 & /i3 & i4 & /i5 & i6 & /i7 & i8 & /i9 & i10 & /i11 & i13 +
+ i1 & /i2 & i3 & /i4 & i5 & /i6 & i7 & /i8 & i9 & /i10 & i11 & /i13 +
+ i1 & i2 & i3 & i4 & i5 & i6 & i7 & i8 & i9 & i10 & i11 & i13
+rf23.oe = vcc
+
diff --git a/regtests/jedutil/baseline/palce16v8/pal10h8-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal10h8-as-palce16v8.txt
index 8f2217bb42f..1898de89671 100644
--- a/regtests/jedutil/baseline/palce16v8/pal10h8-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal10h8-as-palce16v8.txt
@@ -1,17 +1,17 @@
Inputs:
-1, 2, 3, 4, 5, 6, 7, 8, 9, 11
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
Outputs:
-12 (Combinatorial, No output feedback, Active high)
-13 (Combinatorial, No output feedback, Active high)
-14 (Combinatorial, No output feedback, Active high)
+12 (Combinatorial, Output feedback output, Active high)
+13 (Combinatorial, Output feedback output, Active high)
+14 (Combinatorial, Output feedback output, Active high)
15 (Combinatorial, No output feedback, Active high)
16 (Combinatorial, No output feedback, Active high)
-17 (Combinatorial, No output feedback, Active high)
-18 (Combinatorial, No output feedback, Active high)
-19 (Combinatorial, No output feedback, Active high)
+17 (Combinatorial, Output feedback output, Active high)
+18 (Combinatorial, Output feedback output, Active high)
+19 (Combinatorial, Output feedback output, Active high)
Equations:
diff --git a/regtests/jedutil/baseline/palce16v8/pal10l8-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal10l8-as-palce16v8.txt
index d32a94e781f..167b95fbb0e 100644
--- a/regtests/jedutil/baseline/palce16v8/pal10l8-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal10l8-as-palce16v8.txt
@@ -1,17 +1,17 @@
Inputs:
-1, 2, 3, 4, 5, 6, 7, 8, 9, 11
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
Outputs:
-12 (Combinatorial, No output feedback, Active low)
-13 (Combinatorial, No output feedback, Active low)
-14 (Combinatorial, No output feedback, Active low)
+12 (Combinatorial, Output feedback output, Active low)
+13 (Combinatorial, Output feedback output, Active low)
+14 (Combinatorial, Output feedback output, Active low)
15 (Combinatorial, No output feedback, Active low)
16 (Combinatorial, No output feedback, Active low)
-17 (Combinatorial, No output feedback, Active low)
-18 (Combinatorial, No output feedback, Active low)
-19 (Combinatorial, No output feedback, Active low)
+17 (Combinatorial, Output feedback output, Active low)
+18 (Combinatorial, Output feedback output, Active low)
+19 (Combinatorial, Output feedback output, Active low)
Equations:
diff --git a/regtests/jedutil/baseline/palce16v8/pal12h6-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal12h6-as-palce16v8.txt
index 99812016fc1..ed8743ffe0e 100644
--- a/regtests/jedutil/baseline/palce16v8/pal12h6-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal12h6-as-palce16v8.txt
@@ -1,15 +1,15 @@
Inputs:
-1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 19
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
Outputs:
-13 (Combinatorial, No output feedback, Active high)
-14 (Combinatorial, No output feedback, Active high)
+13 (Combinatorial, Output feedback output, Active high)
+14 (Combinatorial, Output feedback output, Active high)
15 (Combinatorial, No output feedback, Active high)
16 (Combinatorial, No output feedback, Active high)
-17 (Combinatorial, No output feedback, Active high)
-18 (Combinatorial, No output feedback, Active high)
+17 (Combinatorial, Output feedback output, Active high)
+18 (Combinatorial, Output feedback output, Active high)
Equations:
diff --git a/regtests/jedutil/baseline/palce16v8/pal12l6-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal12l6-as-palce16v8.txt
index 80176da62b2..e7022eebba8 100644
--- a/regtests/jedutil/baseline/palce16v8/pal12l6-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal12l6-as-palce16v8.txt
@@ -1,15 +1,15 @@
Inputs:
-1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 19
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
Outputs:
-13 (Combinatorial, No output feedback, Active low)
-14 (Combinatorial, No output feedback, Active low)
+13 (Combinatorial, Output feedback output, Active low)
+14 (Combinatorial, Output feedback output, Active low)
15 (Combinatorial, No output feedback, Active low)
16 (Combinatorial, No output feedback, Active low)
-17 (Combinatorial, No output feedback, Active low)
-18 (Combinatorial, No output feedback, Active low)
+17 (Combinatorial, Output feedback output, Active low)
+18 (Combinatorial, Output feedback output, Active low)
Equations:
diff --git a/regtests/jedutil/baseline/palce16v8/pal14h4-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal14h4-as-palce16v8.txt
index 5bc89e2aace..d60f5c0333d 100644
--- a/regtests/jedutil/baseline/palce16v8/pal14h4-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal14h4-as-palce16v8.txt
@@ -1,13 +1,13 @@
Inputs:
-1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 18, 19
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
Outputs:
-14 (Combinatorial, No output feedback, Active high)
+14 (Combinatorial, Output feedback output, Active high)
15 (Combinatorial, No output feedback, Active high)
16 (Combinatorial, No output feedback, Active high)
-17 (Combinatorial, No output feedback, Active high)
+17 (Combinatorial, Output feedback output, Active high)
Equations:
diff --git a/regtests/jedutil/baseline/palce16v8/pal14l4-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal14l4-as-palce16v8.txt
index 2b12c4c155c..172ad624114 100644
--- a/regtests/jedutil/baseline/palce16v8/pal14l4-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal14l4-as-palce16v8.txt
@@ -1,13 +1,13 @@
Inputs:
-1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 18, 19
+1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19
Outputs:
-14 (Combinatorial, No output feedback, Active low)
+14 (Combinatorial, Output feedback output, Active low)
15 (Combinatorial, No output feedback, Active low)
16 (Combinatorial, No output feedback, Active low)
-17 (Combinatorial, No output feedback, Active low)
+17 (Combinatorial, Output feedback output, Active low)
Equations:
diff --git a/regtests/jedutil/baseline/palce16v8/pal16l8-as-palce16v8.txt b/regtests/jedutil/baseline/palce16v8/pal16l8-as-palce16v8.txt
index 7c93dad207e..781680116bc 100644
--- a/regtests/jedutil/baseline/palce16v8/pal16l8-as-palce16v8.txt
+++ b/regtests/jedutil/baseline/palce16v8/pal16l8-as-palce16v8.txt
@@ -4,14 +4,14 @@ Inputs:
Outputs:
-12 (Combinatorial, Output feedback output, Active high)
+12 (Combinatorial, No output feedback, Active high)
13 (Combinatorial, Output feedback output, Active low)
14 (Combinatorial, Output feedback output, Active low)
15 (Combinatorial, Output feedback output, Active low)
16 (Combinatorial, Output feedback output, Active low)
17 (Combinatorial, Output feedback output, Active low)
18 (Combinatorial, Output feedback output, Active high)
-19 (Combinatorial, Output feedback output, Active high)
+19 (Combinatorial, No output feedback, Active high)
Equations:
diff --git a/regtests/jedutil/eqns/WinCUPL/atf22v10/atf22v10_power_down_mode.pld b/regtests/jedutil/eqns/WinCUPL/atf22v10/atf22v10_power_down_mode.pld
new file mode 100644
index 00000000000..ff81d877397
--- /dev/null
+++ b/regtests/jedutil/eqns/WinCUPL/atf22v10/atf22v10_power_down_mode.pld
@@ -0,0 +1,123 @@
+Name ATF22V10 Power Down Mode Test ;
+PartNo 00 ;
+Date 5/6/2020 ;
+Revision 01 ;
+Designer MAME ;
+Company MAME ;
+Assembly None ;
+Location ;
+Device G22V10CP ;
+
+/* Power Down Mode Test */
+
+/* Input Pins (Pin 4 not allowed for input, but instead triggers power down mode.) */
+PIN 1 = [I1] ;
+PIN 2 = [I2] ;
+PIN 3 = [I3] ;
+PIN 5 = [I5] ;
+PIN 6 = [I6] ;
+PIN 7 = [I7] ;
+PIN 8 = [I8] ;
+PIN 9 = [I9] ;
+PIN 10 = [I10] ;
+PIN 11 = [I11] ;
+PIN 13 = [I13] ;
+PIN 14 = [I14] ;
+PIN 23 = [I23] ;
+
+/* Output Pins */
+PINNODE 15 = [O15] ;
+PINNODE 16 = [O16] ;
+PINNODE 17 = [O17] ;
+PINNODE 18 = [O18] ;
+PINNODE 19 = [O19] ;
+PINNODE 20 = [O20] ;
+PINNODE 21 = [O21] ;
+PINNODE 22 = [O22] ;
+
+/* Logic Equations */
+
+ASYNC_RESET = !I2 & O15 & !O16 & O17 & !O18;
+SYNC_PRESET = O19 & !O20 & O21 & !O22 & I23;
+
+O15 = I1 & !I2 #
+ I3 #
+ !I5 & I6 & I7 & !I8 & I9 #
+ !I10 & !I11 #
+ I13 #
+ I14 #
+ I23;
+O15.oe = !I23;
+O15.AR = ASYNC_RESET;
+O15.SP = SYNC_PRESET;
+
+O16 = I1 & I2 & I3 & I5 #
+ I6 & I7 & I8 & I9 & I10 #
+ I13 #
+ I14 & !O21 #
+ I23 #
+ !I5 & O17 & O18 #
+ !I2;
+O16.AR = ASYNC_RESET;
+O16.SP = SYNC_PRESET;
+
+O17 = !I7 & O21 #
+ I8 #
+ !I3 #
+ !I1 & !I2 & I3 #
+ !I5 #
+ !I6 & !I7 & !I8 & !I9 & !I10 #
+ !O18;
+O17.AR = ASYNC_RESET;
+O17.SP = SYNC_PRESET;
+
+!O18 = I1 #
+ I3 #
+ I5 #
+ I7 #
+ I9 #
+ I11 #
+ I13;
+O18.AR = ASYNC_RESET;
+O18.SP = SYNC_PRESET;
+
+O19 = !I13 #
+ !I11 #
+ !I9 #
+ !I7 #
+ !I5 #
+ !I3 #
+ !I1;
+O19.AR = ASYNC_RESET;
+O19.SP = SYNC_PRESET;
+
+O20 = I6 #
+ I13 & O19 #
+ I1 & !I7 #
+ O18 #
+ I9 & !I13 #
+ I14 & !O17 #
+ !O16;
+O20.AR = ASYNC_RESET;
+O20.SP = SYNC_PRESET;
+
+!O21 = !I1 & I2 #
+ !I3 #
+ I5 & !I6 & !I7 & I8 & !I9 #
+ I10 & I11 #
+ !I13 #
+ !I14 #
+ !I23;
+O21.oe = !I23;
+O21.AR = ASYNC_RESET;
+O21.SP = SYNC_PRESET;
+
+O22 = !I8 & I23 #
+ !O19 & I23 #
+ !O18 #
+ O17 #
+ O16 #
+ !I2 & I8 & I14 #
+ !I2 & !I6 & !I8 & !I10 & !I14;
+O22.AR = ASYNC_RESET;
+O22.SP = SYNC_PRESET;
diff --git a/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_complex_mode.pld b/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_complex_mode.pld
new file mode 100644
index 00000000000..66bcd965902
--- /dev/null
+++ b/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_complex_mode.pld
@@ -0,0 +1,69 @@
+Name GAL16V8 Complex Mode Test ;
+PartNo 00 ;
+Date 4/27/2020 ;
+Revision 01 ;
+Designer MAME ;
+Company MAME ;
+Assembly None ;
+Location ;
+Device G16V8A ;
+
+/* Complex Mode Test */
+
+/* Input Pins */
+PIN 1 = [I1] ;
+PIN 2 = [I2] ;
+PIN 3 = [I3] ;
+PIN 4 = [I4] ;
+PIN 5 = [I5] ;
+PIN 6 = [I6] ;
+PIN 7 = [I7] ;
+PIN 8 = [I8] ;
+PIN 9 = [I9] ;
+PIN 11 = [I11] ;
+PIN 13 = [I13] ;
+PIN 14 = [I14] ;
+PIN 17 = [I17] ;
+PIN 18 = [I18] ;
+
+/* Output Pins */
+PINNODE 12 = [O12] ;
+PINNODE 15 = [O15] ;
+PINNODE 16 = [O16] ;
+PINNODE 19 = [O19] ;
+
+/* Logic Equations */
+
+O12 = I1 & I3 & I5 & !O16 #
+ I7 & I9 & I11 #
+ I13 & O16 & I17 #
+ I8 & I14 & !I17 #
+ !I8 & !I14 #
+ !I1 & !I2 & !I3 & !I4 & !I5 & !I7 #
+ I2 & I4 & I6 & !O16 ;
+O12.oe = !O15 & O16 ;
+
+O15 = !I1 & !I3 & !I5 #
+ !I7 & !I9 & !I11 #
+ !I13 & !I17 #
+ !I2 & !I4 & I13 #
+ I4 & I18 #
+ !I2 & !I4 & !I6 #
+ !I8 & !I14 & I17 ;
+
+!O16 = I17 & !I18 #
+ !I11 & !I13 & !I14 #
+ I6 & I7 & I8 & I9 #
+ !I1 & !I2 & !I3 & !I4 & !I5 #
+ I1 & I2 & I3 & I4 & I5 & I13 & !I17 #
+ I11 & I13 & I14 #
+ !I6 & !I7 & !I8 & !I9 ;
+
+!O19 = !I1 & !I3 #
+ !I5 & !I7 #
+ !I9 & !I11 & O15 #
+ !I13 & !O15 #
+ !I14 & I17 #
+ I2 & I4 & I6 #
+ I8 & I9 & I14 ;
+O19.oe = O15 & !O16 ;
diff --git a/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_registered_mode.pld b/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_registered_mode.pld
new file mode 100644
index 00000000000..24fd93b105a
--- /dev/null
+++ b/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_registered_mode.pld
@@ -0,0 +1,78 @@
+Name GAL16V8 Registered Mode Test ;
+PartNo 00 ;
+Date 5/1/2020 ;
+Revision 01 ;
+Designer MAME ;
+Company MAME ;
+Assembly None ;
+Location ;
+Device G16V8A ;
+
+/* Registered Mode Test */
+
+/* Input Pins */
+PIN 2 = [I2] ;
+PIN 3 = [I3] ;
+PIN 4 = [I4] ;
+PIN 5 = [I5] ;
+PIN 6 = [I6] ;
+PIN 7 = [I7] ;
+PIN 8 = [I8] ;
+PIN 9 = [I9] ;
+PIN 13 = [I13] ;
+PIN 17 = [I17] ;
+PIN 18 = [I18] ;
+
+/* Output Pins */
+PINNODE 12 = [RF12] ;
+PINNODE 14 = [O14] ;
+PINNODE 15 = [RF15] ;
+PINNODE 16 = [O16] ;
+PINNODE 19 = [RF19] ;
+
+/* Logic Equations */
+
+!RF12.D = I3 & I5 & !O16 #
+ I7 & I9 #
+ I13 & O16 & I17 #
+ I8 & O14 & !I17 #
+ !I8 & !O14 #
+ !I2 & !I3 & !I4 #
+ !I5 & !I7 #
+ I2 & I4 & I6 & !O16 ;
+
+O14 = I2 #
+ I3 #
+ I4 #
+ I5 #
+ I6 #
+ I7 #
+ I8 ;
+O14.oe = I9 & RF12 & I13 & I17 & I18 ;
+
+RF15.D = !I3 & !I5 #
+ !I7 & !I9 #
+ !I13 & !I17 #
+ !I2 & !I4 & I13 #
+ I4 & !RF12 & I18 #
+ !I2 & !I4 & !I6 #
+ !I8 & !O14 & I17 #
+ I3 & RF12 & O14 ;
+
+!O16 = RF12 & I17 & !I18 #
+ !I13 & !O14 #
+ I6 & I7 & I8 & I9 #
+ !I2 & !I3 & !I4 & !I5 #
+ I2 & I3 & I4 & I5 & I13 & !I17 #
+ !RF12 & I13 & O14 #
+ !I6 & !I7 & !I8 & !I9 ;
+O16.oe = !RF12 & O14 & !RF15 & RF19 ;
+
+!RF19.D = !I3 & !O14 #
+ !I5 & !I7 & !O16 #
+ !I9 & RF15 #
+ !I13 & !RF15 #
+ !O14 & I17 #
+ I2 & I4 & I6 & O16 #
+ I8 & I9 & O14 #
+ O14 & RF15 ;
diff --git a/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_simple_mode.pld b/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_simple_mode.pld
new file mode 100644
index 00000000000..acdf5f9e17a
--- /dev/null
+++ b/regtests/jedutil/eqns/WinCUPL/gal16v8/gal16v8_simple_mode.pld
@@ -0,0 +1,81 @@
+Name GAL16V8 Simple Mode Test ;
+PartNo 00 ;
+Date 4/22/2020 ;
+Revision 01 ;
+Designer MAME ;
+Company MAME ;
+Assembly None ;
+Location ;
+Device G16V8A ;
+
+/* Simple Mode Test */
+
+/*
+ NOTE:
+
+ According to the datasheet when in Simple Mode pins 12, 13, 14, 17, 18, 19
+ can be configured as combinatorial output with feedback, but WinCUPL
+ will not allow these pins to be fed back into a different product term.
+
+ I'm assuming WinCUPL is wrong and not the datasheet because the GAL20V8
+ device supports this configuration and WinCUPL will allow it.
+*/
+
+/* Input Pins */
+PIN 1 = [I1] ;
+PIN 2 = [I2] ;
+PIN 3 = [I3] ;
+PIN 4 = [I4] ;
+PIN 5 = [I5] ;
+PIN 6 = [I6] ;
+PIN 7 = [I7] ;
+PIN 8 = [I8] ;
+PIN 9 = [I9] ;
+PIN 11 = [I11] ;
+PIN 13 = [I13] ;
+PIN 14 = [I14] ;
+PIN 17 = [I17] ;
+PIN 19 = [I19] ;
+
+/* Output Pins */
+PINNODE 12 = [O12] ;
+PINNODE 15 = [O15] ;
+PINNODE 16 = [O16] ;
+PINNODE 18 = [O18] ;
+
+/* Logic Equations */
+
+!O12 = I1 & I3 & I5 #
+ I7 & I9 & I11 #
+ I13 & I17 #
+ !I17 #
+ !I8 #
+ !I1 & !I2 & !I3 & !I4 & !I5 & !I7 #
+ I2 & I4 & I6 #
+ I8 & I14 ;
+
+!O15 = !I1 & !I3 & !I5 #
+ !I7 & !I9 & !I11 #
+ !I13 & !I17 #
+ !I2 & !I4 #
+ I4 #
+ !I2 & !I4 & !I6 #
+ !I8 & !I14 #
+ I13 & I17 ;
+
+O16 = !I11 & !I13 & !I14 & I17 #
+ I6 & I7 & I8 & I9 #
+ !I1 & !I2 & !I3 & !I4 & !I5 #
+ !I17 #
+ I11 & I13 & I14 #
+ !I6 & !I7 & !I8 & !I9 #
+ I1 & I2 & I3 & I4 & I5 ;
+
+!O18 = !I1 & !I3 #
+ !I5 & !I7 #
+ !I9 & !I11 #
+ !I13 & I19 #
+ I17 #
+ I2 & I4 & I6 #
+ I8 & I9 #
+ I14;
diff --git a/regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_combinatorial_mode.pld b/regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_combinatorial_mode.pld
new file mode 100644
index 00000000000..166bd718ed3
--- /dev/null
+++ b/regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_combinatorial_mode.pld
@@ -0,0 +1,124 @@
+Name GAL22V10 Combinatorial Mode Test ;
+PartNo 00 ;
+Date 5/3/2020 ;
+Revision 01 ;
+Designer MAME ;
+Company MAME ;
+Assembly None ;
+Location ;
+Device G22V10 ;
+
+/* Combinatorial Mode Test */
+
+/* Input Pins */
+PIN 1 = [I1] ;
+PIN 2 = [I2] ;
+PIN 3 = [I3] ;
+PIN 4 = [I4] ;
+PIN 5 = [I5] ;
+PIN 6 = [I6] ;
+PIN 7 = [I7] ;
+PIN 8 = [I8] ;
+PIN 9 = [I9] ;
+PIN 10 = [I10] ;
+PIN 11 = [I11] ;
+PIN 13 = [I13] ;
+PIN 14 = [I14] ;
+PIN 23 = [I23] ;
+
+/* Output Pins */
+PINNODE 15 = [O15] ;
+PINNODE 16 = [O16] ;
+PINNODE 17 = [O17] ;
+PINNODE 18 = [O18] ;
+PINNODE 19 = [O19] ;
+PINNODE 20 = [O20] ;
+PINNODE 21 = [O21] ;
+PINNODE 22 = [O22] ;
+
+/* Logic Equations */
+
+ASYNC_RESET = !I2 & O15 & !O16 & O17 & !O18;
+SYNC_PRESET = O19 & !O20 & O21 & !O22 & I23;
+
+O15 = I1 & !I2 #
+ I3 #
+ I4 & !I5 & I6 & I7 & !I8 & I9 #
+ !I10 & !I11 #
+ I13 #
+ I14 #
+ I23;
+O15.oe = !I23;
+O15.AR = ASYNC_RESET;
+O15.SP = SYNC_PRESET;
+
+O16 = I1 & I2 & I3 & I4 & I5 #
+ I6 & I7 & I8 & I9 & I10 #
+ I13 #
+ I14 & !O21 #
+ I23 #
+ !I5 & O17 & O18 #
+ !I2;
+O16.AR = ASYNC_RESET;
+O16.SP = SYNC_PRESET;
+
+O17 = !I7 & O21 #
+ I8 #
+ !I3 #
+ !I1 & !I2 & I3 #
+ !I4 & !I5 #
+ !I6 & !I7 & !I8 & !I9 & !I10 #
+ !O18;
+O17.AR = ASYNC_RESET;
+O17.SP = SYNC_PRESET;
+
+!O18 = I1 #
+ I3 #
+ I5 #
+ I7 #
+ I9 #
+ I11 #
+ I13;
+O18.AR = ASYNC_RESET;
+O18.SP = SYNC_PRESET;
+
+O19 = !I13 #
+ !I11 #
+ !I9 #
+ !I7 #
+ !I5 #
+ !I3 #
+ !I1;
+O19.AR = ASYNC_RESET;
+O19.SP = SYNC_PRESET;
+
+O20 = I6 #
+ I13 & O19 #
+ I1 & !I7 #
+ O18 #
+ I9 & !I13 #
+ I14 & !O17 #
+ !O16;
+O20.AR = ASYNC_RESET;
+O20.SP = SYNC_PRESET;
+
+!O21 = !I1 & I2 #
+ !I3 #
+ !I4 & I5 & !I6 & !I7 & I8 & !I9 #
+ I10 & I11 #
+ !I13 #
+ !I14 #
+ !I23;
+O21.oe = !I23;
+O21.AR = ASYNC_RESET;
+O21.SP = SYNC_PRESET;
+
+O22 = !I8 & I23 #
+ !O19 & I23 #
+ !O18 #
+ O17 #
+ O16 #
+ !I2 & I8 & I14 #
+ !I2 & !I4 & !I6 & !I8 & !I10 & !I14;
+O22.AR = ASYNC_RESET;
+O22.SP = SYNC_PRESET;
diff --git a/regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_registered_mode.pld b/regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_registered_mode.pld
new file mode 100644
index 00000000000..316aaeecc32
--- /dev/null
+++ b/regtests/jedutil/eqns/WinCUPL/gal22v10/gal22v10_registered_mode.pld
@@ -0,0 +1,83 @@
+Name GAL22V10 Registered Mode Test ;
+PartNo 00 ;
+Date 5/3/2020 ;
+Revision 01 ;
+Designer MAME ;
+Company MAME ;
+Assembly None ;
+Location ;
+Device G22V10 ;
+
+/* Registered Mode Test */
+
+/* Input Pins */
+PIN 2 = [I2] ;
+PIN 3 = [I3] ;
+PIN 4 = [I4] ;
+PIN 5 = [I5] ;
+PIN 6 = [I6] ;
+PIN 7 = [I7] ;
+PIN 8 = [I8] ;
+PIN 9 = [I9] ;
+PIN 10 = [I10] ;
+PIN 11 = [I11] ;
+PIN 14 = [I14] ;
+PIN 15 = [I15] ;
+PIN 16 = [I16] ;
+PIN 17 = [I17] ;
+PIN 21 = [I21] ;
+PIN 23 = [I23] ;
+
+/* Output Pins */
+PINNODE 18 = [RF18] ;
+PINNODE 19 = [RF19] ;
+PINNODE 20 = [RF20] ;
+PINNODE 22 = [RF22] ;
+
+/* Logic Equations */
+
+ASYNC_RESET = I2 & !I15 & I16 & !I17 & RF18;
+SYNC_PRESET = !RF19 & RF20 & !I21 & !I23;
+
+!RF18.D = I3 & RF19 #
+ I5 #
+ I7 #
+ I9 #
+ I11 #
+ I15 & !RF19 #
+ I17;
+RF18.oe = !I17 & !I21 & I23;
+RF18.AR = ASYNC_RESET;
+RF18.SP = SYNC_PRESET;
+
+!RF19.D = !I10 & !I23 #
+ !I11 & RF18 #
+ !I9 #
+ !I7 & I21 #
+ !I5 #
+ !I3 & !RF18 #
+ !I2 #
+ I4;
+RF19.AR = ASYNC_RESET;
+RF19.SP = SYNC_PRESET;
+
+RF20.D = I6 #
+ I10 & RF19 #
+ !I7 & I17 #
+ RF18 #
+ I9 & !I10 #
+ I14 & !I17 #
+ !I16 #
+ !RF19 & I23;
+RF20.AR = ASYNC_RESET;
+RF20.SP = SYNC_PRESET;
+
+RF22.D = !I8 & I23 #
+ !RF19 & I23 #
+ !RF18 #
+ I17 #
+ I16 #
+ !I2 & I8 & I14 #
+ !I2 & !I4 & !I6 & !I8 & !I10 & !I14;
+RF22.AR = ASYNC_RESET;
+RF22.SP = SYNC_PRESET;
diff --git a/regtests/jedutil/jeds/atf22v10/atf22v10_power_down_mode.jed b/regtests/jedutil/jeds/atf22v10/atf22v10_power_down_mode.jed
new file mode 100644
index 00000000000..ee6f72f8711
--- /dev/null
+++ b/regtests/jedutil/jeds/atf22v10/atf22v10_power_down_mode.jed
@@ -0,0 +1,120 @@
+
+CUPL(WM) 5.0a Serial# 60008009
+Device g22v10cp Library DLIB-h-40-1
+Created Wed May 06 22:00:08 2020
+Name ATF22V10 Power Down Mode Test
+Partno 00
+Revision 01
+Date 5/6/2020
+Designer MAME
+Company MAME
+Assembly None
+Location
+*QP24
+*QF5893
+*G0
+*F0
+*L00000 11111011111111111111111011011110
+*L00032 11011111111100000000000000000000
+*L00416 00000000000000000000000011111111
+*L00448 11111111111111111111111111111111
+*L00480 11111101111111111111111111111111
+*L00512 10111111111111111101111111111111
+*L00544 11101111111111111111111111111111
+*L00576 11111111111111111110111111111111
+*L00608 11111111111111111111111111111111
+*L00640 11011111111111111111111111111111
+*L00672 11111111111111111101111111111111
+*L00704 11111011111111111111111111110111
+*L00736 11111101111111111011111111111111
+*L00768 10111111101111111010111100000000
+*L00896 00000000000000000000000000001110
+*L00928 11111111111111111111111111111111
+*L00960 11111111101101111111111111111111
+*L00992 11111111111111111111111111111011
+*L01024 11111111111111111111111111111111
+*L01056 11111111111111110111101110110111
+*L01088 10111111111111111111111111111111
+*L01120 11111111111111110111011111111111
+*L01152 11111111111111111111111111111111
+*L01184 11101111111111111111111111111111
+*L01216 11111111111011111110111111111111
+*L01248 11111111111111111111111111110000
+*L01472 00000000000000000000000011111111
+*L01504 11111111111111111111111111111111
+*L01536 11111111111111111111111101111111
+*L01568 11111111111111111111111111111111
+*L01600 11011111111111111111111111010111
+*L01632 11111111111111111111101111111111
+*L01664 11111111111111111111111111111101
+*L01696 11111111111111111111111111111111
+*L01728 11111111111111111111011111111110
+*L01760 11111111111111111111111111101111
+*L01792 11111101111111111111111111111111
+*L01824 11111111111011111111111100000000
+*L02144 00000000000011111111111111111111
+*L02176 11111111111111111111111111111111
+*L02208 11111111111111111111111111111111
+*L02240 11101111111111111111111111111111
+*L02272 11111111111110111111111111111111
+*L02304 11111111111111111011111111111111
+*L02336 11111111111111111111101111111111
+*L02368 11111111111111111111111110111111
+*L02400 11111111111111111111111111111011
+*L02432 11111111111111111111111111111111
+*L02464 10111111111111111111111111111111
+*L02496 11111111111100000000000000000000
+*L02880 00000000000000000000000011111111
+*L02912 11111111111111111111111111111111
+*L02944 11110111111111111111111111111111
+*L02976 11111111111111111111111101111111
+*L03008 11111111111111111111111111111111
+*L03040 11111111111101111111111111111111
+*L03072 11111111111111111111111111111111
+*L03104 01111111111111111111111111111111
+*L03136 11111111111111111111011111111111
+*L03168 11111111111111111111111111111111
+*L03200 11111111011111111111111111111111
+*L03232 11111111111111111111110100000000
+*L03648 00001111111111111111111111111111
+*L03680 11111111111111111111111111011111
+*L03712 11111111101111111111111111111111
+*L03744 11111111111111111111111101111111
+*L03776 11111111111111111011111111111111
+*L03808 11111111111111111111101110110111
+*L03840 11111111111111111111111111111111
+*L03872 11111111111111111011111111111111
+*L03904 11111111111111111111111111111111
+*L03936 10111011101110111011111111111111
+*L03968 11111111111111101111111111111111
+*L04000 11110000000000000000000000000000
+*L04288 00000000000000000000000011111111
+*L04320 11111111111111111111111111111111
+*L04352 11110111011101111111011111111111
+*L04384 11111111111111111111111111111111
+*L04416 11110111011101110111011111111111
+*L04448 11111111111111111111111111111111
+*L04480 11111101111111111110111111111111
+*L04512 11111111111111011111110111111111
+*L04544 11111111111111111111111111111111
+*L04576 11111111111111111011110111011111
+*L04608 11111111111111111011111111111111
+*L04640 11111111111111111111111100000000
+*L04864 00000000000000000000111011111111
+*L04896 11111111111111111111111111111111
+*L04928 01111011111111111111111111111111
+*L04960 11111111111111111111011111111111
+*L04992 11111111111111111111111111111111
+*L05024 11111111101101110111101101111111
+*L05056 11111111111111111111111111111111
+*L05088 11111111101110111111111111111111
+*L05120 11111111111111111111111111011111
+*L05152 11111111111111111111111111111111
+*L05184 11011111110111111111111111111111
+*L05216 11111111111111111111000000000000
+*L05760 00001101111011011110110111111111
+*L05792 11111111111111110111011111011111
+*L05824 11010011000000110000001000000000
+*L05888 00001
+*C63B0
+*68D0 \ No newline at end of file
diff --git a/regtests/jedutil/jeds/gal16v8/gal16v8_complex_mode.jed b/regtests/jedutil/jeds/gal16v8/gal16v8_complex_mode.jed
new file mode 100644
index 00000000000..6634f7ef96b
--- /dev/null
+++ b/regtests/jedutil/jeds/gal16v8/gal16v8_complex_mode.jed
@@ -0,0 +1,54 @@
+
+CUPL(WM) 5.0a Serial# 60008009
+Device g16v8ma Library DLIB-h-40-8
+Created Wed Apr 29 21:46:26 2020
+Name GAL16V8 Complex Mode Test
+Partno 00
+Revision 01
+Date 4/27/2020
+Designer MAME
+Company MAME
+Assembly None
+Location
+*QP20
+*QF2194
+*G0
+*F0
+*L00000 11111111111111101101111111111111
+*L00032 11101011111111111111111111111111
+*L00064 11111111111110111111101111111111
+*L00096 11111111111111111101111111111010
+*L00128 11111111111111111110111111101111
+*L00160 11111111110111111111111011111111
+*L00192 01111111011111110111111111111111
+*L00224 11111111111111111111110101110111
+*L00768 11111111111111111111111111111111
+*L00800 11111110110111111111111111111111
+*L00832 11111111111111111111111011101110
+*L00864 11111111111111110111011101110111
+*L00896 10101011101110111111111111111111
+*L00928 01010111011001111111111111011111
+*L00960 11111111111111111111110111011101
+*L00992 11111111111111111011101110111011
+*L01024 11111111111111111111111111111111
+*L01056 11101011111110111111111111111111
+*L01088 11111111111111111111101111111010
+*L01120 11111111111011111111111111101111
+*L01152 10111111101111111111111111011111
+*L01184 11111101011111111111111111111111
+*L01216 10111111101111111011111111111111
+*L01248 11111111110111111111111010111111
+*L01792 11111111111111011110111111111111
+*L01824 11010111111101101111111111111111
+*L01856 11111111111111111111011111110101
+*L01888 11111111110111011111111111011111
+*L01920 11111111111011111111110101111111
+*L01952 11111111111111111111111010111111
+*L01984 10101011101110111111101111111111
+*L02016 01111111011111100111111111111111
+*L02048 00001001001100000011000000100000
+*L02112 00000000111111111111111111111111
+*L02144 11111111111111111111111111111111
+*L02176 111111111111111111
+*C7E7F
+*689A \ No newline at end of file
diff --git a/regtests/jedutil/jeds/gal16v8/gal16v8_registered_mode.jed b/regtests/jedutil/jeds/gal16v8/gal16v8_registered_mode.jed
new file mode 100644
index 00000000000..35f27fc5eeb
--- /dev/null
+++ b/regtests/jedutil/jeds/gal16v8/gal16v8_registered_mode.jed
@@ -0,0 +1,62 @@
+
+CUPL(WM) 5.0a Serial# 60008009
+Device g16v8ms Library DLIB-h-40-11
+Created Fri May 01 21:51:11 2020
+Name GAL16V8 Registered Mode Test
+Partno 00
+Revision 01
+Date 5/1/2020
+Designer MAME
+Company MAME
+Assembly None
+Location
+*QP20
+*QF2194
+*G0
+*F0
+*L00000 11111011111111111111111011111111
+*L00032 11111111111110101111101111111111
+*L00064 11111111111111111101111111111011
+*L00096 11111111111111111110111111101111
+*L00128 11111111110111111111111011111111
+*L00160 01111111011111010111111111111111
+*L00192 11111111111111111111110101110111
+*L00224 11111111111111111101110111111111
+*L00768 11011111111111111110110111111110
+*L00800 11111110110111111111111111111101
+*L00832 11111111111111111111111011101111
+*L00864 11111111111111110111011101110111
+*L00896 10111011101110111111111111111111
+*L00928 01110111011001111111111111011111
+*L00960 11111111111111111111110111011110
+*L00992 11111111111111111011101110111011
+*L01024 11111011111110111111111111111111
+*L01056 11111111111111111111101111111011
+*L01088 11111111111011111111111111101111
+*L01120 10111111101111111111111111011111
+*L01152 11111101011111111111111111111110
+*L01184 10111111101111111011111111111111
+*L01216 11111111110111111111111010111111
+*L01248 11110111111111111111110111111101
+*L01280 11111101110111111111111111010101
+*L01312 01111111111111111111111111111111
+*L01344 11110111111111111111111111111111
+*L01376 11111111011111111111111111111111
+*L01408 11111111111101111111111111111111
+*L01440 11111111111111110111111111111111
+*L01472 11111111111111111111011111111111
+*L01504 11111111111111111111111101111111
+*L01792 11110111111101101111111111111111
+*L01824 11111111111111111111011111110111
+*L01856 11111111110111011111111111011111
+*L01888 11111111111011111111110101111111
+*L01920 11111111111111111111111010111111
+*L01952 10111011101111111111111111111111
+*L01984 11111111111110111111101111111111
+*L02016 01111111011111100111111111111111
+*L02048 00001100001100000011000000100000
+*L02112 00000000011101101111111111111111
+*L02144 11111111111111111111111111111111
+*L02176 111111111111111101
+*C9B75
+*A7E9 \ No newline at end of file
diff --git a/regtests/jedutil/jeds/gal16v8/gal16v8_simple_mode.jed b/regtests/jedutil/jeds/gal16v8/gal16v8_simple_mode.jed
new file mode 100644
index 00000000000..1f5cf038fd0
--- /dev/null
+++ b/regtests/jedutil/jeds/gal16v8/gal16v8_simple_mode.jed
@@ -0,0 +1,52 @@
+
+CUPL(WM) 5.0a Serial# 60008009
+Device g16v8as Library DLIB-h-40-2
+Created Fri May 01 22:25:35 2020
+Name GAL16V8 Simple Mode Test
+Partno 00
+Revision 01
+Date 4/22/2020
+Designer MAME
+Company MAME
+Assembly None
+Location
+*QP20
+*QF2194
+*G0
+*F0
+*L00256 11101011111111111111111111111111
+*L00288 11111111111110111111101111111111
+*L00320 11111111111111111111111111111010
+*L00352 11111101111111111111111011111111
+*L00384 11111111111111011111111111111111
+*L00416 01111111011111110111111111111111
+*L00448 11111111111111111111111101110111
+*L00480 11111111111111111101111111111111
+*L00768 11111111111111011110111011111110
+*L00800 11111111111111110111011101110111
+*L00832 10101011101110111111111111111111
+*L00864 11111111111111101111111111111111
+*L00896 11111111111111111101110111111101
+*L00928 11111111111111111011101110111011
+*L00960 01010111011101111111111111111111
+*L01024 11101011111110111111111111111111
+*L01056 11111111111111111111101111111010
+*L01088 11111111111111101111111011111111
+*L01120 10111111101111111111111111111111
+*L01152 11111111011111111111111111111111
+*L01184 11111111111111111110111110111111
+*L01216 11111111111111011111110111111111
+*L01792 11010111111101111111111111111111
+*L01824 11111111111111111111011111110101
+*L01856 11111111111111011111110111111111
+*L01888 11111111111111101111111111111111
+*L01920 11111111111111111111111110111111
+*L01952 10101011101110111111101111111111
+*L01984 01111111011111110111111111111111
+*L02016 11111111111111111101111101111111
+*L02048 00010000001100000011000000100000
+*L02112 00000000101001101111111111111111
+*L02144 11111111111111111111111111111111
+*L02176 111111111111111110
+*C7635
+*5889 \ No newline at end of file
diff --git a/regtests/jedutil/jeds/gal22v10/gal22v10_combinatorial_mode.jed b/regtests/jedutil/jeds/gal22v10/gal22v10_combinatorial_mode.jed
new file mode 100644
index 00000000000..ff585b9c4e4
--- /dev/null
+++ b/regtests/jedutil/jeds/gal22v10/gal22v10_combinatorial_mode.jed
@@ -0,0 +1,119 @@
+
+CUPL(WM) 5.0a Serial# 60008009
+Device g22v10 Library DLIB-h-40-1
+Created Tue May 05 22:22:59 2020
+Name GAL22V10 Combinatorial Mode Test
+Partno 00
+Revision 01
+Date 5/3/2020
+Designer MAME
+Company MAME
+Assembly None
+Location
+*QP24
+*QF5892
+*G0
+*F0
+*L00000 11111011111111111111111011011110
+*L00032 11011111111100000000000000000000
+*L00416 00000000000000000000000011111111
+*L00448 11111111111111111111111111111111
+*L00480 11111101111111111111111111111111
+*L00512 10111111111111111101111111111111
+*L00544 11101111111111111111111111111111
+*L00576 11111111111111111110111111111111
+*L00608 11111111111111111111111111111111
+*L00640 11011111111111111111111111111111
+*L00672 11111111111111111101111111111111
+*L00704 11111011111111111111111111110111
+*L00736 11111101111111111011111110111111
+*L00768 10111111101111111010111100000000
+*L00896 00000000000000000000000000001110
+*L00928 11111111111111111111111111111111
+*L00960 11111111101101111111111111111111
+*L00992 11111111111111111111111111111011
+*L01024 11111111111111111111111111111111
+*L01056 11111111111110110111101110110111
+*L01088 10111111111111111111111111111111
+*L01120 11111111111111110111011111111111
+*L01152 11111111111111111111111111111111
+*L01184 11101111111111111111111111111111
+*L01216 11111111111011111110111111111111
+*L01248 11111111111111111111111111110000
+*L01472 00000000000000000000000011111111
+*L01504 11111111111111111111111111111111
+*L01536 11111111111111111111111101111111
+*L01568 11111111111111111111111111111111
+*L01600 11011111111111111111111111010111
+*L01632 11111111111111111111101111111111
+*L01664 11111111111111111111111111111101
+*L01696 11111111111111111111111111111111
+*L01728 11111111111111111111011111111110
+*L01760 11111111111111111111111111101111
+*L01792 11111101111111111111111111111111
+*L01824 11111111111011111111111100000000
+*L02144 00000000000011111111111111111111
+*L02176 11111111111111111111111111111111
+*L02208 11111111111111111111111111111111
+*L02240 11101111111111111111111111111111
+*L02272 11111111111110111111111111111111
+*L02304 11111111111111111011111111111111
+*L02336 11111111111111111111101111111111
+*L02368 11111111111111111111111110111111
+*L02400 11111111111111111111111111111011
+*L02432 11111111111111111111111111111111
+*L02464 10111111111111111111111111111111
+*L02496 11111111111100000000000000000000
+*L02880 00000000000000000000000011111111
+*L02912 11111111111111111111111111111111
+*L02944 11110111111111111111111111111111
+*L02976 11111111111111111111111101111111
+*L03008 11111111111111111111111111111111
+*L03040 11111111111101111111111111111111
+*L03072 11111111111111111111111111111111
+*L03104 01111111111111111111111111111111
+*L03136 11111111111111111111011111111111
+*L03168 11111111111111111111111111111111
+*L03200 11111111011111111111111111111111
+*L03232 11111111111111111111110100000000
+*L03648 00001111111111111111111111111111
+*L03680 11111111111111111111111111011111
+*L03712 11111111101111111111111111111111
+*L03744 11111111111111111111111101111111
+*L03776 11111111111111111011111111111111
+*L03808 11111111111111111111101110110111
+*L03840 11111111111111111111111111111111
+*L03872 11111111111110111011111111111111
+*L03904 11111111111111111111111111111111
+*L03936 10111011101110111011111111111111
+*L03968 11111111111111101111111111111111
+*L04000 11110000000000000000000000000000
+*L04288 00000000000000000000000011111111
+*L04320 11111111111111111111111111111111
+*L04352 11110111011101110111011111111111
+*L04384 11111111111111111111111111111111
+*L04416 11110111011101110111011111111111
+*L04448 11111111111111111111111111111111
+*L04480 11111101111111111110111111111111
+*L04512 11111111111111011111110111111111
+*L04544 11111111111111111111111111111111
+*L04576 11111111111111111011110111011111
+*L04608 11111111111111111011111111111111
+*L04640 11111111111111111111111100000000
+*L04864 00000000000000000000111011111111
+*L04896 11111111111111111111111111111111
+*L04928 01111011111111111111111111111111
+*L04960 11111111111111111111011111111111
+*L04992 11111111111111111111111111111111
+*L05024 11110111101101110111101101111111
+*L05056 11111111111111111111111111111111
+*L05088 11111111101110111111111111111111
+*L05120 11111111111111111111111111011111
+*L05152 11111111111111111111111111111111
+*L05184 11011111110111111111111111111111
+*L05216 11111111111111111111000000000000
+*L05760 00001101111011011110110111111111
+*L05792 11111111111111110111011111011111
+*L05824 11010011000000110000001000000000
+*C634D
+*66DE \ No newline at end of file
diff --git a/regtests/jedutil/jeds/gal22v10/gal22v10_registered_mode.jed b/regtests/jedutil/jeds/gal22v10/gal22v10_registered_mode.jed
new file mode 100644
index 00000000000..ad502f2ec39
--- /dev/null
+++ b/regtests/jedutil/jeds/gal22v10/gal22v10_registered_mode.jed
@@ -0,0 +1,74 @@
+
+CUPL(WM) 5.0a Serial# 60008009
+Device g22v10 Library DLIB-h-40-1
+Created Wed May 06 21:12:06 2020
+Name GAL22V10 Registered Mode Test
+Partno 00
+Revision 01
+Date 5/3/2020
+Designer MAME
+Company MAME
+Assembly None
+Location
+*QP24
+*QF5892
+*G0
+*F0
+*L00000 11110111111111111111110111101101
+*L00032 11101111111100000000000000000000
+*L00416 00000000000000000000000011111111
+*L00448 11111111111111111111111111111111
+*L00480 11111101111111111111111111111111
+*L00512 10111111111111111101111111111111
+*L00544 11101111111111111111111111111111
+*L00576 11111111111111111110111111111111
+*L00608 11111111111111111111111111111111
+*L00640 11011111111111111111111111111111
+*L00672 11111111111111111101111111111111
+*L00704 11111011111111111111111111110111
+*L00736 11111101111111111011111110111111
+*L00768 10111111101111111010111100000000
+*L01472 00000000000000000000000011111111
+*L01504 11111111111111111111111111111111
+*L01536 11111111111111111111111101111111
+*L01568 11111111111111111111111111111111
+*L01600 11011111111111111111011111111111
+*L01632 11111111111111111111100111111111
+*L01664 11111111111111111111111111111101
+*L01696 11111111111111111111111111111111
+*L01728 11111111111111111111011110111111
+*L01760 11111111111111111111111111101111
+*L01792 11111101111111111111111111111111
+*L01824 11111111111011111111111111011111
+*L01856 11111111111011111111111111111111
+*L01888 11110000000000000000000000000000
+*L02144 00000000000011111111111111111111
+*L02176 11111111111111111111111111101111
+*L02208 11111111111111111111111111111011
+*L02240 11111111111111111111111111011111
+*L02272 11111111111110111111111111111111
+*L02304 11111111111111111011111111111111
+*L02336 11111101111111111111101111111111
+*L02368 11111111111111111111111110111111
+*L02400 11111111111111111111111111111011
+*L02432 11111111111011111111111111111111
+*L02464 11111011111111111111111111111111
+*L02496 11111111111111111111111101111111
+*L02528 11111111111111111111111100000000
+*L02880 00000000000000000000000011011111
+*L02912 11101111111111111110111111111111
+*L02944 11111111111101111111110111111111
+*L02976 11111111111111111111111111111111
+*L03008 01111111111111111111111111111111
+*L03040 11111111111111111111011111111111
+*L03072 11111111111111111111111111111111
+*L03104 11111111011111111111111111111111
+*L03136 11111111111111111111111111110111
+*L03168 11111111111111111110111111111111
+*L03200 11011111111111111111111111111111
+*L03232 11111101111111111111111100000000
+*L05760 00001110111111101110111011111111
+*L05792 11111111111111110110011000000101
+*L05824 01010011000000110000001000000000
+*CC214
+*071B \ No newline at end of file
diff --git a/regtests/jedutil/jeds/gal22v10/pal22v10-combinatorial-to-gal22v10.jed b/regtests/jedutil/jeds/gal22v10/pal22v10-combinatorial-to-gal22v10.jed
new file mode 100644
index 00000000000..96c19816f2f
--- /dev/null
+++ b/regtests/jedutil/jeds/gal22v10/pal22v10-combinatorial-to-gal22v10.jed
@@ -0,0 +1,176 @@
+
+PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92)
+ (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992
+
+
+TITLE :PAL22V10 Combinatorial TestAUTHOR :MAMEDev
+PATTERN :A COMPANY:MAMEDev
+REVISION:1.0 DATE :3/24/2020
+
+
+Device G22V10 converted from PAL22V10 JEDEC map.
+PAL to GAL JEDEC conversion utility - paltogal v3.12 17 November 1992
+Copyright (c) by LATTICE Semiconductor Corp. 1990, 1991, 1992.
+Input File: pal22v10.jed
+Output File: gal22v10.jed
+The Date: Sun Mar 10 03:07:02 2019
+
+
+PAL22V10
+PAL22V10TEST1*
+QP24*
+QF5892*
+G0*F0*
+
+L00000 00000000000000000000000000000000000000000000*
+
+L00044 11111111110111111111111111111111111011111111*
+L00088 10111011101110111011101110111011101110111010*
+L00132 10110111101101111011011110110111101101111001*
+L00176 01111011011110110111101101111011011110110110*
+L00220 10111111111111111111111111111111111111111110*
+L00264 10111011101110111011101110111011101110111010*
+L00308 11111111101101111111111111111111111111111111*
+L00352 01110111011101110111011101110111011101110101*
+L00396 11111111011110111111111111111111111111111111*
+
+L00440 11111111111111111111111111111111111111111110*
+L00484 11111111111111111111111111111111011101110101*
+L00528 11111111111111110111011101110111111111111111*
+L00572 01110111011101111111111111111111111111111111*
+L00616 11111111111111111111111111111111111111110110*
+L00660 11111111111111111111111111111111111101111011*
+L00704 11111111111111111111111111111111011110111111*
+L00748 11111111111111111111111111110111101111111111*
+L00792 11111111111111111111111101111011111111111111*
+L00836 11111111111111111111011110111111111111111111*
+L00880 11011111111111111111111111111111111111111111*
+
+L00924 11111111111111111111111111111111111111111111*
+L00968 11111111111111110111101111111111111111111111*
+L01012 11111111111101111011111111111111111111111111*
+L01056 11111111011110111111111111111111111111111111*
+L01100 11110111101111111111111111111111111111111111*
+L01144 11111111111111111111111111111111111111111010*
+L01188 11111111111111111111111111111111101110111111*
+L01232 11111111111111111111111110111011111111111111*
+L01276 11111111111111111011101111111111111111111111*
+L01320 11111111101110111111111111111111111111111111*
+L01364 11111011101111111111111111111111111111111111*
+L01408 11101111111111111111111111101111111111111111*
+L01452 01111111111111111111111111111111111101111111*
+
+L01496 11111111011111111111111111111111101110110111*
+L01540 11111111111111111111111111111011111111111111*
+L01584 11111111111111111111111111111111101111111111*
+L01628 11111111111111111111111111111111111110111111*
+L01672 11111111111111111111111111111111111111111011*
+L01716 11111111111111111111111111111111111111111110*
+L01760 11111111111111111111111111111111111111111101*
+L01804 11111111111111111111111111111111111111110111*
+L01848 11111111111111111111111111111111111101111111*
+L01892 11111111111111111111111111111111011111111111*
+L01936 11111111111111111111111111110111111111111111*
+L01980 11111111111111111111111101111111111111111111*
+L02024 11111111111111111111011111111111111111111111*
+L02068 11111111111111110111111111111111111111111111*
+L02112 01111011111111111111111111111111111111111111*
+
+L02156 11111111111111111111111111111111111111111111*
+L02200 11111111111101111111111111111111111111111111*
+L02244 11111111011111111111111111111111111111111111*
+L02288 11110111111111111111111111111111111111111111*
+L02332 11111111111111111111111111111111111111111110*
+L02376 11111111111111111111111111111111111111111011*
+L02420 11111111111111111111111111111111111110111111*
+L02464 11111111111111111111111111111111101111111111*
+L02508 11111111111111111111111111111011111111111111*
+L02552 11111111111111111111111110111111111111111111*
+L02596 11111111111111111111101111111111111111111111*
+L02640 11111111111111111011111111111111111111111111*
+L02684 11111111111110111111111111111111111111111111*
+L02728 11111111101111111111111111111111111111111111*
+L02772 11111011111111111111111111111111111111111111*
+L02816 11111111111111111111111111111111111111101111*
+L02860 01111111111111111111111111111111111111011111*
+
+L02904 11111111111111111111111111111111111111111010*
+L02948 11111111111111111111111110111011111111111111*
+L02992 01110111111111111011101111111111111111111111*
+L03036 11111111111111101111111111111111111111111101*
+L03080 11111111111111111111111111111111101110111011*
+L03124 11111111111111011011101111111111111111111111*
+L03168 11111111111111101111111111011111111111111111*
+L03212 01111111011111111111111111101111111111111111*
+L03256 11111111111111111111111111111111011111110111*
+L03300 11111111111111111111111110111111101111111110*
+L03344 11111111111111110111011111111111111110111111*
+L03388 11111111101101111111111111111111111111111111*
+L03432 11111111101111111111111111101111111111111111*
+L03476 01110111111101111111111111111111111111111111*
+L03520 11111111101110111111111111011111111111111111*
+L03564 10111011111111111111111111011111111111111111*
+L03608 11111111111111111111111111101111111111111111*
+
+L03652 11111111111111111111111111111111111011111111*
+L03696 11111111111111111111101110111011101110111111*
+L03740 10111011101110111011111111111111111111111111*
+L03784 01111111111111111111111111111111111111111111*
+L03828 11110111111111111111111111111111111111111111*
+L03872 11111111011111111111111111111111111111111111*
+L03916 11111111111101111111111111111111111111111111*
+L03960 11111111111111110111111111111111111111111111*
+L04004 11111111111111111111011111111111111111111111*
+L04048 11111111111111111111111101111111111111111111*
+L04092 11111111111111111111111111110111111111111111*
+L04136 11111111111111111111111111111111011111111111*
+L04180 11111111111111111111111111111111111101111111*
+L04224 11111111111111111111111111111111111111110111*
+L04268 11111111111111111111111111111111111111111101*
+
+L04312 11111111111111111111111111111111111111011111*
+L04356 11111111111110111011101111111111111111111111*
+L04400 11110111011111111111111111111111111111110101*
+L04444 11110111011111111111111111111111111111111111*
+L04488 11111011011110111111111111111111111111111111*
+L04532 11111111101110111111111111111111111111111110*
+L04576 11111111111111111011111111111111111111111010*
+L04620 11111111111111111111111111111111111111110101*
+L04664 11111111111111111111111111111111011101111111*
+L04708 11111111111111111111111101110111111111111111*
+L04752 11111111111111110111011111111111111111111111*
+L04796 11111111011101111111111111111111111111111111*
+L04840 01110111111111111111111111111111111111111111*
+
+L04884 11111111111111111111111111111111111111111111*
+L04928 11111111011111111111111111111111111111111111*
+L04972 11111111111111111111111101110111111111111111*
+L05016 11111111111111111111111111111111011101111111*
+L05060 11111111111111111111111111111111111111110101*
+L05104 11111111111111111111111111110111111111111111*
+L05148 11111111111101111111011111111111111111111111*
+L05192 11110111111111110111111111111111111111111111*
+L05236 11111111111111111111111111111111111111111110*
+L05280 11111111111111111111111111111111111111111011*
+L05324 11111111111111111111111111111111111110111111*
+
+L05368 11111111111111111111111111111111111111111111*
+L05412 11111111111111111111111111111111101111111111*
+L05456 11111111111111111111111111111011111111111111*
+L05500 11111111111111111111111110111111111111111111*
+L05544 11111111111111111111101111111111111111111111*
+L05588 11111111111111111011111111111111111111111111*
+L05632 11111111111110111111111111111111111111111111*
+L05676 11111111101111111111111111111111111111111111*
+L05720 11111011111111111111111111111111111111111111*
+
+L05764 00000000000000000000000000000000000000000000*
+
+N ==> Architecture Control *
+L05808 11010101011111010111*
+N ==> Signature is "" *
+L05828 00000000000000000000000000000000000000000000*
+L05872 00000000000000000000*
+CB5B2*
+
+0000
diff --git a/regtests/jedutil/jeds/gal22v10/pal22v10-registered-to-gal22v10.jed b/regtests/jedutil/jeds/gal22v10/pal22v10-registered-to-gal22v10.jed
new file mode 100644
index 00000000000..85eb1811e3e
--- /dev/null
+++ b/regtests/jedutil/jeds/gal22v10/pal22v10-registered-to-gal22v10.jed
@@ -0,0 +1,176 @@
+
+PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92)
+ (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992
+
+
+TITLE :PAL22V10 Test 2 AUTHOR :MAMEDev
+PATTERN :A COMPANY:MAMEDev
+REVISION:1.0 DATE :3/23/2020
+
+
+Device G22V10 converted from PAL22V10 JEDEC map.
+PAL to GAL JEDEC conversion utility - paltogal v3.12 17 November 1992
+Copyright (c) by LATTICE Semiconductor Corp. 1990, 1991, 1992.
+Input File: pal22v10.jed
+Output File: gal22v10.jed
+The Date: Sun Mar 10 03:08:25 2019
+
+
+PAL22V10
+PAL22V10TEST2*
+QP24*
+QF5892*
+G0*F0*
+
+L00000 00000000000000000000000000000000000000000000*
+
+L00044 11111111111111111111111111111111111111111111*
+L00088 11111111101101111111111111111111111111111111*
+L00132 10111011101110111011101110111011101110111010*
+L00176 11111111011110111111111111111111111111111111*
+L00220 01110111011101110111011101110111011101110101*
+L00264 01111111111111111111111111111111111111111101*
+L00308 10110111101101111011011110110111101101111001*
+L00352 01111011011110110111101101111011011110110110*
+L00396 01110111011101110111011101110111011101110101*
+
+L00440 11111111111111111111111111111111111111111111*
+L00484 11101111111111111111111111111111111111111111*
+L00528 11111111111111111111101101111111111111111111*
+L00572 11111111111111111111111110110111111111111111*
+L00616 11111111111111111111111111111011011111111111*
+L00660 11111111111111111111111111111111101101111111*
+L00704 11111111111111111111111111111111111110110111*
+L00748 11111111111111111111111111111111111111111001*
+L00792 10111011101110111111111111111111111111111111*
+L00836 11111111111111111011101110111011111111111111*
+L00880 11111111111111111111111111111111101110111010*
+
+L00924 11111111111111111111111111111111111111111101*
+L00968 10111111111111111111111111111111111110111111*
+L01012 11011111111111111111111111011111111111111111*
+L01056 11110111011111111111111111111111111111111111*
+L01100 11111111011101111111111111111111111111111111*
+L01144 11111111111111110111011111111111111111111111*
+L01188 11111111111111111111111101110111111111111111*
+L01232 11111111111111111111111111111111011101111111*
+L01276 11111111111111111111111111111111111111110101*
+L01320 11111011011111111111111111111111111111111111*
+L01364 11111111101101111111111111111111111111111111*
+L01408 11111111111110110111111111111111111111111111*
+L01452 11111111111111111011011111111111111111111111*
+
+L01496 11111111111111111111111111111111111111111111*
+L01540 10110111111111111111111111111111111111111111*
+L01584 11111111111111111011111111111111111111111111*
+L01628 11111111111111111111101111111111111111111111*
+L01672 11111111111111111111111110111111111111111111*
+L01716 11111111111111111111111111111011111111111111*
+L01760 11111111111111111111111111111111101111111111*
+L01804 11111111111111111111111111111111111110111111*
+L01848 11111111111111111111111111111111111111111011*
+L01892 11111111111111111111111111111111111111111110*
+L01936 11111111111111111111111111111111111111111101*
+L01980 11111111111111111111111111111111111111110111*
+L02024 11111111111111111111111111111111111101111111*
+L02068 11111111111111111111111111111111011111111111*
+L02112 11111111111111111111111111110111111111111111*
+
+L02156 11111111101111111111111111111111011101111011*
+L02200 10111111111111111111111111111111111111101111*
+L02244 11111111111111111111111111111111111111011111*
+L02288 11110111111111111111111111111111111111111111*
+L02332 11111111011111111111111111111111111111111111*
+L02376 11111111111101111111111111111111111111111111*
+L02420 11111111111111110111111111111111111111111111*
+L02464 11111111111111111111011111111111111111111111*
+L02508 11111111111111111111111101111111111111111111*
+L02552 11111111111111111111111111110111111111111111*
+L02596 11111111111111111111111111111111011111111111*
+L02640 11111111111111111111111111111111111101111111*
+L02684 11111111111111111111111111111111111111110111*
+L02728 11111111111111111111111111111111111111111101*
+L02772 11111011111111111111111111111111111111111111*
+L02816 11111111101111111111111111111111111111111111*
+L02860 11111111111110111111111111111111111111111111*
+
+L02904 11111111111111111111111111111111111111110101*
+L02948 11111111111111111111111111011111111111111111*
+L02992 01110111111111111111111111101111111111111111*
+L03036 11111111011101111111111111101111111111111111*
+L03080 10111011111110111111111111111111111111111111*
+L03124 11111111011111111111111111011111111111111111*
+L03168 11111111011110111111111111111111111111111111*
+L03212 11111111111111111011101111111111111101111111*
+L03256 11111111111111111111111101111111011111111101*
+L03300 11111111111111111111111111111111101111111011*
+L03344 10111111101111111111111111011111111111111111*
+L03388 11111111111111101111111111101111111111111111*
+L03432 11111111111111010111011111111111111111111111*
+L03476 11111111111111111111111111111111011101110111*
+L03520 11111111111111101111111111111111111111111110*
+L03564 10111011111111110111011111111111111111111111*
+L03608 11111111111111111111111101110111111111111111*
+
+L03652 11111111111111111111111111111111111111111111*
+L03696 11111111111111111111111111111111111111111110*
+L03740 11111111111111111111111111111111111111111011*
+L03784 11111111111111111111111111111111111110111111*
+L03828 11111111111111111111111111111111101111111111*
+L03872 11111111111111111111111111111011111111111111*
+L03916 11111111111111111111111110111111111111111111*
+L03960 11111111111111111111101111111111111111111111*
+L04004 11111111111111111011111111111111111111111111*
+L04048 11111111111110111111111111111111111111111111*
+L04092 11111111101111111111111111111111111111111111*
+L04136 11111011111111111111111111111111111111111111*
+L04180 10111111111111111111111111111111111111111111*
+L04224 01110111011101110111111111111111111111111111*
+L04268 11111111111111111111011101110111011101111111*
+
+L04312 11111111111111111111111111111111111111101111*
+L04356 10111011111111111111111111111111111111111111*
+L04400 11111111101110111111111111111111111111111111*
+L04444 11111111111111111011101111111111111111111111*
+L04488 11111111111111111111111110111011111111111111*
+L04532 11111111111111111111111111111111101110111111*
+L04576 11111111111111111111111111111111111111111010*
+L04620 11111111111111110111111111111111111111110101*
+L04664 11111111011101111111111111111111111111111101*
+L04708 11110111101101111111111111111111111111111111*
+L04752 11111011101111111111111111111111111111111111*
+L04796 11111011101111111111111111111111111111111010*
+L04840 11111111111101110111011111111111111111111111*
+
+L04884 01111111111111111111111111111111111111111111*
+L04928 11111111111111111111111111111111111101111111*
+L04972 11111111111111111111111111111111111111110111*
+L05016 11111111111111111111111111111111111111111101*
+L05060 11111011111111111011111111111111111111111111*
+L05104 11111111111110111111101111111111111111111111*
+L05148 11111111111111111111111111111011111111111111*
+L05192 11111111111111111111111111111111111111111010*
+L05236 11111111111111111111111111111111101110111111*
+L05280 11111111111111111111111110111011111111111111*
+L05324 11111111101111111111111111111111111111111111*
+
+L05368 10111111111111111111111111111111111111111111*
+L05412 11110111111111111111111111111111111111111111*
+L05456 11111111011111111111111111111111111111111111*
+L05500 11111111111101111111111111111111111111111111*
+L05544 11111111111111110111111111111111111111111111*
+L05588 11111111111111111111011111111111111111111111*
+L05632 11111111111111111111111101111111111111111111*
+L05676 11111111111111111111111111110111111111111111*
+L05720 11111111111111111111111111111111011111111111*
+
+L05764 00000000000000000000000000000000000000000000*
+
+N ==> Architecture Control *
+L05808 00101010100000101000*
+N ==> Signature is "" *
+L05828 00000000000000000000000000000000000000000000*
+L05872 00000000000000000000*
+CB42D*
+
+0000
diff --git a/src/tools/jedutil.cpp b/src/tools/jedutil.cpp
index 6b9936a98f4..f0f8d615360 100644
--- a/src/tools/jedutil.cpp
+++ b/src/tools/jedutil.cpp
@@ -54,11 +54,19 @@
PAL16V8R = QP20 QF2194
PALCE16V8 = QP20 QF2194
GAL16V8A = QP20 QF2194
+ ATF16V8B = QP20 QF2194
18CV8 = QP20 QF2696
AMPAL18P8 = QP20 QF2600
+ 5C032 = QP20
+
+ PLUS16L8 = QP20
+ PLUS16R4 = QP20
+ PLUS16R6 = QP20
+ PLUS16R8 = QP20
+
EPL10P8 = QP20
EPL12P6 = QP20
EPL14P4 = QP20
@@ -68,6 +76,9 @@
EPL16RP6 = QP20
EPL16RP4 = QP20
+ PAL16A4 = QP20
+ PAL16X4 = QP20
+
24-pin devices:
PAL6L16 = QP24 QF0192
PAL8L14 = QP24 QF0224
@@ -95,10 +106,21 @@
PAL20X10 = QP24 QF1600
GAL20V8A = QP24 QF2706
+ PALCE20V8 = QP24 QF2706
+ ATF20V10B = QP24 QF2706
+
GAL22V10 = QP24 QF5892
+ ATF22V10C = QP24 QF5892 (GAL Mode)
PALCE22V10 = QP24 QF5828
PAL22V10 = QP24 QF5828
+ ATF22V10C = QP24 QF5828 (PAL Mode)
+
+ ATF22V10C = QP24 QF5893 (Power Down Mode)
+
+ PLS173 = QP24
+
+ GAL6001 = QP24
28-pin devices:
PLS100 = QP28 QF1928 (Tri-State)
@@ -118,6 +140,9 @@
#include <cstring>
#include <cctype>
+#include <set>
+#include <vector>
+
#include "corestr.h"
#include "jedparse.h"
#include "plaparse.h"
@@ -190,8 +215,6 @@
#define COMBINATORIAL_ASSIGNMENT "="
#define REGISTERED_ASSIGNMENT ":="
-#define MAXIMUM_PAGE_ITEMS 10
-
/***************************************************************************
@@ -263,6 +286,11 @@ struct _pin_output_config
};
+
+typedef std::vector<const pal_data*> pal_data_vector;
+
+
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -280,7 +308,6 @@ static void print_pal16l8_product_terms(const pal_data* pal, const jed_data* jed
static void print_pal16r4_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal16r6_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal16r8_product_terms(const pal_data* pal, const jed_data* jed);
-static void print_palce16v8_product_terms(const pal_data* pal, const jed_data* jed);
static void print_gal16v8_product_terms(const pal_data* pal, const jed_data* jed);
static void print_peel18cv8_product_terms(const pal_data* pal, const jed_data* jed);
static void print_ampal18p8_product_terms(const pal_data* pal, const jed_data* jed);
@@ -296,6 +323,8 @@ static void print_pal20x8_product_terms(const pal_data* pal, const jed_data* jed
static void print_pal20x10_product_terms(const pal_data* pal, const jed_data* jed);
static void print_gal20v8_product_terms(const pal_data* pal, const jed_data* jed);
static void print_palce22v10_pal22v10_product_terms(const pal_data* pal, const jed_data* jed);
+static void print_gal22v10_product_terms(const pal_data* pal, const jed_data* jed);
+static void print_atf22v10_power_down_mode_product_terms(const pal_data* pal, const jed_data* jed);
static void print_82s153_pls153_product_terms(const pal_data* pal, const jed_data* jed);
static void print_ck2605_product_terms(const pal_data* pal, const jed_data* jed);
#if defined(ricoh_pals)
@@ -345,7 +374,6 @@ static void config_pal16l8_pins(const pal_data* pal, const jed_data* jed);
static void config_pal16r4_pins(const pal_data* pal, const jed_data* jed);
static void config_pal16r6_pins(const pal_data* pal, const jed_data* jed);
static void config_pal16r8_pins(const pal_data* pal, const jed_data* jed);
-static void config_palce16v8_pins(const pal_data* pal, const jed_data* jed);
static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed);
static void config_peel18cv8_pins(const pal_data* pal, const jed_data* jed);
static void config_ampal18p8_pins(const pal_data* pal, const jed_data* jed);
@@ -361,6 +389,8 @@ static void config_pal20x8_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x10_pins(const pal_data* pal, const jed_data* jed);
static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed);
static void config_palce22v10_pal22v10_pins(const pal_data* pal, const jed_data* jed);
+static void config_gal22v10_pins(const pal_data* pal, const jed_data* jed);
+static void config_atf22v10_power_down_mode_pins(const pal_data* pal, const jed_data* jed);
static void config_82s153_pls153_pins(const pal_data* pal, const jed_data* jed);
static void config_ck2605_pins(const pal_data* pal, const jed_data* jed);
#if defined(ricoh_pals)
@@ -525,16 +555,6 @@ static pin_fuse_rows pal16r8pinfuserows[] = {
{18, NO_OUTPUT_ENABLE_FUSE_ROW, 256, 480}, /* Registered Output */
{19, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 224}}; /* Registered Output */
-static pin_fuse_rows palce16v8pinfuserows[] = {
- {12, 0, 0, 0},
- {13, 0, 0, 0},
- {14, 0, 0, 0},
- {15, 0, 0, 0},
- {16, 0, 0, 0},
- {17, 0, 0, 0},
- {18, 0, 0, 0},
- {19, 0, 0, 0}};
-
static pin_fuse_rows gal16v8pinfuserows[] = {
{12, 0, 0, 0},
{13, 0, 0, 0},
@@ -699,6 +719,30 @@ static pin_fuse_rows palce22v10_pal22v10pinfuserows[] = {
{22, 440, 484, 880},
{23, 44, 88, 396}};
+static pin_fuse_rows gal22v10pinfuserows[] = {
+ {14, 5368, 5412, 5720},
+ {15, 4884, 4928, 5324},
+ {16, 4312, 4356, 4840},
+ {17, 3652, 3696, 4268},
+ {18, 2904, 2948, 3608},
+ {19, 2156, 2200, 2860},
+ {20, 1496, 1540, 2112},
+ {21, 924, 968, 1452},
+ {22, 440, 484, 880},
+ {23, 44, 88, 396}};
+
+static pin_fuse_rows atf22v10powerdownmodepinfuserows[] = {
+ {14, 5368, 5412, 5720},
+ {15, 4884, 4928, 5324},
+ {16, 4312, 4356, 4840},
+ {17, 3652, 3696, 4268},
+ {18, 2904, 2948, 3608},
+ {19, 2156, 2200, 2860},
+ {20, 1496, 1540, 2112},
+ {21, 924, 968, 1452},
+ {22, 440, 484, 880},
+ {23, 44, 88, 396}};
+
static pin_fuse_rows _82s153_pls153pinfuserows[] = {
{9, 1472, 0, 0},
{11, 1508, 0, 0},
@@ -1195,24 +1239,6 @@ static pin_fuse_columns pal16r8pinfusecolumns[] = {
{18, 7, 6}, /* Registered Output */
{19, 3, 2}}; /* Registered Output */
-static pin_fuse_columns palce16v8pinfusecolumns[] = {
- {2, 1, 0},
- {3, 5, 4},
- {4, 9, 8},
- {5, 13, 12},
- {6, 17, 16},
- {7, 21, 20},
- {8, 25, 24},
- {9, 29, 28},
- {12, 31, 30},
- {13, 27, 26},
- {14, 23, 22},
- {15, 19, 18},
- {16, 15, 14},
- {17, 11, 10},
- {18, 7, 6},
- {19, 3, 2}};
-
static pin_fuse_columns gal16v8pinfusecolumns[] = {
{0, 0, 0},
{0, 0, 0},
@@ -1536,6 +1562,54 @@ static pin_fuse_columns palce22v10_pal22v10pinfusecolumns[] = {
{22, 7, 6},
{23, 3, 2}};
+static pin_fuse_columns gal22v10pinfusecolumns[] = {
+ {1, 1, 0},
+ {2, 5, 4},
+ {3, 9, 8},
+ {4, 13, 12},
+ {5, 17, 16},
+ {6, 21, 20},
+ {7, 25, 24},
+ {8, 29, 28},
+ {9 , 33, 32},
+ {10, 37, 36},
+ {11, 41, 40},
+ {13, 43, 42},
+ {14, 39, 38},
+ {15, 35, 34},
+ {16, 31, 30},
+ {17, 27, 26},
+ {18, 23, 22},
+ {19, 19, 18},
+ {20, 15, 14},
+ {21, 11, 10},
+ {22, 7, 6},
+ {23, 3, 2}};
+
+static pin_fuse_columns atf22v10powerdownmodepinfusecolumns[] = {
+ {1, 1, 0},
+ {2, 5, 4},
+ {3, 9, 8},
+ {4, 13, 12},
+ {5, 17, 16},
+ {6, 21, 20},
+ {7, 25, 24},
+ {8, 29, 28},
+ {9 , 33, 32},
+ {10, 37, 36},
+ {11, 41, 40},
+ {13, 43, 42},
+ {14, 39, 38},
+ {15, 35, 34},
+ {16, 31, 30},
+ {17, 27, 26},
+ {18, 23, 22},
+ {19, 19, 18},
+ {20, 15, 14},
+ {21, 11, 10},
+ {22, 7, 6},
+ {23, 3, 2}};
+
static pin_fuse_columns _82s153_pls153pinfusecolumns[] = {
{1, 1, 0},
{2, 3, 2},
@@ -2148,12 +2222,12 @@ static pal_data paldata[] = {
nullptr,
nullptr},
/*{"PAL16RA8", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
- {"PAL16V8R", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/
+ {"PAL16V8R", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/ // PAL16V8 same fusemap as GAL16V8?
{"PALCE16V8", 2194,
- palce16v8pinfuserows, ARRAY_LENGTH(palce16v8pinfuserows),
- palce16v8pinfusecolumns, ARRAY_LENGTH(palce16v8pinfusecolumns),
- print_palce16v8_product_terms,
- config_palce16v8_pins,
+ gal16v8pinfuserows, ARRAY_LENGTH(gal16v8pinfuserows),
+ gal16v8pinfusecolumns, ARRAY_LENGTH(gal16v8pinfusecolumns),
+ print_gal16v8_product_terms,
+ config_gal16v8_pins,
nullptr,
nullptr},
{"GAL16V8", 2194,
@@ -2163,6 +2237,13 @@ static pal_data paldata[] = {
config_gal16v8_pins,
is_gal16v8_product_term_enabled,
nullptr},
+ {"ATF16V8", 2194,
+ gal16v8pinfuserows, ARRAY_LENGTH(gal16v8pinfuserows),
+ gal16v8pinfusecolumns, ARRAY_LENGTH(gal16v8pinfusecolumns),
+ print_gal16v8_product_terms,
+ config_gal16v8_pins,
+ is_gal16v8_product_term_enabled,
+ nullptr},
{"18CV8", 2696,
peel18cv8pinfuserows, ARRAY_LENGTH(peel18cv8pinfuserows),
peel18cv8pinfusecolumns, ARRAY_LENGTH(peel18cv8pinfusecolumns),
@@ -2254,7 +2335,20 @@ static pal_data paldata[] = {
config_gal20v8_pins,
is_gal20v8_product_term_enabled,
nullptr},
- /*{"GAL22V10", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/
+ {"PALCE20V8", 2706,
+ gal20v8pinfuserows, ARRAY_LENGTH(gal20v8pinfuserows),
+ gal20v8pinfusecolumns, ARRAY_LENGTH(gal20v8pinfusecolumns),
+ print_gal20v8_product_terms,
+ config_gal20v8_pins,
+ is_gal20v8_product_term_enabled,
+ nullptr},
+ {"ATF20V10", 2706,
+ gal20v8pinfuserows, ARRAY_LENGTH(gal20v8pinfuserows),
+ gal20v8pinfusecolumns, ARRAY_LENGTH(gal20v8pinfusecolumns),
+ print_gal20v8_product_terms,
+ config_gal20v8_pins,
+ is_gal20v8_product_term_enabled,
+ nullptr},
{"PAL22V10", 5828,
palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows),
palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns),
@@ -2269,6 +2363,34 @@ static pal_data paldata[] = {
config_palce22v10_pal22v10_pins,
nullptr,
nullptr},
+ {"ATF22V10", 5828,
+ palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows),
+ palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns),
+ print_palce22v10_pal22v10_product_terms,
+ config_palce22v10_pal22v10_pins,
+ nullptr,
+ nullptr},
+ {"GAL22V10", 5892,
+ gal22v10pinfuserows, ARRAY_LENGTH(gal22v10pinfuserows),
+ gal22v10pinfusecolumns, ARRAY_LENGTH(gal22v10pinfusecolumns),
+ print_gal22v10_product_terms,
+ config_gal22v10_pins,
+ nullptr,
+ nullptr},
+ {"ATF22V10", 5892,
+ gal22v10pinfuserows, ARRAY_LENGTH(gal22v10pinfuserows),
+ gal22v10pinfusecolumns, ARRAY_LENGTH(gal22v10pinfusecolumns),
+ print_gal22v10_product_terms,
+ config_gal22v10_pins,
+ nullptr,
+ nullptr},
+ {"ATF22V10", 5893,
+ atf22v10powerdownmodepinfuserows, ARRAY_LENGTH(atf22v10powerdownmodepinfuserows),
+ atf22v10powerdownmodepinfusecolumns, ARRAY_LENGTH(atf22v10powerdownmodepinfusecolumns),
+ print_atf22v10_power_down_mode_product_terms,
+ config_atf22v10_power_down_mode_pins,
+ nullptr,
+ nullptr},
{"82S153", 1842,
_82s153_pls153pinfuserows, ARRAY_LENGTH(_82s153_pls153pinfuserows),
_82s153_pls153pinfusecolumns, ARRAY_LENGTH(_82s153_pls153pinfusecolumns),
@@ -2566,7 +2688,7 @@ static int is_pla_file(const char *file)
with a pal name
-------------------------------------------------*/
-static const pal_data* find_pal_data(const char *name)
+static void find_pal_data(const char *name, pal_data_vector& pal_data_vector)
{
int index;
@@ -2574,11 +2696,9 @@ static const pal_data* find_pal_data(const char *name)
{
if (!core_stricmp(name, paldata[index].name))
{
- return &paldata[index];
+ pal_data_vector.push_back(&paldata[index]);
}
}
-
- return nullptr;
}
@@ -3212,74 +3332,6 @@ static void print_product_terms(const pal_data* pal, const jed_data* jed)
/*-------------------------------------------------
- config_palce16v8_pin_as_7_product_terms_and_oe_term - configures
- the fuse rows of a PALCE16V8 pin with seven
- product terms and one output enable product term.
--------------------------------------------------*/
-
-static void config_palce16v8_pin_as_7_product_terms_and_oe_term(uint16_t pin)
-{
- static pin_fuse_rows pinfuserows[] = {
- {12, 1792, 1824, 2016},
- {13, 1536, 1568, 1760},
- {14, 1280, 1312, 1504},
- {15, 1024, 1056, 1248},
- {16, 768, 800, 992},
- {17, 512, 544, 736},
- {18, 256, 288, 480},
- {19, 0, 32, 224}};
- uint16_t index;
-
- for (index = 0; index < ARRAY_LENGTH(pinfuserows); ++index)
- {
- if (pinfuserows[index].pin == pin)
- {
- palce16v8pinfuserows[index].fuserowoutputenable = pinfuserows[index].fuserowoutputenable;
- palce16v8pinfuserows[index].fuserowtermstart = pinfuserows[index].fuserowtermstart;
- palce16v8pinfuserows[index].fuserowtermend = pinfuserows[index].fuserowtermend;
-
- break;
- }
- }
-}
-
-
-
-/*-------------------------------------------------
- config_palce16v8_pin_as_8_product_terms - configures
- the fuse rows of a PALCE16V8 pin with eight
- product terms and no output enable product term.
--------------------------------------------------*/
-
-static void config_palce16v8_pin_as_8_product_terms(uint16_t pin)
-{
- static pin_fuse_rows pinfuserows[] = {
- {12, NO_OUTPUT_ENABLE_FUSE_ROW, 1792, 2016},
- {13, NO_OUTPUT_ENABLE_FUSE_ROW, 1536, 1760},
- {14, NO_OUTPUT_ENABLE_FUSE_ROW, 1280, 1504},
- {15, NO_OUTPUT_ENABLE_FUSE_ROW, 1024, 1248},
- {16, NO_OUTPUT_ENABLE_FUSE_ROW, 768, 992},
- {17, NO_OUTPUT_ENABLE_FUSE_ROW, 512, 736},
- {18, NO_OUTPUT_ENABLE_FUSE_ROW, 256, 480},
- {19, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 224}};
- uint16_t index;
-
- for (index = 0; index < ARRAY_LENGTH(pinfuserows); ++index)
- {
- if (pinfuserows[index].pin == pin)
- {
- palce16v8pinfuserows[index].fuserowoutputenable = pinfuserows[index].fuserowoutputenable;
- palce16v8pinfuserows[index].fuserowtermstart = pinfuserows[index].fuserowtermstart;
- palce16v8pinfuserows[index].fuserowtermend = pinfuserows[index].fuserowtermend;
-
- break;
- }
- }
-}
-
-
-
-/*-------------------------------------------------
print_pal20xxx_product_terms - prints the product
terms for a PAL20X4, PAL20X8 and PAL20X10
-------------------------------------------------*/
@@ -3594,18 +3646,6 @@ static void print_pal16r8_product_terms(const pal_data* pal, const jed_data* jed
/*-------------------------------------------------
- print_palce16v8_product_terms - prints the product
- terms for a PALCE16V8
--------------------------------------------------*/
-
-static void print_palce16v8_product_terms(const pal_data* pal, const jed_data* jed)
-{
- print_product_terms(pal, jed);
-}
-
-
-
-/*-------------------------------------------------
print_gal16v8_product_terms - prints the product
terms for a GAL16V8
-------------------------------------------------*/
@@ -3675,13 +3715,13 @@ static void print_gal18v10_product_terms(const pal_data* pal, const jed_data* je
print_product_terms(pal, jed);
- /* Synchronous Reset */
+ /* Synchronous Preset */
generate_product_terms(pal, jed, 3420, buffer);
if (strlen(buffer))
{
- printf("Synchronous Reset:\n\n");
+ printf("Synchronous Preset:\n\n");
printf("%s\n", buffer);
printf("\n");
}
@@ -3857,6 +3897,81 @@ static void print_palce22v10_pal22v10_product_terms(const pal_data* pal, const j
/*-------------------------------------------------
+ print_gal22v10_product_terms - prints the product
+ terms for a GAL22V10
+-------------------------------------------------*/
+
+static void print_gal22v10_product_terms(const pal_data* pal, const jed_data* jed)
+{
+ char buffer[200];
+
+ print_product_terms(pal, jed);
+
+ /* Synchronous Preset */
+
+ generate_product_terms(pal, jed, 5764, buffer);
+
+ if (strlen(buffer))
+ {
+ printf("Synchronous Preset:\n\n");
+ printf("%s\n", buffer);
+ printf("\n");
+ }
+
+ /* Asynchronous Reset */
+
+ generate_product_terms(pal, jed, 0, buffer);
+
+ if (strlen(buffer))
+ {
+ printf("Asynchronous Reset:\n\n");
+ printf("%s\n", buffer);
+ printf("\n");
+ }
+}
+
+/*-------------------------------------------------
+ print_atf22v10_power_down_mode_product_terms - prints the product
+ terms for a ATF22V10 configured in power-down mode
+-------------------------------------------------*/
+
+static void print_atf22v10_power_down_mode_product_terms(const pal_data* pal, const jed_data* jed)
+{
+ char buffer[200];
+
+ print_product_terms(pal, jed);
+
+ /* Synchronous Preset */
+
+ generate_product_terms(pal, jed, 5764, buffer);
+
+ if (strlen(buffer))
+ {
+ printf("Synchronous Preset:\n\n");
+ printf("%s\n", buffer);
+ printf("\n");
+ }
+
+ /* Asynchronous Reset */
+
+ generate_product_terms(pal, jed, 0, buffer);
+
+ if (strlen(buffer))
+ {
+ printf("Asynchronous Reset:\n\n");
+ printf("%s\n", buffer);
+ printf("\n");
+ }
+
+ /* Pin 4 (DIP/SOIC package) and Pin 5 (PLCC package) controls power down mode */
+
+ printf("Pin 4 (DIP/SOIC package) and Pin 5 (PLCC package) Controls Power Down Mode\n\n");
+ printf("\n");
+}
+
+
+
+/*-------------------------------------------------
print_82s153_pls153_product_terms - prints the product
terms for a 82S153/PLS153
-------------------------------------------------*/
@@ -4978,272 +5093,6 @@ static void config_pal16r8_pins(const pal_data* pal, const jed_data* jed)
/*-------------------------------------------------
- config_palce16v8_pins - configures the pins for
- a PALCE16V8
--------------------------------------------------*/
-
-static void config_palce16v8_pins(const pal_data* pal, const jed_data* jed)
-{
- typedef struct _output_logic_macrocell output_logic_macrocell;
- struct _output_logic_macrocell
- {
- uint16_t pin;
- uint16_t sl0_fuse; /* registers allowed (0 - registered, 1 - not registered) */
- uint16_t sl1_fuse; /* output polarity (0 - low, 1 - high) */
- uint16_t fuserowoutputenable;
- };
-
- static output_logic_macrocell macrocells[] = {
- {12, 2127, 2055, 1792},
- {13, 2126, 2054, 1536},
- {14, 2125, 2053, 1280},
- {15, 2124, 2052, 1024},
- {16, 2123, 2051, 768},
- {17, 2122, 2050, 512},
- {18, 2121, 2049, 256},
- {19, 2120, 2048, 0}};
- static pin_fuse_columns pinfusecolumns_i_or_o[] = {
- {1, 3, 2},
- {2, 1, 0},
- {3, 5, 4},
- {4, 9, 8},
- {5, 13, 12},
- {6, 17, 16},
- {7, 21, 20},
- {8, 25, 24},
- {9, 29, 28},
- {11, 31, 30},
- {12, 27, 26},
- {13, 23, 22},
- {14, 19, 18},
- {17, 15, 14},
- {18, 11, 10},
- {19, 7, 6}};
- static pin_fuse_columns pinfusecolumns_io[] = {
- {1, 3, 2},
- {2, 1, 0},
- {3, 5, 4},
- {4, 9, 8},
- {5, 13, 12},
- {6, 17, 16},
- {7, 21, 20},
- {8, 25, 24},
- {9, 29, 28},
- {11, 31, 30},
- {13, 27, 26},
- {14, 23, 22},
- {15, 19, 18},
- {16, 15, 14},
- {17, 11, 10},
- {18, 7, 6}};
- static pin_fuse_columns pinfusecolumns_regs[] = {
- {2, 1, 0},
- {3, 5, 4},
- {4, 9, 8},
- {5, 13, 12},
- {6, 17, 16},
- {7, 21, 20},
- {8, 25, 24},
- {9, 29, 28},
- {12, 31, 30},
- {13, 27, 26},
- {14, 23, 22},
- {15, 19, 18},
- {16, 15, 14},
- {17, 11, 10},
- {18, 7, 6},
- {19, 3, 2}};
- static uint16_t input_pins_i_or_o[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11};
- static uint16_t input_pins_io[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11};
- static uint16_t input_pins_regs[] = {2, 3, 4, 5, 6, 7, 8, 9};
- static uint16_t sg0 = 2192;
- static uint16_t sg1 = 2193;
- uint16_t input_pins[18];
- pin_output_config output_pins[ARRAY_LENGTH(macrocells)];
- uint16_t index, input_pin_count, output_pin_count;
-
- input_pin_count = 0;
- output_pin_count = 0;
-
- if (!jed_get_fuse(jed, sg0))
- {
- /* Device uses registers */
-
- if (jed_get_fuse(jed, sg1))
- {
- memcpy(palce16v8pinfusecolumns, pinfusecolumns_regs, sizeof(pinfusecolumns_regs));
-
- memcpy(input_pins, input_pins_regs, sizeof(input_pins_regs));
-
- input_pin_count = ARRAY_LENGTH(input_pins_regs);
-
- for (index = 0; index < ARRAY_LENGTH(macrocells); ++index)
- {
- if (!jed_get_fuse(jed, macrocells[index].sl0_fuse))
- {
- /* Registered output */
-
- config_palce16v8_pin_as_8_product_terms(macrocells[index].pin);
-
- output_pins[output_pin_count].pin = macrocells[index].pin;
- output_pins[output_pin_count].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED;
-
- if (!jed_get_fuse(jed, macrocells[index].sl1_fuse))
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
- }
- else
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
- }
-
- ++output_pin_count;
-
- input_pins[input_pin_count] = macrocells[index].pin;
-
- ++input_pin_count;
- }
- else
- {
- /* Combinatorial I/O */
-
- if (does_output_enable_fuse_row_allow_output(pal, jed, macrocells[index].fuserowoutputenable))
- {
- config_palce16v8_pin_as_7_product_terms_and_oe_term(macrocells[index].pin);
-
- output_pins[output_pin_count].pin = macrocells[index].pin;
- output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT;
-
- if (!jed_get_fuse(jed, macrocells[index].sl1_fuse))
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
- }
- else
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
- }
-
- ++output_pin_count;
- }
-
- input_pins[input_pin_count] = macrocells[index].pin;
-
- ++input_pin_count;
- }
- }
- }
- else
- {
- fprintf(stderr, "Unknown configuration type!\n");
- }
- }
- else
- {
- /* Device uses no registers */
-
- if (jed_get_fuse(jed, sg1))
- {
- /* Combinatorial I/O (7 product terms and 1 output enable product term) */
-
- memcpy(palce16v8pinfusecolumns, pinfusecolumns_io, sizeof(pinfusecolumns_io));
-
- memcpy(input_pins, input_pins_io, sizeof(input_pins_io));
-
- input_pin_count = ARRAY_LENGTH(input_pins_io);
-
- for (index = 0; index < ARRAY_LENGTH(macrocells); ++index)
- {
- if (does_output_enable_fuse_row_allow_output(pal, jed, macrocells[index].fuserowoutputenable))
- {
- config_palce16v8_pin_as_7_product_terms_and_oe_term(macrocells[index].pin);
-
- output_pins[output_pin_count].pin = macrocells[index].pin;
- output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT;
-
- if (!jed_get_fuse(jed, macrocells[index].sl1_fuse))
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
- }
- else
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
- }
-
- ++output_pin_count;
- }
-
- /* Pins 12 and 19 cannot be used as an input only an output. */
-
- if (macrocells[index].pin != 12 && macrocells[index].pin != 19)
- {
- input_pins[input_pin_count] = macrocells[index].pin;
-
- ++input_pin_count;
- }
- }
- }
- else
- {
- /* Combinatorial Output or Input */
-
- memcpy(palce16v8pinfusecolumns, pinfusecolumns_i_or_o, sizeof(pinfusecolumns_i_or_o));
-
- memcpy(input_pins, input_pins_i_or_o, sizeof(input_pins_i_or_o));
-
- input_pin_count = ARRAY_LENGTH(input_pins_i_or_o);
-
- for (index = 0; index < ARRAY_LENGTH(macrocells); ++index)
- {
- if (!jed_get_fuse(jed, macrocells[index].sl0_fuse))
- {
- /* pin configured as an output only */
-
- config_palce16v8_pin_as_8_product_terms(macrocells[index].pin);
-
- output_pins[output_pin_count].pin = macrocells[index].pin;
- output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE;
-
- if (!jed_get_fuse(jed, macrocells[index].sl1_fuse))
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
- }
- else
- {
- output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
- }
-
- ++output_pin_count;
- }
- else
- {
- /* pin configured as an input only */
-
- input_pins[input_pin_count] = macrocells[index].pin;
-
- ++input_pin_count;
- }
- }
- }
- }
-
- set_input_pins(input_pins, input_pin_count);
- set_output_pins(output_pins, output_pin_count);
-
- /* 2056 - 2119 are the 64 bit signature fuses */
-
- /* 2128 - 2135 product term 8? */
- /* 2136 - 2143 product term 7? */
- /* 2144 - 2151 product term 6? */
- /* 2152 - 2159 product term 5? */
- /* 2160 - 2167 product term 4? */
- /* 2168 - 2175 product term 3? */
- /* 2176 - 2183 product term 2? */
- /* 2184 - 2191 product term 1? */
-}
-
-
-
-/*-------------------------------------------------
config_gal16v8_pins - configures the pins for
a GAL16V8
-------------------------------------------------*/
@@ -5276,7 +5125,7 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
{17, NO_OUTPUT_ENABLE_FUSE_ROW, 512, 736},
{18, NO_OUTPUT_ENABLE_FUSE_ROW, 256, 480},
{19, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 224}};
- static pin_fuse_rows pinfuserows_combinatorial[] = {
+ static pin_fuse_rows pinfuserows_combinatorialcomplex[] = {
{12, 1792, 1824, 2016},
{13, 1536, 1568, 1760},
{14, 1280, 1312, 1504},
@@ -5285,6 +5134,15 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
{17, 512, 544, 736},
{18, 256, 288, 480},
{19, 0, 32, 224}};
+ static pin_fuse_rows pinfuserows_combinatorialsimple[] = {
+ {12, NO_OUTPUT_ENABLE_FUSE_ROW, 1792, 2016},
+ {13, NO_OUTPUT_ENABLE_FUSE_ROW, 1536, 1760},
+ {14, NO_OUTPUT_ENABLE_FUSE_ROW, 1280, 1504},
+ {15, NO_OUTPUT_ENABLE_FUSE_ROW, 1024, 1248},
+ {16, NO_OUTPUT_ENABLE_FUSE_ROW, 768, 992},
+ {17, NO_OUTPUT_ENABLE_FUSE_ROW, 512, 736},
+ {18, NO_OUTPUT_ENABLE_FUSE_ROW, 256, 480},
+ {19, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 224}};
static pin_fuse_columns pinfusecolumns_registered[] = {
{2, 1, 0},
{3, 5, 4},
@@ -5338,9 +5196,9 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
{19, 7, 6}};
static uint16_t input_pins_registered[] = {2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19};
static uint16_t input_pins_combinatorialcomplex[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18};
- static uint16_t input_pins_combinatorialsimple[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19};
+ uint16_t input_pins_combinatorialsimple[18];
pin_output_config output_pins[ARRAY_LENGTH(macrocells)];
- uint16_t index, output_pin_count;
+ uint16_t index, input_pin_count, output_pin_count;
output_pin_count = 0;
@@ -5357,7 +5215,7 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
set_input_pins(input_pins_combinatorialcomplex, ARRAY_LENGTH(input_pins_combinatorialcomplex));
- memcpy(gal16v8pinfuserows, pinfuserows_combinatorial, sizeof(pinfuserows_combinatorial));
+ memcpy(gal16v8pinfuserows, pinfuserows_combinatorialcomplex, sizeof(pinfuserows_combinatorialcomplex));
memcpy(gal16v8pinfusecolumns, pinfusecolumns_combinatorialcomplex, sizeof(pinfusecolumns_combinatorialcomplex));
for (index = 0; index < ARRAY_LENGTH(macrocells); ++index)
@@ -5395,9 +5253,20 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
{
/* Simple Mode */
- set_input_pins(input_pins_combinatorialsimple, ARRAY_LENGTH(input_pins_combinatorialsimple));
+ input_pin_count = 0;
+
+ for (index = 1; index < 10; ++index)
+ {
+ input_pins_combinatorialsimple[input_pin_count] = index;
+
+ ++input_pin_count;
+ }
- memcpy(gal16v8pinfuserows, pinfuserows_registered, sizeof(pinfuserows_registered));
+ input_pins_combinatorialsimple[input_pin_count] = 11;
+
+ ++input_pin_count;
+
+ memcpy(gal16v8pinfuserows, pinfuserows_combinatorialsimple, sizeof(pinfuserows_combinatorialsimple));
memcpy(gal16v8pinfusecolumns, pinfusecolumns_combinatorialsimple, sizeof(pinfusecolumns_combinatorialsimple));
for (index = 0; index < ARRAY_LENGTH(macrocells); ++index)
@@ -5406,6 +5275,10 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
{
/* Pin is for input only */
+ input_pins_combinatorialsimple[input_pin_count] = macrocells[index].pin;
+
+ ++input_pin_count;
+
if (macrocells[index].pin == 15 || macrocells[index].pin == 16)
{
fprintf(stderr, "Pin %d cannot be configured as an input pin.\n",
@@ -5430,6 +5303,10 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
output_pins[output_pin_count].pin != 16)
{
output_pins[output_pin_count].flags |= OUTPUT_FEEDBACK_OUTPUT;
+
+ input_pins_combinatorialsimple[input_pin_count] = macrocells[index].pin;
+
+ ++input_pin_count;
}
else
{
@@ -5439,6 +5316,8 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
++output_pin_count;
}
}
+
+ set_input_pins(input_pins_combinatorialsimple, input_pin_count);
}
}
else
@@ -5455,9 +5334,9 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed)
{
/* combinatorial pin */
- gal16v8pinfuserows[index].fuserowoutputenable = pinfuserows_combinatorial[index].fuserowoutputenable;
- gal16v8pinfuserows[index].fuserowtermstart = pinfuserows_combinatorial[index].fuserowtermstart;
- gal16v8pinfuserows[index].fuserowtermend = pinfuserows_combinatorial[index].fuserowtermend;
+ gal16v8pinfuserows[index].fuserowoutputenable = pinfuserows_combinatorialcomplex[index].fuserowoutputenable;
+ gal16v8pinfuserows[index].fuserowtermstart = pinfuserows_combinatorialcomplex[index].fuserowtermstart;
+ gal16v8pinfuserows[index].fuserowtermend = pinfuserows_combinatorialcomplex[index].fuserowtermend;
if (is_gal16v8_product_term_enabled(pal, jed, pal->pinfuserows[index].fuserowoutputenable) &&
does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable))
@@ -6300,7 +6179,7 @@ static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed)
if (macrocells[index].pin != 18 && macrocells[index].pin != 19)
{
- output_pins[output_pin_count].flags |= OUTPUT_FEEDBACK_COMBINATORIAL;
+ output_pins[output_pin_count].flags |= OUTPUT_FEEDBACK_OUTPUT;
input_pins_combinatorialsimple[input_pin_count] = macrocells[index].pin;
@@ -6470,6 +6349,173 @@ static void config_palce22v10_pal22v10_pins(const pal_data* pal, const jed_data*
/*-------------------------------------------------
+ config_gal22v10_pins - configures the pins for
+ a GAL22V10
+-------------------------------------------------*/
+
+static void config_gal22v10_pins(const pal_data* pal, const jed_data* jed)
+{
+ typedef struct _output_logic_macrocell output_logic_macrocell;
+ struct _output_logic_macrocell
+ {
+ uint16_t pin;
+ uint16_t s0_fuse; /* 0 - active low, 1 - active high */
+ uint16_t s1_fuse; /* 0 - registered, 1 - combinatorial */
+ };
+
+ static output_logic_macrocell macrocells[] = {
+ {14, 5826, 5827},
+ {15, 5824, 5825},
+ {16, 5822, 5823},
+ {17, 5820, 5821},
+ {18, 5818, 5819},
+ {19, 5816, 5817},
+ {20, 5814, 5815},
+ {21, 5812, 5813},
+ {22, 5810, 5811},
+ {23, 5808, 5809}};
+ static uint16_t input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
+ pin_output_config output_pins[ARRAY_LENGTH(macrocells)];
+ uint16_t index, output_pin_count;
+
+ output_pin_count = 0;
+
+ for (index = 0; index < ARRAY_LENGTH(output_pins); ++index)
+ {
+ if (jed_get_fuse(jed, macrocells[index].s1_fuse))
+ {
+ /* Combinatorial output or dedicated input */
+
+ if (does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable))
+ {
+ output_pins[output_pin_count].pin = macrocells[index].pin;
+ output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT;
+
+ if (!jed_get_fuse(jed, macrocells[index].s0_fuse))
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
+ }
+
+ ++output_pin_count;
+ }
+ }
+ else
+ {
+ /* Registered output */
+
+ output_pins[output_pin_count].pin = macrocells[index].pin;
+ output_pins[output_pin_count].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED;
+
+ if (!jed_get_fuse(jed, macrocells[index].s0_fuse))
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
+ }
+
+ ++output_pin_count;
+ }
+ }
+
+ set_input_pins(input_pins, ARRAY_LENGTH(input_pins));
+ set_output_pins(output_pins, output_pin_count);
+}
+
+
+
+/*-------------------------------------------------
+ config_atf22v10_power_down_mode_pins - configures the pins for
+ a ATF22V10 configured in power down mode.
+-------------------------------------------------*/
+
+static void config_atf22v10_power_down_mode_pins(const pal_data* pal, const jed_data* jed)
+{
+ typedef struct _output_logic_macrocell output_logic_macrocell;
+ struct _output_logic_macrocell
+ {
+ uint16_t pin;
+ uint16_t s0_fuse; /* 0 - active low, 1 - active high */
+ uint16_t s1_fuse; /* 0 - registered, 1 - combinatorial */
+ };
+
+ static output_logic_macrocell macrocells[] = {
+ {14, 5826, 5827},
+ {15, 5824, 5825},
+ {16, 5822, 5823},
+ {17, 5820, 5821},
+ {18, 5818, 5819},
+ {19, 5816, 5817},
+ {20, 5814, 5815},
+ {21, 5812, 5813},
+ {22, 5810, 5811},
+ {23, 5808, 5809}};
+ static uint16_t input_pins[] = {1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
+ pin_output_config output_pins[ARRAY_LENGTH(macrocells)];
+ uint16_t index, output_pin_count;
+
+ output_pin_count = 0;
+
+ if (jed_get_fuse(jed, 5893))
+ {
+ fprintf(stderr, "Warning: Power down fuse not blown!\n");
+ }
+
+ for (index = 0; index < ARRAY_LENGTH(output_pins); ++index)
+ {
+ if (jed_get_fuse(jed, macrocells[index].s1_fuse))
+ {
+ /* Combinatorial output or dedicated input */
+
+ if (does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable))
+ {
+ output_pins[output_pin_count].pin = macrocells[index].pin;
+ output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT;
+
+ if (!jed_get_fuse(jed, macrocells[index].s0_fuse))
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
+ }
+
+ ++output_pin_count;
+ }
+ }
+ else
+ {
+ /* Registered output */
+
+ output_pins[output_pin_count].pin = macrocells[index].pin;
+ output_pins[output_pin_count].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED;
+
+ if (!jed_get_fuse(jed, macrocells[index].s0_fuse))
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
+ }
+
+ ++output_pin_count;
+ }
+ }
+
+ set_input_pins(input_pins, ARRAY_LENGTH(input_pins));
+ set_output_pins(output_pins, output_pin_count);
+}
+
+
+
+/*-------------------------------------------------
config_82s153_pls153_pins - configures the pins for
a 82S153/PLS153
-------------------------------------------------*/
@@ -8037,6 +8083,7 @@ static int command_view(int argc, char *argv[])
int result = 0;
const char *srcfile, *palname;
int is_jed;
+ pal_data_vector pal_data_vector;
const pal_data* pal;
jed_data jed;
int err;
@@ -8054,8 +8101,9 @@ static int command_view(int argc, char *argv[])
is_jed = is_jed_file(srcfile);
/* find the pal entry */
- pal = find_pal_data(palname);
- if (!pal)
+ find_pal_data(palname, pal_data_vector);
+
+ if (pal_data_vector.size() == 0)
{
fprintf(stderr, "Unknown pal name.\n");
return 1;
@@ -8091,7 +8139,17 @@ static int command_view(int argc, char *argv[])
}
}
- if (jed.numfuses != pal->numfuses)
+ pal = nullptr;
+
+ for (pal_data_vector::iterator it = pal_data_vector.begin(); pal == nullptr && it != pal_data_vector.end(); ++it)
+ {
+ if (jed.numfuses == (*it)->numfuses)
+ {
+ pal = *it;
+ }
+ }
+
+ if (pal == nullptr)
{
fprintf(stderr, "Fuse count does not match this pal type.");
result = 1;
@@ -8126,6 +8184,9 @@ end:
static int command_viewlist(int argc, char *argv[])
{
+ typedef std::set<std::string> string_set;
+
+ string_set nameset;
int index;
if (argc > 0)
@@ -8135,7 +8196,12 @@ static int command_viewlist(int argc, char *argv[])
for (index = 0; index < ARRAY_LENGTH(paldata); ++index)
{
- printf("%s\n", paldata[index].name);
+ nameset.insert(paldata[index].name);
+ }
+
+ for (string_set::iterator it = nameset.begin(); it != nameset.end(); ++it)
+ {
+ printf("%s\n", (*it).c_str());
}
return 0;