From 3816ecd0a1204ab515fa7d9a381415c8ac8f56f0 Mon Sep 17 00:00:00 2001 From: Zane Kaminski Date: Fri, 19 Mar 2021 02:56:20 -0400 Subject: [PATCH] ugh --- Documentation/Initialization Sequence | 272 +++- Documentation/UFM Load | 139 +++ cpld/GR8RAM.qpf | 30 + cpld/GR8RAM.qsf | 59 + cpld/GR8RAM.v | 807 ++++++++---- cpld/UFM.qip | 3 + cpld/UFM.v | 268 ++++ cpld/db/GR8RAM.(0).cnf.cdb | Bin 0 -> 40630 bytes cpld/db/GR8RAM.(0).cnf.hdb | Bin 0 -> 5478 bytes cpld/db/GR8RAM.(1).cnf.cdb | Bin 0 -> 1253 bytes cpld/db/GR8RAM.(1).cnf.hdb | Bin 0 -> 936 bytes cpld/db/GR8RAM.(2).cnf.cdb | Bin 0 -> 1239 bytes cpld/db/GR8RAM.(2).cnf.hdb | Bin 0 -> 1016 bytes cpld/db/GR8RAM.asm.qmsg | 6 + cpld/db/GR8RAM.asm.rdb | Bin 0 -> 1367 bytes cpld/db/GR8RAM.cbx.xml | 5 + cpld/db/GR8RAM.cmp.cdb | Bin 0 -> 28919 bytes cpld/db/GR8RAM.cmp.hdb | Bin 0 -> 18890 bytes cpld/db/GR8RAM.cmp.idb | Bin 0 -> 1582 bytes cpld/db/GR8RAM.cmp.kpt | Bin 0 -> 221 bytes cpld/db/GR8RAM.cmp.logdb | 1 + cpld/db/GR8RAM.cmp.rdb | Bin 0 -> 13311 bytes cpld/db/GR8RAM.db_info | 3 + cpld/db/GR8RAM.eco.cdb | Bin 0 -> 178 bytes cpld/db/GR8RAM.fit.qmsg | 58 + cpld/db/GR8RAM.hier_info | 233 ++++ cpld/db/GR8RAM.hif | Bin 0 -> 552 bytes cpld/db/GR8RAM.ipinfo | Bin 0 -> 316 bytes cpld/db/GR8RAM.lpc.html | 50 + cpld/db/GR8RAM.lpc.rdb | Bin 0 -> 509 bytes cpld/db/GR8RAM.lpc.txt | 8 + cpld/db/GR8RAM.map.cdb | Bin 0 -> 27685 bytes cpld/db/GR8RAM.map.hdb | Bin 0 -> 18889 bytes cpld/db/GR8RAM.map.logdb | 1 + cpld/db/GR8RAM.map.qmsg | 35 + cpld/db/GR8RAM.map.rdb | Bin 0 -> 1241 bytes cpld/db/GR8RAM.pplq.rdb | Bin 0 -> 245 bytes cpld/db/GR8RAM.pre_map.hdb | Bin 0 -> 13863 bytes cpld/db/GR8RAM.pti_db_list.ddb | Bin 0 -> 191 bytes cpld/db/GR8RAM.quiproj.3716.rdr.flock | 0 cpld/db/GR8RAM.root_partition.map.reg_db.cdb | Bin 0 -> 493 bytes cpld/db/GR8RAM.routing.rdb | Bin 0 -> 1439 bytes cpld/db/GR8RAM.rpp.qmsg | 4 + cpld/db/GR8RAM.rtlv.hdb | Bin 0 -> 13746 bytes cpld/db/GR8RAM.rtlv_sg.cdb | Bin 0 -> 34473 bytes cpld/db/GR8RAM.rtlv_sg_swap.cdb | Bin 0 -> 817 bytes cpld/db/GR8RAM.sgate.rvd | Bin 0 -> 32733 bytes cpld/db/GR8RAM.sgate_sm.rvd | Bin 0 -> 232 bytes cpld/db/GR8RAM.sgdiff.cdb | Bin 0 -> 28776 bytes cpld/db/GR8RAM.sgdiff.hdb | Bin 0 -> 15018 bytes cpld/db/GR8RAM.sld_design_entry.sci | Bin 0 -> 216 bytes cpld/db/GR8RAM.sld_design_entry_dsc.sci | Bin 0 -> 216 bytes cpld/db/GR8RAM.smart_action.txt | 1 + cpld/db/GR8RAM.sta.qmsg | 23 + cpld/db/GR8RAM.sta.rdb | Bin 0 -> 11133 bytes cpld/db/GR8RAM.syn_hier_info | 0 cpld/db/GR8RAM.tis_db_list.ddb | Bin 0 -> 191 bytes cpld/db/GR8RAM.vpr.ammdb | Bin 0 -> 914 bytes cpld/db/logic_util_heursitic.dat | 0 cpld/db/prev_cmp_GR8RAM.qmsg | 33 + cpld/greybox_tmp/cbx_args.txt | 25 + cpld/incremental_db/README | 11 + .../compiled_partitions/GR8RAM.db_info | 3 + .../GR8RAM.root_partition.map.kpt | Bin 0 -> 3339 bytes cpld/output_files/GR8RAM.asm.rpt | 114 ++ cpld/output_files/GR8RAM.done | 1 + cpld/output_files/GR8RAM.fit.rpt | 1112 +++++++++++++++++ cpld/output_files/GR8RAM.fit.smsg | 6 + cpld/output_files/GR8RAM.fit.summary | 11 + cpld/output_files/GR8RAM.flow.rpt | 114 ++ cpld/output_files/GR8RAM.jdi | 8 + cpld/output_files/GR8RAM.map.rpt | 353 ++++++ cpld/output_files/GR8RAM.map.smsg | 4 + cpld/output_files/GR8RAM.map.summary | 9 + cpld/output_files/GR8RAM.pof | Bin 0 -> 7879 bytes cpld/output_files/GR8RAM.sta.rpt | 871 +++++++++++++ cpld/output_files/GR8RAM.sta.summary | 41 + 77 files changed, 4389 insertions(+), 333 deletions(-) create mode 100644 Documentation/UFM Load create mode 100755 cpld/GR8RAM.qpf create mode 100755 cpld/GR8RAM.qsf create mode 100755 cpld/UFM.qip create mode 100755 cpld/UFM.v create mode 100755 cpld/db/GR8RAM.(0).cnf.cdb create mode 100755 cpld/db/GR8RAM.(0).cnf.hdb create mode 100755 cpld/db/GR8RAM.(1).cnf.cdb create mode 100755 cpld/db/GR8RAM.(1).cnf.hdb create mode 100755 cpld/db/GR8RAM.(2).cnf.cdb create mode 100755 cpld/db/GR8RAM.(2).cnf.hdb create mode 100755 cpld/db/GR8RAM.asm.qmsg create mode 100755 cpld/db/GR8RAM.asm.rdb create mode 100755 cpld/db/GR8RAM.cbx.xml create mode 100755 cpld/db/GR8RAM.cmp.cdb create mode 100755 cpld/db/GR8RAM.cmp.hdb create mode 100755 cpld/db/GR8RAM.cmp.idb create mode 100755 cpld/db/GR8RAM.cmp.kpt create mode 100755 cpld/db/GR8RAM.cmp.logdb create mode 100755 cpld/db/GR8RAM.cmp.rdb create mode 100755 cpld/db/GR8RAM.db_info create mode 100755 cpld/db/GR8RAM.eco.cdb create mode 100755 cpld/db/GR8RAM.fit.qmsg create mode 100755 cpld/db/GR8RAM.hier_info create mode 100755 cpld/db/GR8RAM.hif create mode 100755 cpld/db/GR8RAM.ipinfo create mode 100755 cpld/db/GR8RAM.lpc.html create mode 100755 cpld/db/GR8RAM.lpc.rdb create mode 100755 cpld/db/GR8RAM.lpc.txt create mode 100755 cpld/db/GR8RAM.map.cdb create mode 100755 cpld/db/GR8RAM.map.hdb create mode 100755 cpld/db/GR8RAM.map.logdb create mode 100755 cpld/db/GR8RAM.map.qmsg create mode 100755 cpld/db/GR8RAM.map.rdb create mode 100755 cpld/db/GR8RAM.pplq.rdb create mode 100755 cpld/db/GR8RAM.pre_map.hdb create mode 100755 cpld/db/GR8RAM.pti_db_list.ddb create mode 100755 cpld/db/GR8RAM.quiproj.3716.rdr.flock create mode 100755 cpld/db/GR8RAM.root_partition.map.reg_db.cdb create mode 100755 cpld/db/GR8RAM.routing.rdb create mode 100755 cpld/db/GR8RAM.rpp.qmsg create mode 100755 cpld/db/GR8RAM.rtlv.hdb create mode 100755 cpld/db/GR8RAM.rtlv_sg.cdb create mode 100755 cpld/db/GR8RAM.rtlv_sg_swap.cdb create mode 100755 cpld/db/GR8RAM.sgate.rvd create mode 100755 cpld/db/GR8RAM.sgate_sm.rvd create mode 100755 cpld/db/GR8RAM.sgdiff.cdb create mode 100755 cpld/db/GR8RAM.sgdiff.hdb create mode 100755 cpld/db/GR8RAM.sld_design_entry.sci create mode 100755 cpld/db/GR8RAM.sld_design_entry_dsc.sci create mode 100755 cpld/db/GR8RAM.smart_action.txt create mode 100755 cpld/db/GR8RAM.sta.qmsg create mode 100755 cpld/db/GR8RAM.sta.rdb create mode 100755 cpld/db/GR8RAM.syn_hier_info create mode 100755 cpld/db/GR8RAM.tis_db_list.ddb create mode 100755 cpld/db/GR8RAM.vpr.ammdb create mode 100755 cpld/db/logic_util_heursitic.dat create mode 100755 cpld/db/prev_cmp_GR8RAM.qmsg create mode 100755 cpld/greybox_tmp/cbx_args.txt create mode 100755 cpld/incremental_db/README create mode 100755 cpld/incremental_db/compiled_partitions/GR8RAM.db_info create mode 100755 cpld/incremental_db/compiled_partitions/GR8RAM.root_partition.map.kpt create mode 100755 cpld/output_files/GR8RAM.asm.rpt create mode 100755 cpld/output_files/GR8RAM.done create mode 100755 cpld/output_files/GR8RAM.fit.rpt create mode 100755 cpld/output_files/GR8RAM.fit.smsg create mode 100755 cpld/output_files/GR8RAM.fit.summary create mode 100755 cpld/output_files/GR8RAM.flow.rpt create mode 100755 cpld/output_files/GR8RAM.jdi create mode 100755 cpld/output_files/GR8RAM.map.rpt create mode 100755 cpld/output_files/GR8RAM.map.smsg create mode 100755 cpld/output_files/GR8RAM.map.summary create mode 100755 cpld/output_files/GR8RAM.pof create mode 100755 cpld/output_files/GR8RAM.sta.rpt create mode 100755 cpld/output_files/GR8RAM.sta.summary diff --git a/Documentation/Initialization Sequence b/Documentation/Initialization Sequence index a16d878..5f0d459 100644 --- a/Documentation/Initialization Sequence +++ b/Documentation/Initialization Sequence @@ -1,21 +1,21 @@ Init sequence -Init State SDRAM Flash Other +Init State SDRAM Flash IS Other -------------------------------------------------------------------------------- -$000000-$0FFFBF Wait for Vcc Wait for Vcc +$000000-$0FFFBF Wait for Vcc Wait for Vcc 0 $000000 NOP CKE /CS hi, CLK lo ... -$0FFF90 NOP CKE /CS hi, CLK lo InitActv <= ~BODf +$0FFF90 NOP CKE /CS hi, CLK lo InitActv <= ~BODf .... $0FFFA0 NOP CKE /CS lo, CLK lo ... $0FFFAF NOP CKE /CS lo, CLK lo -$0FFFB0-$0FFFBF Init: Precharge Send read cmd ($03) -$0FFFB0 PC all CLK lo, MOSI 0 (b7) +$0FFFB0-$0FFFBF Init: Precharge Send read cmd ($03) 1 +$0FFFB0 NOP CKE CLK lo, MOSI 0 (b7) $0FFFB1 NOP CKE CLK hi $0FFFB2 NOP CKE CLK lo, MOSI 0 (b6) -$0FFFB3 NOP CKE CLK hi +$0FFFB3 PC all CLK hi $0FFFB4 NOP CKE CLK lo, MOSI 0 (b5) $0FFFB5 NOP CKE CLK hi $0FFFB6 NOP CKE CLK lo, MOSI 0 (b4) @@ -23,118 +23,278 @@ $0FFFB7 NOP CKE CLK hi $0FFFB8 NOP CKE CLK lo, MOSI 0 (b3) $0FFFB9 NOP CKE CLK hi $0FFFBA NOP CKE CLK lo, MOSI 0 (b2) -$0FFFBB NOP CKE CLK hi +$0FFFBB Load mode CLK hi $0FFFBC NOP CKE CLK lo, MOSI 1 (b1) $0FFFBD NOP CKE CLK hi $0FFFBE NOP CKE CLK lo, MOSI 1 (b0) $0FFFBF NOP CKE CLK hi -$0FFFC0-$0FFFEF Init: mode & ref Send address ($000000) -$0FFFC0 Load mode CLK lo, MOSI 0 (b23) +$0FFFC0-$0FFFEF Init: mode & ref Send address ($000000) 2 +$0FFFC0 NOP CKE CLK lo, MOSI 0 (b23) $0FFFC1 NOP CKE CLK hi $0FFFC2 NOP CKE CLK lo, MOSI 0 (b22) -$0FFFC3 NOP CKE CLK hi -$0FFFC4 AREF CLK lo, MOSI Firmware[1] (b21) +$0FFFC3 AREF CLK hi +$0FFFC4 NOP CKE CLK lo, MOSI Firmware[1] (b21) $0FFFC5 NOP CKE CLK hi $0FFFC6 NOP CKE CLK lo, MOSI Firmware[0] (b20) $0FFFC7 NOP CKE CLK hi $0FFFC8 NOP CKE CLK lo, MOSI 0 (b19) $0FFFC9 NOP CKE CLK hi $0FFFCA NOP CKE CLK lo, MOSI 0 (b18) -$0FFFCB NOP CKE CLK hi -$0FFFCC AREF CLK lo, MOSI 0 (b17) +$0FFFCB AREF CLK hi +$0FFFCC NOP CKE CLK lo, MOSI 0 (b17) $0FFFCD NOP CKE CLK hi $0FFFCE NOP CKE CLK lo, MOSI 0 (b16) $0FFFCF NOP CKE CLK hi $0FFFD0 NOP CKE CLK lo, MOSI 0 (b15) $0FFFD1 NOP CKE CLK hi $0FFFD2 NOP CKE CLK lo, MOSI 0 (b14) -$0FFFD3 NOP CKE CLK hi -$0FFFD4 AREF CLK lo, MOSI 0 (b13) +$0FFFD3 AREF CLK hi +$0FFFD4 NOP CKE CLK lo, MOSI 0 (b13) $0FFFD5 NOP CKE CLK hi $0FFFD6 NOP CKE CLK lo, MOSI 0 (b12) $0FFFD7 NOP CKE CLK hi $0FFFD8 NOP CKE CLK lo, MOSI 0 (b11) $0FFFD9 NOP CKE CLK hi $0FFFDA NOP CKE CLK lo, MOSI 0 (b10) -$0FFFDB NOP CKE CLK hi -$0FFFDC AREF CLK lo, MOSI 0 (b9) +$0FFFDB AREF CLK hi +$0FFFDC NOP CKE CLK lo, MOSI 0 (b9) $0FFFDD NOP CKE CLK hi $0FFFDE NOP CKE CLK lo, MOSI 0 (b8) $0FFFDF NOP CKE CLK hi $0FFFE0 NOP CKE CLK lo, MOSI 0 (b7) $0FFFE1 NOP CKE CLK hi $0FFFE2 NOP CKE CLK lo, MOSI 0 (b6) -$0FFFE3 NOP CKE CLK hi -$0FFFE4 AREF CLK lo, MOSI 0 (b5) +$0FFFE3 AREF CLK hi +$0FFFE4 NOP CKE CLK lo, MOSI 0 (b5) $0FFFE5 NOP CKE CLK hi $0FFFE6 NOP CKE CLK lo, MOSI 0 (b4) $0FFFE7 NOP CKE CLK hi $0FFFE8 NOP CKE CLK lo, MOSI 0 (b3) $0FFFE9 NOP CKE CLK hi $0FFFEA NOP CKE CLK lo, MOSI 0 (b2) -$0FFFEB NOP CKE CLK hi -$0FFFEC AREF CLK lo, MOSI 0 (b1) +$0FFFEB AREF CLK hi +$0FFFEC NOP CKE CLK lo, MOSI 0 (b1) $0FFFED NOP CKE CLK hi $0FFFEE NOP CKE CLK lo, MOSI 0 (b0) $0FFFEF NOP CKE CLK hi -$0FFFF0-$0FFFFF Init: mode & ref 8 dummy clocks +$0FFFF0-$0FFFFF Init: mode & ref 8 dummy clocks 2 $0FFFF0 NOP CKE CLK lo, MOSIOE 0 $0FFFF1 NOP CKE CLK hi $0FFFF2 NOP CKE CLK lo -$0FFFF3 NOP CKE CLK hi -$0FFFF4 AREF CLK lo +$0FFFF3 AREF CLK hi +$0FFFF4 NOP CKE CLK lo $0FFFF5 NOP CKE CLK hi $0FFFF6 NOP CKE CLK lo $0FFFF7 NOP CKE CLK hi $0FFFF8 NOP CKE CLK lo $0FFFF9 NOP CKE CLK hi $0FFFFA NOP CKE CLK lo -$0FFFFB NOP CKE CLK hi -$0FFFFC AREF CLK lo +$0FFFFB AREF CLK hi +$0FFFFC NOP CKE CLK lo $0FFFFD NOP CKE CLK hi $0FFFFE NOP CKE CLK lo $0FFFFF NOP CKE CLK hi - Write ROM data Shift in read data +$100000-$503FFF Write ROM data Shift in read data 3 $100000 NOP CKE CLK lo $100001 NOP CKE CLK hi, get b7:6 of $000000 $100002 NOP CKE CLK lo -$100003 NOP CKE CLK hi, get b5:4 of $000000 -$100004 AREF CLK lo -$100005 NOP CKE CLK hi, get b3:2 of $000000 -$100006 ACT CLK lo -$100007 NOP CKE CLK hi, get b1:0 of $000000 -$100008 WR AP CLK lo +$100003 AREF CLK hi, get b5:4 of $000000 +$100004 NOP CKE CLK lo +$100005 ACT CLK hi, get b3:2 of $000000 +$100006 NOP CKE CLK lo +$100007 WR AP CLK hi, get b1:0 of $000000 +$100008 NOP CKE CLK lo $100009 NOP CKE CLK hi, get b7:6 of $000001 $10000A NOP CKE CLK lo -$10000B NOP CKE CLK hi, get b5:4 of $000001 -$10000C AREF CLK lo -$10000D NOP CKE CLK hi, get b3:2 of $000001 -$10000E ACT CLK lo -$10000F NOP CKE CLK hi, get b1:0 of $000001 +$10000B AREF CLK hi, get b5:4 of $000001 +$10000C NOP CKE CLK lo +$10000D ACT CLK hi, get b3:2 of $000001 +$10000E NOP CKE CLK lo +$10000F WR AP CLK hi, get b1:0 of $000001 ... -$507FF0 WR AP CLK lo +$503FF0 NOP CKE CLK lo $503FF1 NOP CKE CLK hi, get b7:6 of $0807FE $503FF2 NOP CKE CLK lo -$503FF3 NOP CKE CLK hi, get b5:4 of $0807FE -$503FF4 AREF CLK lo -$503FF5 NOP CKE CLK hi, get b3:2 of $0807FE -$503FF6 ACT CLK lo -$503FF7 NOP CKE CLK hi, get b1:0 of $0807FE -$503FF8 WR AP CLK lo +$503FF3 AREF CLK hi, get b5:4 of $0807FE +$503FF4 NOP CKE CLK lo +$503FF5 ACT CLK hi, get b3:2 of $0807FE +$503FF6 NOP CKE CLK lo +$503FF7 WR AP CLK hi, get b1:0 of $0807FE +$503FF8 NOP CKE CLK lo $503FF9 NOP CKE CLK hi, get b7:6 of $0807FF $503FFA NOP CKE CLK lo -$503FFB NOP CKE CLK hi, get b5:4 of $0807FF -$503FFC AREF CLK lo -$503FFD NOP CKE CLK hi, get b3:2 of $0807FF -$503FFE ACT CLK lo -$503FFF NOP CKE CLK hi, get b1:0 of $0807FF -$504000 WR AP CLK lo, /CS hi -$504001 NOP CKE CLK lo -... -$50400F NOP CKE CLK lo -$504010 NOP CKE SDRAMActv <= InitActv && ~InitInterrupted +$503FFB AREF CLK hi, get b5:4 of $0807FF +$503FFC NOP CKE CLK lo +$503FFD ACT CLK hi, get b3:2 of $0807FF +$503FFE NOP CKE CLK lo +$503FFF WR AP CLK hi, get b1:0 of $0807FF + +$504000 NOP CKE CLK lo, /CS hi 3 +$504001 NOP CKE CLK lo, /CS hi 3 +$504002 NOP CKE CLK lo, /CS hi 3 SDRAMActv <= InitActv && ~InitInterrupted ... -$5F5E0F flip 1hz, wrap +$5F5E0F flip 1hz, wrap + + + + + + + + + + + + + + + + + + + + + + +Init sequence + +Init State SDRAM Flash IS Other +-------------------------------------------------------------------------------- +$00000-$0FFBF Nothing Nothing 0 +$00000 NOP CKE /CS hi, CLK lo +... +$0FF90 NOP CKE /CS hi, CLK lo InitActv <= ~BODf +.... +$0FFA0 NOP CKE /CS lo, CLK lo +... +$0FFAF NOP CKE /CS lo, CLK lo + +$0FFB0-$0FFBF Init: Precharge Send read cmd ($03) 1 +$0FFB0 NOP CKE CLK lo, MOSI 0 (b7) +$0FFB1 NOP CKE CLK hi +$0FFB2 NOP CKE CLK lo, MOSI 0 (b6) +$0FFB3 PC all CLK hi +$0FFB4 NOP CKE CLK lo, MOSI 0 (b5) +$0FFB5 NOP CKE CLK hi +$0FFB6 NOP CKE CLK lo, MOSI 0 (b4) +$0FFB7 NOP CKE CLK hi +$0FFB8 NOP CKE CLK lo, MOSI 0 (b3) +$0FFB9 NOP CKE CLK hi +$0FFBA NOP CKE CLK lo, MOSI 0 (b2) +$0FFBB Load mode CLK hi +$0FFBC NOP CKE CLK lo, MOSI 1 (b1) +$0FFBD NOP CKE CLK hi +$0FFBE NOP CKE CLK lo, MOSI 1 (b0) +$0FFBF NOP CKE CLK hi + +$0FFC0-$0FFEF Init: mode & ref Send address ($000000) 2 +$0FFC0 NOP CKE CLK lo, MOSI 0 (b23) +$0FFC1 NOP CKE CLK hi +$0FFC2 NOP CKE CLK lo, MOSI 0 (b22) +$0FFC3 AREF CLK hi +$0FFC4 NOP CKE CLK lo, MOSI Firmware[1] (b21) +$0FFC5 NOP CKE CLK hi +$0FFC6 NOP CKE CLK lo, MOSI Firmware[0] (b20) +$0FFC7 NOP CKE CLK hi +$0FFC8 NOP CKE CLK lo, MOSI 0 (b19) +$0FFC9 NOP CKE CLK hi +$0FFCA NOP CKE CLK lo, MOSI 0 (b18) +$0FFCB AREF CLK hi +$0FFCC NOP CKE CLK lo, MOSI 0 (b17) +$0FFCD NOP CKE CLK hi +$0FFCE NOP CKE CLK lo, MOSI 0 (b16) +$0FFCF NOP CKE CLK hi +$0FFD0 NOP CKE CLK lo, MOSI 0 (b15) +$0FFD1 NOP CKE CLK hi +$0FFD2 NOP CKE CLK lo, MOSI 0 (b14) +$0FFD3 AREF CLK hi +$0FFD4 NOP CKE CLK lo, MOSI 0 (b13) +$0FFD5 NOP CKE CLK hi +$0FFD6 NOP CKE CLK lo, MOSI 0 (b12) +$0FFD7 NOP CKE CLK hi +$0FFD8 NOP CKE CLK lo, MOSI 0 (b11) +$0FFD9 NOP CKE CLK hi +$0FFDA NOP CKE CLK lo, MOSI 0 (b10) +$0FFDB AREF CLK hi +$0FFDC NOP CKE CLK lo, MOSI 0 (b9) +$0FFDD NOP CKE CLK hi +$0FFDE NOP CKE CLK lo, MOSI 0 (b8) +$0FFDF NOP CKE CLK hi +$0FFE0 NOP CKE CLK lo, MOSI 0 (b7) +$0FFE1 NOP CKE CLK hi +$0FFE2 NOP CKE CLK lo, MOSI 0 (b6) +$0FFE3 AREF CLK hi +$0FFE4 NOP CKE CLK lo, MOSI 0 (b5) +$0FFE5 NOP CKE CLK hi +$0FFE6 NOP CKE CLK lo, MOSI 0 (b4) +$0FFE7 NOP CKE CLK hi +$0FFE8 NOP CKE CLK lo, MOSI 0 (b3) +$0FFE9 NOP CKE CLK hi +$0FFEA NOP CKE CLK lo, MOSI 0 (b2) +$0FFEB AREF CLK hi +$0FFEC NOP CKE CLK lo, MOSI 0 (b1) +$0FFED NOP CKE CLK hi +$0FFEE NOP CKE CLK lo, MOSI 0 (b0) +$0FFEF NOP CKE CLK hi + +$0FFF0-$0FFFF Init: mode & ref 8 dummy clocks 2 +$0FFF0 NOP CKE CLK lo, MOSIOE 0 +$0FFF1 NOP CKE CLK hi +$0FFF2 NOP CKE CLK lo +$0FFF3 AREF CLK hi +$0FFF4 NOP CKE CLK lo +$0FFF5 NOP CKE CLK hi +$0FFF6 NOP CKE CLK lo +$0FFF7 NOP CKE CLK hi +$0FFF8 NOP CKE CLK lo +$0FFF9 NOP CKE CLK hi +$0FFFA NOP CKE CLK lo +$0FFFB AREF CLK hi +$0FFFC NOP CKE CLK lo +$0FFFD NOP CKE CLK hi +$0FFFE NOP CKE CLK lo +$0FFFF NOP CKE CLK hi + +$10000-$2FFFF Write ROM data Shift in read data 3 +$10000 NOP CKE CLK lo +$10001 NOP CKE CLK hi, get b7:6 of $000000 +$10002 NOP CKE CLK lo +$10003 AREF CLK hi, get b5:4 of $000000 +$10004 NOP CKE CLK lo +$10005 ACT CLK hi, get b3:2 of $000000 +$10006 NOP CKE CLK lo +$10007 WR AP CLK hi, get b1:0 of $000000 +$10008 NOP CKE CLK lo +$10009 NOP CKE CLK hi, get b7:6 of $000001 +$1000A NOP CKE CLK lo +$1000B AREF CLK hi, get b5:4 of $000001 +$1000C NOP CKE CLK lo +$1000D ACT CLK hi, get b3:2 of $000001 +$1000E NOP CKE CLK lo +$1000F WR AP CLK hi, get b1:0 of $000001 +... +$2FFF0 NOP CKE CLK lo +$2FFF1 NOP CKE CLK hi, get b7:6 of $003FFE +$2FFF2 NOP CKE CLK lo +$2FFF3 AREF CLK hi, get b5:4 of $003FFE +$2FFF4 NOP CKE CLK lo +$2FFF5 ACT CLK hi, get b3:2 of $003FFE +$2FFF6 NOP CKE CLK lo +$2FFF7 WR AP CLK hi, get b1:0 of $003FFE +$2FFF8 NOP CKE CLK lo +$2FFF9 NOP CKE CLK hi, get b7:6 of $003FFF +$2FFFA NOP CKE CLK lo +$2FFFB AREF CLK hi, get b5:4 of $003FFF +$2FFFC NOP CKE CLK lo +$2FFFD ACT CLK hi, get b3:2 of $003FFF +$2FFFE NOP CKE CLK lo +$2FFFF WR AP CLK hi, get b1:0 of $003FFF + +$30000 NOP CKE CLK lo, /CS hi 3 +$30001 NOP CKE CLK lo, /CS hi 3 +$30002 NOP CKE CLK lo, /CS hi 3 SDRAMActv <= InitActv && ~InitInterrupted + + diff --git a/Documentation/UFM Load b/Documentation/UFM Load new file mode 100644 index 0000000..15398c9 --- /dev/null +++ b/Documentation/UFM Load @@ -0,0 +1,139 @@ +UFM Load + +LState ARCLK ARShft DRCLK DRShft UFM +-------------------------------------------------------------------------------- +$0000 0 1 0 0 +$0FBF 0 1 0 0 +... +$0FC0 1 1 0 0 +$0FC1 1 1 0 0 +$0FC2 0 1 0 0 +$0FC3 0 1 0 0 +$0FC4 1 1 0 0 +$0FC5 1 1 0 0 +$0FC6 0 1 0 0 +$0FC7 0 1 0 0 +$0FC8 1 1 0 0 +$0FC9 1 1 0 0 +$0FCA 0 1 0 0 +$0FCB 0 1 0 0 +$0FCC 1 1 0 0 +$0FCD 1 1 0 0 +$0FCE 0 1 0 0 +$0FCF 0 1 0 0 +$0FD0 1 1 0 0 +$0FD1 1 1 0 0 +$0FD2 0 1 0 0 +$0FD3 0 1 0 0 +$0FD4 1 1 0 0 +$0FD5 1 1 0 0 +$0FD6 0 1 0 0 +$0FD7 0 1 0 0 +$0FD8 1 1 0 0 +$0FD9 1 1 0 0 +$0FDA 0 1 0 0 +$0FDB 0 1 0 0 +$0FDC 1 1 0 0 +$0FDD 1 1 0 0 +$0FDE 0 1 0 0 +$0FDF 0 1 0 0 +$0FE0 1 1 0 0 +$0FE1 1 1 0 0 +$0FE2 0 1 0 0 +$0FE3 0 1 0 0 +$0FE4 1 1 0 0 +$0FE5 1 1 0 0 +$0FE6 0 1 0 0 +$0FE7 0 1 0 0 +$0FE8 1 1 0 0 +$0FE9 1 1 0 0 +$0FEA 0 1 0 0 +$0FEB 0 1 0 0 +$0FEC 1 1 0 0 +$0FED 1 1 0 0 +$0FEE 0 1 0 0 +$0FEF 0 1 0 0 +$0FF0 1 1 0 0 +$0FF1 1 1 0 0 +$0FF2 0 1 0 0 +$0FF3 0 1 0 0 +$0FF4 1 1 0 0 +$0FF5 1 1 0 0 +$0FF6 0 1 0 0 +$0FF7 0 1 0 0 +$0FF8 1 1 0 0 +$0FF9 1 1 0 0 +$0FFA 0 1 0 0 +$0FFB 0 1 0 0 +$0FFC 1 1 0 0 +$0FFD 1 1 0 0 +$0FFE 0 1 0 0 +$0FFF 0 1 0 0 + +$1000 0 0 1 0 parallel load into DR +$1001 0 0 1 0 +$1002 0 0 0 1 +$1003 0 0 0 1 +$1004 0 0 1 1 SetLoaded <= Dout +$1005 0 0 1 1 +$1006 0 0 0 1 +$1007 0 0 0 1 +$1008 0 0 1 1 latch DR[14] (nSetFW[1]) +$1009 0 0 1 1 +$100A 0 0 0 1 +$100B 0 0 0 1 +$100C 0 0 1 1 latch DR[13] (nSetFW[0]) +$100D 0 0 1 1 +$100E 0 0 0 1 +$100F 0 0 0 1 +$1010 0 0 0 1 latch DR[12] (nSetLim8M) +$1011 0 0 0 1 +$1012 0 0 0 1 +$1013 0 0 0 1 +$1014 0 0 0 1 +$1015 0 0 0 1 +$1016 0 0 0 1 +$1017 0 0 0 1 +$1018 0 0 0 1 +$1019 0 0 0 1 +$101A 0 0 0 1 +$101B 0 0 0 1 +$101C 1 0 0 1 Increment address +$101D 1 0 0 1 +$101E 0 0 0 1 +$101F 0 0 0 1 +... +$2FE0 0 0 1 0 parallel load into DR +$2FE1 0 0 1 0 +$2FE2 0 0 0 1 +$2FE3 0 0 0 1 +$2FE4 0 0 1 1 SetLoaded <= Dout +$2FE5 0 0 1 1 +$2FE6 0 0 0 1 +$2FE7 0 0 0 1 +$2FE8 0 0 1 1 latch DR[14] (nSetFW[1]) +$2FE9 0 0 1 1 +$2FEA 0 0 0 1 +$2FEB 0 0 0 1 +$2FEC 0 0 1 1 latch DR[13] (nSetFW[0]) +$2FED 0 0 1 1 +$2FEE 0 0 0 1 +$2FEF 0 0 0 1 +$2FF0 0 0 0 1 latch DR[12] (nSetLim8M) +$2FF1 0 0 0 1 +$2FF2 0 0 0 1 +$2FF3 0 0 0 1 +$2FF4 0 0 0 1 +$2FF5 0 0 0 1 +$2FF6 0 0 0 1 +$2FF7 0 0 0 1 +$2FF8 0 0 0 1 +$2FF9 0 0 0 1 +$2FFA 0 0 0 1 +$2FFB 0 0 0 1 +$2FFC 1 0 0 1 Increment address +$2FFD 1 0 0 1 +$2FFE 0 0 0 1 +$2FFF 0 0 0 1 + +$3000 0 0 0 0 Everything 0, set SetLoaded diff --git a/cpld/GR8RAM.qpf b/cpld/GR8RAM.qpf new file mode 100755 index 0000000..01ef89f --- /dev/null +++ b/cpld/GR8RAM.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 32-bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 13:41:40 March 15, 2021 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.0" +DATE = "13:41:40 March 15, 2021" + +# Revisions + +PROJECT_REVISION = "GR8RAM" diff --git a/cpld/GR8RAM.qsf b/cpld/GR8RAM.qsf new file mode 100755 index 0000000..886cda8 --- /dev/null +++ b/cpld/GR8RAM.qsf @@ -0,0 +1,59 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 32-bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 13:41:40 March 15, 2021 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# GR8RAM_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "MAX II" +set_global_assignment -name DEVICE EPM240T100C5 +set_global_assignment -name TOP_LEVEL_ENTITY GR8RAM +set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_CREATION_TIME_DATE "13:41:40 MARCH 15, 2021" +set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 100 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 5 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR "-1" +set_global_assignment -name POWER_EXT_SUPPLY_VOLTAGE_TO_REGULATOR 3.3V +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" +set_global_assignment -name QIP_FILE UFM.qip +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO PATHS AND MINIMUM TPD PATHS" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING OFF +set_global_assignment -name FITTER_EFFORT "STANDARD FIT" +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE AREA +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS OFF \ No newline at end of file diff --git a/cpld/GR8RAM.v b/cpld/GR8RAM.v index b447e29..f2c95cb 100644 --- a/cpld/GR8RAM.v +++ b/cpld/GR8RAM.v @@ -1,9 +1,8 @@ -module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, +module GR8RAM(C25M, PHI0, nBOD, nRES, nIOSEL, nDEVSEL, nIOSTRB, - RA, nWE, nWEout, Adir, - RD, Ddir, - DMAin, DMAout, INTin, INTout, - nDMA, nRDY, nNMI, nIRQ, nINH, nRESout + RA, nWE, RAdir, + RD, RDdir, + DMAin, DMAout, INTin, INTout, nRESout, SBA, SA, nRCS, nRAS, nCAS, nSWE, DQML, DQMH, RCKE, SD, nFCS, FCK, MISO, MOSI); @@ -16,59 +15,49 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, /* Reset/brown-out detect synchronized inputs */ /* Outputs: nRESr, nPBODr, nBODf */ - input nRES, nPBOD, nBOD; + input nRES, nBOD; reg nRESr0, nRESr; - reg nPBODr0, nPBODr; reg nBODr0, nBODr, nBODf0, nBODf; always @(posedge C25M) begin // Double-synchronize nBOD, nPBOD, nRES - nPBODr0 <= nPBOD; nBODr0 <= nBOD; nRESr0 <= nRES; - nPBODr <= nPBODr0; nBODr <= nBODr0; nRESr <= nRESr0; + nBODr0 <= nBOD; nRESr0 <= nRES; + nBODr <= nBODr0; nRESr <= nRESr0; - // Filter nBODr to get nBODf. Output hi when hi for $5E0F-$10000 cycles - if (LS[15:0]==16'h5E0F) begin // When LS low-order is $5E0F + // Filter nBODr to get nBODf. Output hi when hi for $10000 cycles + if (LS[15:0]==16'hFFFF) begin // When LS low-order is $FFFF nBODf0 <= nBODr; // "Precharge" nBODf0 nBODf <= nBODf0; // "Evaluate" computed nBODf0 into nBODf - end else if (nBODr2) begin // Else AND nBODf0 with nBODr + end else if (nBODr) begin // Else AND nBODf0 with nBODr nBODf0 <= nBODf0 && nBODr; end end - /* Long state counter: counts from 0 to $5F5E0F (6,249,999) * - * CSec: 1/2 Hz clock */ + /* Long state counter: counts from 0 to $3FFFF */ /* Outputs: LS, CSec */ - reg [22:0] LS = 0; - reg [1:0] CSec = 0; - reg LSEN = 0; + reg [17:0] LS = 0; always @(posedge C25M) begin - // Allow LS to fully count once nBODf active - if (nBODf) LSEN <= 1; - - // LS rolls over at 24'h5F5E0F or at 16'h5E0F when LSEN is 0 - if ((LS[22:16]==7'h5F || ~LSEN) && LS[15:0]==16'h5E0F) LS <= 0; - else LS <= LS+1; - - // Flip 1/2 Hz clocks when LS==23'h5F5E0F - if (LS[22:0]==23'h5F5E0F) CSec <= CSec+1; + LS <= LS+1; end /* Init state */ output reg nRESout = 0; reg InitActv = 0; reg InitIntr = 0; + reg CmdActv = 0; reg SDRAMActv = 0; always @(posedge C25M) begin if (~nBODf) begin nRESout <= 0; - InitActv <= 0; InitIntr <= 1; - end else if (LS[22:0]==23'h0FFF10) begin - InitActv <= ~AppleActive; + CmdActv <= 0; + end else if (LS[17:0]==18'h0FF10) begin + InitActv <= ~CmdActv; InitIntr <= 0; - end else if (LS[22:0]==23'h504010) begin + end else if (LS[17:0]==18'h30010) begin nRESout <= InitActv && ~InitIntr; InitActv <= 0; - SDRAMActv <= InitActv && ~InitIntr; + CmdActv <= InitActv && ~InitIntr; + if (InitActv && ~InitIntr) SDRAMActv <= 1; end end @@ -76,41 +65,39 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, /* Outputs: DEVSELr */ input nIOSEL, nDEVSEL, nIOSTRB; reg DEVSELr0, DEVSELr; - always @(negedge C25M) begin DEVSELr0 <= ~nDEVSEL; end - always @(posedge C25M) begin DEVSELr <= DEVSELr0; end + reg IOSELr0, IOSELr; + reg IOSTRBr0, IOSTRBr; + always @(negedge C25M) begin + DEVSELr0 <= ~nDEVSEL; IOSELr0 <= ~nIOSEL; IOSTRBr0 <= ~nIOSTRB; + end + always @(posedge C25M) begin + DEVSELr <= DEVSELr0; IOSELr <= IOSELr0; IOSTRBr <= IOSTRBr0; + end /* DMA/IRQ daisy chain */ input DMAin, INTin; output DMAout = DMAin; output INTout = INTin; - /* Apple open-drain outputs */ - output nDMA = 1; - output nRDY = 1; - output nNMI = 1; - output nIRQ = ~(TIRQEN && TIRQMask); - output nINH = 1; - /* Apple address bus */ - /* Outputs: RAr1, nWEr1 */ + /* Outputs: RACr, RAcur, nWEcur, RAdir */ input [15:0] RA; input nWE; + reg RACr; + reg [11:0] RAcur; reg nWEcur; output RAdir = 1; - output nWEout = 1; - reg [15:0] RAr0; reg nWEr0; - reg [15:0] RAcur; reg nWEcur; - always @(negedge C25M) begin RAr0 <= RA; nWEr0 <= nWE; end always @(posedge C25M) begin if (S==0 && PHI0r1 && ~PHI0r2) begin - RAcur[15:0] <= RAr0[15:0]; - nWEcur <= nWEr0; + RACr <= RA[15:12]==4'hC; + RAcur[11:0] <= RA[11:0]; + nWEcur <= nWE; end end /* Apple select signals */ /* Outputs: ROMSpecRD, RAMSpecSEL, RAMSpecRD, RAMSpecWR, RAMSEL */ - wire ROMSpecRD = RAcur[15:12]==4'hC && RAcur[11:8]!=4'h0 && nWEcur; - wire RAMSpecSEL = RAcur[15:12]==4'hC && RAcur[11:8]==4'h0 && RAcur[7] && RAcur[7:4]!=4'h8 && RAcur[3:0]==4'h3; + wire ROMSpecRD = RACr && RAcur[11:8]!=4'h0 && nWEcur; + wire RAMSpecSEL = RACr && RAcur[11:8]==4'h0 && RAcur[3:0]==4'h3; wire RAMSpecRD = RAMSpecSEL && nWEcur; wire RAMSpecWR = RAMSpecSEL && ~nWEcur; reg RAMSEL = 0; @@ -119,45 +106,55 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, if (S==5) RAMSEL <= RAMSpecSEL && DEVSELr; else if (S==0) RAMSEL <= 0; end + + /* IOROMEN and REGEN control */ + reg IOROMEN = 0; + reg REGEN = 0; + always @(posedge C25M) begin + if (~nRESr) begin + IOROMEN <= 0; + REGEN <= 0; + end else if (S==7 && IOSTRBr && RAcur[10:0]==11'h7FF) begin + IOROMEN <= 0; + end else if (S==7 && IOSELr) begin + IOROMEN <= 1; + REGEN <= 1; + end + end /* Apple data bus */ inout [7:0] RD = RDdir ? 8'bZ : RDout[7:0]; reg [7:0] RDout; reg RDOE = 0; - output RDdir = ~((~nDEVSEL || ~nIOSEL || (~nIOSTRB && IOEN)) && - PHI0 && PHI0r2 && nWE && RDOE && ~BODf); + output RDdir = ~((~nDEVSEL || ~nIOSEL || (~nIOSTRB && IOROMEN)) && + PHI0 && PHI0r2 && nWE && RDOE && nBODf); /* Slinky address registers */ - reg [24:0] Addr; + reg [23:0] Addr = 0; wire AddrHSpecSEL = RAcur[3:0]==4'h2; wire AddrMSpecSEL = RAcur[3:0]==4'h1; wire AddrLSpecSEL = RAcur[3:0]==4'h0; always @(posedge C25M) begin if (~nRESr) begin - Addr[24] <= 1'b0; Addr[23:20] <= SetFW[1] ? 4'h0 : 4'hF; Addr[19:0] <= 20'h00000; end else if (S==7 && DEVSELr) begin - if (AddrHSpecSEL || AddrMSpecSEL || AddrLSpecSEL) begin - Addr[24] <= 1'b0; - end - - if (AddrHSpecSEL) begin + if (AddrHSpecSEL && ~nWEcur) begin Addr[23:16] <= { SetFW[1] ? RD[7:4] : 4'hF, RD[3:0] }; end else if ((RAMSEL && Addr[15:0]==16'hFFFF) || - (AddrMSpecSEL && Addr[15] && ~RD[7]) || - (AddrLSpecSEL && Addr[7] && ~RD[7] && Addr[15:8]==8'hFF)) begin + (AddrMSpecSEL && Addr[15] && ~RD[7] && ~nWEcur) || + (AddrLSpecSEL && Addr[7] && ~RD[7] && Addr[15:8]==8'hFF && ~nWEcur)) begin Addr[23:16] <= Addr[23:16]+1; end - if (AddrMSpecSEL) begin + if (AddrMSpecSEL && ~nWEcur) begin Addr[15:8] <= RD[7:0]; end else if ((RAMSEL && Addr[7:0]==8'hFF) || - (AddrLSpecSEL && Addr[7] && ~RD[7])) begin + (AddrLSpecSEL && Addr[7] && ~RD[7] && ~nWEcur)) begin Addr[15:8] <= Addr[15:8]+1; end - if (AddrLSpecSEL) begin + if (AddrLSpecSEL && ~nWEcur) begin Addr[7:0] <= RD[7:0]; end else if (RAMSEL) begin Addr[7:0] <= Addr[7:0]+1; @@ -165,72 +162,286 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, end end + /* ROM bank register */ + reg [1:0] Bank = 0; + wire BankSpecSEL = RAcur[3:0]==4'hF; + always @(posedge C25M) begin + if (~nRESr) begin + Bank <= 0; + end else if (S==7 && DEVSELr && BankSpecSEL && ~nWEcur) begin + Bank[1:0] <= RD[1:0]; + end + end + /* SPI flash */ - output reg nFCS = 1; + output nFCS = ~FCS; + reg FCS = 0; output reg FCK = 0; - output reg MOSI = MOSIOE ? MOSIout : 1'bZ; + reg FCKEN = 0; + output MOSI = MOSIOE ? MOSIout : 1'bZ; reg MOSIOE = 0; reg MOSIout; input MISO; /* SPI flash control */ + always @(posedge C25M) begin + FCK <= FCKEN && LS[0]; + end always @(posedge C25M) begin if (InitActv) begin - // Pulse clock from init states $0FFFC0 to $907FFF - if (LS[22:0]>=23'h0FFFC0 && LS[22:0]<=23'h907FFF) FCK <= LS[0]; - end else FCK <= 0; + // Pulse clock from init states $0FFC0 to $2FFFF + if (LS[17:0]==18'h0FFB0) FCKEN <= 1'b0; + else if (LS[17:0]==18'h0FFC0) FCKEN <= 1'b1; + else if (LS[17:0]==18'h30000) FCKEN <= 1'b0; - // Flash /CS enabled from init states $0FFFB0 to s$90800F - if (LS[22:0]>=23'h0FFFB0 && LS[22:0]<=23'h90800F) nFCS <= 0; - end else nFCS <= 1; + // Flash /CS enabled from init states $0FFB0 to $2FFFF + if (LS[17:0]==18'h0FFA0) FCS <= 1'b0; + else if (LS[17:0]==18'h0FFB0) FCS <= 1'b1; + else if (LS[17:0]==18'h30000) FCS <= 1'b0; // Send command $3B (read) (MSB first) - if (LS[22:0]==23'h0FFFB0 || LS[22:0]==23'h0FFFB1) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFB2 || LS[22:0]==23'h0FFFB3) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFB4 || LS[22:0]==23'h0FFFB5) MOSIout <= 1; - else if (LS[22:0]==23'h0FFFB6 || LS[22:0]==23'h0FFFB7) MOSIout <= 1; - else if (LS[22:0]==23'h0FFFB8 || LS[22:0]==23'h0FFFB9) MOSIout <= 1; - else if (LS[22:0]==23'h0FFFBA || LS[22:0]==23'h0FFFBB) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFBC || LS[22:0]==23'h0FFFBD) MOSIout <= 1; - else if (LS[22:0]==23'h0FFFBE || LS[22:0]==23'h0FFFBF) MOSIout <= 1; + /*if (LS[17:0]==18'h0FFB0 || LS[17:0]==18'h0FFB1) MOSIout <= 0; + else if (LS[17:0]==18'h0FFB2 || LS[17:0]==18'h0FFB3) MOSIout <= 0; + else*/ if (LS[17:0]==18'h0FFB4 || LS[17:0]==18'h0FFB5) MOSIout <= 1; + else if (LS[17:0]==18'h0FFB6 || LS[17:0]==18'h0FFB7) MOSIout <= 1; + else if (LS[17:0]==18'h0FFB8 || LS[17:0]==18'h0FFB9) MOSIout <= 1; + /*else if (LS[17:0]==18'h0FFBA || LS[17:0]==18'h0FFBB) MOSIout <= 0;*/ + else if (LS[17:0]==18'h0FFBC || LS[17:0]==18'h0FFBD) MOSIout <= 1; + else if (LS[17:0]==18'h0FFBE || LS[17:0]==18'h0FFBF) MOSIout <= 1; // Send 24-bit address (MSB first) - else if (LS[22:0]==23'h0FFFC0 || LS[22:0]==23'h0FFFC1) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFC2 || LS[22:0]==23'h0FFFC3) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFC4 || LS[22:0]==23'h0FFFC5) MOSIout <= SetFW[1]; - else if (LS[22:0]==23'h0FFFC6 || LS[22:0]==23'h0FFFC7) MOSIout <= SetFW[0]; - else if (LS[22:0]==23'h0FFFC8 || LS[22:0]==23'h0FFFC9) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFCA || LS[22:0]==23'h0FFFCB) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFCC || LS[22:0]==23'h0FFFCD) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFCE || LS[22:0]==23'h0FFFCF) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFD0 || LS[22:0]==23'h0FFFD1) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFD2 || LS[22:0]==23'h0FFFD3) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFD4 || LS[22:0]==23'h0FFFD5) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFD6 || LS[22:0]==23'h0FFFD7) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFD8 || LS[22:0]==23'h0FFFD9) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFDA || LS[22:0]==23'h0FFFDB) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFDC || LS[22:0]==23'h0FFFDD) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFDE || LS[22:0]==23'h0FFFDF) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFE0 || LS[22:0]==23'h0FFFE1) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFE2 || LS[22:0]==23'h0FFFE3) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFE4 || LS[22:0]==23'h0FFFE5) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFE6 || LS[22:0]==23'h0FFFE7) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFE8 || LS[22:0]==23'h0FFFE9) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFEA || LS[22:0]==23'h0FFFEB) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFEC || LS[22:0]==23'h0FFFED) MOSIout <= 0; - else if (LS[22:0]==23'h0FFFEE || LS[22:0]==23'h0FFFEF) MOSIout <= 0; + /*else if (LS[17:0]==18'h0FFC0 || LS[17:0]==18'h0FFC1) MOSIout <= 0; + else if (LS[17:0]==18'h0FFC2 || LS[17:0]==18'h0FFC3) MOSIout <= 0;*/ + else if (LS[17:0]==18'h0FFC4 || LS[17:0]==18'h0FFC5) MOSIout <= SetFW[1]; + else if (LS[17:0]==18'h0FFC6 || LS[17:0]==18'h0FFC7) MOSIout <= SetFW[0]; + /*else if (LS[17:0]==18'h0FFC8 || LS[17:0]==18'h0FFC9) MOSIout <= 0; + else if (LS[17:0]==18'h0FFCA || LS[17:0]==18'h0FFCB) MOSIout <= 0; + else if (LS[17:0]==18'h0FFCC || LS[17:0]==18'h0FFCD) MOSIout <= 0; + else if (LS[17:0]==18'h0FFCE || LS[17:0]==18'h0FFCF) MOSIout <= 0; + else if (LS[17:0]==18'h0FFD0 || LS[17:0]==18'h0FFD1) MOSIout <= 0; + else if (LS[17:0]==18'h0FFD2 || LS[17:0]==18'h0FFD3) MOSIout <= 0; + else if (LS[17:0]==18'h0FFD4 || LS[17:0]==18'h0FFD5) MOSIout <= 0; + else if (LS[17:0]==18'h0FFD6 || LS[17:0]==18'h0FFD7) MOSIout <= 0; + else if (LS[17:0]==18'h0FFD8 || LS[17:0]==18'h0FFD9) MOSIout <= 0; + else if (LS[17:0]==18'h0FFDA || LS[17:0]==18'h0FFDB) MOSIout <= 0; + else if (LS[17:0]==18'h0FFDC || LS[17:0]==18'h0FFDD) MOSIout <= 0; + else if (LS[17:0]==18'h0FFDE || LS[17:0]==18'h0FFDF) MOSIout <= 0; + else if (LS[17:0]==18'h0FFE0 || LS[17:0]==18'h0FFE1) MOSIout <= 0; + else if (LS[17:0]==18'h0FFE2 || LS[17:0]==18'h0FFE3) MOSIout <= 0; + else if (LS[17:0]==18'h0FFE4 || LS[17:0]==18'h0FFE5) MOSIout <= 0; + else if (LS[17:0]==18'h0FFE6 || LS[17:0]==18'h0FFE7) MOSIout <= 0; + else if (LS[17:0]==18'h0FFE8 || LS[17:0]==18'h0FFE9) MOSIout <= 0; + else if (LS[17:0]==18'h0FFEA || LS[17:0]==18'h0FFEB) MOSIout <= 0; + else if (LS[17:0]==18'h0FFEC || LS[17:0]==18'h0FFED) MOSIout <= 0; + else if (LS[17:0]==18'h0FFEE || LS[17:0]==18'h0FFEF) MOSIout <= 0;*/ else MOSIout <= 0; - MOSIOE <= LS[22:0]<23'h0FFFF0; - end else if (AppleActive) begin + if (LS[17:0]==18'h0FFA0) MOSIOE <= 1'b0; + else if (LS[17:0]==18'h0FFB0) MOSIOE <= 1'b1; + else if (LS[17:0]==18'h0FFF0) MOSIOE <= 1'b0; + end else if (CmdActv) begin //TODO: control these with Apple II - nFCS <= 1; - FCK <= 0; + FCS <= 0; + FCKEN <= 0; MOSIout <= 0; MOSIOE <= 0; //TODO? sample nMenu when MOSI not outputting? end end + /* UFM control */ + reg ARCLK = 0; // UFM address register clock + // UFM address register data input tied to 0 + reg ARShift = 0; // 1 to Shift UFM address in, 0 to increment + reg DRCLK = 0; // UFM data register clock + reg DRDIn = 0; // UFM data register input + reg DRShift = 0; // 1 to shift UFM out, 0 to load from current address + reg UFMErase = 0; // Rising edge starts erase. UFM+RTP must not be busy + reg UFMProgram = 0; // Rising edge starts program. UFM+RTP must not be busy + wire UFMBusy; // 1 if UFM is doing user operation. Asynchronous + wire RTPBusy; // 1 if real-time programming in progress. Asynchronous + wire DRDOut; // UFM data output + // UFM oscillator always enabled + wire UFMOsc; // UFM oscillator output (3.3-5.5 MHz) + UFM UFM_inst ( // UFM IP block (for Altera MAX II and MAX V) + .arclk (ARCLK), + .ardin (1'b0), + .arshft (ARShift), + .drclk (DRCLK), + .drdin (DRDIn), + .drshft (DRShift), + .erase (UFMErase), + .oscena (1'b1), + .program (UFMProgram), + .busy (UFMB), + .drdout (DRDOut), + .osc (UFMOsc), + .rtpbusy (RTPB)); + reg UFMBr0 = 0; // UFMBusy registered to sync with C25M + reg UFMBr = 0; // UFMBusy registered to sync with C25M + reg RTPBr0 = 0; // RTPBusy registered to sync with C25M + reg RTPBr = 0; // RTPBusy registered to sync with C25M + always @(posedge C25M) begin + UFMBr <= UFMBr0; UFMBr0 <= UFMB; + RTPBr <= RTPBr0; RTPBr0 <= RTPB; + end + reg SetLoaded = 0; + reg [1:0] SetFW; + reg SetLim8M; + always @(posedge C25M) begin + if (~SetLoaded) begin + if (LS[15:0]<=16'h0FBF) begin + ARCLK <= 0; + ARShift <= 1; + DRCLK <= 0; + DRShift <= 0; + end else if (LS[15:0]<=16'h0FFF) begin + ARCLK <= ~LS[1]; + ARShift <= 1; + DRCLK <= 0; + DRShift <= 0; + SetFW[1:0] <= 2'b11; + SetLim8M <= 1'b1; + end else if (LS[15:0]<=16'h2FFF) begin + if (LS[4:0]==5'h00 || LS[4:0]==5'h01) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 1; + DRShift <= 0; + end else if (LS[4:0]==5'h02 || LS[4:0]==5'h03) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h04 || LS[4:0]==5'h05) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 1; + DRShift <= 1; + if (LS[4:0]==5'h04 && DRDOut) SetLoaded <= 1; + end else if (LS[4:0]==5'h06 || LS[4:0]==5'h07) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h08 || LS[4:0]==5'h09) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 1; + DRShift <= 1; + if (LS[4:0]==5'h08) SetFW[1] <= DRDOut; + end else if (LS[4:0]==5'h0A || LS[4:0]==5'h0B) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h0C || LS[4:0]==5'h0D) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 1; + DRShift <= 1; + if (LS[4:0]==5'h0C) SetFW[0] <= DRDOut; + end else if (LS[4:0]==5'h0E || LS[4:0]==5'h0F) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h10 || LS[4:0]==5'h11) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + if (LS[4:0]==5'h10) SetLim8M <= DRDOut; + end else if (LS[4:0]==5'h12 || LS[4:0]==5'h13) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h14 || LS[4:0]==5'h15) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h16 || LS[4:0]==5'h17) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h18 || LS[4:0]==5'h19) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h1A || LS[4:0]==5'h1B) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h1C || LS[4:0]==5'h1D) begin + ARCLK <= 1; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end else if (LS[4:0]==5'h1E || LS[4:0]==5'h1F) begin + ARCLK <= 0; + ARShift <= 0; + DRCLK <= 0; + DRShift <= 1; + end + end else SetLoaded <= 1; + DRDIn <= 0; + end else if (CmdActv) begin + ARCLK <= 0; + ARShift <= 0; + DRShift <= 1; + + + DRCLK <= 0; + DRDIn <= 0; + end else begin + ARCLK <= 0; + ARShift <= 0; + DRShift <= 1; + DRCLK <= 0; + DRDIn <= 0; + end + end + + /* SDRAM data bus */ + inout [7:0] SD = SDOE ? WRD[7:0] : 8'bZ; + reg [7:0] WRD; + reg SDOE = 0; + always @(posedge C25M) begin + // Shift { MISO, MOSI } in when InitActv. When ready, synchronize RD + if (InitActv) if (LS[1]) WRD[7:0] <= { MISO, MOSI, WRD[5:0] }; + else WRD[7:0] <= RD[7:0]; + // Output data on SDRAM data bus only during init and when writing + SDOE <= InitActv || (RAMSEL && nWEcur && S==6); + end + + /* State counters */ + reg [3:0] S = 0; + always @(posedge C25M) begin + if (~InitActv && SDRAMActv && S==0 && PHI0r1 && ~PHI0r2 && nRESr && nBODf) S <= 1; + else if (S==0) S <= 0; + else S <= S+1; + end + + /* Refresh state */ + reg RefDone = 0; + always @(posedge C25M) begin + if (LS[6:0]==7'h00) RefDone <= 0; // Reset RefDone every 128 C25M cycles (5.12 us) + else if (S==0 && ~RefDone && ~(PHI0r1 && ~PHI0r2)) RefDone <= 1; + end + + reg [1:0] IS = 0; + always @(posedge C25M) begin + if (InitActv) begin + if (LS[17:0]==18'h0FFAF) IS <= 1; + else if (LS[17:0]==18'h0FFBF) IS <= 2; + else if (LS[17:0]==18'h0FFFF) IS <= 3; + end else IS <= 0; + end + /* SDRAM address/command */ output reg [1:0] SBA; output reg [12:0] SA; @@ -241,72 +452,131 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, output reg nSWE = 1; output reg DQMH = 1; output reg DQML = 1; - - /* SDRAM data bus */ - inout [7:0] SD = SDOE ? WRD[7:0] : 8'bZ; - reg [7:0] WRD; - reg SDOE = 0; - always @(posedge C25M) begin - // Shift { MISO, MOSI } in when InitActv. When ready, synchronize RD - if (InitActv) if (LS[1]) WRD[7:0] <= { MISO, MOSI, WRD[5:0] }; - end else WRD[7:0] <= RD[7:0]; - // Output data on SDRAM data bus only during init and when writing - SDOE <= InitActv || (RAMSEL && nWEcur && S==6); - end - - /* State counters */ - reg [2:0] S = 0; - always @(posedge C25M) begin - if ( ~InitActv && SDRAMActv && S==0 && PHI0r1 && ~PHI0r2 && nRESr && nBODf) S <= 1; - else if (S==0) S <= 0; - else S <= S+1; - end - - /* Refresh state */ - reg RefReady = 0; - reg RefDone = 0; - always @(posedge C25M) begin - // Ready to refresh when init inactive, SDRAM active, S0 and refresh not already done - RefReady <= ~InitActv && SDRAMActv && S==0 && ~RefDone; - - if (LS[6:0]==7'h00) RefDone <= 0; // Reset RefDone every 128 C25M cycles (5.12 us) - else if (~InitActv && SDRAMActv && S==0 && ~RefDone && RefReady && ~(PHI0r1 && ~PHI0r2)) RefDone <= 1; - end - - /* SDRAM control */ always @(posedge C25M) begin if (S==0 && InitActv) begin - if (LS[22:0]==23'h000000) begin - + if (IS[1:0]==2'h0) begin + // NOP CKE + RCKE <= 1'b1; + nRCS <= 1'b1; + nRAS <= 1'b1; + nCAS <= 1'b1; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + SBA[1:0] <= 2'b00; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; + end else if (IS[1:0]==2'h1) begin + if (LS[3:0]==4'h3) begin + // PC all + RCKE <= 1'b1; + nRCS <= 1'b0; + nRAS <= 1'b0; + nCAS <= 1'b1; + nSWE <= 1'b0; + DQMH <= 1'b1; + DQML <= 1'b1; + SA[10] <= 1'b1; // "all" + end else if (LS[3:0]==4'hB) begin + // Load mode register + RCKE <= 1'b1; + nRCS <= 1'b0; + nRAS <= 1'b0; + nCAS <= 1'b0; + nSWE <= 1'b0; + DQMH <= 1'b1; + DQML <= 1'b1; + SA[10] <= 1'b0; // reserved in mode register + end + SBA[1:0] <= 2'b00; // reserved in mode register + SA[12:11] <= 2'b00; // reserved in mode register + SA[9] <= 1'b1; // single write mode + SA[8] <= 1'b0; // reserved in mode register + SA[7] <= 1'b0; // don't enter test mode + SA[6:4] <= 2'b010; // CAS latency 2 + SA[3] <= 1'b0; // sequential addressing mode + SA[2:0] <= 3'b000; // burst length 1 + end else if (IS[1:0]==2'h2) begin + if (LS[2:0]==3'h3) begin + // AREF + RCKE <= 1'b1; + nRCS <= 1'b0; + nRAS <= 1'b0; + nCAS <= 1'b0; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + end else begin + // NOP CKE + RCKE <= 1'b1; + nRCS <= 1'b1; + nRAS <= 1'b1; + nCAS <= 1'b1; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + end + SBA[1:0] <= 2'b10; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; + end else if (IS[1:0]==2'h3) begin + if (LS[2:0]==3'h3) begin + // AREF + RCKE <= 1'b1; + nRCS <= 1'b0; + nRAS <= 1'b0; + nCAS <= 1'b0; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + SBA[1:0] <= 2'b10; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; + end else if (LS[2:0]==3'h5) begin + // ACT + RCKE <= 1'b1; + nRCS <= 1'b0; + nRAS <= 1'b0; + nCAS <= 1'b1; + nSWE <= 1'b1; + SBA[1:0] <= 1'b10; + SA[12:10] <= 3'b001; + SA[9:4] <= 10'b100010; + SA[3:0] <= { ~LS[17], LS[16:14] }; + DQMH <= 1'b1; + DQML <= 1'b1; + end else if (LS[2:0]==3'h7) begin + // WR auto-PC + RCKE <= 1'b1; + nRCS <= 1'b0; + nRAS <= 1'b1; + nCAS <= 1'b0; + nSWE <= 1'b0; + SBA[1:0] <= 1'b10; + SA[12:11] <= 2'b00; // don't care + SA[10] <= 1'b1; // auto-precharge + SA[9:0] <= LS[13:4]; + DQML <= LS[3]; + DQMH <= ~LS[3]; + end else begin + // NOP CKE + RCKE <= 1'b1; + nRCS <= 1'b1; + nRAS <= 1'b1; + nCAS <= 1'b1; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + SBA[1:0] <= 2'b10; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; + end end - end else if (S==0 && ~SDRAMActv) begin - // NOP CKE - RCKE <= 1'b1; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end else if (S==0 && PHI0r1 && ~PHI0r2) begin - // NOP CKE - RCKE <= 1'b1; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; end else if (S==0 && ~RefDone) begin - // NOP CKE - RCKE <= 1'b1; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end else if (S==0 && RefReady) begin // AREF RCKE <= 1'b1; nRCS <= 1'b0; @@ -315,15 +585,23 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, nSWE <= 1'b1; DQMH <= 1'b1; DQML <= 1'b1; + SBA[1:0] <= 2'b10; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; end else if (S==0) begin - // NOP CKD - RCKE <= 1'b0; + // NOP CKE + RCKE <= 1'b1; nRCS <= 1'b1; nRAS <= 1'b1; nCAS <= 1'b1; nSWE <= 1'b1; DQMH <= 1'b1; DQML <= 1'b1; + SBA[1:0] <= 2'b10; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; end else if (S==4'h1) begin if (ROMSpecRD || RAMSpecRD) begin // ACT @@ -334,28 +612,9 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, nSWE <= 1'b1; DQMH <= 1'b1; DQML <= 1'b1; - - if (RAMSpecRD) begin - RBA[1] <= Addr[24]; - RBA[0] <= Addr[23] & ~SetLim8M; - RA[12:0] <= Addr[22:10]; - end else begin - RBA[1] <= 1'b1; - RBA[0] <= 1'b0; - RA[12:10] <= 3'b000; - if (RAcur[11]) begin // IOSTRB - RA[9] <= 1'b0; - RA[8:1] <= Bank[7:0]; - RA[0] <= RAcur[10]; - end else begin // IOSEL - RA[9] <= 1'b1; - RA[8:1] <= 8'h00; - RA[0] <= RAcur[10]; - end - end end else begin - // NOP ckdis - RCKE <= 1'b0; + // NOP CKE + RCKE <= 1'b1; nRCS <= 1'b1; nRAS <= 1'b1; nCAS <= 1'b1; @@ -363,6 +622,20 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, DQMH <= 1'b1; DQML <= 1'b1; end + + if (RAMSpecRD) begin + SBA[1] <= 1'b0; + SBA[0] <= Addr[23] & ~SetLim8M; + SA[12:0] <= Addr[22:10]; + end else begin + SBA[1] <= 1'b1; + SBA[0] <= 1'b0; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:4] <= 10'b100010; + SA[9:1] <= Bank[1:0]; + SA[1:0] <= RAcur[11:10]; + end end else if (S==4'h2) begin if (ROMSpecRD || RAMSpecRD) begin // RD auto-PC @@ -371,26 +644,16 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, nRAS <= 1'b1; nCAS <= 1'b0; nSWE <= 1'b1; - - A[12:11] <= 1'b0; // don't care - A[10] <= 1'b1; // auto-precharge - A[9] <= 1'b0; // don't care if (RAMSpecRD) begin - RBA[1] <= Addr[24]; - RBA[0] <= Addr[23]; - RA[8:0] <= Addr[9:1]; DQMH <= ~Addr[0]; DQML <= Addr[0]; - end else /* ROMSpecRD */ begin - RBA[1] <= 1'b1; - RBA[0] <= 1'b0; - RA[8:0] <= RAcur[9:1]; + end else begin DQMH <= ~RAcur[0]; DQML <= RAcur[0]; end end else begin - // NOP ckdis - RCKE <= 1'b0; + // NOP CKE + RCKE <= 1'b1; nRCS <= 1'b1; nRAS <= 1'b1; nCAS <= 1'b1; @@ -398,46 +661,44 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, DQMH <= 1'b1; DQML <= 1'b1; end + + SA[12:11] <= 2'b00; // don't care + SA[10] <= 1'b1; // auto-precharge + SA[9] <= 1'b1; // don't care + if (RAMSpecRD) begin + SBA[1] <= 1'b0; + SBA[0] <= Addr[23]; + SA[8:0] <= Addr[9:1]; + end else begin + SBA[1] <= 1'b1; + SBA[0] <= 1'b0; + SA[8:0] <= RAcur[9:1]; + end end else if (S==4'h3) begin - if (ROMSpecRD || RAMSpecRD) begin - // NOP cken - RCKE <= 1'b1; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end else begin - // NOP ckdis - RCKE <= 1'b0; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end + // NOP CKE + RCKE <= 1'B1; + nRCS <= 1'b1; + nRAS <= 1'b1; + nCAS <= 1'b1; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + SBA[1:0] <= 2'b10; + SA[12:11] <= 2'b00; + SA[10] <= 1'b1; + SA[9:0] <= 10'b1000100000; end else if (S==4'h4) begin - if (RAMSpecWR) begin - // NOP cken - RCKE <= 1'b1; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end else begin - // NOP ckdis - RCKE <= 1'b0; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end + // NOP CKE + RCKE <= 1'b1; + nRCS <= 1'b1; + nRAS <= 1'b1; + nCAS <= 1'b1; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + SBA[1] <= 1'b0; + SBA[0] <= Addr[23]; + SA[12:0] <= Addr[22:10]; end else if (S==4'h5) begin if (RAMSpecWR && DEVSELr) begin // ACT @@ -448,13 +709,9 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, nSWE <= 1'b1; DQMH <= 1'b1; DQML <= 1'b1; - - BA[1] <= Addr[24]; - BA[0] <= Addr[23]; - A[12:0] <= Addr[22:10]; end else begin - // NOP ckdis - RCKE <= 1'b0; + // NOP CKE + RCKE <= 1'b1; nRCS <= 1'b1; nRAS <= 1'b1; nCAS <= 1'b1; @@ -462,7 +719,10 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, DQMH <= 1'b1; DQML <= 1'b1; end - end else if (s==4'h6) begin + SBA[1] <= 1'b0; + SBA[0] <= Addr[23]; + SA[12:0] <= Addr[22:10]; + end else if (S==4'h6) begin if (RAMWR) begin // WR auto-PC RCKE <= 1'b1; @@ -470,27 +730,10 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, nRAS <= 1'b1; nCAS <= 1'b0; nSWE <= 1'b0; - - BA[1] <= Addr[24]; - BA[0] <= Addr[23]; - A[12:11] <= 1'b0; // don't care - A[10] <= 1'b1; // auto-precharge - A[9:0] <= Addr[9:0]; DQMH <= ~Addr[10]; DQML <= Addr[10]; end else begin - // NOP ckdis - RCKE <= 1'b0; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; - end - end else if (S==4'h7) begin - if (RAMSpecWR) begin - // NOP cken + // NOP CKE RCKE <= 1'b1; nRCS <= 1'b1; nRAS <= 1'b1; @@ -498,16 +741,26 @@ module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES, nSWE <= 1'b1; DQMH <= 1'b1; DQML <= 1'b1; - end else begin - // NOP ckdis - RCKE <= 1'b0; - nRCS <= 1'b1; - nRAS <= 1'b1; - nCAS <= 1'b1; - nSWE <= 1'b1; - DQMH <= 1'b1; - DQML <= 1'b1; end + SBA[1] <= 1'b0; + SBA[0] <= Addr[23]; + SA[12:11] <= 2'b00; // don't care + SA[10] <= 1'b1; // auto-precharge + SA[9:0] <= Addr[9:0]; + end else if (S==4'h7) begin + // NOP CKE + RCKE <= 1'b1; + nRCS <= 1'b1; + nRAS <= 1'b1; + nCAS <= 1'b1; + nSWE <= 1'b1; + DQMH <= 1'b1; + DQML <= 1'b1; + SBA[1] <= 1'b0; + SBA[0] <= Addr[23]; + SA[12:11] <= 2'b00; // don't care + SA[10] <= 1'b1; // auto-precharge + SA[9:0] <= Addr[9:0]; end end endmodule diff --git a/cpld/UFM.qip b/cpld/UFM.qip new file mode 100755 index 0000000..e2d8458 --- /dev/null +++ b/cpld/UFM.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "ALTUFM_NONE" +set_global_assignment -name IP_TOOL_VERSION "13.0" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "UFM.v"] diff --git a/cpld/UFM.v b/cpld/UFM.v new file mode 100755 index 0000000..be0a98f --- /dev/null +++ b/cpld/UFM.v @@ -0,0 +1,268 @@ +// megafunction wizard: %ALTUFM_NONE% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTUFM_NONE + +// ============================================================ +// File Name: UFM.v +// Megafunction Name(s): +// ALTUFM_NONE +// +// Simulation Library Files(s): +// maxii +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +//altufm_none CBX_AUTO_BLACKBOX="ALL" DEVICE_FAMILY="MAX II" ERASE_TIME=500000000 OSC_FREQUENCY=180000 PORT_ARCLKENA="PORT_UNUSED" PORT_DRCLKENA="PORT_UNUSED" PROGRAM_TIME=1600000 WIDTH_UFM_ADDRESS=9 arclk ardin arshft busy drclk drdin drdout drshft erase osc oscena program rtpbusy +//VERSION_BEGIN 13.0 cbx_a_gray2bin 2013:06:12:18:03:39:SJ cbx_a_graycounter 2013:06:12:18:03:39:SJ cbx_altufm_none 2013:06:12:18:03:40:SJ cbx_cycloneii 2013:06:12:18:03:40:SJ cbx_lpm_add_sub 2013:06:12:18:03:40:SJ cbx_lpm_compare 2013:06:12:18:03:40:SJ cbx_lpm_counter 2013:06:12:18:03:40:SJ cbx_lpm_decode 2013:06:12:18:03:40:SJ cbx_lpm_mux 2013:06:12:18:03:40:SJ cbx_maxii 2013:06:12:18:03:40:SJ cbx_mgl 2013:06:12:18:04:42:SJ cbx_stratix 2013:06:12:18:03:40:SJ cbx_stratixii 2013:06:12:18:03:40:SJ cbx_util_mgl 2013:06:12:18:03:40:SJ VERSION_END +// synthesis VERILOG_INPUT_VERSION VERILOG_2001 +// altera message_off 10463 + + +//synthesis_resources = maxii_ufm 1 +//synopsys translate_off +`timescale 1 ps / 1 ps +//synopsys translate_on +module UFM_altufm_none_0ep + ( + arclk, + ardin, + arshft, + busy, + drclk, + drdin, + drdout, + drshft, + erase, + osc, + oscena, + program, + rtpbusy) ; + input arclk; + input ardin; + input arshft; + output busy; + input drclk; + input drdin; + output drdout; + input drshft; + input erase; + output osc; + input oscena; + input program; + output rtpbusy; + + wire wire_maxii_ufm_block1_bgpbusy; + wire wire_maxii_ufm_block1_busy; + wire wire_maxii_ufm_block1_drdout; + wire wire_maxii_ufm_block1_osc; + wire ufm_arclk; + wire ufm_ardin; + wire ufm_arshft; + wire ufm_bgpbusy; + wire ufm_busy; + wire ufm_drclk; + wire ufm_drdin; + wire ufm_drdout; + wire ufm_drshft; + wire ufm_erase; + wire ufm_osc; + wire ufm_oscena; + wire ufm_program; + + maxii_ufm maxii_ufm_block1 + ( + .arclk(ufm_arclk), + .ardin(ufm_ardin), + .arshft(ufm_arshft), + .bgpbusy(wire_maxii_ufm_block1_bgpbusy), + .busy(wire_maxii_ufm_block1_busy), + .drclk(ufm_drclk), + .drdin(ufm_drdin), + .drdout(wire_maxii_ufm_block1_drdout), + .drshft(ufm_drshft), + .erase(ufm_erase), + .osc(wire_maxii_ufm_block1_osc), + .oscena(ufm_oscena), + .program(ufm_program) + // synopsys translate_off + , + .ctrl_bgpbusy(1'b0), + .devclrn(1'b1), + .devpor(1'b1), + .sbdin(1'b0), + .sbdout() + // synopsys translate_on + ); + defparam + maxii_ufm_block1.address_width = 9, + maxii_ufm_block1.erase_time = 500000000, + maxii_ufm_block1.init_file = "none", + maxii_ufm_block1.mem1 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem10 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem11 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem12 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem13 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem14 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem15 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem16 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem2 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem3 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem4 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem5 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem6 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem7 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem8 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.mem9 = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + maxii_ufm_block1.osc_sim_setting = 180000, + maxii_ufm_block1.program_time = 1600000, + maxii_ufm_block1.lpm_type = "maxii_ufm"; + assign + busy = ufm_busy, + drdout = ufm_drdout, + osc = ufm_osc, + rtpbusy = ufm_bgpbusy, + ufm_arclk = arclk, + ufm_ardin = ardin, + ufm_arshft = arshft, + ufm_bgpbusy = wire_maxii_ufm_block1_bgpbusy, + ufm_busy = wire_maxii_ufm_block1_busy, + ufm_drclk = drclk, + ufm_drdin = drdin, + ufm_drdout = wire_maxii_ufm_block1_drdout, + ufm_drshft = drshft, + ufm_erase = erase, + ufm_osc = wire_maxii_ufm_block1_osc, + ufm_oscena = oscena, + ufm_program = program; +endmodule //UFM_altufm_none_0ep +//VALID FILE + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module UFM ( + arclk, + ardin, + arshft, + drclk, + drdin, + drshft, + erase, + oscena, + program, + busy, + drdout, + osc, + rtpbusy); + + input arclk; + input ardin; + input arshft; + input drclk; + input drdin; + input drshft; + input erase; + input oscena; + input program; + output busy; + output drdout; + output osc; + output rtpbusy; + + wire sub_wire0; + wire sub_wire1; + wire sub_wire2; + wire sub_wire3; + wire osc = sub_wire0; + wire rtpbusy = sub_wire1; + wire drdout = sub_wire2; + wire busy = sub_wire3; + + UFM_altufm_none_0ep UFM_altufm_none_0ep_component ( + .arshft (arshft), + .drclk (drclk), + .erase (erase), + .program (program), + .arclk (arclk), + .drdin (drdin), + .oscena (oscena), + .ardin (ardin), + .drshft (drshft), + .osc (sub_wire0), + .rtpbusy (sub_wire1), + .drdout (sub_wire2), + .busy (sub_wire3)); + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX II" +// Retrieval info: CONSTANT: ERASE_TIME NUMERIC "500000000" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX II" +// Retrieval info: CONSTANT: LPM_FILE STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altufm_none" +// Retrieval info: CONSTANT: OSC_FREQUENCY NUMERIC "180000" +// Retrieval info: CONSTANT: PORT_ARCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_DRCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PROGRAM_TIME NUMERIC "1600000" +// Retrieval info: CONSTANT: WIDTH_UFM_ADDRESS NUMERIC "9" +// Retrieval info: USED_PORT: arclk 0 0 0 0 INPUT NODEFVAL "arclk" +// Retrieval info: CONNECT: @arclk 0 0 0 0 arclk 0 0 0 0 +// Retrieval info: USED_PORT: ardin 0 0 0 0 INPUT NODEFVAL "ardin" +// Retrieval info: CONNECT: @ardin 0 0 0 0 ardin 0 0 0 0 +// Retrieval info: USED_PORT: arshft 0 0 0 0 INPUT NODEFVAL "arshft" +// Retrieval info: CONNECT: @arshft 0 0 0 0 arshft 0 0 0 0 +// Retrieval info: USED_PORT: busy 0 0 0 0 OUTPUT NODEFVAL "busy" +// Retrieval info: CONNECT: busy 0 0 0 0 @busy 0 0 0 0 +// Retrieval info: USED_PORT: drclk 0 0 0 0 INPUT NODEFVAL "drclk" +// Retrieval info: CONNECT: @drclk 0 0 0 0 drclk 0 0 0 0 +// Retrieval info: USED_PORT: drdin 0 0 0 0 INPUT NODEFVAL "drdin" +// Retrieval info: CONNECT: @drdin 0 0 0 0 drdin 0 0 0 0 +// Retrieval info: USED_PORT: drdout 0 0 0 0 OUTPUT NODEFVAL "drdout" +// Retrieval info: CONNECT: drdout 0 0 0 0 @drdout 0 0 0 0 +// Retrieval info: USED_PORT: drshft 0 0 0 0 INPUT NODEFVAL "drshft" +// Retrieval info: CONNECT: @drshft 0 0 0 0 drshft 0 0 0 0 +// Retrieval info: USED_PORT: erase 0 0 0 0 INPUT NODEFVAL "erase" +// Retrieval info: CONNECT: @erase 0 0 0 0 erase 0 0 0 0 +// Retrieval info: USED_PORT: osc 0 0 0 0 OUTPUT NODEFVAL "osc" +// Retrieval info: CONNECT: osc 0 0 0 0 @osc 0 0 0 0 +// Retrieval info: USED_PORT: oscena 0 0 0 0 INPUT NODEFVAL "oscena" +// Retrieval info: CONNECT: @oscena 0 0 0 0 oscena 0 0 0 0 +// Retrieval info: USED_PORT: program 0 0 0 0 INPUT NODEFVAL "program" +// Retrieval info: CONNECT: @program 0 0 0 0 program 0 0 0 0 +// Retrieval info: USED_PORT: rtpbusy 0 0 0 0 OUTPUT NODEFVAL "rtpbusy" +// Retrieval info: CONNECT: rtpbusy 0 0 0 0 @rtpbusy 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.cmp FALSE TRUE +// Retrieval info: LIB_FILE: maxii diff --git a/cpld/db/GR8RAM.(0).cnf.cdb b/cpld/db/GR8RAM.(0).cnf.cdb new file mode 100755 index 0000000000000000000000000000000000000000..e0d9099d9a9149c5fdf1025bd2e767c108d39aa5 GIT binary patch literal 40630 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 K8~gwO0RR8ci<|-g literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.(2).cnf.cdb b/cpld/db/GR8RAM.(2).cnf.cdb new file mode 100755 index 0000000000000000000000000000000000000000..6daf24d3feb76fcfdd8cc17f482516d6ae5734ec GIT binary patch literal 1239 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 literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.asm.qmsg b/cpld/db/GR8RAM.asm.qmsg new file mode 100755 index 0000000..27abf7e --- /dev/null +++ b/cpld/db/GR8RAM.asm.qmsg @@ -0,0 +1,6 @@ +{ "Info" "IQEXE_SEPARATOR" "" "*******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "Quartus II" 0 -1 1616056850427 ""} +{ "Info" "IQEXE_START_BANNER_PRODUCT" "Assembler Quartus II 32-bit " "Running Quartus II 32-bit Assembler" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition " "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "Quartus II" 0 -1 1616056850443 ""} { "Info" "IQEXE_START_BANNER_TIME" "Thu Mar 18 04:40:50 2021 " "Processing started: Thu Mar 18 04:40:50 2021" { } { } 0 0 "Processing started: %1!s!" 0 0 "Quartus II" 0 -1 1616056850443 ""} } { } 4 0 "Running %2!s! %1!s!" 0 0 "Assembler" 0 -1 1616056850443 ""} +{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_asm --read_settings_files=off --write_settings_files=off GR8RAM -c GR8RAM " "Command: quartus_asm --read_settings_files=off --write_settings_files=off GR8RAM -c GR8RAM" { } { } 0 0 "Command: %1!s!" 0 0 "Assembler" 0 -1 1616056850443 ""} +{ "Info" "IASM_ASM_GENERATING_POWER_DATA" "" "Writing out detailed assembly data for power analysis" { } { } 0 115031 "Writing out detailed assembly data for power analysis" 0 0 "Assembler" 0 -1 1616056851802 ""} +{ "Info" "IASM_ASM_GENERATING_PROGRAMMING_FILES" "" "Assembler is generating device programming files" { } { } 0 115030 "Assembler is generating device programming files" 0 0 "Assembler" 0 -1 1616056851833 ""} +{ "Info" "IQEXE_ERROR_COUNT" "Assembler 0 s 0 s Quartus II 32-bit " "Quartus II 32-bit Assembler was successful. 0 errors, 0 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "293 " "Peak virtual memory: 293 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "Quartus II" 0 -1 1616056852411 ""} { "Info" "IQEXE_END_BANNER_TIME" "Thu Mar 18 04:40:52 2021 " "Processing ended: Thu Mar 18 04:40:52 2021" { } { } 0 0 "Processing ended: %1!s!" 0 0 "Quartus II" 0 -1 1616056852411 ""} { "Info" "IQEXE_ELAPSED_TIME" "00:00:02 " "Elapsed time: 00:00:02" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "Quartus II" 0 -1 1616056852411 ""} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:02 " "Total CPU time (on all processors): 00:00:02" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "Quartus II" 0 -1 1616056852411 ""} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "Assembler" 0 -1 1616056852411 ""} diff --git a/cpld/db/GR8RAM.asm.rdb b/cpld/db/GR8RAM.asm.rdb new file mode 100755 index 0000000000000000000000000000000000000000..b84971fdf20c867cb3f5a3c2673033a572473bcc GIT binary patch literal 1367 zcmV-d1*rNF000233jqKC0CNCy073u&09Ivkb7^mGATcv8FfK75LUn0uWFRs#G9WNE zFEKJNGB7bSAX8;>c4=c}AW&grYalToQ%WFLWnv&jWNCD1Z*Gqa00000004jl00000 z0027y000000037700000004La>{i`x8$}R50~O_4AQc4SVIB}l5O&U1Dni6VUB^xn zYLeR53iSo8@AjN)@2j_aA?^$RH&DWFZqN3eYX>DS@W4uYJF~mS=+8?312pa}YGgn`j@c+cWa397k?847M zE?syiW0?spJsJd|RP38Ij^q%6sBz?i0FTC)1B^?|19={}l1@?`B(d73r~5l2nI>xI zaI`n-4tLx%^mdY5r@8*cXRYNzD^2_j25^MkEOzH6)+2W)l@e3AF>*hGn6b7cRMdJA zsVV1@X)Ecch0c{(`5MDGcU_?Sc}Pui&T<-xjM{r-@9yu~`*%Cku{&+E{X+~RT$aK; z(N7|hX8LUmM!DfX#o#1qGnD5tq<*XeJ-cE%iw{H;gk?!!e%Sq)j*bi*^TtJn{{Tb( zblBOoowjZF?k;y34;ub9hOxJD{d5zb!9jJ!N!{xxkJO(&)1 zD*feB7t07&Q-%nI!I}+NV_nT|4uBryGWeNY7bV_5%5Z4(!o+<}D#FugDvtoZpC}Sj!AYe0_$`Vp-p!8%RHsFLD{XGfI5YXYvYQ_I}%@;e)3PVOb0Q z<*S1K0^ft+Jn#Tgn7hQDlmW%npp4)O$tly#bwasL2K65m|eik3oSWfl7}b> zj=a!C(WR}H*8VmP5D<>YrczTiJ!?ocrc;F-iC^h{5aUN+4w_AF0{XBD`aoU?Pr5-Q zLfYbR44ber5_+3Xiuyg*btW%R(6@`AzSbEyEvj0ouu5|Y5uV3+hJ9!pZ+1ad$t}!m z0&$Z(*5n15beC0#qvLUEaH{kVm|8e$EVBUTegZ*w#+-Y8UUiPUoVQcV$j{67w z9*v#u>BANHXCk@*e9d(NiDD`g-u7b=m3r>aw4@%AlR7PXewt?!_rId9nzvQ@8+hg@ zZjNV4%ZN_1WSWVncm(EeP%jiwN@KjnWi5UeB2E@G5k^-`alPYTpW;EKm4-F6Ci->$ zVG5z5uwMCq@{3yjDjA9O4>8x(W2bvq)KxC4WOl!Y!M?EV_IG>zy|Nthk$Y#-eXjDT z-1h!r+xMM8oBjp>0RR7Z0peg_WZ+<6V2CobOa@X6+&~=U;uIg`8sHxk0uo_h0%B%{ z3qaB?CQy?RNJ|1SNKtU8udicJWPFIDlaFh>zmu1%Geip~Pys8$4In9GxW){mMFgtF z)z`_@#l_VHs+y6FK>#QdyW`=jNFWU}7-C>>NRX$Wd%UZUtFNmc#Na5PB6bEIAX#&= zq#Q^w2mvw3Ef6hGwTvtbXMo~iY?i*vKw1z*4aA*{ObjQ0!p1&s(IEH1jB)e#ad8cT ZxsHQj2T*R(&7&Y2;b8+c00000|NqF@a=rin literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.cbx.xml b/cpld/db/GR8RAM.cbx.xml new file mode 100755 index 0000000..4106069 --- /dev/null +++ b/cpld/db/GR8RAM.cbx.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/cpld/db/GR8RAM.cmp.cdb b/cpld/db/GR8RAM.cmp.cdb new file mode 100755 index 0000000000000000000000000000000000000000..25204dc85093ec0f4749fea5709601bc862e6e99 GIT binary patch literal 28919 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 g4+E4lV=pJ4dj?s|ft00030|G}~fIsgCw literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.cmp.kpt b/cpld/db/GR8RAM.cmp.kpt new file mode 100755 index 0000000000000000000000000000000000000000..960333230b7633012330f007eacf60e68d1858aa GIT binary patch literal 221 zcmV<303!da4*>uG0001ZoTZUbYr-%Th2Q%t4tZbOq#%2+g$>4VFmMXc4=c}AW&grYalToQ%WFLWnv&jWNCD1Z*E0!0RR91004qA00000 z004Ia000000093p00000004La?0svDWXY9QwI6t=*M{+o*It{24bOOHde&3jRh3o! z(i%BCtExN4^>Sr(&x{wVxRrIQ>e5*^(>F7_r>p@3E5uLW2SOku5G(P6w}ia>LOdjX z87=%lyVAl+2njDn)}moyZSQ)A?~BKcxS4S?Z+3QPmb>%LbY_qj@#c9G9-v1CuX`Lm}@kvKq zs=O{1Z`@d%Us_l!iE^V8CV{9l6Obng=hxceFld08}_Grbyn9 zDT4S+G`pQvw)q2Z?x;#bx+q32r|OkO3EyocVY}Tp z6YcK7pAG9Bak0~s)PRwvZAo~&86QT98=6wh<{d?o*Z_esIDE0zJ!sdHs3k?De4K=Wj1a<>4+1zddVXF%XQ9^OiWv!|@#q+i}4dU)mQ15gT@bciyl!KKHEHdh% z<^_2RIS9I-B#FLB-bd|D5*>6q&7^%$!9fqAC zYP2t3l;Zzo-A2|M&4;4aJv|MQGt(~IUpBuBXeM*NhqlFk(|-X$sthQ?9|dK5VY@?F zz8!Rr!?sJj319dN2thGWIi&y0$Jy^Q!vPBYCs0}?^kIi$;}sb8Mvo%sij&Mnm~6J1 z@%(Cd6m%OMal6qxK#x=#kh5%WA4Ou*-rU~{&+G@w*iRb9t~G*I8_IDnI`#JMvJNM} zFiYAWGo)?T2C38!1MD%@q|N`QO#U0qV-=hId*N5`{*5k7i*9@WG-!$W`6LVu_uE&1^AD4#6ZU;MIuf^cukV&O#e7|dE*gYKQ6~=}l8u5|h*J~_(PZ^7U1j*K;4(t?(dA+*Vhxua~ zv%zX|FlOg}SC~@mvI$ct$mx!*Fgy0U21w9;iklq)`v{$M45^M{5s0sD)^1A+?=s~W z51I0__|?63OIlojHi#rp&!0!gje^7iBDbGI&{qY61pGOqc@*tAb{gb6vkbt5*)tLc zv=*S$o31%m!(0Fmb-@2r?VTEGCrE-uBWz%-n2u_F`BOB<7V)tWD9WfvUPaK~v@z7d zIB{JLEqBpF8tSV1cdugy->h`ykNI8xkgmCDbwL&_6qO8Rh2RX?8Fwc;vj{LV*4u#dI6M`7$r5B5P1;l6w-t zm6g;_&MvD;nVTbTFVI+VhZjY|KS2pqd8zGQLC~x1sylS@fmzxM;)j-)Y+J@8X)U*aDJd7OkEnZS(tlICYKIuh7Rhn@O7hLp!(pfnP>-XDK z)~mN};cw;vC8|gJA1XCU$LteMr?S5LEu0vw>&OQ(YzyQY36*?v5O*k1t33seKH2Fn^3 zeP3r0S#HhvaUS@g+6Kk{CwTz&Jc@z-T@7ez?5>+J<;&A_FK|B7_@0XX{-)~De}*WP zhFDcIfV40$Bbk$z>{BN+SV6%sb1L@w}SY- zke<{Wk0E`%<9dOK+AW(UgA=x8EVbJS>i4<)v}dUN4nC_ziuiy{dx@ITZ42zdgs1Zj zvu6`47!TONye`-MA7C#Z_JtyWnw)L6uvkxSXaf=~I!wfA^DshxRl2kH-5$?mm7KE z8JF@ne~JmXRxXWaN1mt1b-g=bvK za4Iyijpt!=56Ss&V?SH}9xCScKINQ*&0c0an90GcEzI=6OefCzg;{qvGYMv9(abcQ zna8ss!fa$T8yU?;MzfL8Y-BVW8O=sU=V)YvAqw_Wab{q4o8Ig;J>C^KyG^g}HoXgT zuwB?jUP5y*2kEuNZg`6IK8IqpoA7SB^y(r2^*uZ$y?^$=%$5!K!c+7JrZAESIdKx= z=15#9V2CMjs-IjdL>sI?rsINHVtKq*ChUsyh zr8sCbaWR8TPqh3um;xmJ;9d>|O#D9X+8smzVaB82cYxt~4h4^m2PAV&8XfAQGqkU+ zV$el32KUWpU|>ya~9rBNj#NP4QNEAlB6N zwJITZrSD?XHc^SKz+6MfJ3`b&7z&I>qwY0Z^NsKUE{R%GH^$_HGx>UO8a4ENtbE@r zzYXdYI=-uOywy8zaar5hTv}e(TU=PEtf*MhhMN(oo;I<4yrJ30Q&QI>tn5%wJQ_S# z+@&a%a24_u0p#M6SS&4wSA8avU< zx=(1xD1BnQs2-~Hl(WkA=1z5EZFj#`y}ec5ySux#UtLw7xw>I_dExrX%C*I-rP9@F zE0-6q;=j_>8_O#TrP9)M1;<5^^YeqlBo*h^?jfVK_4V!DJq1ot1jFOQAi+xMsH0+^ z!%rD^7u%S;ESSE!v%j~!y|KSl-dt1Z$$;|49uENC+TPNUc_`d?GTxxOx3*iWZf_}! zAH@$_yn1t!nFB)OBy1%`%SKX|Bt-J?p`+IAZJ6qMS-ql1AZy8r=D!eTBt)LOa z^-$MP9`?^D?E95%)YqGLw<;R>=8nR|bk}vm&corxOMKO>TzpQ8bCczTUq$vi+i$V5 z-`?A=-QC&QcxV6K_QqcM_8KZ{e|PQn-Hr0z_O7CqTqs>G-BWLQNZt6)GK1aiH`gkA z``dT-cJA)&uU2>Qw!OdCFt{)7X_H|SqX%;z_sjUG6m4bauHbFA;u88BUipRV#x*jnl&Q~smp36A4+U~z z;U@prnvSJjH0^-;w6w4&Hg6$-ryraUYVp1Va3QpG_9MJ{&4*BfQv=Gf_2OI9-FIHC zTG|Yxw?5b*Z3gudT&XJVG~1mx?WEaR;F?}rb=0Vc$XEtk5Q&@V6_4dDaEQP&n9Wo> z-wfh#zJC4S;OKe~9xcgKvUht6H_tU6w#D1JX_H}4#0r2dC%SrFS57at9~a*ID_tEs zi*3Hvt+VJy-GEY@+pX~b$PEtl{Y4@IZf6r$i>)8C(j@xwe*(QM-d4+UmR z-ghWpr87XiW3y2QhY`VEhUPd`4MM@NE70Oe`PvNLjZV9#)Gp13Mm;$&a)=^R+7OkV zQE%ABbSOX1QI?@v7StPI3~mcU#9H(%IvXP2)Uo-v6EZEVLdfR+iqeKwkFo>;PYNqE zc5()`x1oVF5pnciw|46@|KK64@p5Fv!9L?A!@DCl)0s;hl?HVTZf6 z)CUgsB#J%UBB`R({Qw!P<%4#!(S?<2F;YcsL#?dBEkUu$1cLzFA^R^#xBgVnO1I`%lZo&=}f9OXrU zFze>mn_cWeg5r!YW)^o=H{2}Q{d%*^V$SAjE=^EW%VP7oSM@qV!=w_UJj~DIVu{lO zjC*+R5r*XQ%FwupJ2%zE7YZ{Oy0oMvmf7gEscWhkn?V_ycS%E1rZl7{m!KyTro2(Y zA3V0yHuMJKaeq7S7FE6nYz?I0fF_{sGUY{|8+Z30XE;+#*S<|oQ%V!FtU$z3H@IpTD0A)d&H^a9!S;nK& zBz}k2FCs#-D28(m;$Wf3oRYDQh*ARv2`-sE4RJGy11yE$nnM3c3;T_ugZmB?3#lcA zO-3U$k|*jxyB=UusHMS4@Ul(NK8x!oNi%MC+oIkGgXBts`%!H&Qe(z&U$E(dp$VP* ztQ^@8b*1Xv49%_}EtT*Y&rA5{c9-?A(UAAg)`KKD6LoI8)9Iu{>6)aD;lX~Xk4)P1 zrsHHM*Xs@-wK_4IsOeOWuudNX1QDkd{!x6bEUj$f2MC6Bk8w+(YzYX0bHYytS1>|AWTF)m+G7_Md(3b+GiCFN8tWLFyGW{Tp z5uAyL-X@LXm}b3;L5frE)cTf1R9%~6g0sVW&-I+K>x7jhF5%DX2;-63%T$*m3lu6N zHjY3O15~=Wgg+VsbAco4Qpt_DflO|gJP5H2chmBsPQo4tDcl4ZIw>Cyo5_9r;303( z%HMvfXIekSh`2RGXqS5 z?V_K@5ujofK1!Q-BdUinVy)50)~Ee|RosI`w~_+q2jo?a>y0it654y}1Bog(V5kP_ zo!X|)k;dw_zA!egtt({(pLrQ9G({{+=`_?g)jA{1myp@aneSBn%$W~~pbpMB^C>+Z z?>J?A&}<0%1!bLVMzI{)^0IgFrnZU2UU(|c+wCU01|02cZ6M01u^xt`XNJaCYZ0*Z zz;hbCSrsN-f#Bih?pRk5SNaR8L&Ciydu=7i-c znOrjjW?pE4-^Ofi0QXBM*e2*MX^T6-gHU`eOqyvCLJ@S-o?(@NqSF-~H%z*A;P6UN ziEuSBBwSfgsb9p8l7jvQG3XmR=(N->dj};N^o{b;gHWJ}i?zyjTalXKTIS^n0ASi{ z_Yj-|Fwu{onRLU^O%RxL8N;C%zvxm^-L@kaVVeZ0b4xy~L9s$M&=k>kp2x7;E8yrN9 zsB@N)nMcY((Jiy6#!)ANbHXyQ78>U&I}AMtc7mL)sKIY5YK`!r*iG%pO#NqG*vsxz zs%%LJ;mLf>ys$%fi*r;vkeKxb? zfzP~fEG0W8=ky-UShxMU;dx&Y**wgKe)BxJv+iD;?*&B_B?-zXdcHzL1J?@CeUUQI@U4N1~ zB?R{%w893=tN0jzcrqo+ya;^tFj4nHJw7y&{ARlq|GfYDehUL*oI!jrzy-W z{UYX;7FqXr$Wr!6W*u7JkcT=!YtAkwo!Z?N^Z}e~82u-m`ECo2U)wO&3m5trlmy!xZXYQti?&PJ-p|bELhV3<9dM8o2+Ea}cY&R8kbuj1zx-7oM!O9%21XZx5xoRvqI z`wI2FEDAhB^w0{V9q|ZbR+SYyT)S)#?lc-0b^!x3cYUSyooYs}o|MZ7dlI>82}xk( z3{nIOt9nn|ep@D;gKZ&Dnn3ZZ$`+3(nJv)O(Ic7_jfrn9H(fH8K8y3uU5G&b^aWx=fL$i8uG>BEQVg84x>Nz~Gcc6w!AF5yf0 zkn1ek?fE^-e|B*umoo5R>QrO6IJgXBx4b!oUu-E7T*8W@q%D9v$ee^Zc`+8y6uzsTbLhXF8TRz#!R{%IJ#PG#;V$t8{h zWwqBx?1qQv)>v)UFxFhj)OzNHj(eTnSj-sG>Z!jWJY}b?Ww27--F*kk=L`9q*uA9b zYL)WpTG5p36Lrel8{4Q~KWcl#|dT4JZ18Lz-yY=(*Kl7o8EY{S2(=k6op4I6}%J{(Dz90m$)1ozS9 za>Wf(vum21B_A-3-E%nsgU3zghF`-sH7ukHAM1snwbI2S6)qkz=NU>g1Nt~NI6W|K zH@h5Y)?gl_ooYsvWL}n$keN$Ww82pdN`P(&Qi9nJ?PY}Ru8^u_@+n%kEN+;pgl0=vZuP!w*V0R+u3@|kIYo?^PUcC|> z40-Lw7skVbl>f*RRu$SG}~A}6R3A$EQaDCRQJ)JyJa)XX;SIeNWtPqPRfKAX92nY%_PJ=U6$)GCB0 zQA;a!voI_3O>8c7_)Xfm0ob9Pxf$~(vkX`EP-clJ?JUmwak&ZI5XX(?0p{;A2|f&% zQVDQ1t*HS=Y1EjE$(PnFLrj{st3krtu>8=(gh_$MB!vsp#vwR#c zeG8$;5w009i*LyN)y=Z$REAMUg0!SNw7DeYg&&Qy>ek+QB#l+NS*>m32hVw88Y$bk zQ`JIqo+zWF?UsLO;p=4C`C=Ly1xQ;w&$KO`W4iKP<*Um3#*Uv9$H_jnxv?t?R+p9F$&X>_f$4iWr zTD7$eN!z(H!)Z~*)$NgJ(>D7PA6H4nfwsNfTg4eSDdMEO?XJ~|Q#PsLChmE`QoFt>h4|l4lSp<2bwj#~V!siTHToA2w1xigc-xs8~t$ua$j{5Kn zl(b;?;xcxe@HFa_d9GK!^7L0JB_2M-XQrWUZr7?$rdBC3UVrp7L(vnQ1jrYD8NPi?s=q-8b8IN z7WLzgTBJPqDHgTpyg(l5qsC9Ms72=)MlDhv{1l5?blxJ5^ikudSk$8PAfpy34}Ka& zm1gj*XUOD7S)T=aiNo`_QZ6`uktdO(#!o|nWl7g7&q_&mpP4${eHQ9ePJ&{d@tN@i z$F-t!m!m45JosrTr4i;rAM?_3JwNyard6Nv`BUZU9cgXwGCEp3Bd(TkWtH-IzGg61 z3!6wR_6p1Y)N!Dwr->YRI%S}!1M2DJKvBQc)60RP?y9Gk14X@9PcH|GI=9GytLzD$ zuD+nQI+8u`XbTiwdmu0TWbIfEqid_%dOn|Zsh3>InU~Qlf~S=Squ2ybD-TAo3Z7OT zjA9o&tvndTGI&~fFp6#PwDMpS>)@&50o@_ohHnoEU~lOhbirllII{$IG~8=8I_VvW z@?44Cwe@T)J6*ktfNS7+rb6j@_D}`((*C=fnOL8-WD+kg6-`VpMOl6bfRePUM}{;)i&QF2+OBU}1UH6U>r z?isGzQ)`|F2u?G@x&P@s?h0d3f0e^}7WaBdC3l!gN^yVx13wYMQ;-0sEqQ?xugl`{zrIR31D zW=w(rXAtEuV}ez{Yh3V>cAAQ{_c92w-4xzy>J9;*BnucW~* z9-D@;;#bxd##OGp;YFde=Zrs!($L7p*3uQwtZhx!`!LYfw-9p5f}dCzPpd@>a1%9j-QRU>$yyJ>bCSn2V&tHDu?rfEE)UV6ll zixdV&JDS!p1u7f`xip@F9ETT#A^1LYNZc^6HcxrMCUX-*-v?|5ngt4QxHBhb{ zHLfjP(z0NwupwspWNm44dZnz1@p_AKYQj;LOa2by341tL{*t3Gm;9Z^B&cw8roZEu z1Qo8%^miVUpu*9aMrSx}bQJ4;9O-m)rqLObr()UBnMP+!feOdEG`eF7R5%7^X=?q4 zIjz^#9aG?iqdQAe)1Av&ciO(o;l#xH(q&zKON9+R`Mz}7(V3;G^&iWw&YW8RvFz&1 zsr4V`W-zu;qdy(FoKXL<;^@p}9i9Rej?P?m#veL33NIdI28UI!qMb6bIvfYhBuQ|z z<+9UrOp*l0%rt6~;xI`P92?W<%t@2rC`+R_CryH*DUH^gGznTY+HT4rAni7_WIVAU z=+&uC=UjEwqtjJPusvMWc}XSZxbP=Qg4Tyt5^Tr_!er)jt~x5xbX|^APNJi@+GkB> znSr6_lbqqZ>Zr#REd!J0fTJEww>fDN9QC*|ov!k#V@0lLnV2va+&eEnNBxx&C!ge&z!V4I>w{vI3JOOF+5_|90h6m&M8pg z=*X+%4JXFog`*}-*Et1V^cj-2$9(dhkL!H~q{9JYy=-e`@x;v7>yDl@7KB5`D2B@z z@^IZzmBx^m0u_$7ygFW=F%B5c+XBwko3UcA-Ok-C}feJ@w zUeoPm3RF1OrCCxwc`9x=^E$@Bm;x1!?z}dhr9DO)x#8$eV`EH#7XyakPrfg`p>?M1 zza0)ttS`Oc=*(+V>pyO|I&*6M#|>9!PObmA;pj|bZ#j}NA?xObqce@YHCZaSqC34) zoa0era7~sB|BfKmg1s-}GkDtz6I@ZQEGf_DSu>UQ^M%s3Q`hDEbo5p<#aqHbi!!0-V%OMtzEMjy3et;WkEawQ{ zyS;mTx4bE#=D6RWv{(|C@aJ_EC7ZHm6(U=;YmjLRi5M1dEQm|^qcKnp5Mf>=#1isY zTrzo(j%8c`y}YQCFrtJsC6lO+Qr5)7W^x}tc*tGcjr|_#>n8r~ql!B3$uF|yIJr{+ zX;K-~7FAEI2IwJtoY$X0UYgSxA{C9xtX1 zL+tTAK3|2tom1%1i{)bznPx@#IlOU;sNK~`rOd6Rou;TXlTheNrFG`sX~tT0l$Ik2 zlsQ7CH;m55_OJ8`vDbI~33yUYid{KDxIJ z4~H}drw)fSCnOAqH0KBmhcu^e42LvlROCbQ3(Kx=IvfgUZe$(`IGjkGbzvHZvr=Om z&Pfeujx88k7_+xOA5gY1_wvJhP__qqSNUMLIK6pqFr2+%d@!87IWixPUv|ssH7{%( z>KsJ`@UXWuyJIA%y%A;*D8IQkvJHcEFNGQeD;e*e8#)M>-)hbw&qZKO(-;IxJ~-FK z6aXCot7%CEu$s110MxXm0-&Zn6#z9YssN~IQw2bct}g&;wEZAZesgcUDFR!hz6{+8eWmLB{Ek)`K8v zJfs)q4FZ(fH@$>y5TsIW>6vGIy%nWu(Xp;Hpb?RwfJQ!s0-EML6woy0p@60-4+S(0 zc_^T1#)AQ!v*U&W7ULr@7ULrTi}4YF#rO!oVtfQ(F+KutI3Fpw*-=9F02=m$>p?t^ z&Ke;+DVr`>yRV$N~2l7FTyxDXoM;eQ^!pkHnxOoSA1H1#@{EF1)X8)d16_- z`iCEUke@}y8^NlQtWxm&mY#%6HtL#iKyn;)4^lsVUa|C?$D>!y&np`7H!lnAMt}4y zQVGk=qNIp;^ei~aR!?3j#%9!OCWqWoXrIlam*Q7`JV?aI#w9(o@;QXv#`uP)oyGOb zqTUFDL=jq~WzwUgo;!a`d8`^ci~XU+Skxl+=we(Rs41lw>ptaYAs3F|8Yyn1mxdP+;*opON9`(^k$Qa9 zlj#A-yuw;OTY$cf|Gl)zK5z1$`&JtI{q*Zc(h&HsyD9{9C`~Z;LfRnh*I!Dj%)kwEk12WiOC@-bD9S}YJAV7d02eEn|`%%-}A(M z%M)k0VbfOAAQI?&f9&Due@MTk3Fd4H8~2w}1IB*+YiXQ?`$Z2vAAP^+f%|8kIGdZz zfqJEgJWQ6pIbKla|+F`MYVHh5L|)&)-233!y?yj~w{Q_K!Sy{3}l$ zpY6>6?>-s&*B)9*9$H@V@cBC)TGl;qf6D{+T-qyI{(bik`uSqN+5(Le=aawRwy4vP zPfxz*Dcj2){`u(h==(KKoR5~G zao_OZ`zIcG`ClG5pML%|k6ir~4_`jvDet#EeEBb)e81=6sjs}Y-?DZ7e!;XK_RwrC z1&hxY=cC0J=i{lbKl1f&zPP{Y;ptzrq^2Pco1N1sQ?R-BJ@`Cqkqc>TDiwO@ks+Y# z)5YKS#QAvT34G&zylgD58!2L%L+`sqK+gChs9=6QAoaSL`(1t9{zO>etXyJT)ZOucAFOSC^ z=W8=*aV^PSz2>7ORdr5U9~?xouf6%;ipKp@CqEOkLu?Z>H|Hzw*F8kv^R$_N>|u-# zpRausEr+kY`FQ1vE1K`G0?=|qg?#kA>EVm7yuP%)xN*{sgYVm(y1e6QtUjLlXr96O z+fh;39fzlr$YWad>yvR`+_dN$r{0Rv?9*Yse0_ZJ#rfpr?}M0L{rB}T^nouAA1y`W ze7q`}*2gO!J|E3KxN+*kN6U9nkY3*V>`q^KefWHFzO=q__~3kTKEC+i#)&Ihj-q)K z#pi?b#rg6r3ir6v`tbSUiqiLeRB*3M+IbE8r6|5}XnEXeefY+aXP@5iPv@cDT9 zF;Bnx15bPVhzHJx52W;!qvWB_H`n3A_kpLp93=L#=EokmBM;o)^uYP#)K`w8aK5y@ zxbuW>99n+p;j>3vymN-X?va=O>WSk-dGB-21Lw<^E3|qaAKW-`K3_&rd|arKZo7-q zeQ__!=%9^Fgh$N;3;j-;56l8U7HM^NwHm8(ak)~h)5UVVpd)bPnKYKp&lL;YpMZND{(KT1>rF}AySEu8$Jo#JFzTF$%IRUb-g%&saKju|{yOlP zTydM!uv}jSioIqhXy}XfMDs|M3K^R6x5bx)UWUXRYaQ&OY51Hi|Zy-+H?8gjKNYQOa@v&S=b&@pWX16UW*#%WgdVl>F3nQ=_dRg~6 z`TW4-&7=lF%!-*pfH9jZV~RgzuW|$y!vI(=Eu}ThU?X1YtbX z2e*QD*x=&bauNnIRxbMGn~2zK+MT3Z?{pKhc$YiKYrzAGwD&t#F_}hY(s0-F+PlFi z$PzAnYVn`Sl})L1Q?un`cv%()QAZQc_IO=vtmVHh*ssL&PN+etfy`FaTDr=cAj@uM z*PYCm`QlZJulJqAOc5&7!mz*mQyOokL1lVP=%?h5S7t(T)q4t^g;o$Afx*T>P^@|AkZcf+#G zQ{0mMnw#J1ZtWyG(h7u7R|nQ$4?~?2F@NVZlVM*CE}6Xu?CTdZZNjZW9}|0doL7mT zaw?JAoR+@sC?J{bHMgWI4riI|%8F$k-?4c;ZJT^wa=vHE`eHWUYrWYnEx6gb6)LlF zYLxGb4ohXWi=YlNm@$0x?KYaHy}ZV^Cy#h@+E_ zYrMacm#Z^Gi#1RI7sDPP*_)g28>B@Ds>R(g)ZH~0s+N(P!2l?3wsF^fAjKeos>a1J z#4+C0$JN)>4`M1mP@aR~29OjoTw}%tq(z`QTz#EfU0hsUVCM2N2moa^KiGC-H6y}Y zh%-I?9DQ9;%@t)}-~;PWGntn@6R1NBYA#Gi2uwXACsbzV_1MR&>i4#^>YnJ2~$QMu(B{VOJ6CV z5<#dkh*6MWXJlqL02JnPbes%|FPIV^S9eDrSg5dpl^p%{%n|5Cus=YN7~&cc0#m`n zZ~`dPv|1++qyiQSAm_OG`?$CU!PK#X)fxM^MRNkx!QvKGjR3R+VDHxdP8ye{w85kNX z1g932WhSR81SBSBD;O#SdntscCMme4WR?JRiUJJ*fhGvWpa-QlLFo#{U;qFAuV*U( z@&Es?U`$F$Na09GNT@iz^_H-QAqV5e#ofVsHt%1*e(`+onu3nSo6S9%8aX>auKfQW E0G?AaNdN!< literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.fit.qmsg b/cpld/db/GR8RAM.fit.qmsg new file mode 100755 index 0000000..97ecbf4 --- /dev/null +++ b/cpld/db/GR8RAM.fit.qmsg @@ -0,0 +1,58 @@ +{ "Info" "IQCU_PARALLEL_AUTODETECT_MULTIPLE_PROCESSORS" "2 2 " "Parallel compilation is enabled and will use 2 of the 2 processors detected" { } { } 0 20030 "Parallel compilation is enabled and will use %1!i! of the %2!i! processors detected" 0 0 "Fitter" 0 -1 1616136954485 ""} +{ "Info" "IMPP_MPP_USER_DEVICE" "GR8RAM EPM240T100C5 " "Selected device EPM240T100C5 for design \"GR8RAM\"" { } { } 0 119006 "Selected device %2!s! for design \"%1!s!\"" 0 0 "Fitter" 0 -1 1616136954516 ""} +{ "Info" "ICUT_CUT_USING_OPERATING_CONDITION" "Low junction temperature 0 degrees C " "Low junction temperature is 0 degrees C" { } { } 0 21077 "%1!s! is %2!s!" 0 0 "Fitter" 0 -1 1616136955094 ""} +{ "Info" "ICUT_CUT_USING_OPERATING_CONDITION" "High junction temperature 85 degrees C " "High junction temperature is 85 degrees C" { } { } 0 21077 "%1!s! is %2!s!" 0 0 "Fitter" 0 -1 1616136955094 ""} +{ "Info" "IFITCC_FITCC_INFO_STANDARD_FIT_COMPILATION_ON" "" "Fitter is performing a Standard Fit compilation using maximum Fitter effort to optimize design performance" { } { } 0 171004 "Fitter is performing a Standard Fit compilation using maximum Fitter effort to optimize design performance" 0 0 "Fitter" 0 -1 1616136955407 ""} +{ "Warning" "WCPT_FEATURE_DISABLED_POST" "LogicLock " "Feature LogicLock is only available with a valid subscription license. You can purchase a software subscription to gain full access to this feature." { } { } 0 292013 "Feature %1!s! is only available with a valid subscription license. You can purchase a software subscription to gain full access to this feature." 0 0 "Fitter" 0 -1 1616136955438 ""} +{ "Info" "IFSAC_FSAC_MIGRATION_NOT_SELECTED" "" "Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices" { { "Info" "IFSAC_FSAC_MIGRATION_NOT_SELECTED_SUB" "EPM240T100I5 " "Device EPM240T100I5 is compatible" { } { } 2 176445 "Device %1!s! is compatible" 0 0 "Quartus II" 0 -1 1616136955813 ""} { "Info" "IFSAC_FSAC_MIGRATION_NOT_SELECTED_SUB" "EPM240T100A5 " "Device EPM240T100A5 is compatible" { } { } 2 176445 "Device %1!s! is compatible" 0 0 "Quartus II" 0 -1 1616136955813 ""} { "Info" "IFSAC_FSAC_MIGRATION_NOT_SELECTED_SUB" "EPM570T100C5 " "Device EPM570T100C5 is compatible" { } { } 2 176445 "Device %1!s! is compatible" 0 0 "Quartus II" 0 -1 1616136955813 ""} { "Info" "IFSAC_FSAC_MIGRATION_NOT_SELECTED_SUB" "EPM570T100I5 " "Device EPM570T100I5 is compatible" { } { } 2 176445 "Device %1!s! is compatible" 0 0 "Quartus II" 0 -1 1616136955813 ""} { "Info" "IFSAC_FSAC_MIGRATION_NOT_SELECTED_SUB" "EPM570T100A5 " "Device EPM570T100A5 is compatible" { } { } 2 176445 "Device %1!s! is compatible" 0 0 "Quartus II" 0 -1 1616136955813 ""} } { } 2 176444 "Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices" 0 0 "Fitter" 0 -1 1616136955813 ""} +{ "Critical Warning" "WFIOMGR_PINS_MISSING_LOCATION_INFO" "73 73 " "No exact pin location assignment(s) for 73 pins of 73 total pins" { { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nIOSEL " "Pin nIOSEL not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nIOSEL } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 66 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nIOSEL } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 358 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nIOSTRB " "Pin nIOSTRB not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nIOSTRB } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 66 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nIOSTRB } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 360 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RAdir " "Pin RAdir not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RAdir } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 88 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RAdir } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 362 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RDdir " "Pin RDdir not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RDdir } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 130 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDdir } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 363 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "DMAout " "Pin DMAout not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { DMAout } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 79 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { DMAout } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 365 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "INTout " "Pin INTout not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { INTout } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 80 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { INTout } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 367 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nRESout " "Pin nRESout not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nRESout } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 43 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nRESout } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 203 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SBA\[0\] " "Pin SBA\[0\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SBA[0] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SBA[0] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 64 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SBA\[1\] " "Pin SBA\[1\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SBA[1] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SBA[1] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 62 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[0\] " "Pin SA\[0\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[0] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[0] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 91 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[1\] " "Pin SA\[1\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[1] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[1] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 89 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[2\] " "Pin SA\[2\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[2] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[2] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 87 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[3\] " "Pin SA\[3\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[3] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[3] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 84 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[4\] " "Pin SA\[4\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[4] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[4] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 82 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[5\] " "Pin SA\[5\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[5] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[5] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 80 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[6\] " "Pin SA\[6\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[6] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[6] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 78 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[7\] " "Pin SA\[7\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[7] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[7] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 76 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[8\] " "Pin SA\[8\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[8] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[8] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 74 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[9\] " "Pin SA\[9\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[9] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[9] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 72 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[10\] " "Pin SA\[10\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[10] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[10] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 70 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[11\] " "Pin SA\[11\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[11] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[11] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 68 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SA\[12\] " "Pin SA\[12\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SA[12] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 455 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SA[12] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 66 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nRCS " "Pin nRCS not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nRCS } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 449 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nRCS } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 323 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nRAS " "Pin nRAS not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nRAS } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 450 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nRAS } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 324 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nCAS " "Pin nCAS not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nCAS } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 451 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nCAS } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 325 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nSWE " "Pin nSWE not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nSWE } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 452 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nSWE } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 209 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "DQML " "Pin DQML not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { DQML } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 454 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { DQML } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 236 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "DQMH " "Pin DQMH not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { DQMH } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 453 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { DQMH } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 228 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RCKE " "Pin RCKE not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RCKE } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 448 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RCKE } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 322 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nFCS " "Pin nFCS not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nFCS } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 177 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nFCS } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 368 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "FCK " "Pin FCK not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { FCK } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 179 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { FCK } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 240 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "MOSI " "Pin MOSI not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { MOSI } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 181 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { MOSI } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 344 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[0\] " "Pin RD\[0\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[0] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[0] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 140 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[1\] " "Pin RD\[1\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[1] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[1] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 141 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[2\] " "Pin RD\[2\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[2] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[2] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 142 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[3\] " "Pin RD\[3\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[3] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[3] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 143 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[4\] " "Pin RD\[4\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[4] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[4] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 144 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[5\] " "Pin RD\[5\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[5] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[5] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 55 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[6\] " "Pin RD\[6\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[6] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[6] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 57 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RD\[7\] " "Pin RD\[7\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[7] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[7] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 59 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[0\] " "Pin SD\[0\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[0] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[0] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 106 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[1\] " "Pin SD\[1\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[1] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[1] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 107 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[2\] " "Pin SD\[2\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[2] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[2] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 108 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[3\] " "Pin SD\[3\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[3] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[3] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 109 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[4\] " "Pin SD\[4\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[4] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[4] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 110 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[5\] " "Pin SD\[5\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[5] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[5] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 111 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[6\] " "Pin SD\[6\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[6] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[6] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 112 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "SD\[7\] " "Pin SD\[7\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { SD[7] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { SD[7] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 113 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "DMAin " "Pin DMAin not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { DMAin } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 78 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { DMAin } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 364 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "INTin " "Pin INTin not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { INTin } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 78 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { INTin } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 366 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "C25M " "Pin C25M not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { C25M } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 11 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { C25M } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 354 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nWE " "Pin nWE not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nWE } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 85 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nWE } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 361 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[8\] " "Pin RA\[8\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[8] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[8] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 187 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[9\] " "Pin RA\[9\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[9] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[9] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 188 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[10\] " "Pin RA\[10\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[10] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[10] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 189 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[11\] " "Pin RA\[11\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[11] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[11] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 190 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[14\] " "Pin RA\[14\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[14] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[14] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 193 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[15\] " "Pin RA\[15\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[15] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[15] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 194 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[12\] " "Pin RA\[12\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[12] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[12] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 191 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[13\] " "Pin RA\[13\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[13] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[13] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 192 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[1\] " "Pin RA\[1\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[1] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[1] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 180 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[0\] " "Pin RA\[0\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[0] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[0] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 179 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[2\] " "Pin RA\[2\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[2] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[2] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 181 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[3\] " "Pin RA\[3\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[3] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[3] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 182 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[4\] " "Pin RA\[4\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[4] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[4] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 183 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[5\] " "Pin RA\[5\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[5] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[5] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 184 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[6\] " "Pin RA\[6\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[6] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[6] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 185 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "RA\[7\] " "Pin RA\[7\] not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RA[7] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 84 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RA[7] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 186 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nDEVSEL " "Pin nDEVSEL not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nDEVSEL } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 66 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nDEVSEL } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 359 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "MISO " "Pin MISO not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { MISO } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 184 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { MISO } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 369 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nRES " "Pin nRES not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nRES } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 18 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nRES } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 357 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "PHI0 " "Pin PHI0 not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { PHI0 } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 11 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { PHI0 } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 355 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} { "Info" "IFIOMGR_PIN_MISSING_LOCATION_INFO" "nBOD " "Pin nBOD not assigned to an exact location on the device" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { nBOD } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 18 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { nBOD } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 356 9224 9983 0} } } } } 0 169086 "Pin %1!s! not assigned to an exact location on the device" 0 0 "Quartus II" 0 -1 1616136955829 ""} } { } 1 169085 "No exact pin location assignment(s) for %1!d! pins of %2!d! total pins" 0 0 "Fitter" 0 -1 1616136955829 ""} +{ "Critical Warning" "WSTA_SDC_NOT_FOUND" "GR8RAM.sdc " "Synopsys Design Constraints File file not found: 'GR8RAM.sdc'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design." { } { } 1 332012 "Synopsys Design Constraints File file not found: '%1!s!'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design." 0 0 "Fitter" 0 -1 1616136955985 ""} +{ "Info" "ISTA_NO_CLOCK_FOUND_NO_DERIVING_MSG" "base clocks " "No user constrained base clocks found in the design" { } { } 0 332144 "No user constrained %1!s! found in the design" 0 0 "Fitter" 0 -1 1616136956001 ""} +{ "Info" "ISTA_DEFAULT_TDC_OPTIMIZATION_GOALS" "" "Timing requirements not specified -- optimizing circuit to achieve the following default global requirements" { { "Info" "ISTA_ASSUMED_DEFAULT_TDC_REQUIREMENT" "" "Assuming a default timing requirement" { } { } 0 332127 "Assuming a default timing requirement" 0 0 "Quartus II" 0 -1 1616136956016 ""} } { } 0 332128 "Timing requirements not specified -- optimizing circuit to achieve the following default global requirements" 0 0 "Fitter" 0 -1 1616136956016 ""} +{ "Info" "ISTA_REPORT_CLOCKS_INFO" "Found 3 clocks " "Found 3 clocks" { { "Info" "ISTA_REPORT_CLOCKS_INFO" " Period Clock Name " " Period Clock Name" { } { } 0 332111 "%1!s!" 0 0 "Quartus II" 0 -1 1616136956016 ""} { "Info" "ISTA_REPORT_CLOCKS_INFO" "======== ============ " "======== ============" { } { } 0 332111 "%1!s!" 0 0 "Quartus II" 0 -1 1616136956016 ""} { "Info" "ISTA_REPORT_CLOCKS_INFO" " 1.000 ARCLK " " 1.000 ARCLK" { } { } 0 332111 "%1!s!" 0 0 "Quartus II" 0 -1 1616136956016 ""} { "Info" "ISTA_REPORT_CLOCKS_INFO" " 1.000 C25M " " 1.000 C25M" { } { } 0 332111 "%1!s!" 0 0 "Quartus II" 0 -1 1616136956016 ""} { "Info" "ISTA_REPORT_CLOCKS_INFO" " 1.000 DRCLK " " 1.000 DRCLK" { } { } 0 332111 "%1!s!" 0 0 "Quartus II" 0 -1 1616136956016 ""} } { } 0 332111 "%1!s!" 0 0 "Fitter" 0 -1 1616136956016 ""} +{ "Extra Info" "IFSAC_FSAC_START_REG_LOCATION_PROCESSING" "" "Performing register packing on registers with non-logic cell location assignments" { } { } 1 176273 "Performing register packing on registers with non-logic cell location assignments" 1 0 "Fitter" 0 -1 1616136956032 ""} +{ "Extra Info" "IFSAC_FSAC_FINISH_REG_LOCATION_PROCESSING" "" "Completed register packing on registers with non-logic cell location assignments" { } { } 1 176274 "Completed register packing on registers with non-logic cell location assignments" 1 0 "Fitter" 0 -1 1616136956032 ""} +{ "Info" "IFYGR_FYGR_OPINFO_COMPLETED_OP" "User Assigned Global Signals Promotion Operation " "Completed User Assigned Global Signals Promotion Operation" { } { } 0 186079 "Completed %1!s!" 0 0 "Fitter" 0 -1 1616136956032 ""} +{ "Info" "IFYGR_FYGR_AUTO_GLOBAL_ASSIGNED_ALL_TO_GLOBAL" "C25M Global clock in PIN 14 " "Automatically promoted signal \"C25M\" to use Global clock in PIN 14" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 11 -1 0 } } } 0 186215 "Automatically promoted signal \"%1!s!\" to use %2!s!" 0 0 "Fitter" 0 -1 1616136956063 ""} +{ "Info" "IFYGR_FYGR_OPINFO_COMPLETED_OP" "Auto Global Promotion Operation " "Completed Auto Global Promotion Operation" { } { } 0 186079 "Completed %1!s!" 0 0 "Fitter" 0 -1 1616136956063 ""} +{ "Info" "IFSAC_FSAC_REGISTER_PACKING_START_FYGR_REGPACKING_INFO" "" "Starting register packing" { } { } 0 176234 "Starting register packing" 0 0 "Fitter" 0 -1 1616136956063 ""} +{ "Info" "IFYGR_FYGR_INFO_AUTO_MODE_REGISTER_PACKING" "Auto Normal " "Fitter is using Normal packing mode for logic elements with Auto setting for Auto Packed Registers logic option" { } { } 0 186391 "Fitter is using %2!s! packing mode for logic elements with %1!s! setting for Auto Packed Registers logic option" 0 0 "Fitter" 0 -1 1616136956126 ""} +{ "Extra Info" "IFSAC_FSAC_START_LUT_PACKING" "" "Moving registers into LUTs to improve timing and density" { } { } 1 176244 "Moving registers into LUTs to improve timing and density" 1 0 "Fitter" 0 -1 1616136956126 ""} +{ "Info" "IFYGR_FYGR_NO_REGS_IN_IOS_HEADER" "" "Started processing fast register assignments" { } { } 0 186468 "Started processing fast register assignments" 0 0 "Fitter" 0 -1 1616136956204 ""} +{ "Info" "IFYGR_FYGR_NO_REGS_IN_IOS_FOOTER" "" "Finished processing fast register assignments" { } { } 0 186469 "Finished processing fast register assignments" 0 0 "Fitter" 0 -1 1616136956219 ""} +{ "Extra Info" "IFSAC_FSAC_FINISH_LUT_PACKING" "00:00:00 " "Finished moving registers into LUTs: elapsed time is 00:00:00" { } { } 1 176245 "Finished moving registers into LUTs: elapsed time is %1!s!" 1 0 "Fitter" 0 -1 1616136956219 ""} +{ "Info" "IFSAC_FSAC_REGISTER_PACKING_FINISH_REGPACKING_INFO" "" "Finished register packing" { } { } 0 176235 "Finished register packing" 0 0 "Fitter" 0 -1 1616136956219 ""} +{ "Info" "IFSAC_FSAC_IO_BANK_PIN_GROUP_STATISTICS" "I/O pins that need to be placed that use the same VCCIO and VREF, before I/O pin placement " "Statistics of I/O pins that need to be placed that use the same VCCIO and VREF, before I/O pin placement" { { "Info" "IFSAC_FSAC_SINGLE_IOC_GROUP_STATISTICS" "72 unused 3.3V 26 30 16 " "Number of I/O pins in group: 72 (unused VREF, 3.3V VCCIO, 26 input, 30 output, 16 bidirectional)" { { "Info" "IFSAC_FSAC_IO_STDS_IN_IOC_GROUP" "3.3-V LVTTL. " "I/O standards used: 3.3-V LVTTL." { } { } 0 176212 "I/O standards used: %1!s!" 0 0 "Quartus II" 0 -1 1616136956251 ""} } { } 0 176211 "Number of I/O pins in group: %1!d! (%2!s! VREF, %3!s! VCCIO, %4!d! input, %5!d! output, %6!d! bidirectional)" 0 0 "Quartus II" 0 -1 1616136956251 ""} } { } 0 176214 "Statistics of %1!s!" 0 0 "Fitter" 0 -1 1616136956251 ""} +{ "Info" "IFSAC_FSAC_IO_STATS_BEFORE_AFTER_PLACEMENT" "before " "I/O bank details before I/O pin placement" { { "Info" "IFSAC_FSAC_IO_BANK_PIN_GROUP_STATISTICS" "I/O banks " "Statistics of I/O banks" { { "Info" "IFSAC_FSAC_SINGLE_IO_BANK_STATISTICS" "1 does not use undetermined 1 37 " "I/O bank number 1 does not use VREF pins and has undetermined VCCIO pins. 1 total pin(s) used -- 37 pins available" { } { } 0 176213 "I/O bank number %1!s! %2!s! VREF pins and has %3!s! VCCIO pins. %4!d! total pin(s) used -- %5!d! pins available" 0 0 "Quartus II" 0 -1 1616136956251 ""} { "Info" "IFSAC_FSAC_SINGLE_IO_BANK_STATISTICS" "2 does not use undetermined 0 42 " "I/O bank number 2 does not use VREF pins and has undetermined VCCIO pins. 0 total pin(s) used -- 42 pins available" { } { } 0 176213 "I/O bank number %1!s! %2!s! VREF pins and has %3!s! VCCIO pins. %4!d! total pin(s) used -- %5!d! pins available" 0 0 "Quartus II" 0 -1 1616136956251 ""} } { } 0 176214 "Statistics of %1!s!" 0 0 "Quartus II" 0 -1 1616136956251 ""} } { } 0 176215 "I/O bank details %1!s! I/O pin placement" 0 0 "Fitter" 0 -1 1616136956251 ""} +{ "Info" "IFITCC_FITTER_PREPARATION_END" "00:00:01 " "Fitter preparation operations ending: elapsed time is 00:00:01" { } { } 0 171121 "Fitter preparation operations ending: elapsed time is %1!s!" 0 0 "Fitter" 0 -1 1616136956282 ""} +{ "Info" "IFITAPI_FITAPI_VPR_FITTER_PLACEMENT_PREP_START" "" "Fitter placement preparation operations beginning" { } { } 0 170189 "Fitter placement preparation operations beginning" 0 0 "Fitter" 0 -1 1616136956594 ""} +{ "Info" "IFITAPI_FITAPI_VPR_FITTER_PLACEMENT_PREP_END" "00:00:00 " "Fitter placement preparation operations ending: elapsed time is 00:00:00" { } { } 0 170190 "Fitter placement preparation operations ending: elapsed time is %1!s!" 0 0 "Fitter" 0 -1 1616136956626 ""} +{ "Info" "IVPR20K_VPR_TIMING_ANALYSIS_TIME" "0.05 " "Total time spent on timing analysis during the Fitter is 0.05 seconds." { } { } 0 11888 "Total time spent on timing analysis during the Fitter is %1!s! seconds." 0 0 "Fitter" 0 -1 1616136956626 ""} +{ "Info" "IFITAPI_FITAPI_INFO_FITTER_RETRY_TIGHTER_LUT_REG_PACKING" "" "Fitter cannot place all nodes on current device -- Fitter will automatically make another fitting attempt and tightly pack logic elements" { } { } 0 170216 "Fitter cannot place all nodes on current device -- Fitter will automatically make another fitting attempt and tightly pack logic elements" 0 0 "Fitter" 0 -1 1616136956641 ""} +{ "Info" "IFSAC_FSAC_REGISTER_PACKING_START_FYGR_REGPACKING_INFO" "" "Starting register packing" { } { } 0 176234 "Starting register packing" 0 0 "Fitter" 0 -1 1616136956641 ""} +{ "Info" "IFYGR_FYGR_INFO_AUTO_MODE_REGISTER_PACKING" "Auto Minimize Area " "Fitter is using Minimize Area packing mode for logic elements with Auto setting for Auto Packed Registers logic option" { } { } 0 186391 "Fitter is using %2!s! packing mode for logic elements with %1!s! setting for Auto Packed Registers logic option" 0 0 "Fitter" 0 -1 1616136956657 ""} +{ "Info" "IFYGR_FYGR_NO_REGS_IN_IOS_HEADER" "" "Started processing fast register assignments" { } { } 0 186468 "Started processing fast register assignments" 0 0 "Fitter" 0 -1 1616136956751 ""} +{ "Info" "IFYGR_FYGR_NO_REGS_IN_IOS_FOOTER" "" "Finished processing fast register assignments" { } { } 0 186469 "Finished processing fast register assignments" 0 0 "Fitter" 0 -1 1616136956751 ""} +{ "Extra Info" "IFSAC_FSAC_FINISH_LUT_PACKING" "00:00:00 " "Finished moving registers into LUTs: elapsed time is 00:00:00" { } { } 1 176245 "Finished moving registers into LUTs: elapsed time is %1!s!" 1 0 "Fitter" 0 -1 1616136956751 ""} +{ "Info" "IFSAC_FSAC_REGISTER_PACKING_FINISH_REGPACKING_INFO" "" "Finished register packing" { } { } 0 176235 "Finished register packing" 0 0 "Fitter" 0 -1 1616136956751 ""} +{ "Info" "IFITCC_FITTER_PREPARATION_END" "00:00:00 " "Fitter preparation operations ending: elapsed time is 00:00:00" { } { } 0 171121 "Fitter preparation operations ending: elapsed time is %1!s!" 0 0 "Fitter" 0 -1 1616136956751 ""} +{ "Info" "IFITAPI_FITAPI_VPR_FITTER_PLACEMENT_PREP_START" "" "Fitter placement preparation operations beginning" { } { } 0 170189 "Fitter placement preparation operations beginning" 0 0 "Fitter" 0 -1 1616136956907 ""} +{ "Info" "IFITAPI_FITAPI_VPR_FITTER_PLACEMENT_PREP_END" "00:00:00 " "Fitter placement preparation operations ending: elapsed time is 00:00:00" { } { } 0 170190 "Fitter placement preparation operations ending: elapsed time is %1!s!" 0 0 "Fitter" 0 -1 1616136956938 ""} +{ "Info" "IVPR20K_VPR_TIMING_ANALYSIS_TIME" "0.02 " "Total time spent on timing analysis during the Fitter is 0.02 seconds." { } { } 0 11888 "Total time spent on timing analysis during the Fitter is %1!s! seconds." 0 0 "Fitter" 0 -1 1616136956938 ""} +{ "Info" "IFITAPI_FITAPI_INFO_FITTER_RETRY_TIGHTER_LUT_REG_PACKING" "" "Fitter cannot place all nodes on current device -- Fitter will automatically make another fitting attempt and tightly pack logic elements" { } { } 0 170216 "Fitter cannot place all nodes on current device -- Fitter will automatically make another fitting attempt and tightly pack logic elements" 0 0 "Fitter" 0 -1 1616136956938 ""} +{ "Info" "IFSAC_FSAC_REGISTER_PACKING_START_FYGR_REGPACKING_INFO" "" "Starting register packing" { } { } 0 176234 "Starting register packing" 0 0 "Fitter" 0 -1 1616136956938 ""} +{ "Info" "IFYGR_FYGR_INFO_AUTO_MODE_REGISTER_PACKING" "Auto Minimize Area with Chains " "Fitter is using Minimize Area with Chains packing mode for logic elements with Auto setting for Auto Packed Registers logic option" { } { } 0 186391 "Fitter is using %2!s! packing mode for logic elements with %1!s! setting for Auto Packed Registers logic option" 0 0 "Fitter" 0 -1 1616136956938 ""} +{ "Info" "IFYGR_FYGR_NO_REGS_IN_IOS_HEADER" "" "Started processing fast register assignments" { } { } 0 186468 "Started processing fast register assignments" 0 0 "Fitter" 0 -1 1616136956954 ""} +{ "Info" "IFYGR_FYGR_NO_REGS_IN_IOS_FOOTER" "" "Finished processing fast register assignments" { } { } 0 186469 "Finished processing fast register assignments" 0 0 "Fitter" 0 -1 1616136956954 ""} +{ "Extra Info" "IFSAC_FSAC_FINISH_LUT_PACKING" "00:00:00 " "Finished moving registers into LUTs: elapsed time is 00:00:00" { } { } 1 176245 "Finished moving registers into LUTs: elapsed time is %1!s!" 1 0 "Fitter" 0 -1 1616136956954 ""} +{ "Info" "IFSAC_FSAC_REGISTER_PACKING_FINISH_REGPACKING_INFO" "" "Finished register packing" { } { } 0 176235 "Finished register packing" 0 0 "Fitter" 0 -1 1616136956954 ""} +{ "Info" "IFITCC_FITTER_PREPARATION_END" "00:00:00 " "Fitter preparation operations ending: elapsed time is 00:00:00" { } { } 0 171121 "Fitter preparation operations ending: elapsed time is %1!s!" 0 0 "Fitter" 0 -1 1616136956954 ""} +{ "Info" "IFITAPI_FITAPI_VPR_FITTER_PLACEMENT_PREP_START" "" "Fitter placement preparation operations beginning" { } { } 0 170189 "Fitter placement preparation operations beginning" 0 0 "Fitter" 0 -1 1616136957266 ""} +{ "Error" "EFITAPI_FITAPI_VPR_STATUS_FAILED_TOO_MANY_BLES" "313 240 logic cell " "Design contains 313 blocks of type logic cell. However, device contains only 240." { } { { "c:/altera/13.0sp1/quartus/common/advisors/oa_resource_table.xml" "" { Advisor "Z:/Repos/GR8RAM/cpld/" "LE" } } } 0 170011 "Design contains %1!d! blocks of type %3!s!. However, device contains only %2!d!." 0 0 "Fitter" 0 -1 1616136957297 ""} +{ "Info" "IFITAPI_FITAPI_VPR_FITTER_PLACEMENT_PREP_END" "00:00:00 " "Fitter placement preparation operations ending: elapsed time is 00:00:00" { } { } 0 170190 "Fitter placement preparation operations ending: elapsed time is %1!s!" 0 0 "Fitter" 0 -1 1616136957297 ""} +{ "Info" "IVPR20K_VPR_TIMING_ANALYSIS_TIME" "0.02 " "Total time spent on timing analysis during the Fitter is 0.02 seconds." { } { } 0 11888 "Total time spent on timing analysis during the Fitter is %1!s! seconds." 0 0 "Fitter" 0 -1 1616136957297 ""} +{ "Error" "EFITCC_FITCC_FAIL" "" "Can't fit design in device" { } { } 0 171000 "Can't fit design in device" 0 0 "Fitter" 0 -1 1616136957407 ""} +{ "Warning" "WFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE" "8 " "Following 8 pins have no output enable or a GND or VCC output enable - later changes to this connectivity may change fitting results" { { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[0\] a permanently disabled " "Pin RD\[0\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[0] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[0] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 140 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[1\] a permanently disabled " "Pin RD\[1\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[1] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[1] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 141 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[2\] a permanently disabled " "Pin RD\[2\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[2] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[2] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 142 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[3\] a permanently disabled " "Pin RD\[3\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[3] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[3] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 143 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[4\] a permanently disabled " "Pin RD\[4\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[4] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[4] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 144 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[5\] a permanently disabled " "Pin RD\[5\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[5] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[5] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 55 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[6\] a permanently disabled " "Pin RD\[6\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[6] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[6] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 57 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} { "Info" "IFIOMGR_BIDIR_WITH_TRIVIAL_OUTPUT_ENABLE_SUB" "RD\[7\] a permanently disabled " "Pin RD\[7\] has a permanently disabled output enable" { } { { "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" "" { PinPlanner "c:/altera/13.0sp1/quartus/bin/pin_planner.ppl" { RD[7] } } } { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 -1 0 } } { "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/13.0sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { RD[7] } "NODE_NAME" } } { "temporary_test_loc" "" { Generic "Z:/Repos/GR8RAM/cpld/" { { 0 { 0 ""} 0 59 9224 9983 0} } } } } 0 169065 "Pin %1!s! has %2!s! output enable" 0 0 "Quartus II" 0 -1 1616136957422 ""} } { } 0 169064 "Following %1!d! pins have no output enable or a GND or VCC output enable - later changes to this connectivity may change fitting results" 0 0 "Fitter" 0 -1 1616136957422 ""} +{ "Warning" "WFIOMGR_RESERVE_ASSIGNMENT_FOR_UNUSED_PINS_IS_DEFAULT" "As output driving ground " "The Reserve All Unused Pins setting has not been specified, and will default to 'As output driving ground'." { } { } 0 169174 "The Reserve All Unused Pins setting has not been specified, and will default to '%1!s!'." 0 0 "Fitter" 0 -1 1616136957422 ""} +{ "Info" "IRDB_WROTE_SUPPRESSED_MSGS" "Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.fit.smsg " "Generated suppressed messages file Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.fit.smsg" { } { } 0 144001 "Generated suppressed messages file %1!s!" 0 0 "Fitter" 0 -1 1616136957594 ""} +{ "Error" "EQEXE_ERROR_COUNT" "Fitter 2 s 5 s Quartus II 32-bit " "Quartus II 32-bit Fitter was unsuccessful. 2 errors, 5 warnings" { { "Error" "EQEXE_END_PEAK_VSIZE_MEMORY" "367 " "Peak virtual memory: 367 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "Quartus II" 0 -1 1616136957797 ""} { "Error" "EQEXE_END_BANNER_TIME" "Fri Mar 19 02:55:57 2021 " "Processing ended: Fri Mar 19 02:55:57 2021" { } { } 0 0 "Processing ended: %1!s!" 0 0 "Quartus II" 0 -1 1616136957797 ""} { "Error" "EQEXE_ELAPSED_TIME" "00:00:05 " "Elapsed time: 00:00:05" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "Quartus II" 0 -1 1616136957797 ""} { "Error" "EQEXE_ELAPSED_CPU_TIME" "00:00:06 " "Total CPU time (on all processors): 00:00:06" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "Quartus II" 0 -1 1616136957797 ""} } { } 0 0 "%6!s! %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "Fitter" 0 -1 1616136957797 ""} diff --git a/cpld/db/GR8RAM.hier_info b/cpld/db/GR8RAM.hier_info new file mode 100755 index 0000000..18e97e0 --- /dev/null +++ b/cpld/db/GR8RAM.hier_info @@ -0,0 +1,233 @@ +|GR8RAM +C25M => SA[0]~reg0.CLK +C25M => SA[1]~reg0.CLK +C25M => SA[2]~reg0.CLK +C25M => SA[3]~reg0.CLK +C25M => SA[4]~reg0.CLK +C25M => SA[5]~reg0.CLK +C25M => SA[6]~reg0.CLK +C25M => SA[7]~reg0.CLK +C25M => SA[8]~reg0.CLK +C25M => SA[9]~reg0.CLK +C25M => SA[10]~reg0.CLK +C25M => SA[11]~reg0.CLK +C25M => SA[12]~reg0.CLK +C25M => SBA[0]~reg0.CLK +C25M => SBA[1]~reg0.CLK +C25M => DQML~reg0.CLK +C25M => DQMH~reg0.CLK +C25M => nSWE~reg0.CLK +C25M => nCAS~reg0.CLK +C25M => nRAS~reg0.CLK +C25M => nRCS~reg0.CLK +C25M => RCKE~reg0.CLK +C25M => IS[0].CLK +C25M => IS[1].CLK +C25M => RefDone.CLK +C25M => S[0].CLK +C25M => S[1].CLK +C25M => S[2].CLK +C25M => S[3].CLK +C25M => SDOE.CLK +C25M => WRD[0].CLK +C25M => WRD[1].CLK +C25M => WRD[2].CLK +C25M => WRD[3].CLK +C25M => WRD[4].CLK +C25M => WRD[5].CLK +C25M => WRD[6].CLK +C25M => WRD[7].CLK +C25M => DRDIn.CLK +C25M => SetLoaded.CLK +C25M => SetLim8M.CLK +C25M => SetFW[0].CLK +C25M => SetFW[1].CLK +C25M => DRShift.CLK +C25M => DRCLK.CLK +C25M => ARShift.CLK +C25M => ARCLK.CLK +C25M => MOSIOE.CLK +C25M => MOSIout.CLK +C25M => FCS.CLK +C25M => FCKEN.CLK +C25M => FCK~reg0.CLK +C25M => Bank[1].CLK +C25M => Addr[0].CLK +C25M => Addr[1].CLK +C25M => Addr[2].CLK +C25M => Addr[3].CLK +C25M => Addr[4].CLK +C25M => Addr[5].CLK +C25M => Addr[6].CLK +C25M => Addr[7].CLK +C25M => Addr[8].CLK +C25M => Addr[9].CLK +C25M => Addr[10].CLK +C25M => Addr[11].CLK +C25M => Addr[12].CLK +C25M => Addr[13].CLK +C25M => Addr[14].CLK +C25M => Addr[15].CLK +C25M => Addr[16].CLK +C25M => Addr[17].CLK +C25M => Addr[18].CLK +C25M => Addr[19].CLK +C25M => Addr[20].CLK +C25M => Addr[21].CLK +C25M => Addr[22].CLK +C25M => Addr[23].CLK +C25M => RAMSEL.CLK +C25M => nWEcur.CLK +C25M => RAcur[0].CLK +C25M => RAcur[1].CLK +C25M => RAcur[2].CLK +C25M => RAcur[3].CLK +C25M => RAcur[4].CLK +C25M => RAcur[5].CLK +C25M => RAcur[6].CLK +C25M => RAcur[7].CLK +C25M => RAcur[8].CLK +C25M => RAcur[9].CLK +C25M => RAcur[10].CLK +C25M => RAcur[11].CLK +C25M => RACr.CLK +C25M => DEVSELr.CLK +C25M => SDRAMActv.CLK +C25M => InitActv.CLK +C25M => CmdActv.CLK +C25M => InitIntr.CLK +C25M => nRESout~reg0.CLK +C25M => LS[0].CLK +C25M => LS[1].CLK +C25M => LS[2].CLK +C25M => LS[3].CLK +C25M => LS[4].CLK +C25M => LS[5].CLK +C25M => LS[6].CLK +C25M => LS[7].CLK +C25M => LS[8].CLK +C25M => LS[9].CLK +C25M => LS[10].CLK +C25M => LS[11].CLK +C25M => LS[12].CLK +C25M => LS[13].CLK +C25M => LS[14].CLK +C25M => LS[15].CLK +C25M => LS[16].CLK +C25M => LS[17].CLK +C25M => nBODf.CLK +C25M => nBODf0.CLK +C25M => nRESr.CLK +C25M => nBODr.CLK +C25M => nRESr0.CLK +C25M => nBODr0.CLK +C25M => PHI0r2.CLK +C25M => PHI0r1.CLK +C25M => PHI0r0.CLK +C25M => DEVSELr0.CLK +PHI0 => PHI0r0.DATAIN +nBOD => nBODr0.DATAIN +nRES => nRESr0.DATAIN +nIOSEL => ~NO_FANOUT~ +nDEVSEL => DEVSELr0.DATAIN +nIOSTRB => ~NO_FANOUT~ +RA[0] => RAcur[0].DATAIN +RA[1] => RAcur[1].DATAIN +RA[2] => RAcur[2].DATAIN +RA[3] => RAcur[3].DATAIN +RA[4] => RAcur[4].DATAIN +RA[5] => RAcur[5].DATAIN +RA[6] => RAcur[6].DATAIN +RA[7] => RAcur[7].DATAIN +RA[8] => RAcur[8].DATAIN +RA[9] => RAcur[9].DATAIN +RA[10] => RAcur[10].DATAIN +RA[11] => RAcur[11].DATAIN +RA[12] => Equal3.IN3 +RA[13] => Equal3.IN2 +RA[14] => Equal3.IN1 +RA[15] => Equal3.IN0 +nWE => nWEcur.DATAIN +RAdir <= +RD[0] <> RD[0] +RD[1] <> RD[1] +RD[2] <> RD[2] +RD[3] <> RD[3] +RD[4] <> RD[4] +RD[5] <> RD[5] +RD[6] <> RD[6] +RD[7] <> RD[7] +RDdir <= +DMAin => DMAout.DATAIN +DMAout <= DMAin.DB_MAX_OUTPUT_PORT_TYPE +INTin => INTout.DATAIN +INTout <= INTin.DB_MAX_OUTPUT_PORT_TYPE +nRESout <= nRESout~reg0.DB_MAX_OUTPUT_PORT_TYPE +SBA[0] <= SBA[0]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SBA[1] <= SBA[1]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[0] <= SA[0]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[1] <= SA[1]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[2] <= SA[2]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[3] <= SA[3]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[4] <= SA[4]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[5] <= SA[5]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[6] <= SA[6]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[7] <= SA[7]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[8] <= SA[8]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[9] <= SA[9]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[10] <= SA[10]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[11] <= SA[11]~reg0.DB_MAX_OUTPUT_PORT_TYPE +SA[12] <= SA[12]~reg0.DB_MAX_OUTPUT_PORT_TYPE +nRCS <= nRCS~reg0.DB_MAX_OUTPUT_PORT_TYPE +nRAS <= nRAS~reg0.DB_MAX_OUTPUT_PORT_TYPE +nCAS <= nCAS~reg0.DB_MAX_OUTPUT_PORT_TYPE +nSWE <= nSWE~reg0.DB_MAX_OUTPUT_PORT_TYPE +DQML <= DQML~reg0.DB_MAX_OUTPUT_PORT_TYPE +DQMH <= DQMH~reg0.DB_MAX_OUTPUT_PORT_TYPE +RCKE <= RCKE~reg0.DB_MAX_OUTPUT_PORT_TYPE +SD[0] <> SD[0] +SD[1] <> SD[1] +SD[2] <> SD[2] +SD[3] <> SD[3] +SD[4] <> SD[4] +SD[5] <> SD[5] +SD[6] <> SD[6] +SD[7] <> SD[7] +nFCS <= FCS.DB_MAX_OUTPUT_PORT_TYPE +FCK <= FCK~reg0.DB_MAX_OUTPUT_PORT_TYPE +MISO => WRD.DATAB +MOSI <= MOSI.DB_MAX_OUTPUT_PORT_TYPE + + +|GR8RAM|UFM:UFM_inst +arclk => arclk.IN1 +ardin => ardin.IN1 +arshft => arshft.IN1 +drclk => drclk.IN1 +drdin => drdin.IN1 +drshft => drshft.IN1 +erase => erase.IN1 +oscena => oscena.IN1 +program => program.IN1 +busy <= UFM_altufm_none_0ep:UFM_altufm_none_0ep_component.busy +drdout <= UFM_altufm_none_0ep:UFM_altufm_none_0ep_component.drdout +osc <= UFM_altufm_none_0ep:UFM_altufm_none_0ep_component.osc +rtpbusy <= UFM_altufm_none_0ep:UFM_altufm_none_0ep_component.rtpbusy + + +|GR8RAM|UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component +arclk => maxii_ufm_block1.ARCLK +ardin => maxii_ufm_block1.ARDIN +arshft => maxii_ufm_block1.ARSHFT +busy <= maxii_ufm_block1.BUSY +drclk => maxii_ufm_block1.DRCLK +drdin => maxii_ufm_block1.DRDIN +drdout <= maxii_ufm_block1.DRDOUT +drshft => maxii_ufm_block1.DRSHFT +erase => maxii_ufm_block1.ERASE +osc <= maxii_ufm_block1.OSC +oscena => maxii_ufm_block1.OSCENA +program => maxii_ufm_block1.PROGRAM +rtpbusy <= maxii_ufm_block1.BGPBUSY + + diff --git a/cpld/db/GR8RAM.hif b/cpld/db/GR8RAM.hif new file mode 100755 index 0000000000000000000000000000000000000000..457b030c295bb82855f95a47c5b8839e4d36a551 GIT binary patch literal 552 zcmV+@0@wYl4*>uG0001Zob8fJkDD+M$M2T<9W3poJtWIJus52Lgerk85PGzX84{}m zwmc$5n|}8iNcW+jwukoA3M`v>Fys0CKee=K+8VnqR+UM@8x%uT^RmFQI+dm}e&6yu z#fqw6$+(r3TSbyp971*E4DdZ=U$BhBkN7hr*hzUKGLfz!(=Zg|FBZ?s>tAtN#H8ES zaD-ez(&dSRa6?2yyc%{1O(r;OM00q}lZsX+QLNe5crxicPLYn09~Tloi>C9kBFtRVabW6YbLd_85oJ4S(>7Q zYKdcNAXB9AqJgTQ`EylqCE|9)>@``~p1+OA+TFNOKkT6;C-k?$+#%u04qR{f!gJm1 zVE3==?$YxEhr~|cuKndx#kuc=QLvpyVgJ`3?%r&Bq7~o2zx1O^lJped`QB)dqD%d} z_8bHxw(l@Kc5v>*BD|=Z-hH5~D#bj%woouYJ;wAEOhWTU%#{>n0Yrj_ak$DAT;)I9 zzYg~Rhq5~L;}Li42%%q5KaU{28?g~q9v;NG_${3b(8r}AT}eaw)6&>gW<@)77)(_u qs6rcBI@2wECRUb@J^G`W;v~y?xz4;Ea{Rkh(3>At1 literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.ipinfo b/cpld/db/GR8RAM.ipinfo new file mode 100755 index 0000000000000000000000000000000000000000..fd31defd82157f4838553359c6e4245fac3c70c7 GIT binary patch literal 316 zcmWe+U|?9w%?KomfzSy^hou%3XXfWA7#iyt=ouR+VDHxdP8ye{w85kNX z1g932WhSR81SBSBD;O#SdntscCMme4WR?JRZUY(u0>2;>LnxHC0oeis6^y_B|Nmd_ z#>U1LrZA1^k%so)1y`E>B-MUb=vHu#|NEqAj>z8t^Z30+Vhh$R+&GWXd_vh5PR6dI zzkmMTxruq_!pfVKKc80SD9oHQ>B=IPG=#;rf4(#!%M7&oRj xtX~|zC*5Js^7*svJp_0pBv~4^{CwN+R$-ljz~U9%<%LY0%)QA8Km&j#005auax(w` literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.lpc.html b/cpld/db/GR8RAM.lpc.html new file mode 100755 index 0000000..6be76eb --- /dev/null +++ b/cpld/db/GR8RAM.lpc.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HierarchyInputConstant InputUnused InputFloating InputOutputConstant OutputUnused OutputFloating OutputBidirConstant BidirUnused BidirInput only BidirOutput only Bidir
UFM_inst|UFM_altufm_none_0ep_component9000400000000
UFM_inst9202422200000
diff --git a/cpld/db/GR8RAM.lpc.rdb b/cpld/db/GR8RAM.lpc.rdb new file mode 100755 index 0000000000000000000000000000000000000000..82430f21923eb97a4c648f56975d13dab62cae0d GIT binary patch literal 509 zcmWe+U|?9w%?KomfzSy^hou%3XXfWA7#iyt=ouR+VDHxdP8ye{w85kNX z1g932WhSR81SBSBD;O#SdntscCMme4WR?JRu3-k60tD?KQ-NS1gkty$>!XUBGP)TfAR9YmAps2*Nb&E1?k(iFO7WdWF3YACZO2nHcWh@A z%h+z^y6f}04M+c^UJY{h_&z24&c9P@9y_Q;CoTSA_d_ytskf>2)yX;$-?m)%WB4QU zX!iBux2sqyub&IM9JK%2)h3_n*TL}$%67i1D@@lW=@%@HJjrq@%uRE8z%8@;OR_yS zpG=*>Ea&V^-MFe>_tU&wpSI44wb~D;Sd!6OsfH5)wM@e*7?%Z^AT|M+)N0e+am% z%U}QTV1k0b{r8G+`SAGg{Q?U_n43)njEz4qoSZdT^{IlOqJmpS6biWZfTHC8e*lq%)3g8p literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.lpc.txt b/cpld/db/GR8RAM.lpc.txt new file mode 100755 index 0000000..9336d5d --- /dev/null +++ b/cpld/db/GR8RAM.lpc.txt @@ -0,0 +1,8 @@ ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Legal Partition Candidates ; ++----------------------------------------+-------+----------------+--------------+----------------+--------+-----------------+---------------+-----------------+-------+----------------+--------------+------------------+-------------------+ +; Hierarchy ; Input ; Constant Input ; Unused Input ; Floating Input ; Output ; Constant Output ; Unused Output ; Floating Output ; Bidir ; Constant Bidir ; Unused Bidir ; Input only Bidir ; Output only Bidir ; ++----------------------------------------+-------+----------------+--------------+----------------+--------+-----------------+---------------+-----------------+-------+----------------+--------------+------------------+-------------------+ +; UFM_inst|UFM_altufm_none_0ep_component ; 9 ; 0 ; 0 ; 0 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; UFM_inst ; 9 ; 2 ; 0 ; 2 ; 4 ; 2 ; 2 ; 2 ; 0 ; 0 ; 0 ; 0 ; 0 ; ++----------------------------------------+-------+----------------+--------------+----------------+--------+-----------------+---------------+-----------------+-------+----------------+--------------+------------------+-------------------+ diff --git a/cpld/db/GR8RAM.map.cdb b/cpld/db/GR8RAM.map.cdb new file mode 100755 index 0000000000000000000000000000000000000000..d53620a7f0134e01d5b7deb40bbc04f29dc68bee GIT binary patch literal 27685 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 D9_TSq literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.pplq.rdb b/cpld/db/GR8RAM.pplq.rdb new file mode 100755 index 0000000000000000000000000000000000000000..6619eeedfb506a9cea5d51de27dcc01276701b45 GIT binary patch literal 245 zcmWe+U|?9w%?KomfzSy^hou%3XXfWA7#iyt=ouR+VDHxdP8ye{w85kNX z1g932WhSR81SBSBD;O#SdntscCMme4WR?JR+5-&%fdycafuR6Oe}&Q&jKBT^LA}En z2G*V)o<9z04r%k89Q=~v;<6?-Rj*L@5u2IDQV3H0|9=HzQd&aFgM@^H4x=qTY(YGC z9Aut65|Mu*^*~;PNhmRa>9MfGr5nd}X9;?6Ga7nKoV~xlJ3C;{{>jr<8$0P5ALd)| SXUS~$$_9};4joEv5JLfTB25DT literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.pre_map.hdb b/cpld/db/GR8RAM.pre_map.hdb new file mode 100755 index 0000000000000000000000000000000000000000..4f5fd3b4d96fb059d001faa61f9691fd89132cfa GIT binary patch literal 13863 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�oGZRJ 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 E5AR+VDHxdP8ye{w85kNX z1g932WhSR81SBSBD;O#SdntscCMme4WR?JRasUkhfhGvWU=5}BL+J{}U;qFAuV+&L z@&Es?U`$F$NO_Q$kRTBA^P&EPqzUYg8U)T)h%c{*cei&hzrNrH!}SFT=N|}!@1IcN QZ*N{dL5odIfeow~0AZ^)QUCw| literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.quiproj.3716.rdr.flock b/cpld/db/GR8RAM.quiproj.3716.rdr.flock new file mode 100755 index 0000000..e69de29 diff --git a/cpld/db/GR8RAM.root_partition.map.reg_db.cdb b/cpld/db/GR8RAM.root_partition.map.reg_db.cdb new file mode 100755 index 0000000000000000000000000000000000000000..4021fd93595eafa8dc6a2822c47a31b6f9d50258 GIT binary patch literal 493 zcmWe+U|?9w%?KomfzSy^hou%3XXfWA7#iyt=ouR+VDHxdP8ye{w85kNX z1g932WhSR81SBSBD;O#SdntscCMme4WR?JRP5_w(1X@s9A4N@CC!ko3|!zp4qTPML@ZPwY|lv`Z)W}UDa&u zJJ=YPN=R5V&S-UH@%SVgw{4D~hc~04Q}_Dp3Ad_*LbmD1H9K1g4Oph#f~{m&C}qR!&&GzFuO| UqX!k@>JzjUOqY}Z#mE2u0EXGOjsO4v literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.routing.rdb b/cpld/db/GR8RAM.routing.rdb new file mode 100755 index 0000000000000000000000000000000000000000..9c791d11395b958895e5d41abb3146345113770e GIT binary patch literal 1439 zcmV;Q1z`FS000233jqKC0CNCy073u&09Ivkb7^mGATcv8FfK75LUn0uWFRs#G9WNE zFEKJNGB7bSAX8;>c4=c}AW&grYalToQ%WFLWnv&jWNCD1Z*G7&00000007?v00000 z000#M00000005r_00000004La?3qt*6EP6Qn+p;L4j|xwga~{9WPAT4xgoU|B)C*m zoU5voNF}LCs!Ck=&|HDw&1O}uo*s zkGs>e*?4l)|2RH9?7!bX`P#LI-@ON3`sD|wetyj7-~B{S{qPUd+5T}m&E9N$JpQ&n z8&4-Q%&3%B)ogXWPF2yWY8a|2RCI$XY;{(wvO^gQa4f7+aBLyV$9jRJQLKoD z6%WD;qszBOY{o=Zmrtv(d{t#?SrN=|R$K;mLo7z33L+>9&6t;>@|m%q%wg;5BE?ws z!bm)5Yl&Yw7=hfU*M5=NUziDRZ z^08i5NOFS+ib9N=ffXS%AR;s%VqR#Do3SRXT(2hN(uo%eZ7r;%5oeX{;6`*$aYj@X zr9@e2B!0`Gv{o8)wApDYi0&!a_^go?u@ws($V5!n$lmcirH}+gRX|e3xXmVRq$0T{ z6kSs@2I?b-{|rfHZ>=Yhf)L$kMfyT+kHZdCPWNu?>_sJeC`6i}`%#h^oL38V%nK1_ zV1Y?y5O$P3cfR^cDgvY2fESV|3YW!IF|0sBL^s5wV8>X+%Ahq#OfmzVbt2$QQF9J$ zhUP3TP8XM4EXXEewW7fJ7xfjZuc4?yXQ)DGP(($cRw22Sg_J#IEhQ5~)ODOUi7N3L z3FQ_)$ zDK~JKVuVJmLg#p}qm`^vt9aIkvrfmx(-&-}7ZgdF5k({JvQ2A6eg@5WI?gBhV0Q+A zuQ)6#`At622T0zIpwp}Z?;~F!i(*f4x%vvdkI;aqu&Nv+uMo*q#=c&p;3kkokzNeq_7XRNN$=?Mo5#?afK zB#zB*9>dLgO|~|@f&6cmiXb6kA0$K?K`X|Bb#aP96*3aC8Qxq#q!}7?NoH_fO`Dh( zBFw-7lguFO`F%1j)eM{|-jeqz ze*gdg|NnRaVrO7v;9y{2h%&TH22u>%Kpf=a6d&Xo;2#tM5@BEhVrGU5Kr-omDFZK% zmIPvuA`e%`5MRfD_z*`YAJ=$)CoflLh!%dJ0u}}VAQ`*k;j4W>6JS~(N`pg!JpJ6` zU42}AUHu?h4g(djGVlPk)SN6S2T}||Kn$`4q6Mm!k&WRDP&|yy(ifyg5Je5d1&mA# tCxF7nK5o&BKpJL@o4=2XYY^0xjO+|MfO3;=9tGJ5_chc200000|NmcPhV1|V literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.rpp.qmsg b/cpld/db/GR8RAM.rpp.qmsg new file mode 100755 index 0000000..3d147bd --- /dev/null +++ b/cpld/db/GR8RAM.rpp.qmsg @@ -0,0 +1,4 @@ +{ "Info" "IQEXE_SEPARATOR" "" "*******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "Quartus II" 0 -1 1616136540772 ""} +{ "Info" "IQEXE_START_BANNER_PRODUCT" "Netlist Viewers Preprocess Quartus II 32-bit " "Running Quartus II 32-bit Netlist Viewers Preprocess" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition " "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "Quartus II" 0 -1 1616136540788 ""} { "Info" "IQEXE_START_BANNER_TIME" "Fri Mar 19 02:49:00 2021 " "Processing started: Fri Mar 19 02:49:00 2021" { } { } 0 0 "Processing started: %1!s!" 0 0 "Quartus II" 0 -1 1616136540788 ""} } { } 4 0 "Running %2!s! %1!s!" 0 0 "Netlist Viewers Preprocess" 0 -1 1616136540788 ""} +{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_rpp GR8RAM -c GR8RAM --netlist_type=sgate " "Command: quartus_rpp GR8RAM -c GR8RAM --netlist_type=sgate" { } { } 0 0 "Command: %1!s!" 0 0 "Netlist Viewers Preprocess" 0 -1 1616136540788 ""} +{ "Info" "IQEXE_ERROR_COUNT" "Netlist Viewers Preprocess 0 s 0 s Quartus II 32-bit " "Quartus II 32-bit Netlist Viewers Preprocess was successful. 0 errors, 0 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "202 " "Peak virtual memory: 202 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "Quartus II" 0 -1 1616136541319 ""} { "Info" "IQEXE_END_BANNER_TIME" "Fri Mar 19 02:49:01 2021 " "Processing ended: Fri Mar 19 02:49:01 2021" { } { } 0 0 "Processing ended: %1!s!" 0 0 "Quartus II" 0 -1 1616136541319 ""} { "Info" "IQEXE_ELAPSED_TIME" "00:00:01 " "Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "Quartus II" 0 -1 1616136541319 ""} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:01 " "Total CPU time (on all processors): 00:00:01" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "Quartus II" 0 -1 1616136541319 ""} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "Netlist Viewers Preprocess" 0 -1 1616136541319 ""} diff --git a/cpld/db/GR8RAM.rtlv.hdb b/cpld/db/GR8RAM.rtlv.hdb new file mode 100755 index 0000000000000000000000000000000000000000..7c271191740a6ed07c5468e99931a0a69ef2bef6 GIT binary patch literal 13746 zcmZ9Q18^om+peRH^=|Apwz09XvCWNb+qP}nw#|*LjcuQN|5xWfRcEHIzNcoYpQom} zpYE9(00IJ11qb@wI((mk->PC{?_g$Q4P<1dW1wRM3Obot8UmS^nScyz^o&gOObm?7 zKt&^aXEOsMpxhq=3m_vSOmJN9=EbOS_p_eadFV&wd<{P4=u}N|JN$!3Q<}iR$>ZFvO6q7g^j7{j70iRl1 zcube~Y4y|k$K~dmSNr(5wv&sO$PbK_6pu|Poz@88EjnP1BIe-JXHk1|F{a$-frB|g z{8+-hz5Vp*YxzrgadUCe>+x#4$A`cQzeshixqeBJ8VOgVEv1ZQ1`?5c!5Pzv9&kb1 z=reaj6W-Nm`zM45e|909eH06d9vOfAD)z=(^6fx$$bKVCw00XAmUwP79Mn+ux}m@z z!{u_V)yUEP?Eb)X;(#qE{MeLc18R4o;z&o_!B``ZHhWxm^yDV@6p$RR(@;|AgO^En;23Kc)d0NGs(fHtB9{LYi z>I~8eIypz=3{hEn|Gm}`;lwVz9mEFLfD_z}grjNK_iTT@>#}6^2_36|Vpq3EYy@sor?R4(0^#p(qv^gj26C zXGYcx!GCm|U4q1KKZoXVkdj2#^P_kVHgG1%k{ClUf3TJXRXL2rR%&ukHf*CF4D}*z z8LYKFe5n{jP}Y4DDq0iX{3>oXow1RBGis(&>XsOz1}-{KH@jNXv%Y0SNof)?*9DfO8Kx&+J5U(0Y$|&wQXiD%8&# zCki((;&GtH>r=nchS5D`eYHod#4W6n|MTRDK<&6${rFK1H+`*Ry&ok$_1Mq>5>JDs ze#O=O?eT}b`&Nc$?rX*@A7=>^NS#&EQ5FCAH#*%6x9bsxr4$af#$F^}8yT>%Z24<^FHCjbWz{6i@wHRf|J)XVYX`ZIZ0 z=+WnkJugi+wR{AvD_P+|1FydAtm&x;JKv`H16+V0OLyRnja1b7jj~_QM{ZW^=weXW z1pMZXnykCwwZ(?I<(UujLh~334!8YtaU`YSCmk zevNPE5u^Xk+)q*CPzP@eygW)&#s?xQs=z@f=H@)$_H&hBRlf@3#-Vqg{8lVcXcEFq z<)C3o8fF!FExL(*y=jW?<<@9{b$mh8#Nx_$LQ74yz(J$F&+@~v9@_0AQ`&{ut8t*k zVPh$^fbvDEtA3+`*bQiFLfh|g&R)e`-+0o2RtnEK_PJA?5rLUx9QT+mlA-Qt7y-v! zA$0pa2ntTxrQyrP0Q_w zeQb%T3Dy0s2uonl0PdG+Izp!Wl3Oql>#B zVytm8(lWQwYPsd?>lm5%V6ZvkZyQD39L?QB1}hdZdgXrJ(tpUiR*r!2-hi&n-Bf8d z&yARVi00)J6?R=uVKVxu7%=Z={1WItU`7=w)wu6NQCv_zCF!e4&UDdgV^n-0!46mo z*5(>*g&8rTpySCiREhNOk{fBCL}BJIB)eYHmSGYa2*XlEAbdEOT!|LPKm#mlx~r|-O`Qp{dv&S@rkg@ z!{5mR(|Fgvn>ek~Gyis}J}5;IqpSI2SVC=oSP11O!ANE#7`K*nciNa5t{9K|u5|z- zJWbuY6f`w;wsa|<9u}z{+^g#2cT1jfY<=aTAUyJ-_jho!tY}o9(ozRx_{cY1W!{Xl z2^R>;wV;}D3y_9UCP3t2iG+VZ8`8;2jb8nED=8-3BJyGU8d6#m!V!&F-9Ap(=m@Km z5Hxb^OOBDY2_G&O$<`XWbmIcb{N@k*qXXEN(yki${V@^lA|FJ9C|(MjJUjTXyWNL5 za?5Je7Qj(s=>`-5A*o=J<}zxMic;&tQTbGiFLQewmT9I#nr@%z9;_T!SBT!FLXS4d zkhC;i6l&>XxI=JbX>~eFOt0?dJNu%1r_RzT3Gy%wffve$tx&`m9J?x|n-aLK zZ8JNvc%Cvi?Nu`yNGeerLM)ioCBpBe29u!fmP|5gYn0qH{#3PglroYnAY<`uYt`d%zO<`J$~pF^xzpM7)s&B-^%-_k35^ z0uX3hAWqM$c7*S{sZR*f@k0>AIl>?0932dFW$Npjmv8RAxoFi0QQYvXp0(yxGW|tP z)tG^Swl)<7d+|>!$l0M#FoP#72TN%{j)70orS1LQ(m&X`(_vv&i{BbMeSB0}sDauU zyQws=e~M2vIqeSG_jl+&?5TJ45t6XT-bY_a-;0}Mko5st&}K1BFiWInh!tFmvOA9# zrnl0#9ZLdMR7^&sk`=KilC`Oj@Rkge@7xjJxkZE6-T-`mE8Qt)EmV{>jU#2D^^owi zSGz4N8<^eQU*xt$O&SvmryTK@N&DW>Hq|-oL`@RyTN#1{3d3d2JOmpPW?K<*ij}FN zCu(i06s{_gpvL#PYV70iR67<=%Cf3mM;AJb`q8RaR7+f@R|W~InfyLh{#A@rZ_Zf- zRP6XmmYkhY(W#|Es+}Eh1;+I)jCFE<3rk^DSZ_;fjaMTTB3BJ@EO>4-S*7)0w zi4Z-x@>u)gCq*1_)-Y`(V6crTHKt_&xGSkWGqPH?ASR*V(Pd-lgQhggm?cQ6pJS71 z>Tvo<_{2uOEoNIn2k5&iTQf$`TI3+Ul$k^8%K{_wKZ@{Yvp_90a(O)MmFqfnox&X7 z%BF{2yZa%~p@_Uw2)!DTS$)EQJ%_o&y|SzIm#@uW0CQGP>y7Wt}mnI0dLc{1@Rr z?I}N-Mi0w*Cn8|dO>sPl@gwUcKleWmIYb074Ya@eCCya)M-C5^wSJ{obbU-O9~^3Y zj8nG!!szRuN4ny5*=n_`cxuze5dN$arL#*E?W_An%PhOT z{tB<8CYGWLh>=w~UoH`b>;tHnT>I4@EHYqyp{^_cAd;DHcg{&VgaewGHF#wmPs?ph zY&1(2tUzja&i75@* z5mI36^9W611-HVZ9jKzE?Q%qnRG97Nhw*m#Nx!mpu~n!=o}e|N*j9fbo;X9j?AOmH z!xmyKo+U$)l`9rI=sb=~ffeD5A<9SlUd!;FJDhKrGxY50e_F>f&C0~fYlevwO}_Q4 zBNq!X+-}I7dcYZG8l#*@fAb0TbU#UUGZOyK*y= zV0GQFJ@)y@S&vYy>rY~xH`!NhLHO0rK7#7)YV@|tf$d=0m+u;SiJ()XLbtcm(HKNL zO@ar^1G#3PZ4CGo6d#w%2TLNFCbu^cu!AV$&v+o3E;GjTH6y4<$HEQM`9`OG+Td6g z17lbC=**c`Dq$BlKBx2P+R2H2REBHL;x3z6f)|$Hq&At4biDWO=WW|1bN5F(Gqs8} zkz60@m0mAG($Nk?aU@=c+WRpOj*;yQoRkiavdI0k$$w3G(e3 zbgM}Ul-0O~&fTeby&6|0uA(HzvNW5tPX}% zuPSHk`qY z&|#%;hloD>ze60FfLR^W7vaD`bA73cJEE#+3p%jinVBS{oFW;S1l{job=k zI7u{cWXVBu-U@N564OOH&&qIh)GWq8yfXX7mcSym{Zkk#SXzMqaj~Sq0Cz4%v`MIY zTplT~7)<5x3G@V@v#lRdu9w!V+C3d(zy81ij-%Rn_koz9NKx>tTv#-qLR}P6KrruF zA~p`nr<`C=#+?ze6b5JLmWX7GKWQ9XIlVe8%gmrwjjIlnR7L0v&`;8jYqSTo77#GV zvvXx8yhi|bBaiN4E7hzv7;^$IC;%8%oxGn#Vy5YW?UUiVsJo}K)s{|f3uVJRRvdhw zSqmVDHWR3L!hHe6keThK&W$F8?jEudjtbyOrm5CR%)_*wg9&)J>%m{Y(*Hpn*bObE*N+v6`W<>pmEXBk4ut+X(oz(uPb+P@s=7-u^- zXM)ueo<_cmW~j2s<`Jv9y}YZrUsoi&J~G_E37zo*{C$YWR@9}ZT0ig1${CMH`q`bE zgy}msDxtm-v#+*Xp1&qmd`0f}lFCm)oZTespF|gS7XFNo;738&GP@5v`f$YLG6Jsf z!3{HRjf9tgZOk6)f)9v`yrUAz7&Tw`Sx{a-n$%PN7x2cBFdR;OahTiCl9)OC3ovG( zkx`%UX6?k1tXu@~(VkC&Bvp^Z^3FArWP!_ymT5~t()f0=VYQ;4p5?c(CviKN?iJjI z+^8sJ*r(mI_d=1hENQTA|1shI*Gv-{2NTpzh*tqyZfLz4=;9c!+x^6xF^dz!OHKmD zSV%ePB5SF_YQcfmm`Z!h`eW3s_59i?sVyy#bV;+-c4wiDbB~Rtpf-&loz+67?gN#0 z;3#AVX?mS>Zbw%=UxjImozkk%RUVPgwJJt`!j$*-F0wM%&mbe0FkogjSkCToGk355 zyS9Y3295w};rq@-WR?h@AH9@}DZdi#*>7N4RzSR^@Jz8S^B2zo=IN11oM;l-Fm!nV zP|)`gCKV4UcF#;J5a+YZmN6nBC|vPH1vymMOOx9^!kJ+HnGlWi7rk5tiu;@34>PChl$etkSJfYWgD*ghovm(fyq9@6HmB%A5~dyCQjDm;7#gSRO4s7B*AAn zL>2&nwR5g;piJ%-W=luGwJl}s#fIvHM2TG7za@U2`F#7aS$L2r0j znXB_)u-BQJu|EqgfUbo~W;$ytZ`MNqIabn??J-k@;{!1Etcz- z5b(0_cnl`koMoM@jyGB>3#uIIy|9ePj}LYD@a~f6-(85}$gQNjWi4Ar3C5D6ZCZ^_ zST)&l_Aj_@jRrWTO!6dyIha^ae4FIfxx$th=Qi6a8#$?g1dF=W9a~^ zPW*0AR-0c*uRQRi@SK@#Gg>VSj!&u{#uIyIPZVW(^H)lNp&-ED^H;o^1{6O9+9nIo z_{e0$=V%d6-(MTKr^=_}PAHW8lgiJf#E)$to5De;O_vv43Tjx> zk&QiQJK{TFceg6HS@neC$%vX0buvqwMt_RBr8%Dem_Z-V`l_9?ck1?;6XYJ&UTYi* zu9|-0yR5LZDmL<`W9$B0X<-?{a4fcqtFWL`IfUf`_46;>tjRrW{iL{A=b~wtX8H7= zRxw%VGnU24DvOT5sm5<#F}!^kv^28%*Lm?OkG!y&EPLma?x3&L1tE*s`Pk3i$gJ zJP(S-;G)YX!m=~{Ceq2lFWGzWQ1oKdq1UwngmYY=yyuu4$3T?z<^aw1&wBJIQ{>PZ zmrv{8vTbVet83F5ebMPBo=D$7^9N%v+8lK!lcy{V9{kEW;L3~c?~K~m7y16AfD@ZI z_h|pFUm3>8$Yg78E6spYx8#m!f3M@h@XmqD?zTA$sQin$*Ag;fcyePzXJ{5pt}Tsu zD5VP}aui~@y=GYV0JZLwT{XR=Q{dG6h_0Yr@X9LD66?r^YH0Qs=}y|Dp{YuC{q&zE zR5wpsuz(%|e7tj3rcdSmI#;XPZMWArF+va%*#$->&qpgSXoakT{hI#P(*<}#IRW2t z0-uiMoom$6i!%qYqDv3mn|psvf}}ot^K`e)-iNKizb=h}k1JhThg7y~HqM^QKaN3( zm)?9-MyI_`b#KgWuWV-xgRDC2G86g@4|#G&Z#GWF+Mb$UR^M%V6ngu4>d}X4Q)7yE zbReMjC@jd}<^AX^mUl$J{`&sKo1%#LRN!o(WF$Ag+wCpa=H=r|SJ6AjtKil0&4A`< zp(>wE1q^q5G>{9pg@x=fuVeC2bn4EbgN8YR9;+N>m z13`5*4uS5;L*@tK!>jTBn_P=*AwhNUZO%5)>-p!*qQgf*LCk4JQjWL4RQZ<}^Tav%Bajd$pyoPaLx>ivL*@4DZn`2wfq zTlQ{vm|6=dh&i}huH044I@ZMOu&ZASy zT|ul6Z(X8MD2L&h1V%~oJFe6wDljyWu2YY4aQ#E&qqxaa15qg)5^(DUHA_8HR`V77 zV|>(l7>d?-fO~rOI50UTF+o*SK$=a^EJJ~gCbl9tOiax- zT|f0Nn=r+LNfZCcPbTdP8Yo{P{t4|-A@Ohp!U}&rDCjuzWP0CTqF9Yf1riFhdaCCH zK^DbY_A%6LeE#vid#0Rz@`YP7{8CgE;d1qCLu)`8p_*3^8L62XaE6^kSuJ-jkv4%p#J{X+lbCCUq;_Hh}?1tk>>Tl7zittAze$UFY|!7YnD~%PXX`C zk;aK-5s7bKb2kB6OU&2ymRg1WZn8(8P>SD4VjG9f71O!zkwHN(Of80$ftC=ASMn?* zI-W1o%aKCQ%%b`IYl7%AP^2)`7(>pibi--H>tSFEt2J)c;QY^2;6uo?_hhu|DLva) z8s1Hu7}fGRK&=o-i0!BU%w^$&l-SIglx=93lPIuDryo`*dEqd7v|Ht9+{sD!jJJ0_tv6w( z9I<3C-yy6r$6xtJQiw=eQ395tO6OEJhVy~~WpgcgI7;y+G7DFYf@X*IU+Apn%MY(s zbkT^GeBw{?s$nT&1rm3^*K&u^#2n?F67NI9V7ir&JKehy(TT(%>{jhvn=S>D+`ofT zR7-~`ijEmupk(c@Pd%~M6XXG(01cj^4Q}+~cyD4i$`{B~DKSrqu-`#KC``&^TF=mE0>u z5)f(8FMT(Us1yso^GSJ@bz$7{clmV7)M%fD$2IWLw2w{?HSPB&L%c`80t{7PCBkPQ z^cFoHwl-T#z=%FnOkt-kBEB{vsW@EE=q?bK50P{my?xMYBF83T3%O;5n%e)`LH66I z@B0Me;-O2B%nWbB_?YBrv%5phJD6VzLLz*YqKeL1ZkXM4#kWAwQ*MvH52mI&`%wnf zmv94Nj6mrrV|HkV?{)y4L(dMV+c>TfH}a#B?GkrEjscvA23aj5hvC7Gf)htrc1I%) zophZ;uJ}I$AqAqLITLBvavyv}J-}^Z9xSQN;}CqK#`|Iv-f3{@M+gj0iLCes`jG-k zh~WMpVTD)K3IM=G;87Xn2KfQtaLkZ@fBbl7#&H`eSi$&zU&H-icLsjU81y>lc+qV# zuTfWZc&bwL@jb-&Y;^A%Ki_v6q*B>?9rvbb*YR&9BYkd+fBs_+rq`|$g*s{QCI1O| zuA!;n7@Ex&1_Yk`g?o5^QG&x4qErkvV}bYE%oDeS*<-6D)Wnw@+y^dh zqix)VFaqbWT`7M_<;FJ;(305X$>8!&&3e*8EO!aHTt{X6SJ2vnP3*xZ4nDXOG}Xw| zBF9%QMDXo#ozyypN1(cRR}FqJBF+DR5cpDKoF}*{_sGwPRsqKu3V7V)K6r8)eRCUy zg4S1ko#0OJa2@3{ZXqVh`l7@EfOh&!i<%~XUqJ66xv(?3h$Hl!CgH~vH*1h(5fi_#L065-psgPag(U|^HSaRdN2 zkbTJh*gig7r0OB#C%d{$!vd=$qsZqQ+(tPd^1ia;M&fW_l+-F1+V)J2gyFt+=d zU+5wFBwvXiB+9ht7pbVlUMHFq7F{{JQlYQYefVpO*&6Fr@G(mft7)pruxAc!NU1#g zig>l~ MRS)>hCC2{R+h;dQ8jr@1|rqk`abhI@o7pa@fIe1~srRm98k`EI-LfmX^ z=$5?P)Ku;3bmHK;m|}nx_I1_&1bcWe+@0tg`SQ|6F@dA<2WO{xPOgod?A%IMi$sLU zcn56=H?i1AWp}ZE{CB$0Pm6_!2P{N`CB2$XH5@yWn)2cV405n{)oVyYy(rYhLbdh> zxo&?}&PZNQcS58blDc95^t7?mJ2{~Pke16a=8@U77_r}YUc^Q3!kyf7{OjHYtwz^} z*#QT9^jhLdQZ`=nNUOrg9?#as0L^FPVs$buS28ZQQM%@=3g|v2bk+5ZUn z_6cWD2JuVY+{ku%BQ zy^~gXKxhF|AGkKwYDisGfmlOTRgtKgvNY?t5=310;@IV5O-gpZO>{1UUKb&? zZPaT2B0Guev$4RpTn!L-w62 zuwN&8%m&(j6{&r>@-O660&)*2ZlSdmB|@cw?m~okWB>-VhzZ4=*@p<&tWU%wy*w+5 zJAH%HBLIxN6)n*;CG8OfG95f15k``M_z0_Yg) zO>R2LZS_W#JysDV_1E$S5V%A48spg8ISlHM2>#C$YLXE#b(upi+Nl>;3^N6ja|__& zPkbpXwjmx^@YVd=ooA8Qaw;ycriejmYg9<)A7ROLtRjrR-zfWx7dB{a^ox`S8R0a! zu)9nJw;DE9Wlh<=imDQ|SCP9@k*&=@>=~FmXH;+pA%7zd z;8%U9rmH~rv{3h$Q1_5f_mt4%b?g=L;1*Z+1oI0%Qd>gE#`kSmz45$3iKV5>AN zIX-1h+U23!2QyMz4Dk7QF?tH6K=pDB*+N`cjE@LYbgfRCtEJd>4Sd$*1zon7d95N; z*lzvSnr_0@NVs zPox@M#S2#5Upk}V4J`bPSj%5pgG3t8eJe!~M)o)}2L_;pL+{9s3lM!6Q+3sT**o`3 zRNzT{yY^qDCxCXKZ7lDAqHEapGmKUpw+B?`yO37$=D!E=AWwkOB|!0SpgEcjA8Z(^e=+Grt?SufjUE-U3! z(on?LQKp|8*!;-@Ta6eApBTJ+|5C(gexVm!n&#?`uzF=mBp(x1wvA|ktG|linE2=N z5MY{Fua02;n9aa1Ja{NEuKzo`(|CO;Evo><^p^y74JFl-IUShCLLyWR^@v!@8*v{b1S-lfRp-W)RbaNtY6dQvrQxQj$Zr`0 z0LwoCfc9Tl7z)rVA#XzYiDm}A%MsX5(VeWabB|PoThtp~Lye+@Rpnh)2#etDs3~X$V~m)Z18?VZz!;gTIX>#IFwy(Ha*rhuF2$B#-3T z3w{Y+x{Y_^N5C+gyzs_+^ijvrq)_l?H>&`peoUe8X z3%C#L@tH)CH>eg4)!b^AJFQIvh^;pOzji}290#=p*f&ZRA~V&)sPWRI0W!{D?yop^ zna*Bz;1cZtf1v=^6fL^Y9HAms#+vJ?`5kd; zF01tcswiNpKv97j7_~-c%DIF$3vhJ2F<2*0?cRRwWp|#4RzH!A)F@;L*qM(1+1@qP z2YrkH1Y@G6H+S-awgI13h^a9~Ern+9FoK3z3ao#4)24)(#|f}fO=G`?g?MM0?|x*D zT|kBw-|Aum(;Iz^d`(qe!a?)xUZ{{>G(hS$Ks{rCj|p#^!OkpMSFHRjL7!V7bEvPN zNH2r}wtm~X>Y67pNLcCYUjh`zjrT-R9_Q#gpxtF(V#w7A+?aZnDRX?zz1*mw1~&`D zpd@ZNMP(nD0!&(E9J_YlC{t3h$bpJ)Cfpe&xGV3O3|P13{qO$B_U&`+mV0g?&E6Bu zO*zQwLP=!P701Fx7|+mx3{p$iv6611DQ=^9+y@m9b=3E)*<-qQu|2zly5!LKw3QW) z2sPNOI&z)?NB7eHwt#n9sL2*Q1`k)e?)~0>9f5UkyB;)qGU#>~gsD64yhtxx`1Ze$ z+P({9Lg+Ia=-km2SAG$ipgu@RqYp)hInkYCbPJk2HpP8_!hJB~I*I|KpZa@Ycz~WG z&)P-sqX^}6LZ*}}Q|@aW=0VjsF;waXjah>0BU_fSKX6Q1Nw$-Q+S<7x^r+PPH8Wr32mJb;$#j*6VIM;Sy zb)s~FnnN3{AmsK)uyHIgdNImT`XUT41FV({>D zHx3QFAV4SpjWay{n)^W*(V}f^eqIpJJ3~1s>ZF>KiMkm03iX+NLbeyqiiL+q%afJ0 zS*3k(p}m#Il#b%GslX#<8HYAo^c(PcJ>S61Kid!aXY>BkqyFm7|WCvqoDYv8Q zi$N22FuQUz60r2$g3<@hDvSPVTiQsU?bmS;+mI@r$psqOO!j`kDMvP^%;Dme@Wf)q zvDD#C$+F!D=Mw35Wv7dL=Iqbf*^=;Wt*a9fwkxaYCYkE@uY}j4{$%u-ZoKZi8(o?A zCx{V4Tayf*Fw^4-I>C#i&asaR4bAdsItxRtdndx9N7SmbPiBD*M*xaN0Hmv%6hRft zM31=It7}~2fPIx#(}Poa2@-Oc2Y9v#{Vl|>Ma=M@HMqzTb6Gy)t~d5__w+})kA+~E zX&6)LMaXGlM}_bxJT{$br}eNJ>gL|5?hliRVk+nQXL+p<-r*@TbTV~xtppZan^s?m zTNb>t+g<<3K*hsWIANWK<(G|pPIKOM>NQRVZ|kMYF9HyduP;~7LKO>3RAtoefr;c> zsw)%P&?Lb)|KF0DunpgbqBH*VBoXVNe5o7*C9*J~01V-81~Pxa$eSP-FqlsT`Jbez zx%?!eo`ZVNeMku1q-38ABKb#L%q}e*LCt~Umsx2Z-5!^2IcMP>Lm-5M!@AAh0`&5d z#92~-!PX(|Sxx;)qO9pG69^yt2=%=5OO}@_jn2{|23AQHT-m0>Y~KG+Z8i8UHaY%~ zmeDh_cIAOqdhDrc_SW1Kzk8COnYpJjF?;E8w)mdJZ>5??A96NZLv=-P)%ZFLNOM$l z+h8{@l4n1mT~~Gx$|_3+m75s$F~VzTcadjIUx5ofk1jX$I-YMeWm6%>E1l7~uAh(& z&-Ok-O-U&zb{U$MHJcyfo8}Wl$?NwJ4K~>vef*|pOoQB^B0z5!FkM46VRKt(+<=!a zIP#X4CD<)4d*_NbKCf4fuyr1Xp(W-7J^0aI9gheulMf2~+1LRHqYy?b zdV-jf(Y3j#=7^ClVsTYmb4-F&F&~!Q&IB)`Arql2r$KFMbhlIq5joS>k~;T}o$nQu z`bhBtX1_^rR=E(eKm=@|7Ph znvg1cm;X@kITQ{bS{Pl4(9n!Uai|X|U;KVITxNEkJpG^vfU|{uLpRw<&Fd@3g=PTsP>RXOWO7HL?9^i^saU)+r8c~pIOr$?n2qYfcjALkxr z<2q2x_+f=VW7V^{cBLS?!Id_w*Ye^*0e-Va9xk!TPcAqz13-rJUb69a?Eg1E`SZ<4S5S=LFaRgZa|nN#9R1TPwl+|>gb#i>4Z1}_r;r#ZgoR3M z%(&Nr!kR@<#{|$?EJ#N^&W_h(<>Kt|r)v|$vcaFJbNssn3wJbAQjL{L$$WXhVCTcD z$#L@$0wTe&=OI)bDC8%u&oSk+7s3$>1)d!d7d}i~;_?|JNHh*t<{b?PMd7fMi01Y{ z^Qpi5XFv*1@$();nC?;B*vm7<8I*c{D=wc=Wlnv&`8G+@H}3OD^x~|%q-dbXy_+V9 zQOrU4A>}$(DTrR%&JH4lP#=7%f;#$gP+H(s?t!~0iQcrgHYV8q&T5U-=LeH07<2R= zb9f~M%XYihMmTK#EUA!{r)AB6B;m?ptcH&EYJ4AYY$OO&GL2)C zQhT;PLe;!Wt>>u3?V_iS9}3`IFcEPrkqmjS?hZzu-8S}96;M`)xcjH^02 zhZz4Pg54eKw3t!6D58+%xw=h)$JlY`!B-3VsBhRfh9BBX+^ny0#?Jk5sN`_Y&w9bW zEYR%nBqT4}?!?FLbvIy@!yJ_GJ{04E*N=eBR_{p+e}5?OJ4H5$enVb2=-(a}Sexb2 lorCV!BD5u?AhnA literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.rtlv_sg.cdb b/cpld/db/GR8RAM.rtlv_sg.cdb new file mode 100755 index 0000000000000000000000000000000000000000..dd24739c53e43265fc028cae1d0b816b4d7bbabe GIT binary patch literal 34473 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 literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.rtlv_sg_swap.cdb b/cpld/db/GR8RAM.rtlv_sg_swap.cdb new file mode 100755 index 0000000000000000000000000000000000000000..e3dd2695820831976c7115105b8f0a6be15fdd59 GIT binary patch literal 817 zcmV-11J3*r000233jqKC0CNCy073u&09Ivkb7^mGATcv8FfK75LUn0uWFRs#G9WNE zFEKJNGB7bSAX8;>c4=c}AW&grYalToQ%WFLWnv&jWNCD1Z*Efw00000002?~00000 z003zL00000001!q00000004La)RVbR!$1^8%^tRjUqCc8h?0tmj*>buu>%NVM|M&m z3O6iQcqByl`o#P8S=>dk3>*hZRdzG&UhufljUVbMGj@A4JVb5~7 zF@u_x{8ktZfk8n=3>=+G`YIaG)@a(lykS}J=ojdk+)Bxbl^?F1eBZpsjIAH zybfNQ3;qUkIBv^f?Vk;X-CjG2qp-ad_H!i_tlf!weZ`}JA@ZB@xO6}1oSoA8I?FE2 z2>msY;3NVO<6X|&Sc{*e$K9MyDa4%|4%2g!=y`fGrX$?~JEv4)B29CGB#4J2-3|>X z1oaf?7bboh!l5*Y#}ua>aIA>YOn4aiC72K1ct44c62Dg)O9p*cZqd>#Z?x6|rG<$! z$^GV9i;iY_O>?xohU@#MYh{7f^nZzcJ=jqo+prn6=WZ?93{Et^xX0%C)yPEoXxP~P zt#w1EZto`2Sl`t5PvK+k<4^I_uD`|S6954J|9Ao7U|?jBVPIgWHglW~q!{FZ*xAJ? zKG@wc#5F$1)!E-KI3y_4IV3*7KPV*L*D(O3ih&7?1%Tx4f|Oq%5q=;>XbcXADr5x; zvonAc_Hb+411Sa(AVw$zn+jJAl4oX^0wg1*Up)%41XZ=Ozi)uQpQ~R8NFf8rY&Hf7 zAo=S4tEC_jDIi9e4N?tpHc&@UBuD{+8W3|Z_yEa`*F3;JMs>KKzl$p)D}x76!H(G% vUT^?ukmC`C`iHm%`2s~47&w8Lg+T#G_B&Ya7Xs3#Dm~#UK~4k!00960Mk#8J literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.sgate.rvd b/cpld/db/GR8RAM.sgate.rvd new file mode 100755 index 0000000000000000000000000000000000000000..6506cd662cb5a07ab299b2b0252610926e0b4ab5 GIT binary patch literal 32733 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≶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 Wdd_2LnAvJt{R(&g@reAN(EUFyY5gVu literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.sgate_sm.rvd b/cpld/db/GR8RAM.sgate_sm.rvd new file mode 100755 index 0000000000000000000000000000000000000000..9731e5df226b011b438716f9616b7f5c6d253ace GIT binary patch literal 232 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 literal 0 HcmV?d00001 diff --git a/cpld/db/GR8RAM.sld_design_entry.sci b/cpld/db/GR8RAM.sld_design_entry.sci new file mode 100755 index 0000000000000000000000000000000000000000..754b594c63e2f6dc8daa9103ef640b5d4182a42c GIT binary patch literal 216 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 literal 0 HcmV?d00001 diff --git a/cpld/db/logic_util_heursitic.dat b/cpld/db/logic_util_heursitic.dat new file mode 100755 index 0000000..e69de29 diff --git a/cpld/db/prev_cmp_GR8RAM.qmsg b/cpld/db/prev_cmp_GR8RAM.qmsg new file mode 100755 index 0000000..b4c8ba2 --- /dev/null +++ b/cpld/db/prev_cmp_GR8RAM.qmsg @@ -0,0 +1,33 @@ +{ "Info" "IQEXE_SEPARATOR" "" "*******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "Quartus II" 0 -1 1616136912610 ""} +{ "Info" "IQEXE_START_BANNER_PRODUCT" "Analysis & Synthesis Quartus II 32-bit " "Running Quartus II 32-bit Analysis & Synthesis" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition " "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "Quartus II" 0 -1 1616136912625 ""} { "Info" "IQEXE_START_BANNER_TIME" "Fri Mar 19 02:55:12 2021 " "Processing started: Fri Mar 19 02:55:12 2021" { } { } 0 0 "Processing started: %1!s!" 0 0 "Quartus II" 0 -1 1616136912625 ""} } { } 4 0 "Running %2!s! %1!s!" 0 0 "Quartus II" 0 -1 1616136912625 ""} +{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_map --read_settings_files=on --write_settings_files=off GR8RAM -c GR8RAM " "Command: quartus_map --read_settings_files=on --write_settings_files=off GR8RAM -c GR8RAM" { } { } 0 0 "Command: %1!s!" 0 0 "Quartus II" 0 -1 1616136912625 ""} +{ "Info" "IQCU_PARALLEL_AUTODETECT_MULTIPLE_PROCESSORS" "2 2 " "Parallel compilation is enabled and will use 2 of the 2 processors detected" { } { } 0 20030 "Parallel compilation is enabled and will use %1!i! of the %2!i! processors detected" 0 0 "Quartus II" 0 -1 1616136914344 ""} +{ "Warning" "WVRFX_L2_VERI_ID_IS_SV_KEYWORD" "program UFM.v(72) " "Verilog HDL Declaration warning at UFM.v(72): \"program\" is SystemVerilog-2005 keyword" { } { { "UFM.v" "" { Text "Z:/Repos/GR8RAM/cpld/UFM.v" 72 0 0 } } } 0 10463 "Verilog HDL Declaration warning at %2!s!: \"%1!s!\" is SystemVerilog-2005 keyword" 1 0 "Quartus II" 0 -1 1616136914672 ""} +{ "Warning" "WVRFX_L2_VERI_ID_IS_SV_KEYWORD" "program UFM.v(188) " "Verilog HDL Declaration warning at UFM.v(188): \"program\" is SystemVerilog-2005 keyword" { } { { "UFM.v" "" { Text "Z:/Repos/GR8RAM/cpld/UFM.v" 188 0 0 } } } 0 10463 "Verilog HDL Declaration warning at %2!s!: \"%1!s!\" is SystemVerilog-2005 keyword" 1 0 "Quartus II" 0 -1 1616136914672 ""} +{ "Info" "ISGN_NUM_OF_DESIGN_UNITS_AND_ENTITIES" "ufm.v 2 2 " "Found 2 design units, including 2 entities, in source file ufm.v" { { "Info" "ISGN_ENTITY_NAME" "1 UFM_altufm_none_0ep " "Found entity 1: UFM_altufm_none_0ep" { } { { "UFM.v" "" { Text "Z:/Repos/GR8RAM/cpld/UFM.v" 46 -1 0 } } } 0 12023 "Found entity %1!d!: %2!s!" 0 0 "Quartus II" 0 -1 1616136914672 ""} { "Info" "ISGN_ENTITY_NAME" "2 UFM " "Found entity 2: UFM" { } { { "UFM.v" "" { Text "Z:/Repos/GR8RAM/cpld/UFM.v" 165 -1 0 } } } 0 12023 "Found entity %1!d!: %2!s!" 0 0 "Quartus II" 0 -1 1616136914672 ""} } { } 0 12021 "Found %2!llu! design units, including %3!llu! entities, in source file %1!s!" 0 0 "Quartus II" 0 -1 1616136914672 ""} +{ "Warning" "WVRFX_L3_VERI_XZ_EXTEND_SIGNIFICANT" "gr8ram.v(126) " "Verilog HDL warning at gr8ram.v(126): extended using \"x\" or \"z\"" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 126 0 0 } } } 0 10273 "Verilog HDL warning at %1!s!: extended using \"x\" or \"z\"" 1 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Warning" "WVRFX_L3_VERI_XZ_EXTEND_SIGNIFICANT" "gr8ram.v(410) " "Verilog HDL warning at gr8ram.v(410): extended using \"x\" or \"z\"" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 410 0 0 } } } 0 10273 "Verilog HDL warning at %1!s!: extended using \"x\" or \"z\"" 1 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Warning" "WVRFX_VERI_LITERAL_TRUNCATED_TO_FIT" "1 gr8ram.v(545) " "Verilog HDL Expression warning at gr8ram.v(545): truncated literal to match 1 bits" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 545 0 0 } } } 0 10229 "Verilog HDL Expression warning at %2!s!: truncated literal to match %1!d! bits" 0 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Warning" "WVRFX_VERI_LITERAL_TRUNCATED_TO_FIT" "1 gr8ram.v(558) " "Verilog HDL Expression warning at gr8ram.v(558): truncated literal to match 1 bits" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 558 0 0 } } } 0 10229 "Verilog HDL Expression warning at %2!s!: truncated literal to match %1!d! bits" 0 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Warning" "WSGN_SEARCH_FILE" "gr8ram.v 1 1 " "Using design file gr8ram.v, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 GR8RAM " "Found entity 1: GR8RAM" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 1 -1 0 } } } 0 12023 "Found entity %1!d!: %2!s!" 0 0 "Quartus II" 0 -1 1616136914954 ""} } { } 0 12125 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Warning" "WVRFX_L2_VERI_CREATED_IMPLICIT_NET" "UFMB gr8ram.v(275) " "Verilog HDL Implicit Net warning at gr8ram.v(275): created implicit net for \"UFMB\"" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 275 0 0 } } } 0 10236 "Verilog HDL Implicit Net warning at %2!s!: created implicit net for \"%1!s!\"" 0 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Warning" "WVRFX_L2_VERI_CREATED_IMPLICIT_NET" "RTPB gr8ram.v(278) " "Verilog HDL Implicit Net warning at gr8ram.v(278): created implicit net for \"RTPB\"" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 278 0 0 } } } 0 10236 "Verilog HDL Implicit Net warning at %2!s!: created implicit net for \"%1!s!\"" 0 0 "Quartus II" 0 -1 1616136914954 ""} +{ "Info" "ISGN_START_ELABORATION_TOP" "GR8RAM " "Elaborating entity \"GR8RAM\" for the top level hierarchy" { } { } 0 12127 "Elaborating entity \"%1!s!\" for the top level hierarchy" 0 0 "Quartus II" 0 -1 1616136914985 ""} +{ "Warning" "WVRFX_L2_HDL_OBJECT_ASSIGNED_NOT_READ" "REGEN gr8ram.v(112) " "Verilog HDL or VHDL warning at gr8ram.v(112): object \"REGEN\" assigned a value but never read" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 112 0 0 } } } 0 10036 "Verilog HDL or VHDL warning at %2!s!: object \"%1!s!\" assigned a value but never read" 0 0 "Quartus II" 0 -1 1616136914985 "|GR8RAM"} +{ "Warning" "WVRFX_VERI_2106_UNCONVERTED" "RDout gr8ram.v(127) " "Verilog HDL warning at gr8ram.v(127): object RDout used but never assigned" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 127 0 0 } } } 0 10858 "Verilog HDL warning at %2!s!: object %1!s! used but never assigned" 0 0 "Quartus II" 0 -1 1616136914985 "|GR8RAM"} +{ "Warning" "WVRFX_L2_HDL_OBJECT_ASSIGNED_NOT_READ" "UFMBr gr8ram.v(280) " "Verilog HDL or VHDL warning at gr8ram.v(280): object \"UFMBr\" assigned a value but never read" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 280 0 0 } } } 0 10036 "Verilog HDL or VHDL warning at %2!s!: object \"%1!s!\" assigned a value but never read" 0 0 "Quartus II" 0 -1 1616136914985 "|GR8RAM"} +{ "Warning" "WVRFX_L2_HDL_OBJECT_ASSIGNED_NOT_READ" "RTPBr gr8ram.v(282) " "Verilog HDL or VHDL warning at gr8ram.v(282): object \"RTPBr\" assigned a value but never read" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 282 0 0 } } } 0 10036 "Verilog HDL or VHDL warning at %2!s!: object \"%1!s!\" assigned a value but never read" 0 0 "Quartus II" 0 -1 1616136914985 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "32 18 gr8ram.v(39) " "Verilog HDL assignment warning at gr8ram.v(39): truncated value with size 32 to match size of target (18)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 39 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136914985 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "32 8 gr8ram.v(147) " "Verilog HDL assignment warning at gr8ram.v(147): truncated value with size 32 to match size of target (8)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 147 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136914985 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "32 8 gr8ram.v(154) " "Verilog HDL assignment warning at gr8ram.v(154): truncated value with size 32 to match size of target (8)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 154 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136915000 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "32 8 gr8ram.v(160) " "Verilog HDL assignment warning at gr8ram.v(160): truncated value with size 32 to match size of target (8)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 160 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136915000 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "32 4 gr8ram.v(426) " "Verilog HDL assignment warning at gr8ram.v(426): truncated value with size 32 to match size of target (4)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 426 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136915000 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "10 6 gr8ram.v(547) " "Verilog HDL assignment warning at gr8ram.v(547): truncated value with size 10 to match size of target (6)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 547 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136915000 "|GR8RAM"} +{ "Warning" "WVRFX_L2_VERI_EXPRESSION_TRUNCATED_TO_FIT" "10 6 gr8ram.v(635) " "Verilog HDL assignment warning at gr8ram.v(635): truncated value with size 10 to match size of target (6)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 635 0 0 } } } 0 10230 "Verilog HDL assignment warning at %3!s!: truncated value with size %1!d! to match size of target (%2!d!)" 0 0 "Quartus II" 0 -1 1616136915000 "|GR8RAM"} +{ "Warning" "WVRFX_VDB_DRIVERLESS_NET" "RDout 0 gr8ram.v(127) " "Net \"RDout\" at gr8ram.v(127) has no driver or initial value, using a default initial value '0'" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 127 0 0 } } } 0 10030 "Net \"%1!s!\" at %3!s! has no driver or initial value, using a default initial value '%2!c!'" 0 0 "Quartus II" 0 -1 1616136915000 "|GR8RAM"} +{ "Error" "EVRFX_VDB_NET_MULTIPLE_DRIVERS" "FCK gr8ram.v(190) " "Can't resolve multiple constant drivers for net \"FCK\" at gr8ram.v(190)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 190 0 0 } } } 0 10028 "Can't resolve multiple constant drivers for net \"%1!s!\" at %2!s!" 0 0 "Quartus II" 0 -1 1616136915016 ""} +{ "Error" "EVRFX_VDB_NET_ANOTHER_DRIVER" "gr8ram.v(187) " "Constant driver at gr8ram.v(187)" { } { { "gr8ram.v" "" { Text "Z:/Repos/GR8RAM/cpld/gr8ram.v" 187 0 0 } } } 0 10029 "Constant driver at %1!s!" 0 0 "Quartus II" 0 -1 1616136915016 ""} +{ "Error" "ESGN_TOP_HIER_ELABORATION_FAILURE" "" "Can't elaborate top-level user hierarchy" { } { } 0 12153 "Can't elaborate top-level user hierarchy" 0 0 "Quartus II" 0 -1 1616136915016 ""} +{ "Info" "IRDB_WROTE_SUPPRESSED_MSGS" "Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.map.smsg " "Generated suppressed messages file Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.map.smsg" { } { } 0 144001 "Generated suppressed messages file %1!s!" 0 0 "Quartus II" 0 -1 1616136915188 ""} +{ "Error" "EQEXE_ERROR_COUNT" "Analysis & Synthesis 3 s 17 s Quartus II 32-bit " "Quartus II 32-bit Analysis & Synthesis was unsuccessful. 3 errors, 17 warnings" { { "Error" "EQEXE_END_PEAK_VSIZE_MEMORY" "296 " "Peak virtual memory: 296 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "Quartus II" 0 -1 1616136915532 ""} { "Error" "EQEXE_END_BANNER_TIME" "Fri Mar 19 02:55:15 2021 " "Processing ended: Fri Mar 19 02:55:15 2021" { } { } 0 0 "Processing ended: %1!s!" 0 0 "Quartus II" 0 -1 1616136915532 ""} { "Error" "EQEXE_ELAPSED_TIME" "00:00:03 " "Elapsed time: 00:00:03" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "Quartus II" 0 -1 1616136915532 ""} { "Error" "EQEXE_ELAPSED_CPU_TIME" "00:00:03 " "Total CPU time (on all processors): 00:00:03" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "Quartus II" 0 -1 1616136915532 ""} } { } 0 0 "%6!s! %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "Quartus II" 0 -1 1616136915532 ""} +{ "Error" "EFLOW_ERROR_COUNT" "Full Compilation 5 s 17 s " "Quartus II Full Compilation was unsuccessful. 5 errors, 17 warnings" { } { } 0 293001 "Quartus II %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "Quartus II" 0 -1 1616136916625 ""} diff --git a/cpld/greybox_tmp/cbx_args.txt b/cpld/greybox_tmp/cbx_args.txt new file mode 100755 index 0000000..88ae65d --- /dev/null +++ b/cpld/greybox_tmp/cbx_args.txt @@ -0,0 +1,25 @@ +ERASE_TIME=500000000 +INTENDED_DEVICE_FAMILY="MAX II" +LPM_FILE=UNUSED +LPM_HINT=UNUSED +LPM_TYPE=altufm_none +OSC_FREQUENCY=180000 +PORT_ARCLKENA=PORT_UNUSED +PORT_DRCLKENA=PORT_UNUSED +PROGRAM_TIME=1600000 +WIDTH_UFM_ADDRESS=9 +DEVICE_FAMILY="MAX II" +CBX_AUTO_BLACKBOX=ALL +arclk +ardin +arshft +busy +drclk +drdin +drdout +drshft +erase +osc +oscena +program +rtpbusy diff --git a/cpld/incremental_db/README b/cpld/incremental_db/README new file mode 100755 index 0000000..9f62dcd --- /dev/null +++ b/cpld/incremental_db/README @@ -0,0 +1,11 @@ +This folder contains data for incremental compilation. + +The compiled_partitions sub-folder contains previous compilation results for each partition. +As long as this folder is preserved, incremental compilation results from earlier compiles +can be re-used. To perform a clean compilation from source files for all partitions, both +the db and incremental_db folder should be removed. + +The imported_partitions sub-folder contains the last imported QXP for each imported partition. +As long as this folder is preserved, imported partitions will be automatically re-imported +when the db or incremental_db/compiled_partitions folders are removed. + diff --git a/cpld/incremental_db/compiled_partitions/GR8RAM.db_info b/cpld/incremental_db/compiled_partitions/GR8RAM.db_info new file mode 100755 index 0000000..c41e730 --- /dev/null +++ b/cpld/incremental_db/compiled_partitions/GR8RAM.db_info @@ -0,0 +1,3 @@ +Quartus_Version = Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +Version_Index = 302049280 +Creation_Time = Thu Mar 18 03:51:58 2021 diff --git a/cpld/incremental_db/compiled_partitions/GR8RAM.root_partition.map.kpt b/cpld/incremental_db/compiled_partitions/GR8RAM.root_partition.map.kpt new file mode 100755 index 0000000000000000000000000000000000000000..19022e4ac75fc68e9c553368c0b6a6beb26b7fe2 GIT binary patch literal 3339 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 Va_f?XdG_L${{t|w^}q*&YL@^2 literal 0 HcmV?d00001 diff --git a/cpld/output_files/GR8RAM.asm.rpt b/cpld/output_files/GR8RAM.asm.rpt new file mode 100755 index 0000000..35484a4 --- /dev/null +++ b/cpld/output_files/GR8RAM.asm.rpt @@ -0,0 +1,114 @@ +Assembler report for GR8RAM +Thu Mar 18 04:40:52 2021 +Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Assembler Summary + 3. Assembler Settings + 4. Assembler Generated Files + 5. Assembler Device Options: Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.pof + 6. Assembler Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++---------------------------------------------------------------+ +; Assembler Summary ; ++-----------------------+---------------------------------------+ +; Assembler Status ; Successful - Thu Mar 18 04:40:52 2021 ; +; Revision Name ; GR8RAM ; +; Top-level Entity Name ; GR8RAM ; +; Family ; MAX II ; +; Device ; EPM240T100C5 ; ++-----------------------+---------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------+ +; Assembler Settings ; ++-----------------------------------------------------------------------------+-----------+---------------+ +; Option ; Setting ; Default Value ; ++-----------------------------------------------------------------------------+-----------+---------------+ +; Use smart compilation ; Off ; Off ; +; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; +; Enable compact report table ; Off ; Off ; +; Compression mode ; Off ; Off ; +; Clock source for configuration device ; Internal ; Internal ; +; Clock frequency of the configuration device ; 10 MHZ ; 10 MHz ; +; Divide clock frequency by ; 1 ; 1 ; +; Auto user code ; On ; On ; +; Security bit ; Off ; Off ; +; Use configuration device ; On ; On ; +; Configuration device ; Auto ; Auto ; +; Configuration device auto user code ; Off ; Off ; +; Generate Tabular Text File (.ttf) For Target Device ; Off ; Off ; +; Generate Raw Binary File (.rbf) For Target Device ; Off ; Off ; +; Generate Hexadecimal (Intel-Format) Output File (.hexout) for Target Device ; Off ; Off ; +; Hexadecimal Output File start address ; 0 ; 0 ; +; Hexadecimal Output File count direction ; Up ; Up ; +; Generate Serial Vector Format File (.svf) for Target Device ; Off ; Off ; +; Generate a JEDEC STAPL Format File (.jam) for Target Device ; Off ; Off ; +; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; Off ; Off ; +; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; On ; On ; +; In-System Programming Default Clamp State ; Tri-state ; Tri-state ; ++-----------------------------------------------------------------------------+-----------+---------------+ + + ++----------------------------------------------+ +; Assembler Generated Files ; ++----------------------------------------------+ +; File Name ; ++----------------------------------------------+ +; Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.pof ; ++----------------------------------------------+ + + ++------------------------------------------------------------------------+ +; Assembler Device Options: Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.pof ; ++----------------+-------------------------------------------------------+ +; Option ; Setting ; ++----------------+-------------------------------------------------------+ +; Device ; EPM240T100C5 ; +; JTAG usercode ; 0x00178E81 ; +; Checksum ; 0x001792F1 ; ++----------------+-------------------------------------------------------+ + + ++--------------------+ +; Assembler Messages ; ++--------------------+ +Info: ******************************************************************* +Info: Running Quartus II 32-bit Assembler + Info: Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + Info: Processing started: Thu Mar 18 04:40:50 2021 +Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off GR8RAM -c GR8RAM +Info (115031): Writing out detailed assembly data for power analysis +Info (115030): Assembler is generating device programming files +Info: Quartus II 32-bit Assembler was successful. 0 errors, 0 warnings + Info: Peak virtual memory: 293 megabytes + Info: Processing ended: Thu Mar 18 04:40:52 2021 + Info: Elapsed time: 00:00:02 + Info: Total CPU time (on all processors): 00:00:02 + + diff --git a/cpld/output_files/GR8RAM.done b/cpld/output_files/GR8RAM.done new file mode 100755 index 0000000..8fb9de0 --- /dev/null +++ b/cpld/output_files/GR8RAM.done @@ -0,0 +1 @@ +Fri Mar 19 02:49:01 2021 diff --git a/cpld/output_files/GR8RAM.fit.rpt b/cpld/output_files/GR8RAM.fit.rpt new file mode 100755 index 0000000..f3f960a --- /dev/null +++ b/cpld/output_files/GR8RAM.fit.rpt @@ -0,0 +1,1112 @@ +Fitter report for GR8RAM +Fri Mar 19 02:55:57 2021 +Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Fitter Summary + 3. Fitter Settings + 4. Parallel Compilation + 5. Fitter Resource Usage Summary + 6. Input Pins + 7. Output Pins + 8. Bidir Pins + 9. I/O Bank Usage + 10. All Package Pins + 11. Output Pin Default Load For Reported TCO + 12. Fitter Resource Utilization by Entity + 13. Delay Chain Summary + 14. Control Signals + 15. Global & Other Fast Signals + 16. Non-Global High Fan-Out Signals + 17. Fitter Device Options + 18. Fitter Messages + 19. Fitter Suppressed Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++-----------------------------------------------------------------------------+ +; Fitter Summary ; ++---------------------------+-------------------------------------------------+ +; Fitter Status ; Failed - Fri Mar 19 02:55:57 2021 ; +; Quartus II 32-bit Version ; 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition ; +; Revision Name ; GR8RAM ; +; Top-level Entity Name ; GR8RAM ; +; Family ; MAX II ; +; Device ; EPM240T100C5 ; +; Timing Models ; Final ; +; Total logic elements ; 313 / 240 ( 130 % ) ; +; Total pins ; 73 / 80 ( 91 % ) ; +; Total virtual pins ; 0 ; +; UFM blocks ; 1 / 1 ( 100 % ) ; ++---------------------------+-------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +; Fitter Settings ; ++----------------------------------------------------------------------------+--------------------------------+--------------------------------+ +; Option ; Setting ; Default Value ; ++----------------------------------------------------------------------------+--------------------------------+--------------------------------+ +; Device ; EPM240T100C5 ; ; +; Minimum Core Junction Temperature ; 0 ; ; +; Maximum Core Junction Temperature ; 85 ; ; +; Fit Attempts to Skip ; 0 ; 0.0 ; +; Device I/O Standard ; 3.3-V LVTTL ; ; +; Fitter Effort ; Standard Fit ; Auto Fit ; +; Use smart compilation ; Off ; Off ; +; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; +; Enable compact report table ; Off ; Off ; +; Router Timing Optimization Level ; Normal ; Normal ; +; Placement Effort Multiplier ; 1.0 ; 1.0 ; +; Router Effort Multiplier ; 1.0 ; 1.0 ; +; Always Enable Input Buffers ; Off ; Off ; +; Optimize Hold Timing ; IO Paths and Minimum TPD Paths ; IO Paths and Minimum TPD Paths ; +; Optimize Multi-Corner Timing ; Off ; Off ; +; Guarantee I/O Paths Have Zero Hold Time at Fast Corner ; On ; On ; +; PowerPlay Power Optimization ; Normal compilation ; Normal compilation ; +; Optimize Timing ; Normal compilation ; Normal compilation ; +; Optimize Timing for ECOs ; Off ; Off ; +; Regenerate full fit report during ECO compiles ; Off ; Off ; +; Optimize IOC Register Placement for Timing ; Normal ; Normal ; +; Limit to One Fitting Attempt ; Off ; Off ; +; Final Placement Optimizations ; Automatically ; Automatically ; +; Fitter Aggressive Routability Optimizations ; Automatically ; Automatically ; +; Fitter Initial Placement Seed ; 1 ; 1 ; +; Slow Slew Rate ; Off ; Off ; +; PCI I/O ; Off ; Off ; +; Weak Pull-Up Resistor ; Off ; Off ; +; Enable Bus-Hold Circuitry ; Off ; Off ; +; Auto Delay Chains ; On ; On ; +; Auto Delay Chains for High Fanout Input Pins ; Off ; Off ; +; Perform Physical Synthesis for Combinational Logic for Performance ; Off ; Off ; +; Perform Register Duplication for Performance ; Off ; Off ; +; Perform Register Retiming for Performance ; Off ; Off ; +; Perform Asynchronous Signal Pipelining ; Off ; Off ; +; Physical Synthesis Effort Level ; Normal ; Normal ; +; Logic Cell Insertion - Logic Duplication ; Auto ; Auto ; +; Auto Register Duplication ; Auto ; Auto ; +; Auto Global Clock ; On ; On ; +; Auto Global Register Control Signals ; On ; On ; +; Force Fitter to Avoid Periphery Placement Warnings ; Off ; Off ; ++----------------------------------------------------------------------------+--------------------------------+--------------------------------+ + + ++------------------------------------------+ +; Parallel Compilation ; ++----------------------------+-------------+ +; Processors ; Number ; ++----------------------------+-------------+ +; Number detected on machine ; 2 ; +; Maximum allowed ; 2 ; +; ; ; +; Average used ; 1.00 ; +; Maximum used ; 2 ; +; ; ; +; Usage by Processor ; % Time Used ; +; Processor 1 ; 100.0% ; +; Processor 2 ; < 0.1% ; ++----------------------------+-------------+ + + ++---------------------------------------------------+ +; Fitter Resource Usage Summary ; ++--------------------------------+------------------+ +; Resource ; Usage ; ++--------------------------------+------------------+ +; Total logic elements ; Not available ; +; ; ; +; Total LABs ; Not available ; +; Logic elements in carry chains ; 41 ; +; Virtual pins ; 0 ; +; I/O pins ; 73 / 80 ( 91 % ) ; +; -- Clock pins ; 0 / 4 ( 0 % ) ; +; ; ; +; Global signals ; 1 ; +; UFM blocks ; 1 / 1 ( 100 % ) ; +; Global clocks ; 1 / 4 ( 25 % ) ; +; JTAGs ; 0 / 1 ( 0 % ) ; +; Maximum fan-out ; 123 ; +; Highest non-global fan-out ; 33 ; +; Total fan-out ; 1329 ; +; Average fan-out ; 3.43 ; ++--------------------------------+------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Input Pins ; ++---------+------------+----------+-----------------------+--------------------+--------+-----------------+----------+--------------+--------------+----------------------+ +; Name ; Pin # ; I/O Bank ; Combinational Fan-Out ; Registered Fan-Out ; Global ; PCI I/O Enabled ; Bus Hold ; Weak Pull Up ; I/O Standard ; Location assigned by ; ++---------+------------+----------+-----------------------+--------------------+--------+-----------------+----------+--------------+--------------+----------------------+ +; C25M ; Unassigned ; -- ; 123 ; 0 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; DMAin ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; INTin ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; MISO ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; PHI0 ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[0] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[10] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[11] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[12] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[13] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[14] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[15] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[1] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[2] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[3] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[4] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[5] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[6] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[7] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[8] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; RA[9] ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; nBOD ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; nDEVSEL ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; nIOSEL ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; nIOSTRB ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; nRES ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; +; nWE ; Unassigned ; -- ; 1 ; 0 ; no ; no ; no ; Off ; 3.3-V LVTTL ; Fitter ; ++---------+------------+----------+-----------------------+--------------------+--------+-----------------+----------+--------------+--------------+----------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Output Pins ; ++---------+------------+----------+-----------------+----------------+-----------------+------------+---------------+----------+--------------+--------------+------------------+------------------------+----------------------+-------+----------------------+---------------------+ +; Name ; Pin # ; I/O Bank ; Output Register ; Slow Slew Rate ; PCI I/O Enabled ; Open Drain ; TRI Primitive ; Bus Hold ; Weak Pull Up ; I/O Standard ; Current Strength ; Fast Output Connection ; Location assigned by ; Load ; Output Enable Source ; Output Enable Group ; ++---------+------------+----------+-----------------+----------------+-----------------+------------+---------------+----------+--------------+--------------+------------------+------------------------+----------------------+-------+----------------------+---------------------+ +; DMAout ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; DQMH ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; DQML ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; FCK ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; INTout ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; MOSI ; Unassigned ; -- ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RAdir ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RCKE ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RDdir ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[0] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[10] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[11] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[12] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[1] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[2] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[3] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[4] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[5] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[6] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[7] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[8] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SA[9] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SBA[0] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SBA[1] ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; nCAS ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; nFCS ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; nRAS ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; nRCS ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; nRESout ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; nSWE ; Unassigned ; -- ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; ++---------+------------+----------+-----------------+----------------+-----------------+------------+---------------+----------+--------------+--------------+------------------+------------------------+----------------------+-------+----------------------+---------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Bidir Pins ; ++-------+------------+----------+-----------------------+--------------------+--------+-----------------+----------------+-----------------+------------+----------+--------------+--------------+------------------+------------------------+----------------------+-------+----------------------+---------------------+ +; Name ; Pin # ; I/O Bank ; Combinational Fan-Out ; Registered Fan-Out ; Global ; Output Register ; Slow Slew Rate ; PCI I/O Enabled ; Open Drain ; Bus Hold ; Weak Pull Up ; I/O Standard ; Current Strength ; Fast Output Connection ; Location assigned by ; Load ; Output Enable Source ; Output Enable Group ; ++-------+------------+----------+-----------------------+--------------------+--------+-----------------+----------------+-----------------+------------+----------+--------------+--------------+------------------+------------------------+----------------------+-------+----------------------+---------------------+ +; RD[0] ; Unassigned ; -- ; 4 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[1] ; Unassigned ; -- ; 5 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[2] ; Unassigned ; -- ; 4 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[3] ; Unassigned ; -- ; 4 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[4] ; Unassigned ; -- ; 4 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[5] ; Unassigned ; -- ; 4 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[6] ; Unassigned ; -- ; 4 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; RD[7] ; Unassigned ; -- ; 6 ; 0 ; no ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; - ; - ; +; SD[0] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[1] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[2] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[3] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[4] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[5] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[6] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; +; SD[7] ; Unassigned ; -- ; 0 ; 0 ; no ; no ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; Default ; no ; Fitter ; 10 pF ; SDOE ; - ; ++-------+------------+----------+-----------------------+--------------------+--------+-----------------+----------------+-----------------+------------+----------+--------------+--------------+------------------+------------------------+----------------------+-------+----------------------+---------------------+ + + ++----------------------------------------------------------+ +; I/O Bank Usage ; ++----------+----------------+---------------+--------------+ +; I/O Bank ; Usage ; VCCIO Voltage ; VREF Voltage ; ++----------+----------------+---------------+--------------+ +; 1 ; 0 / 38 ( 0 % ) ; 3.3V ; -- ; +; 2 ; 0 / 42 ( 0 % ) ; 3.3V ; -- ; +; Unknown ; 73 ; -- ; ; ++----------+----------------+---------------+--------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +; All Package Pins ; ++----------+------------+----------+----------------+--------+--------------+-----------+------------+-----------------+----------+--------------+ +; Location ; Pad Number ; I/O Bank ; Pin Name/Usage ; Dir. ; I/O Standard ; Voltage ; I/O Type ; User Assignment ; Bus Hold ; Weak Pull Up ; ++----------+------------+----------+----------------+--------+--------------+-----------+------------+-----------------+----------+--------------+ +; 1 ; 83 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 2 ; 0 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 3 ; 1 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 4 ; 2 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 5 ; 3 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 6 ; 4 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 7 ; 5 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 8 ; 6 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 9 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; 10 ; ; ; GNDIO ; gnd ; ; ; -- ; ; -- ; -- ; +; 11 ; ; ; GNDINT ; gnd ; ; ; -- ; ; -- ; -- ; +; 12 ; 7 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 13 ; ; ; VCCINT ; power ; ; 2.5V/3.3V ; -- ; ; -- ; -- ; +; 14 ; 8 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 15 ; 9 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 16 ; 10 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 17 ; 11 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 18 ; 12 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 19 ; 13 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 20 ; 14 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 21 ; 15 ; 1 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 22 ; 16 ; 1 ; #TMS ; input ; ; ; -- ; ; -- ; -- ; +; 23 ; 17 ; 1 ; #TDI ; input ; ; ; -- ; ; -- ; -- ; +; 24 ; 18 ; 1 ; #TCK ; input ; ; ; -- ; ; -- ; -- ; +; 25 ; 19 ; 1 ; #TDO ; output ; ; ; -- ; ; -- ; -- ; +; 26 ; 20 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 27 ; 21 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 28 ; 22 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 29 ; 23 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 30 ; 24 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 31 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; 32 ; ; ; GNDIO ; gnd ; ; ; -- ; ; -- ; -- ; +; 33 ; 25 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 34 ; 26 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 35 ; 27 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 36 ; 28 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 37 ; 29 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 38 ; 30 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 39 ; 31 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 40 ; 32 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 41 ; 33 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 42 ; 34 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 43 ; 35 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 44 ; 36 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 45 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; 46 ; ; ; GNDIO ; gnd ; ; ; -- ; ; -- ; -- ; +; 47 ; 37 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 48 ; 38 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 49 ; 39 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 50 ; 40 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 51 ; 41 ; 1 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 52 ; 42 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 53 ; 43 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 54 ; 44 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 55 ; 45 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 56 ; 46 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 57 ; 47 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 58 ; 48 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 59 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; 60 ; ; ; GNDIO ; gnd ; ; ; -- ; ; -- ; -- ; +; 61 ; 49 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 62 ; 50 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 63 ; ; ; VCCINT ; power ; ; 2.5V/3.3V ; -- ; ; -- ; -- ; +; 64 ; 51 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 65 ; ; ; GNDINT ; gnd ; ; ; -- ; ; -- ; -- ; +; 66 ; 52 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 67 ; 53 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 68 ; 54 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 69 ; 55 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 70 ; 56 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 71 ; 57 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 72 ; 58 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 73 ; 59 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 74 ; 60 ; 2 ; GND* ; ; ; ; Row I/O ; ; no ; Off ; +; 75 ; 61 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 76 ; 62 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 77 ; 63 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 78 ; 64 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 79 ; ; ; GNDIO ; gnd ; ; ; -- ; ; -- ; -- ; +; 80 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; 81 ; 65 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 82 ; 66 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 83 ; 67 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 84 ; 68 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 85 ; 69 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 86 ; 70 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 87 ; 71 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 88 ; 72 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 89 ; 73 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 90 ; 74 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 91 ; 75 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 92 ; 76 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 93 ; ; ; GNDIO ; gnd ; ; ; -- ; ; -- ; -- ; +; 94 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; 95 ; 77 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 96 ; 78 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 97 ; 79 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 98 ; 80 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 99 ; 81 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; +; 100 ; 82 ; 2 ; GND* ; ; ; ; Column I/O ; ; no ; Off ; ++----------+------------+----------+----------------+--------+--------------+-----------+------------+-----------------+----------+--------------+ +Note: Pin directions (input, output or bidir) are based on device operating in user mode. + + ++-------------------------------------------------------------+ +; Output Pin Default Load For Reported TCO ; ++----------------------------+-------+------------------------+ +; I/O Standard ; Load ; Termination Resistance ; ++----------------------------+-------+------------------------+ +; 3.3-V LVTTL ; 10 pF ; Not Available ; +; 3.3-V LVCMOS ; 10 pF ; Not Available ; +; 2.5 V ; 10 pF ; Not Available ; +; 1.8 V ; 10 pF ; Not Available ; +; 1.5 V ; 10 pF ; Not Available ; +; 3.3V Schmitt Trigger Input ; 10 pF ; Not Available ; +; 2.5V Schmitt Trigger Input ; 10 pF ; Not Available ; ++----------------------------+-------+------------------------+ +Note: User assignments will override these defaults. The user specified values are listed in the Output Pins and Bidir Pins tables. + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Fitter Resource Utilization by Entity ; ++-----------------------------------------------------------+-------------+--------------+------------+------+--------------+--------------+-------------------+------------------+-----------------+------------+------------------------------------------------------------------------+--------------+ +; Compilation Hierarchy Node ; Logic Cells ; LC Registers ; UFM Blocks ; Pins ; Virtual Pins ; LUT-Only LCs ; Register-Only LCs ; LUT/Register LCs ; Carry Chain LCs ; Packed LCs ; Full Hierarchy Name ; Library Name ; ++-----------------------------------------------------------+-------------+--------------+------------+------+--------------+--------------+-------------------+------------------+-----------------+------------+------------------------------------------------------------------------+--------------+ +; |GR8RAM ; 313 (313) ; 123 ; 1 ; 73 ; 0 ; 190 (190) ; 0 (0) ; 123 (123) ; 41 (41) ; 30 (30) ; |GR8RAM ; work ; +; |UFM:UFM_inst| ; 0 (0) ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; |GR8RAM|UFM:UFM_inst ; work ; +; |UFM_altufm_none_0ep:UFM_altufm_none_0ep_component| ; 0 (0) ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; |GR8RAM|UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component ; work ; ++-----------------------------------------------------------+-------------+--------------+------------+------+--------------+--------------+-------------------+------------------+-----------------+------------+------------------------------------------------------------------------+--------------+ +Note: For table entries with two numbers listed, the numbers in parentheses indicate the number of resources of the given type used by the specific entity alone. The numbers listed outside of parentheses indicate the total resources of the given type used by the specific entity and all of its sub-entities in the hierarchy. + + ++------------------------------------+ +; Delay Chain Summary ; ++---------+----------+---------------+ +; Name ; Pin Type ; Pad to Core 0 ; ++---------+----------+---------------+ +; nIOSEL ; Input ; 0 ; +; nIOSTRB ; Input ; 0 ; +; DMAin ; Input ; 0 ; +; INTin ; Input ; 0 ; +; C25M ; Input ; 0 ; +; nWE ; Input ; 0 ; +; RA[8] ; Input ; 0 ; +; RA[9] ; Input ; 0 ; +; RA[10] ; Input ; 0 ; +; RA[11] ; Input ; 0 ; +; RA[14] ; Input ; 0 ; +; RA[15] ; Input ; 0 ; +; RA[12] ; Input ; 0 ; +; RA[13] ; Input ; 0 ; +; RA[1] ; Input ; 0 ; +; RA[0] ; Input ; 0 ; +; RA[2] ; Input ; 0 ; +; RA[3] ; Input ; 0 ; +; RA[4] ; Input ; 0 ; +; RA[5] ; Input ; 0 ; +; RA[6] ; Input ; 0 ; +; RA[7] ; Input ; 0 ; +; nDEVSEL ; Input ; 0 ; +; MISO ; Input ; 0 ; +; nRES ; Input ; 0 ; +; PHI0 ; Input ; 0 ; +; nBOD ; Input ; 0 ; +; RAdir ; Output ; -- ; +; RDdir ; Output ; -- ; +; DMAout ; Output ; -- ; +; INTout ; Output ; -- ; +; nRESout ; Output ; -- ; +; SBA[0] ; Output ; -- ; +; SBA[1] ; Output ; -- ; +; SA[0] ; Output ; -- ; +; SA[1] ; Output ; -- ; +; SA[2] ; Output ; -- ; +; SA[3] ; Output ; -- ; +; SA[4] ; Output ; -- ; +; SA[5] ; Output ; -- ; +; SA[6] ; Output ; -- ; +; SA[7] ; Output ; -- ; +; SA[8] ; Output ; -- ; +; SA[9] ; Output ; -- ; +; SA[10] ; Output ; -- ; +; SA[11] ; Output ; -- ; +; SA[12] ; Output ; -- ; +; nRCS ; Output ; -- ; +; nRAS ; Output ; -- ; +; nCAS ; Output ; -- ; +; nSWE ; Output ; -- ; +; DQML ; Output ; -- ; +; DQMH ; Output ; -- ; +; RCKE ; Output ; -- ; +; nFCS ; Output ; -- ; +; FCK ; Output ; -- ; +; MOSI ; Output ; -- ; +; RD[0] ; Bidir ; 0 ; +; RD[1] ; Bidir ; 0 ; +; RD[2] ; Bidir ; 0 ; +; RD[3] ; Bidir ; 0 ; +; RD[4] ; Bidir ; 0 ; +; RD[5] ; Bidir ; 0 ; +; RD[6] ; Bidir ; 0 ; +; RD[7] ; Bidir ; 0 ; +; SD[0] ; Bidir ; 0 ; +; SD[1] ; Bidir ; 0 ; +; SD[2] ; Bidir ; 0 ; +; SD[3] ; Bidir ; 0 ; +; SD[4] ; Bidir ; 0 ; +; SD[5] ; Bidir ; 0 ; +; SD[6] ; Bidir ; 0 ; +; SD[7] ; Bidir ; 0 ; ++---------+----------+---------------+ + + ++------------------------------------------------------------------------------------------------------------------+ +; Control Signals ; ++------------+------------+---------+---------------------------+--------+----------------------+------------------+ +; Name ; Location ; Fan-Out ; Usage ; Global ; Global Resource Used ; Global Line Name ; ++------------+------------+---------+---------------------------+--------+----------------------+------------------+ +; Addr[23]~2 ; Unassigned ; 8 ; Clock enable ; no ; -- ; -- ; +; Addr[2]~3 ; Unassigned ; 8 ; Clock enable ; no ; -- ; -- ; +; Addr[8]~5 ; Unassigned ; 8 ; Clock enable ; no ; -- ; -- ; +; C25M ; Unassigned ; 123 ; Clock ; yes ; Global Clock ; Not Available ; +; DQMH~8 ; Unassigned ; 2 ; Clock enable ; no ; -- ; -- ; +; DRShift~0 ; Unassigned ; 6 ; Clock enable ; no ; -- ; -- ; +; DRShift~2 ; Unassigned ; 3 ; Clock enable ; no ; -- ; -- ; +; Equal0~0 ; Unassigned ; 2 ; Clock enable ; no ; -- ; -- ; +; IS[1]~2 ; Unassigned ; 1 ; Clock enable ; no ; -- ; -- ; +; InitActv ; Unassigned ; 25 ; Clock enable, Sync. clear ; no ; -- ; -- ; +; MOSIOE ; Unassigned ; 3 ; Output enable ; no ; -- ; -- ; +; MOSIOE~0 ; Unassigned ; 2 ; Clock enable ; no ; -- ; -- ; +; SDOE ; Unassigned ; 8 ; Output enable ; no ; -- ; -- ; +; S[3] ; Unassigned ; 26 ; Clock enable ; no ; -- ; -- ; +; WRD[0]~0 ; Unassigned ; 6 ; Clock enable ; no ; -- ; -- ; +; always7~0 ; Unassigned ; 15 ; Clock enable ; no ; -- ; -- ; +; nRESr ; Unassigned ; 28 ; Sync. clear, Sync. load ; no ; -- ; -- ; ++------------+------------+---------+---------------------------+--------+----------------------+------------------+ + + ++-----------------------------------------------------------------------+ +; Global & Other Fast Signals ; ++------+------------+---------+----------------------+------------------+ +; Name ; Location ; Fan-Out ; Global Resource Used ; Global Line Name ; ++------+------------+---------+----------------------+------------------+ +; C25M ; Unassigned ; 123 ; Global Clock ; Not Available ; ++------+------------+---------+----------------------+------------------+ + + ++-------------------------------------------------------------------------------------------------------+ +; Non-Global High Fan-Out Signals ; ++---------------------------------------------------------------------------------------------+---------+ +; Name ; Fan-Out ; ++---------------------------------------------------------------------------------------------+---------+ +; nWEcur ; 33 ; +; nRESr ; 28 ; +; S[3] ; 26 ; +; S[2] ; 26 ; +; always20~1 ; 25 ; +; InitActv ; 25 ; +; LS[1] ; 25 ; +; S[1] ; 22 ; +; LS[4] ; 22 ; +; S[0] ; 20 ; +; LS[2] ; 20 ; +; IS[1] ; 18 ; +; LS[0] ; 18 ; +; LS[3] ; 16 ; +; always7~0 ; 15 ; +; IS[0] ; 15 ; +; Equal79~0 ; 13 ; +; LS[6] ; 13 ; +; Equal8~2 ; 10 ; +; Equal78~0 ; 10 ; +; LS[5] ; 10 ; +; Equal9~0 ; 9 ; +; always10~2 ; 9 ; +; RAMSpecSEL~0 ; 9 ; +; LessThan1~0 ; 9 ; +; SDOE ; 8 ; +; Addr[8]~5 ; 8 ; +; Addr[2]~3 ; 8 ; +; Addr[23]~2 ; 8 ; +; SA[7]~48 ; 8 ; +; SA[7]~47 ; 8 ; +; Equal17~0 ; 7 ; +; RAMSEL ; 7 ; +; LS[13] ; 7 ; +; LS[12] ; 7 ; +; RD[7]~7 ; 6 ; +; WRD[0]~0 ; 6 ; +; DRShift~1 ; 6 ; +; DRShift~0 ; 6 ; +; DQMH~5 ; 6 ; +; Equal73~0 ; 6 ; +; SA~25 ; 6 ; +; RAcur[0] ; 6 ; +; LS[17] ; 6 ; +; LS[16] ; 6 ; +; LS[15] ; 6 ; +; LS[14] ; 6 ; +; CmdActv ; 6 ; +; RD[1]~1 ; 5 ; +; SA[7]~84 ; 5 ; +; nBODf ; 5 ; +; RAcur[2] ; 5 ; +; Equal68~0 ; 5 ; +; SetLoaded ; 5 ; +; always20~2 ; 5 ; +; Addr[7] ; 5 ; +; RAcur[3] ; 5 ; +; Addr[10] ; 5 ; +; Addr[0] ; 5 ; +; always20~0 ; 5 ; +; RAcur[1] ; 5 ; +; Equal1~5 ; 5 ; +; LS[7] ; 5 ; +; Equal1~0 ; 5 ; +; SetFW[1]~_wirecell ; 4 ; +; RD[6]~6 ; 4 ; +; RD[5]~5 ; 4 ; +; RD[4]~4 ; 4 ; +; RD[3]~3 ; 4 ; +; RD[2]~2 ; 4 ; +; RD[0]~0 ; 4 ; +; always10~3 ; 4 ; +; MOSIout~0 ; 4 ; +; DEVSELr ; 4 ; +; Addr[9] ; 4 ; +; Addr[8] ; 4 ; +; Addr[6] ; 4 ; +; Addr[15] ; 4 ; +; Addr[5] ; 4 ; +; Addr[4] ; 4 ; +; Addr[3] ; 4 ; +; Addr[2] ; 4 ; +; SA[12]~21 ; 4 ; +; Addr[1] ; 4 ; +; SBA~5 ; 4 ; +; RefDone ; 4 ; +; RAMSpecRD ; 4 ; +; LS[11] ; 4 ; +; LS[10] ; 4 ; +; LS[9] ; 4 ; +; LS[8] ; 4 ; +; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; 4 ; +; SA[2]~80 ; 3 ; +; Equal17~2 ; 3 ; +; Equal31~1 ; 3 ; +; SetFW[1] ; 3 ; +; DRShift~2 ; 3 ; +; MOSIOE ; 3 ; +; RAMSEL~0 ; 3 ; +; Equal84~0 ; 3 ; +; Addr[14] ; 3 ; +; Addr[13] ; 3 ; +; SA~38 ; 3 ; +; Addr[12] ; 3 ; +; Addr[11] ; 3 ; +; SA[2]~26 ; 3 ; +; SA[2]~22 ; 3 ; +; SA[2]~18 ; 3 ; +; SA[2]~17 ; 3 ; +; SA[2]~16 ; 3 ; +; Equal2~2 ; 3 ; +; Equal1~3 ; 3 ; +; Equal1~2 ; 3 ; +; Equal1~1 ; 3 ; +; nSWE~reg0 ; 3 ; +; nCAS~reg0 ; 3 ; +; nRAS~reg0 ; 3 ; +; nRCS~reg0 ; 3 ; +; SA[10]~reg0 ; 3 ; +; SA[9]~reg0 ; 3 ; +; SA[3]~reg0 ; 3 ; +; always10~11 ; 2 ; +; DQMH~12 ; 2 ; +; Equal33~1 ; 2 ; +; SetFW~0 ; 2 ; +; MOSIOE~0 ; 2 ; +; SetFW[0] ; 2 ; +; IS[1]~0 ; 2 ; +; Equal67~1 ; 2 ; +; SDRAMActv ; 2 ; +; PHI0r1 ; 2 ; +; always10~7 ; 2 ; +; Equal0~0 ; 2 ; +; Equal17~1 ; 2 ; +; MOSIout ; 2 ; +; FCKEN ; 2 ; +; Equal30~0 ; 2 ; +; Equal67~0 ; 2 ; +; Equal31~0 ; 2 ; +; LessThan0~0 ; 2 ; +; FCS~1 ; 2 ; +; FCS~0 ; 2 ; +; DQMH~8 ; 2 ; +; DQMH~6 ; 2 ; +; DQMH~4 ; 2 ; +; Addr[22] ; 2 ; +; Addr[21] ; 2 ; +; Addr[20] ; 2 ; +; Addr[19] ; 2 ; +; Addr[18] ; 2 ; +; Addr[17] ; 2 ; +; Addr[16] ; 2 ; +; SDOE~0 ; 2 ; +; Bank[1] ; 2 ; +; Equal77~1 ; 2 ; +; Equal77~0 ; 2 ; +; SBA~6 ; 2 ; +; SBA~2 ; 2 ; +; SetLim8M ; 2 ; +; RACr ; 2 ; +; Equal4~0 ; 2 ; +; Addr[23] ; 2 ; +; SDRAMActv~0 ; 2 ; +; InitIntr ; 2 ; +; Equal2~1 ; 2 ; +; ARCLK ; 2 ; +; FCS ; 2 ; +; SBA[1]~reg0 ; 2 ; +; SBA[0]~reg0 ; 2 ; +; nBOD ; 1 ; +; PHI0 ; 1 ; +; nRES ; 1 ; +; MISO ; 1 ; +; nDEVSEL ; 1 ; +; RA[7] ; 1 ; +; RA[6] ; 1 ; +; RA[5] ; 1 ; +; RA[4] ; 1 ; +; RA[3] ; 1 ; +; RA[2] ; 1 ; +; RA[0] ; 1 ; +; RA[1] ; 1 ; +; RA[13] ; 1 ; +; RA[12] ; 1 ; +; RA[15] ; 1 ; +; RA[14] ; 1 ; +; RA[11] ; 1 ; +; RA[10] ; 1 ; +; RA[9] ; 1 ; +; RA[8] ; 1 ; +; nWE ; 1 ; +; INTin ; 1 ; +; DMAin ; 1 ; +; ~GND ; 1 ; +; ARShift~3 ; 1 ; +; DQMH~13 ; 1 ; +; DQML~5 ; 1 ; +; SA~83 ; 1 ; +; SA~82 ; 1 ; +; SA~81 ; 1 ; +; SDOE~1 ; 1 ; +; SetFW~3 ; 1 ; +; SetFW~1 ; 1 ; +; SetLoaded~1 ; 1 ; +; SetLoaded~0 ; 1 ; +; WRD[7] ; 1 ; +; WRD[6] ; 1 ; +; Equal32~0 ; 1 ; +; Equal18~0 ; 1 ; +; Equal17~3 ; 1 ; +; Equal19~0 ; 1 ; +; MOSIout~4 ; 1 ; +; MOSIout~3 ; 1 ; +; MOSIout~2 ; 1 ; +; MOSIout~1 ; 1 ; +; FCKEN~1 ; 1 ; +; FCKEN~0 ; 1 ; +; DEVSELr0 ; 1 ; +; Equal84~1 ; 1 ; +; Add1~37 ; 1 ; +; Add1~35 ; 1 ; +; Add1~32 ; 1 ; +; Add1~30 ; 1 ; +; Add1~27 ; 1 ; +; Add1~25 ; 1 ; +; Add1~22 ; 1 ; +; Add1~20 ; 1 ; +; Add2~37 ; 1 ; +; Add2~35 ; 1 ; +; Add1~17 ; 1 ; +; Add1~15 ; 1 ; +; Add2~32 ; 1 ; +; Add2~30 ; 1 ; +; Add1~12 ; 1 ; +; Add1~10 ; 1 ; +; Add3~35 ; 1 ; +; Add1~7 ; 1 ; +; Add1~5 ; 1 ; +; Add3~32 ; 1 ; +; Add3~30 ; 1 ; +; Add2~25 ; 1 ; +; Add3~27 ; 1 ; +; Add3~25 ; 1 ; +; Add2~22 ; 1 ; +; Add2~20 ; 1 ; +; Add2~17 ; 1 ; +; Add2~15 ; 1 ; +; Add3~22 ; 1 ; +; Add3~20 ; 1 ; +; Add2~12 ; 1 ; +; Add2~10 ; 1 ; +; always11~1 ; 1 ; +; always11~0 ; 1 ; +; Add3~17 ; 1 ; +; Add3~15 ; 1 ; +; Add2~7 ; 1 ; +; Add2~5 ; 1 ; +; Add3~12 ; 1 ; +; Add3~10 ; 1 ; +; Addr[8]~4 ; 1 ; +; Add2~2 ; 1 ; +; Add2~0 ; 1 ; +; Add3~7 ; 1 ; +; Add3~5 ; 1 ; +; Add3~2 ; 1 ; +; Add3~0 ; 1 ; +; IS[1]~2 ; 1 ; +; Equal68~1 ; 1 ; +; Equal1~6 ; 1 ; +; PHI0r2 ; 1 ; +; RefDone~0 ; 1 ; +; S~1 ; 1 ; +; SetLim8M~0 ; 1 ; +; Addr[23]~1 ; 1 ; +; always10~10 ; 1 ; +; always10~9 ; 1 ; +; always10~8 ; 1 ; +; always10~6 ; 1 ; +; always10~5 ; 1 ; +; Addr[23]~0 ; 1 ; +; always10~4 ; 1 ; +; Equal8~1 ; 1 ; +; Add1~0 ; 1 ; +; InitActv~0 ; 1 ; +; Equal33~0 ; 1 ; +; ARCLK~1 ; 1 ; +; ARCLK~0 ; 1 ; +; always15~0 ; 1 ; +; FCS~2 ; 1 ; +; DQMH~10 ; 1 ; +; DQMH~9 ; 1 ; +; DQMH~7 ; 1 ; +; DQML~3 ; 1 ; +; DQML~2 ; 1 ; +; nSWE~2 ; 1 ; +; nSWE~1 ; 1 ; +; nSWE~0 ; 1 ; +; nCAS~4 ; 1 ; +; nCAS~3 ; 1 ; +; nCAS~2 ; 1 ; +; nCAS~1 ; 1 ; +; nCAS~0 ; 1 ; +; nRAS~3 ; 1 ; +; nRAS~2 ; 1 ; +; nRAS~1 ; 1 ; +; nRAS~0 ; 1 ; +; nRCS~4 ; 1 ; +; nRCS~3 ; 1 ; +; nRCS~2 ; 1 ; +; nRCS~1 ; 1 ; +; nRCS~0 ; 1 ; +; SA~78 ; 1 ; +; SA~77 ; 1 ; +; SA~76 ; 1 ; +; SA~74 ; 1 ; +; SA~73 ; 1 ; +; SA~72 ; 1 ; +; SA~71 ; 1 ; +; SA~70 ; 1 ; +; SA~68 ; 1 ; +; SA~67 ; 1 ; +; RAcur[9] ; 1 ; +; SA~66 ; 1 ; +; SA~64 ; 1 ; +; SA~63 ; 1 ; +; SA~62 ; 1 ; +; SA~60 ; 1 ; +; SA~59 ; 1 ; +; SA~58 ; 1 ; +; SA~56 ; 1 ; +; SA~55 ; 1 ; +; SA~54 ; 1 ; +; SA~53 ; 1 ; +; SA~51 ; 1 ; +; SA~50 ; 1 ; +; SA~49 ; 1 ; +; SA~45 ; 1 ; +; SA~44 ; 1 ; +; SA~43 ; 1 ; +; SA~42 ; 1 ; +; SA~41 ; 1 ; +; SA~40 ; 1 ; +; SA~39 ; 1 ; +; SA~36 ; 1 ; +; SA~35 ; 1 ; +; SA~34 ; 1 ; +; SA~33 ; 1 ; +; SA~31 ; 1 ; +; SA~30 ; 1 ; +; SA~29 ; 1 ; +; RAcur[11] ; 1 ; +; SA~28 ; 1 ; +; SA~24 ; 1 ; +; SA~23 ; 1 ; +; SA~20 ; 1 ; +; RAcur[10] ; 1 ; +; SA~19 ; 1 ; +; nBODr0 ; 1 ; +; PHI0r0 ; 1 ; +; nRESr0 ; 1 ; +; SBA~7 ; 1 ; +; nBODr ; 1 ; +; WRD[5] ; 1 ; +; WRD[4] ; 1 ; +; SBA~4 ; 1 ; +; WRD[3] ; 1 ; +; SBA~1 ; 1 ; +; SBA~0 ; 1 ; +; Equal8~0 ; 1 ; +; RAcur[8] ; 1 ; +; WRD[2] ; 1 ; +; WRD[1] ; 1 ; +; CmdActv~0 ; 1 ; +; WRD[0] ; 1 ; +; Equal2~0 ; 1 ; +; nBODf0 ; 1 ; +; Equal1~4 ; 1 ; +; LS[16]~31 ; 1 ; +; LS[4]~29 ; 1 ; +; LS[15]~27 ; 1 ; +; LS[14]~25 ; 1 ; +; LS[13]~23 ; 1 ; +; LS[12]~21 ; 1 ; +; LS[11]~19 ; 1 ; +; LS[10]~17 ; 1 ; +; LS[9]~15 ; 1 ; +; LS[8]~13 ; 1 ; +; LS[6]~11 ; 1 ; +; LS[5]~9 ; 1 ; +; LS[7]~7 ; 1 ; +; LS[3]~5 ; 1 ; +; LS[2]~3 ; 1 ; +; LS[1]~1 ; 1 ; +; ARShift ; 1 ; +; DRShift ; 1 ; +; DRCLK ; 1 ; +; FCK~reg0 ; 1 ; +; DQMH~reg0 ; 1 ; +; DQML~reg0 ; 1 ; +; SA[12]~reg0 ; 1 ; +; SA[11]~reg0 ; 1 ; +; SA[8]~reg0 ; 1 ; +; SA[7]~reg0 ; 1 ; +; SA[6]~reg0 ; 1 ; +; SA[5]~reg0 ; 1 ; +; SA[4]~reg0 ; 1 ; +; SA[2]~reg0 ; 1 ; +; SA[1]~reg0 ; 1 ; +; SA[0]~reg0 ; 1 ; ++---------------------------------------------------------------------------------------------+---------+ + + ++-------------------------------------------------------------------------+ +; Fitter Device Options ; ++----------------------------------------------+--------------------------+ +; Option ; Setting ; ++----------------------------------------------+--------------------------+ +; Enable user-supplied start-up clock (CLKUSR) ; Off ; +; Enable device-wide reset (DEV_CLRn) ; Off ; +; Enable device-wide output enable (DEV_OE) ; Off ; +; Enable INIT_DONE output ; Off ; +; Configuration scheme ; Passive Serial ; +; Reserve all unused pins ; As output driving ground ; +; Base pin-out file on sameframe device ; Off ; ++----------------------------------------------+--------------------------+ + + ++-----------------+ +; Fitter Messages ; ++-----------------+ +Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected +Info (119006): Selected device EPM240T100C5 for design "GR8RAM" +Info (21077): Low junction temperature is 0 degrees C +Info (21077): High junction temperature is 85 degrees C +Info (171004): Fitter is performing a Standard Fit compilation using maximum Fitter effort to optimize design performance +Warning (292013): Feature LogicLock is only available with a valid subscription license. You can purchase a software subscription to gain full access to this feature. +Info (176444): Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices + Info (176445): Device EPM240T100I5 is compatible + Info (176445): Device EPM240T100A5 is compatible + Info (176445): Device EPM570T100C5 is compatible + Info (176445): Device EPM570T100I5 is compatible + Info (176445): Device EPM570T100A5 is compatible +Critical Warning (169085): No exact pin location assignment(s) for 73 pins of 73 total pins + Info (169086): Pin nIOSEL not assigned to an exact location on the device + Info (169086): Pin nIOSTRB not assigned to an exact location on the device + Info (169086): Pin RAdir not assigned to an exact location on the device + Info (169086): Pin RDdir not assigned to an exact location on the device + Info (169086): Pin DMAout not assigned to an exact location on the device + Info (169086): Pin INTout not assigned to an exact location on the device + Info (169086): Pin nRESout not assigned to an exact location on the device + Info (169086): Pin SBA[0] not assigned to an exact location on the device + Info (169086): Pin SBA[1] not assigned to an exact location on the device + Info (169086): Pin SA[0] not assigned to an exact location on the device + Info (169086): Pin SA[1] not assigned to an exact location on the device + Info (169086): Pin SA[2] not assigned to an exact location on the device + Info (169086): Pin SA[3] not assigned to an exact location on the device + Info (169086): Pin SA[4] not assigned to an exact location on the device + Info (169086): Pin SA[5] not assigned to an exact location on the device + Info (169086): Pin SA[6] not assigned to an exact location on the device + Info (169086): Pin SA[7] not assigned to an exact location on the device + Info (169086): Pin SA[8] not assigned to an exact location on the device + Info (169086): Pin SA[9] not assigned to an exact location on the device + Info (169086): Pin SA[10] not assigned to an exact location on the device + Info (169086): Pin SA[11] not assigned to an exact location on the device + Info (169086): Pin SA[12] not assigned to an exact location on the device + Info (169086): Pin nRCS not assigned to an exact location on the device + Info (169086): Pin nRAS not assigned to an exact location on the device + Info (169086): Pin nCAS not assigned to an exact location on the device + Info (169086): Pin nSWE not assigned to an exact location on the device + Info (169086): Pin DQML not assigned to an exact location on the device + Info (169086): Pin DQMH not assigned to an exact location on the device + Info (169086): Pin RCKE not assigned to an exact location on the device + Info (169086): Pin nFCS not assigned to an exact location on the device + Info (169086): Pin FCK not assigned to an exact location on the device + Info (169086): Pin MOSI not assigned to an exact location on the device + Info (169086): Pin RD[0] not assigned to an exact location on the device + Info (169086): Pin RD[1] not assigned to an exact location on the device + Info (169086): Pin RD[2] not assigned to an exact location on the device + Info (169086): Pin RD[3] not assigned to an exact location on the device + Info (169086): Pin RD[4] not assigned to an exact location on the device + Info (169086): Pin RD[5] not assigned to an exact location on the device + Info (169086): Pin RD[6] not assigned to an exact location on the device + Info (169086): Pin RD[7] not assigned to an exact location on the device + Info (169086): Pin SD[0] not assigned to an exact location on the device + Info (169086): Pin SD[1] not assigned to an exact location on the device + Info (169086): Pin SD[2] not assigned to an exact location on the device + Info (169086): Pin SD[3] not assigned to an exact location on the device + Info (169086): Pin SD[4] not assigned to an exact location on the device + Info (169086): Pin SD[5] not assigned to an exact location on the device + Info (169086): Pin SD[6] not assigned to an exact location on the device + Info (169086): Pin SD[7] not assigned to an exact location on the device + Info (169086): Pin DMAin not assigned to an exact location on the device + Info (169086): Pin INTin not assigned to an exact location on the device + Info (169086): Pin C25M not assigned to an exact location on the device + Info (169086): Pin nWE not assigned to an exact location on the device + Info (169086): Pin RA[8] not assigned to an exact location on the device + Info (169086): Pin RA[9] not assigned to an exact location on the device + Info (169086): Pin RA[10] not assigned to an exact location on the device + Info (169086): Pin RA[11] not assigned to an exact location on the device + Info (169086): Pin RA[14] not assigned to an exact location on the device + Info (169086): Pin RA[15] not assigned to an exact location on the device + Info (169086): Pin RA[12] not assigned to an exact location on the device + Info (169086): Pin RA[13] not assigned to an exact location on the device + Info (169086): Pin RA[1] not assigned to an exact location on the device + Info (169086): Pin RA[0] not assigned to an exact location on the device + Info (169086): Pin RA[2] not assigned to an exact location on the device + Info (169086): Pin RA[3] not assigned to an exact location on the device + Info (169086): Pin RA[4] not assigned to an exact location on the device + Info (169086): Pin RA[5] not assigned to an exact location on the device + Info (169086): Pin RA[6] not assigned to an exact location on the device + Info (169086): Pin RA[7] not assigned to an exact location on the device + Info (169086): Pin nDEVSEL not assigned to an exact location on the device + Info (169086): Pin MISO not assigned to an exact location on the device + Info (169086): Pin nRES not assigned to an exact location on the device + Info (169086): Pin PHI0 not assigned to an exact location on the device + Info (169086): Pin nBOD not assigned to an exact location on the device +Critical Warning (332012): Synopsys Design Constraints File file not found: 'GR8RAM.sdc'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design. +Info (332144): No user constrained base clocks found in the design +Info (332128): Timing requirements not specified -- optimizing circuit to achieve the following default global requirements + Info (332127): Assuming a default timing requirement +Info (332111): Found 3 clocks + Info (332111): Period Clock Name + Info (332111): ======== ============ + Info (332111): 1.000 ARCLK + Info (332111): 1.000 C25M + Info (332111): 1.000 DRCLK +Info (186079): Completed User Assigned Global Signals Promotion Operation +Info (186215): Automatically promoted signal "C25M" to use Global clock in PIN 14 +Info (186079): Completed Auto Global Promotion Operation +Info (176234): Starting register packing +Info (186391): Fitter is using Normal packing mode for logic elements with Auto setting for Auto Packed Registers logic option +Info (186468): Started processing fast register assignments +Info (186469): Finished processing fast register assignments +Info (176235): Finished register packing +Info (176214): Statistics of I/O pins that need to be placed that use the same VCCIO and VREF, before I/O pin placement + Info (176211): Number of I/O pins in group: 72 (unused VREF, 3.3V VCCIO, 26 input, 30 output, 16 bidirectional) + Info (176212): I/O standards used: 3.3-V LVTTL. +Info (176215): I/O bank details before I/O pin placement + Info (176214): Statistics of I/O banks + Info (176213): I/O bank number 1 does not use VREF pins and has undetermined VCCIO pins. 1 total pin(s) used -- 37 pins available + Info (176213): I/O bank number 2 does not use VREF pins and has undetermined VCCIO pins. 0 total pin(s) used -- 42 pins available +Info (171121): Fitter preparation operations ending: elapsed time is 00:00:01 +Info (170189): Fitter placement preparation operations beginning +Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00 +Info (11888): Total time spent on timing analysis during the Fitter is 0.05 seconds. +Info (170216): Fitter cannot place all nodes on current device -- Fitter will automatically make another fitting attempt and tightly pack logic elements +Info (176234): Starting register packing +Info (186391): Fitter is using Minimize Area packing mode for logic elements with Auto setting for Auto Packed Registers logic option +Info (186468): Started processing fast register assignments +Info (186469): Finished processing fast register assignments +Info (176235): Finished register packing +Info (171121): Fitter preparation operations ending: elapsed time is 00:00:00 +Info (170189): Fitter placement preparation operations beginning +Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00 +Info (11888): Total time spent on timing analysis during the Fitter is 0.02 seconds. +Info (170216): Fitter cannot place all nodes on current device -- Fitter will automatically make another fitting attempt and tightly pack logic elements +Info (176234): Starting register packing +Info (186391): Fitter is using Minimize Area with Chains packing mode for logic elements with Auto setting for Auto Packed Registers logic option +Info (186468): Started processing fast register assignments +Info (186469): Finished processing fast register assignments +Info (176235): Finished register packing +Info (171121): Fitter preparation operations ending: elapsed time is 00:00:00 +Info (170189): Fitter placement preparation operations beginning +Error (170011): Design contains 313 blocks of type logic cell. However, device contains only 240. +Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00 +Info (11888): Total time spent on timing analysis during the Fitter is 0.02 seconds. +Error (171000): Can't fit design in device +Warning (169064): Following 8 pins have no output enable or a GND or VCC output enable - later changes to this connectivity may change fitting results + Info (169065): Pin RD[0] has a permanently disabled output enable + Info (169065): Pin RD[1] has a permanently disabled output enable + Info (169065): Pin RD[2] has a permanently disabled output enable + Info (169065): Pin RD[3] has a permanently disabled output enable + Info (169065): Pin RD[4] has a permanently disabled output enable + Info (169065): Pin RD[5] has a permanently disabled output enable + Info (169065): Pin RD[6] has a permanently disabled output enable + Info (169065): Pin RD[7] has a permanently disabled output enable +Warning (169174): The Reserve All Unused Pins setting has not been specified, and will default to 'As output driving ground'. +Info (144001): Generated suppressed messages file Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.fit.smsg +Error: Quartus II 32-bit Fitter was unsuccessful. 2 errors, 5 warnings + Error: Peak virtual memory: 367 megabytes + Error: Processing ended: Fri Mar 19 02:55:57 2021 + Error: Elapsed time: 00:00:05 + Error: Total CPU time (on all processors): 00:00:06 + + ++----------------------------+ +; Fitter Suppressed Messages ; ++----------------------------+ +The suppressed messages can be found in Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.fit.smsg. + + diff --git a/cpld/output_files/GR8RAM.fit.smsg b/cpld/output_files/GR8RAM.fit.smsg new file mode 100755 index 0000000..9b1e01f --- /dev/null +++ b/cpld/output_files/GR8RAM.fit.smsg @@ -0,0 +1,6 @@ +Extra Info (176273): Performing register packing on registers with non-logic cell location assignments +Extra Info (176274): Completed register packing on registers with non-logic cell location assignments +Extra Info (176244): Moving registers into LUTs to improve timing and density +Extra Info (176245): Finished moving registers into LUTs: elapsed time is 00:00:00 +Extra Info (176245): Finished moving registers into LUTs: elapsed time is 00:00:00 +Extra Info (176245): Finished moving registers into LUTs: elapsed time is 00:00:00 diff --git a/cpld/output_files/GR8RAM.fit.summary b/cpld/output_files/GR8RAM.fit.summary new file mode 100755 index 0000000..1603663 --- /dev/null +++ b/cpld/output_files/GR8RAM.fit.summary @@ -0,0 +1,11 @@ +Fitter Status : Failed - Fri Mar 19 02:55:57 2021 +Quartus II 32-bit Version : 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition +Revision Name : GR8RAM +Top-level Entity Name : GR8RAM +Family : MAX II +Device : EPM240T100C5 +Timing Models : Final +Total logic elements : 313 / 240 ( 130 % ) +Total pins : 73 / 80 ( 91 % ) +Total virtual pins : 0 +UFM blocks : 1 / 1 ( 100 % ) diff --git a/cpld/output_files/GR8RAM.flow.rpt b/cpld/output_files/GR8RAM.flow.rpt new file mode 100755 index 0000000..b25704e --- /dev/null +++ b/cpld/output_files/GR8RAM.flow.rpt @@ -0,0 +1,114 @@ +Flow report for GR8RAM +Fri Mar 19 02:55:57 2021 +Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Flow Summary + 3. Flow Settings + 4. Flow Non-Default Global Settings + 5. Flow Elapsed Time + 6. Flow OS Summary + 7. Flow Log + 8. Flow Messages + 9. Flow Suppressed Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++-----------------------------------------------------------------------------+ +; Flow Summary ; ++---------------------------+-------------------------------------------------+ +; Flow Status ; Flow Failed - Fri Mar 19 02:55:57 2021 ; +; Quartus II 32-bit Version ; 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition ; +; Revision Name ; GR8RAM ; +; Top-level Entity Name ; GR8RAM ; +; Family ; MAX II ; +; Device ; EPM240T100C5 ; +; Timing Models ; Final ; +; Total logic elements ; 313 / 240 ( 130 % ) ; +; Total pins ; 73 / 80 ( 91 % ) ; +; Total virtual pins ; 0 ; +; UFM blocks ; 1 / 1 ( 100 % ) ; ++---------------------------+-------------------------------------------------+ + + ++-----------------------------------------+ +; Flow Settings ; ++-------------------+---------------------+ +; Option ; Setting ; ++-------------------+---------------------+ +; Start date & time ; 03/19/2021 02:55:46 ; +; Main task ; Compilation ; +; Revision Name ; GR8RAM ; ++-------------------+---------------------+ + + ++-------------------------------------------------------------------------------------------------------------------+ +; Flow Non-Default Global Settings ; ++---------------------------------------+--------------------------------+---------------+-------------+------------+ +; Assignment Name ; Value ; Default Value ; Entity Name ; Section Id ; ++---------------------------------------+--------------------------------+---------------+-------------+------------+ +; COMPILER_SIGNATURE_ID ; 44085571633675.161613694503328 ; -- ; -- ; -- ; +; FITTER_EFFORT ; Standard Fit ; Auto Fit ; -- ; -- ; +; IP_TOOL_NAME ; ALTUFM_NONE ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 13.0 ; -- ; -- ; -- ; +; MAXII_OPTIMIZATION_TECHNIQUE ; Area ; Balanced ; -- ; -- ; +; MAX_CORE_JUNCTION_TEMP ; 85 ; -- ; -- ; -- ; +; MIN_CORE_JUNCTION_TEMP ; 0 ; -- ; -- ; -- ; +; POWER_EXT_SUPPLY_VOLTAGE_TO_REGULATOR ; 3.3V ; -- ; -- ; -- ; +; PROJECT_OUTPUT_DIRECTORY ; output_files ; -- ; -- ; -- ; +; SYNTH_TIMING_DRIVEN_SYNTHESIS ; Off ; -- ; -- ; -- ; ++---------------------------------------+--------------------------------+---------------+-------------+------------+ + + ++--------------------------------------------------------------------------------------------------------------------------+ +; Flow Elapsed Time ; ++----------------------+--------------+-------------------------+---------------------+------------------------------------+ +; Module Name ; Elapsed Time ; Average Processors Used ; Peak Virtual Memory ; Total CPU Time (on all processors) ; ++----------------------+--------------+-------------------------+---------------------+------------------------------------+ +; Analysis & Synthesis ; 00:00:06 ; 1.0 ; 301 MB ; 00:00:06 ; +; Fitter ; 00:00:05 ; 1.0 ; 367 MB ; 00:00:05 ; +; Total ; 00:00:11 ; -- ; -- ; 00:00:11 ; ++----------------------+--------------+-------------------------+---------------------+------------------------------------+ + + ++------------------------------------------------------------------------------------+ +; Flow OS Summary ; ++----------------------+------------------+------------+------------+----------------+ +; Module Name ; Machine Hostname ; OS Name ; OS Version ; Processor type ; ++----------------------+------------------+------------+------------+----------------+ +; Analysis & Synthesis ; zane-c8bbf8aef2 ; Windows XP ; 5.1 ; i686 ; +; Fitter ; zane-c8bbf8aef2 ; Windows XP ; 5.1 ; i686 ; ++----------------------+------------------+------------+------------+----------------+ + + +------------ +; Flow Log ; +------------ +quartus_map --read_settings_files=on --write_settings_files=off GR8RAM -c GR8RAM +quartus_fit --read_settings_files=off --write_settings_files=off GR8RAM -c GR8RAM + + + diff --git a/cpld/output_files/GR8RAM.jdi b/cpld/output_files/GR8RAM.jdi new file mode 100755 index 0000000..80d41b2 --- /dev/null +++ b/cpld/output_files/GR8RAM.jdi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cpld/output_files/GR8RAM.map.rpt b/cpld/output_files/GR8RAM.map.rpt new file mode 100755 index 0000000..a3a7383 --- /dev/null +++ b/cpld/output_files/GR8RAM.map.rpt @@ -0,0 +1,353 @@ +Analysis & Synthesis report for GR8RAM +Fri Mar 19 02:55:50 2021 +Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Analysis & Synthesis Summary + 3. Analysis & Synthesis Settings + 4. Parallel Compilation + 5. Analysis & Synthesis Source Files Read + 6. Analysis & Synthesis Resource Usage Summary + 7. Analysis & Synthesis Resource Utilization by Entity + 8. Analysis & Synthesis IP Cores Summary + 9. Registers Removed During Synthesis + 10. General Register Statistics + 11. Inverted Register Statistics + 12. Multiplexer Restructuring Statistics (Restructuring Performed) + 13. Port Connectivity Checks: "UFM:UFM_inst" + 14. Analysis & Synthesis Messages + 15. Analysis & Synthesis Suppressed Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++-------------------------------------------------------------------------------+ +; Analysis & Synthesis Summary ; ++-----------------------------+-------------------------------------------------+ +; Analysis & Synthesis Status ; Successful - Fri Mar 19 02:55:50 2021 ; +; Quartus II 32-bit Version ; 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition ; +; Revision Name ; GR8RAM ; +; Top-level Entity Name ; GR8RAM ; +; Family ; MAX II ; +; Total logic elements ; 343 ; +; Total pins ; 73 ; +; Total virtual pins ; 0 ; +; UFM blocks ; 1 / 1 ( 100 % ) ; ++-----------------------------+-------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis Settings ; ++----------------------------------------------------------------------------+--------------------+--------------------+ +; Option ; Setting ; Default Value ; ++----------------------------------------------------------------------------+--------------------+--------------------+ +; Device ; EPM240T100C5 ; ; +; Top-level entity name ; GR8RAM ; GR8RAM ; +; Family name ; MAX II ; Cyclone IV GX ; +; Optimization Technique ; Area ; Balanced ; +; Use smart compilation ; Off ; Off ; +; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; +; Enable compact report table ; Off ; Off ; +; Restructure Multiplexers ; Auto ; Auto ; +; Create Debugging Nodes for IP Cores ; Off ; Off ; +; Preserve fewer node names ; On ; On ; +; Disable OpenCore Plus hardware evaluation ; Off ; Off ; +; Verilog Version ; Verilog_2001 ; Verilog_2001 ; +; VHDL Version ; VHDL_1993 ; VHDL_1993 ; +; State Machine Processing ; Auto ; Auto ; +; Safe State Machine ; Off ; Off ; +; Extract Verilog State Machines ; On ; On ; +; Extract VHDL State Machines ; On ; On ; +; Ignore Verilog initial constructs ; Off ; Off ; +; Iteration limit for constant Verilog loops ; 5000 ; 5000 ; +; Iteration limit for non-constant Verilog loops ; 250 ; 250 ; +; Add Pass-Through Logic to Inferred RAMs ; On ; On ; +; Infer RAMs from Raw Logic ; On ; On ; +; Parallel Synthesis ; On ; On ; +; NOT Gate Push-Back ; On ; On ; +; Power-Up Don't Care ; On ; On ; +; Remove Redundant Logic Cells ; Off ; Off ; +; Remove Duplicate Registers ; On ; On ; +; Ignore CARRY Buffers ; Off ; Off ; +; Ignore CASCADE Buffers ; Off ; Off ; +; Ignore GLOBAL Buffers ; Off ; Off ; +; Ignore ROW GLOBAL Buffers ; Off ; Off ; +; Ignore LCELL Buffers ; Off ; Off ; +; Ignore SOFT Buffers ; On ; On ; +; Limit AHDL Integers to 32 Bits ; Off ; Off ; +; Carry Chain Length ; 70 ; 70 ; +; Auto Carry Chains ; On ; On ; +; Auto Open-Drain Pins ; On ; On ; +; Perform WYSIWYG Primitive Resynthesis ; Off ; Off ; +; Auto Shift Register Replacement ; Auto ; Auto ; +; Allow Shift Register Merging across Hierarchies ; Auto ; Auto ; +; Auto Clock Enable Replacement ; On ; On ; +; Allow Synchronous Control Signals ; On ; On ; +; Force Use of Synchronous Clear Signals ; Off ; Off ; +; Auto Resource Sharing ; Off ; Off ; +; Use LogicLock Constraints during Resource Balancing ; On ; On ; +; Ignore translate_off and synthesis_off directives ; Off ; Off ; +; Report Parameter Settings ; On ; On ; +; Report Source Assignments ; On ; On ; +; Report Connectivity Checks ; On ; On ; +; Ignore Maximum Fan-Out Assignments ; Off ; Off ; +; Synchronization Register Chain Length ; 2 ; 2 ; +; PowerPlay Power Optimization ; Normal compilation ; Normal compilation ; +; HDL message level ; Level2 ; Level2 ; +; Suppress Register Optimization Related Messages ; Off ; Off ; +; Number of Removed Registers Reported in Synthesis Report ; 5000 ; 5000 ; +; Number of Swept Nodes Reported in Synthesis Report ; 5000 ; 5000 ; +; Number of Inverted Registers Reported in Synthesis Report ; 100 ; 100 ; +; Clock MUX Protection ; On ; On ; +; Block Design Naming ; Auto ; Auto ; +; Synthesis Effort ; Auto ; Auto ; +; Shift Register Replacement - Allow Asynchronous Clear Signal ; On ; On ; +; Pre-Mapping Resynthesis Optimization ; Off ; Off ; +; Analysis & Synthesis Message Level ; Medium ; Medium ; +; Disable Register Merging Across Hierarchies ; Auto ; Auto ; +; Synthesis Seed ; 1 ; 1 ; ++----------------------------------------------------------------------------+--------------------+--------------------+ + + ++------------------------------------------+ +; Parallel Compilation ; ++----------------------------+-------------+ +; Processors ; Number ; ++----------------------------+-------------+ +; Number detected on machine ; 2 ; +; Maximum allowed ; 2 ; +; ; ; +; Average used ; 1.00 ; +; Maximum used ; 1 ; +; ; ; +; Usage by Processor ; % Time Used ; +; Processor 1 ; 100.0% ; +; Processor 2 ; 0.0% ; ++----------------------------+-------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis Source Files Read ; ++----------------------------------+-----------------+------------------------------+-------------------------------+---------+ +; File Name with User-Entered Path ; Used in Netlist ; File Type ; File Name with Absolute Path ; Library ; ++----------------------------------+-----------------+------------------------------+-------------------------------+---------+ +; UFM.v ; yes ; User Wizard-Generated File ; Z:/Repos/GR8RAM/cpld/UFM.v ; ; +; gr8ram.v ; yes ; Auto-Found Verilog HDL File ; Z:/Repos/GR8RAM/cpld/gr8ram.v ; ; ++----------------------------------+-----------------+------------------------------+-------------------------------+---------+ + + ++-----------------------------------------------------+ +; Analysis & Synthesis Resource Usage Summary ; ++---------------------------------------------+-------+ +; Resource ; Usage ; ++---------------------------------------------+-------+ +; Total logic elements ; 343 ; +; -- Combinational with no register ; 220 ; +; -- Register only ; 30 ; +; -- Combinational with a register ; 93 ; +; ; ; +; Logic element usage by number of LUT inputs ; ; +; -- 4 input functions ; 198 ; +; -- 3 input functions ; 43 ; +; -- 2 input functions ; 66 ; +; -- 1 input functions ; 5 ; +; -- 0 input functions ; 1 ; +; ; ; +; Logic elements by mode ; ; +; -- normal mode ; 306 ; +; -- arithmetic mode ; 37 ; +; -- qfbk mode ; 0 ; +; -- register cascade mode ; 0 ; +; -- synchronous clear/load mode ; 28 ; +; -- asynchronous clear/load mode ; 0 ; +; ; ; +; Total registers ; 123 ; +; Total logic cells in carry chains ; 41 ; +; I/O pins ; 73 ; +; UFM blocks ; 1 ; +; Maximum fan-out node ; C25M ; +; Maximum fan-out ; 123 ; +; Total fan-out ; 1357 ; +; Average fan-out ; 3.25 ; ++---------------------------------------------+-------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis Resource Utilization by Entity ; ++-----------------------------------------------------------+-------------+--------------+------------+------+--------------+--------------+-------------------+------------------+-----------------+------------+------------------------------------------------------------------------+--------------+ +; Compilation Hierarchy Node ; Logic Cells ; LC Registers ; UFM Blocks ; Pins ; Virtual Pins ; LUT-Only LCs ; Register-Only LCs ; LUT/Register LCs ; Carry Chain LCs ; Packed LCs ; Full Hierarchy Name ; Library Name ; ++-----------------------------------------------------------+-------------+--------------+------------+------+--------------+--------------+-------------------+------------------+-----------------+------------+------------------------------------------------------------------------+--------------+ +; |GR8RAM ; 343 (343) ; 123 ; 1 ; 73 ; 0 ; 220 (220) ; 30 (30) ; 93 (93) ; 41 (41) ; 0 (0) ; |GR8RAM ; work ; +; |UFM:UFM_inst| ; 0 (0) ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; |GR8RAM|UFM:UFM_inst ; work ; +; |UFM_altufm_none_0ep:UFM_altufm_none_0ep_component| ; 0 (0) ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; 0 (0) ; |GR8RAM|UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component ; work ; ++-----------------------------------------------------------+-------------+--------------+------------+------+--------------+--------------+-------------------+------------------+-----------------+------------+------------------------------------------------------------------------+--------------+ +Note: For table entries with two numbers listed, the numbers in parentheses indicate the number of resources of the given type used by the specific entity alone. The numbers listed outside of parentheses indicate the total resources of the given type used by the specific entity and all of its sub-entities in the hierarchy. + + ++-------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis IP Cores Summary ; ++--------+--------------+---------+--------------+--------------+----------------------+----------------------------+ +; Vendor ; IP Core Name ; Version ; Release Date ; License Type ; Entity Instance ; IP Include File ; ++--------+--------------+---------+--------------+--------------+----------------------+----------------------------+ +; Altera ; ALTUFM_NONE ; 13.0 ; N/A ; N/A ; |GR8RAM|UFM:UFM_inst ; Z:/Repos/GR8RAM/cpld/UFM.v ; ++--------+--------------+---------+--------------+--------------+----------------------+----------------------------+ + + ++--------------------------------------------------------------------------------+ +; Registers Removed During Synthesis ; ++---------------------------------------+----------------------------------------+ +; Register name ; Reason for Removal ; ++---------------------------------------+----------------------------------------+ +; DRDIn ; Stuck at GND due to stuck port data_in ; +; nRESout~reg0 ; Merged with CmdActv ; +; RCKE~reg0 ; Stuck at VCC due to stuck port data_in ; +; Total Number of Removed Registers = 3 ; ; ++---------------------------------------+----------------------------------------+ + + ++------------------------------------------------------+ +; General Register Statistics ; ++----------------------------------------------+-------+ +; Statistic ; Value ; ++----------------------------------------------+-------+ +; Total registers ; 123 ; +; Number of registers using Synchronous Clear ; 24 ; +; Number of registers using Synchronous Load ; 4 ; +; Number of registers using Asynchronous Clear ; 0 ; +; Number of registers using Asynchronous Load ; 0 ; +; Number of registers using Clock Enable ; 69 ; +; Number of registers using Preset ; 0 ; ++----------------------------------------------+-------+ + + ++--------------------------------------------------+ +; Inverted Register Statistics ; ++----------------------------------------+---------+ +; Inverted Register ; Fan out ; ++----------------------------------------+---------+ +; nRCS~reg0 ; 3 ; +; nRAS~reg0 ; 3 ; +; nCAS~reg0 ; 3 ; +; nSWE~reg0 ; 3 ; +; DQML~reg0 ; 1 ; +; DQMH~reg0 ; 1 ; +; Total number of inverted registers = 6 ; ; ++----------------------------------------+---------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------+ +; Multiplexer Restructuring Statistics (Restructuring Performed) ; ++--------------------+-----------+---------------+----------------------+------------------------+------------+----------------------------+ +; Multiplexer Inputs ; Bus Width ; Baseline Area ; Area if Restructured ; Saving if Restructured ; Registered ; Example Multiplexer Output ; ++--------------------+-----------+---------------+----------------------+------------------------+------------+----------------------------+ +; 3:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; Yes ; |GR8RAM|S[3] ; +; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; Yes ; |GR8RAM|Addr[2] ; +; 5:1 ; 4 bits ; 12 LEs ; 8 LEs ; 4 LEs ; Yes ; |GR8RAM|Addr[18] ; +; 5:1 ; 2 bits ; 6 LEs ; 4 LEs ; 2 LEs ; Yes ; |GR8RAM|IS[1] ; +; 5:1 ; 8 bits ; 24 LEs ; 16 LEs ; 8 LEs ; Yes ; |GR8RAM|Addr[8] ; +; 5:1 ; 3 bits ; 9 LEs ; 6 LEs ; 3 LEs ; Yes ; |GR8RAM|DRShift ; +; 6:1 ; 4 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |GR8RAM|Addr[23] ; +; 13:1 ; 2 bits ; 16 LEs ; 4 LEs ; 12 LEs ; Yes ; |GR8RAM|SA[12]~reg0 ; +; 17:1 ; 5 bits ; 55 LEs ; 30 LEs ; 25 LEs ; Yes ; |GR8RAM|SA[7]~reg0 ; +; 20:1 ; 3 bits ; 39 LEs ; 18 LEs ; 21 LEs ; Yes ; |GR8RAM|SA[2]~reg0 ; +; 20:1 ; 2 bits ; 26 LEs ; 8 LEs ; 18 LEs ; Yes ; |GR8RAM|DQMH~reg0 ; ++--------------------+-----------+---------------+----------------------+------------------------+------------+----------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "UFM:UFM_inst" ; ++---------+--------+----------+-------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++---------+--------+----------+-------------------------------------------------------------------------------------+ +; ardin ; Input ; Info ; Stuck at GND ; +; oscena ; Input ; Info ; Stuck at VCC ; +; busy ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; osc ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; rtpbusy ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++---------+--------+----------+-------------------------------------------------------------------------------------+ + + ++-------------------------------+ +; Analysis & Synthesis Messages ; ++-------------------------------+ +Info: ******************************************************************* +Info: Running Quartus II 32-bit Analysis & Synthesis + Info: Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + Info: Processing started: Fri Mar 19 02:55:44 2021 +Info: Command: quartus_map --read_settings_files=on --write_settings_files=off GR8RAM -c GR8RAM +Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected +Info (12021): Found 2 design units, including 2 entities, in source file ufm.v + Info (12023): Found entity 1: UFM_altufm_none_0ep + Info (12023): Found entity 2: UFM +Warning (10229): Verilog HDL Expression warning at gr8ram.v(545): truncated literal to match 1 bits +Warning (10229): Verilog HDL Expression warning at gr8ram.v(558): truncated literal to match 1 bits +Warning (12125): Using design file gr8ram.v, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project + Info (12023): Found entity 1: GR8RAM +Warning (10236): Verilog HDL Implicit Net warning at gr8ram.v(275): created implicit net for "UFMB" +Warning (10236): Verilog HDL Implicit Net warning at gr8ram.v(278): created implicit net for "RTPB" +Info (12127): Elaborating entity "GR8RAM" for the top level hierarchy +Warning (10036): Verilog HDL or VHDL warning at gr8ram.v(112): object "REGEN" assigned a value but never read +Warning (10858): Verilog HDL warning at gr8ram.v(127): object RDout used but never assigned +Warning (10036): Verilog HDL or VHDL warning at gr8ram.v(280): object "UFMBr" assigned a value but never read +Warning (10036): Verilog HDL or VHDL warning at gr8ram.v(282): object "RTPBr" assigned a value but never read +Warning (10230): Verilog HDL assignment warning at gr8ram.v(39): truncated value with size 32 to match size of target (18) +Warning (10230): Verilog HDL assignment warning at gr8ram.v(147): truncated value with size 32 to match size of target (8) +Warning (10230): Verilog HDL assignment warning at gr8ram.v(154): truncated value with size 32 to match size of target (8) +Warning (10230): Verilog HDL assignment warning at gr8ram.v(160): truncated value with size 32 to match size of target (8) +Warning (10230): Verilog HDL assignment warning at gr8ram.v(426): truncated value with size 32 to match size of target (4) +Warning (10230): Verilog HDL assignment warning at gr8ram.v(547): truncated value with size 10 to match size of target (6) +Warning (10230): Verilog HDL assignment warning at gr8ram.v(635): truncated value with size 10 to match size of target (6) +Warning (10030): Net "RDout" at gr8ram.v(127) has no driver or initial value, using a default initial value '0' +Info (12128): Elaborating entity "UFM" for hierarchy "UFM:UFM_inst" +Info (12128): Elaborating entity "UFM_altufm_none_0ep" for hierarchy "UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component" +Warning (13046): Tri-state node(s) do not directly drive top-level pin(s) + Warning (13047): Converted the fan-out from the tri-state buffer "MOSI" to the node "WRD" into an OR gate +Warning (13024): Output pins are stuck at VCC or GND + Warning (13410): Pin "RAdir" is stuck at VCC + Warning (13410): Pin "RDdir" is stuck at VCC + Warning (13410): Pin "RCKE" is stuck at VCC +Warning (21074): Design contains 2 input pin(s) that do not drive logic + Warning (15610): No output dependent on input pin "nIOSEL" + Warning (15610): No output dependent on input pin "nIOSTRB" +Info (21057): Implemented 417 device resources after synthesis - the final resource count might be different + Info (21058): Implemented 27 input pins + Info (21059): Implemented 30 output pins + Info (21060): Implemented 16 bidirectional pins + Info (21061): Implemented 343 logic cells + Info (21070): Implemented 1 User Flash Memory blocks +Info (144001): Generated suppressed messages file Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.map.smsg +Info: Quartus II 32-bit Analysis & Synthesis was successful. 0 errors, 26 warnings + Info: Peak virtual memory: 301 megabytes + Info: Processing ended: Fri Mar 19 02:55:50 2021 + Info: Elapsed time: 00:00:06 + Info: Total CPU time (on all processors): 00:00:06 + + ++------------------------------------------+ +; Analysis & Synthesis Suppressed Messages ; ++------------------------------------------+ +The suppressed messages can be found in Z:/Repos/GR8RAM/cpld/output_files/GR8RAM.map.smsg. + + diff --git a/cpld/output_files/GR8RAM.map.smsg b/cpld/output_files/GR8RAM.map.smsg new file mode 100755 index 0000000..754d645 --- /dev/null +++ b/cpld/output_files/GR8RAM.map.smsg @@ -0,0 +1,4 @@ +Warning (10463): Verilog HDL Declaration warning at UFM.v(72): "program" is SystemVerilog-2005 keyword +Warning (10463): Verilog HDL Declaration warning at UFM.v(188): "program" is SystemVerilog-2005 keyword +Warning (10273): Verilog HDL warning at gr8ram.v(126): extended using "x" or "z" +Warning (10273): Verilog HDL warning at gr8ram.v(410): extended using "x" or "z" diff --git a/cpld/output_files/GR8RAM.map.summary b/cpld/output_files/GR8RAM.map.summary new file mode 100755 index 0000000..b0021ee --- /dev/null +++ b/cpld/output_files/GR8RAM.map.summary @@ -0,0 +1,9 @@ +Analysis & Synthesis Status : Successful - Fri Mar 19 02:55:50 2021 +Quartus II 32-bit Version : 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition +Revision Name : GR8RAM +Top-level Entity Name : GR8RAM +Family : MAX II +Total logic elements : 343 +Total pins : 73 +Total virtual pins : 0 +UFM blocks : 1 / 1 ( 100 % ) diff --git a/cpld/output_files/GR8RAM.pof b/cpld/output_files/GR8RAM.pof new file mode 100755 index 0000000000000000000000000000000000000000..d235b31da1b664812e913db1b9a9cc19bc7c293e GIT binary patch literal 7879 zcmeHMe{5985k4T`Ad#SmM#2e%YpO)8A`%;ypq5~(X+srg167(vQH3o?FhT?@5r~V( z-6K*9Qq@!{1QLrHx0Ogks>6v8xa4}bG_;Od*(OqjUDvsLL@2h3xqBGr?s50LJN;(& zz58L3|0?y5f@GGRneUs~*_qvaX8pR=p-^Z>s7C+Yg1>*Td*jYsyI%@F`DD0Z+0sp0 zcZJvQY}>MPFcZPqodFM-8+jfNO8y>EExIX;&?yWDr5MI`>EL`{KBlXK3Syory z5Po{|&X>17zd5{qTXz8∋wSPM%o*{bgUT`(b@u-M5#A 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 Ie(g{H0gvCeZvX%Q literal 0 HcmV?d00001 diff --git a/cpld/output_files/GR8RAM.sta.rpt b/cpld/output_files/GR8RAM.sta.rpt new file mode 100755 index 0000000..99c0812 --- /dev/null +++ b/cpld/output_files/GR8RAM.sta.rpt @@ -0,0 +1,871 @@ +TimeQuest Timing Analyzer report for GR8RAM +Thu Mar 18 04:40:58 2021 +Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. TimeQuest Timing Analyzer Summary + 3. Parallel Compilation + 4. Clocks + 5. Fmax Summary + 6. Setup Summary + 7. Hold Summary + 8. Recovery Summary + 9. Removal Summary + 10. Minimum Pulse Width Summary + 11. Setup: 'ARCLK' + 12. Setup: 'DRCLK' + 13. Setup: 'C25M' + 14. Hold: 'DRCLK' + 15. Hold: 'ARCLK' + 16. Hold: 'C25M' + 17. Minimum Pulse Width: 'ARCLK' + 18. Minimum Pulse Width: 'DRCLK' + 19. Minimum Pulse Width: 'C25M' + 20. Setup Times + 21. Hold Times + 22. Clock to Output Times + 23. Minimum Clock to Output Times + 24. Propagation Delay + 25. Minimum Propagation Delay + 26. Output Enable Times + 27. Minimum Output Enable Times + 28. Output Disable Times + 29. Minimum Output Disable Times + 30. Setup Transfers + 31. Hold Transfers + 32. Report TCCS + 33. Report RSKM + 34. Unconstrained Paths + 35. TimeQuest Timing Analyzer Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++----------------------------------------------------------------------------------------+ +; TimeQuest Timing Analyzer Summary ; ++--------------------+-------------------------------------------------------------------+ +; Quartus II Version ; Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition ; +; Revision Name ; GR8RAM ; +; Device Family ; MAX II ; +; Device Name ; EPM240T100C5 ; +; Timing Models ; Final ; +; Delay Model ; Slow Model ; +; Rise/Fall Delays ; Unavailable ; ++--------------------+-------------------------------------------------------------------+ + + ++------------------------------------------+ +; Parallel Compilation ; ++----------------------------+-------------+ +; Processors ; Number ; ++----------------------------+-------------+ +; Number detected on machine ; 2 ; +; Maximum allowed ; 2 ; +; ; ; +; Average used ; 1.00 ; +; Maximum used ; 2 ; +; ; ; +; Usage by Processor ; % Time Used ; +; Processor 1 ; 100.0% ; +; Processor 2 ; < 0.1% ; ++----------------------------+-------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clocks ; ++------------+------+--------+------------+-------+-------+------------+-----------+-------------+-------+--------+-----------+------------+----------+--------+--------+-----------+ +; Clock Name ; Type ; Period ; Frequency ; Rise ; Fall ; Duty Cycle ; Divide by ; Multiply by ; Phase ; Offset ; Edge List ; Edge Shift ; Inverted ; Master ; Source ; Targets ; ++------------+------+--------+------------+-------+-------+------------+-----------+-------------+-------+--------+-----------+------------+----------+--------+--------+-----------+ +; ARCLK ; Base ; 1.000 ; 1000.0 MHz ; 0.000 ; 0.500 ; ; ; ; ; ; ; ; ; ; ; { ARCLK } ; +; C25M ; Base ; 1.000 ; 1000.0 MHz ; 0.000 ; 0.500 ; ; ; ; ; ; ; ; ; ; ; { C25M } ; +; DRCLK ; Base ; 1.000 ; 1000.0 MHz ; 0.000 ; 0.500 ; ; ; ; ; ; ; ; ; ; ; { DRCLK } ; ++------------+------+--------+------------+-------+-------+------------+-----------+-------------+-------+--------+-----------+------------+----------+--------+--------+-----------+ + + ++--------------------------------------------------+ +; Fmax Summary ; ++------------+-----------------+------------+------+ +; Fmax ; Restricted Fmax ; Clock Name ; Note ; ++------------+-----------------+------------+------+ +; 10.0 MHz ; 10.0 MHz ; ARCLK ; ; +; 10.0 MHz ; 10.0 MHz ; DRCLK ; ; +; 105.85 MHz ; 105.85 MHz ; C25M ; ; ++------------+-----------------+------------+------+ +This panel reports FMAX for every clock in the design, regardless of the user-specified clock periods. FMAX is only computed for paths where the source and destination registers or ports are driven by the same clock. Paths of different clocks, including generated clocks, are ignored. For paths between a clock and its inversion, FMAX is computed as if the rising and falling edges are scaled along with FMAX, such that the duty cycle (in terms of a percentage) is maintained. Altera recommends that you always use clock constraints and other slack reports for sign-off analysis. + + ++---------------------------------+ +; Setup Summary ; ++-------+---------+---------------+ +; Clock ; Slack ; End Point TNS ; ++-------+---------+---------------+ +; ARCLK ; -99.000 ; -99.000 ; +; DRCLK ; -99.000 ; -99.000 ; +; C25M ; -8.447 ; -415.877 ; ++-------+---------+---------------+ + + ++---------------------------------+ +; Hold Summary ; ++-------+---------+---------------+ +; Clock ; Slack ; End Point TNS ; ++-------+---------+---------------+ +; DRCLK ; -16.286 ; -16.286 ; +; ARCLK ; -16.276 ; -16.276 ; +; C25M ; -1.579 ; -1.579 ; ++-------+---------+---------------+ + + +-------------------- +; Recovery Summary ; +-------------------- +No paths to report. + + +------------------- +; Removal Summary ; +------------------- +No paths to report. + + ++---------------------------------+ +; Minimum Pulse Width Summary ; ++-------+---------+---------------+ +; Clock ; Slack ; End Point TNS ; ++-------+---------+---------------+ +; ARCLK ; -29.500 ; -59.000 ; +; DRCLK ; -29.500 ; -59.000 ; +; C25M ; -2.289 ; -2.289 ; ++-------+---------+---------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Setup: 'ARCLK' ; ++---------+---------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; ++---------+---------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; -99.000 ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; ARCLK ; ARCLK ; 1.000 ; 0.000 ; 80.000 ; +; -22.724 ; ARShift ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; C25M ; ARCLK ; 1.000 ; -2.195 ; 1.529 ; ++---------+---------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Setup: 'DRCLK' ; ++---------+---------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; ++---------+---------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; -99.000 ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; DRCLK ; DRCLK ; 1.000 ; 0.000 ; 80.000 ; +; -22.714 ; DRShift ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; C25M ; DRCLK ; 1.000 ; -2.165 ; 1.549 ; ++---------+---------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ + + ++---------------------------------------------------------------------------------------------------------+ +; Setup: 'C25M' ; ++--------+-----------+--------------+--------------+-------------+--------------+------------+------------+ +; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; ++--------+-----------+--------------+--------------+-------------+--------------+------------+------------+ +; -8.447 ; LS[6] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 9.114 ; +; -8.446 ; LS[6] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 9.113 ; +; -8.308 ; LS[8] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.975 ; +; -8.237 ; LS[8] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.904 ; +; -8.142 ; LS[8] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.809 ; +; -8.013 ; LS[8] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.680 ; +; -7.999 ; LS[0] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.666 ; +; -7.991 ; LS[8] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.658 ; +; -7.988 ; LS[6] ; nBODf0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.655 ; +; -7.986 ; LS[8] ; LS[15] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.653 ; +; -7.968 ; LS[12] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.635 ; +; -7.952 ; LS[10] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.619 ; +; -7.928 ; LS[0] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.595 ; +; -7.902 ; LS[5] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.569 ; +; -7.901 ; LS[5] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.568 ; +; -7.897 ; LS[12] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.564 ; +; -7.883 ; LS[3] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.550 ; +; -7.881 ; LS[10] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.548 ; +; -7.870 ; LS[22] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.537 ; +; -7.847 ; LS[6] ; LS[20] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.514 ; +; -7.846 ; LS[6] ; LS[14] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.513 ; +; -7.846 ; LS[6] ; LS[22] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.513 ; +; -7.844 ; LS[6] ; LS[9] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.511 ; +; -7.842 ; LS[6] ; LS[10] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.509 ; +; -7.841 ; LS[22] ; nRESout~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.508 ; +; -7.838 ; LS[22] ; SDRAMActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.505 ; +; -7.835 ; LS[4] ; MOSIout ; C25M ; C25M ; 1.000 ; 0.000 ; 8.502 ; +; -7.833 ; LS[0] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.500 ; +; -7.832 ; LS[7] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.499 ; +; -7.829 ; LS[6] ; LS[11] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.496 ; +; -7.825 ; LS[8] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.492 ; +; -7.812 ; LS[3] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.479 ; +; -7.786 ; LS[10] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.453 ; +; -7.778 ; LS[11] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.445 ; +; -7.765 ; LS[6] ; nBODf ; C25M ; C25M ; 1.000 ; 0.000 ; 8.432 ; +; -7.761 ; LS[7] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.428 ; +; -7.755 ; LS[10] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.422 ; +; -7.735 ; LS[6] ; LS[4] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.402 ; +; -7.717 ; LS[3] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.384 ; +; -7.709 ; LS[0] ; LS[10] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.376 ; +; -7.707 ; LS[11] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.374 ; +; -7.704 ; LS[0] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.371 ; +; -7.685 ; LS[20] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.352 ; +; -7.682 ; LS[0] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.349 ; +; -7.677 ; LS[0] ; LS[15] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.344 ; +; -7.673 ; LS[12] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.340 ; +; -7.666 ; LS[7] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.333 ; +; -7.657 ; LS[10] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.324 ; +; -7.656 ; LS[20] ; nRESout~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.323 ; +; -7.656 ; LS[10] ; nRESout~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.323 ; +; -7.655 ; LS[5] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.322 ; +; -7.653 ; LS[20] ; SDRAMActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.320 ; +; -7.653 ; LS[10] ; SDRAMActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.320 ; +; -7.651 ; LS[12] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.318 ; +; -7.638 ; LS[6] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.305 ; +; -7.635 ; LS[10] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.302 ; +; -7.630 ; LS[10] ; LS[15] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.297 ; +; -7.620 ; LS[0] ; LS[3] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.287 ; +; -7.611 ; LS[6] ; nFCS~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.278 ; +; -7.600 ; LS[8] ; LS[14] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.267 ; +; -7.593 ; LS[3] ; LS[10] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.260 ; +; -7.589 ; LS[17] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.256 ; +; -7.588 ; LS[3] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.255 ; +; -7.584 ; LS[5] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.251 ; +; -7.584 ; LS[8] ; LS[10] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.251 ; +; -7.566 ; LS[3] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.233 ; +; -7.565 ; LS[2] ; nRESout~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.232 ; +; -7.562 ; LS[2] ; SDRAMActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.229 ; +; -7.561 ; LS[3] ; LS[15] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.228 ; +; -7.541 ; LS[2] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.208 ; +; -7.540 ; LS[2] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.207 ; +; -7.537 ; LS[7] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.204 ; +; -7.529 ; LS[19] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.196 ; +; -7.528 ; LS[10] ; nFCS~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.195 ; +; -7.517 ; LS[0] ; LS[7] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.184 ; +; -7.516 ; LS[0] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.183 ; +; -7.515 ; LS[7] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.182 ; +; -7.510 ; LS[7] ; LS[15] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.177 ; +; -7.489 ; LS[5] ; LS[12] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.156 ; +; -7.485 ; LS[12] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.152 ; +; -7.483 ; LS[11] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.150 ; +; -7.474 ; LS[11] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.141 ; +; -7.469 ; LS[10] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.136 ; +; -7.461 ; LS[11] ; LS[18] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.128 ; +; -7.454 ; LS[13] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.121 ; +; -7.451 ; LS[14] ; LS[16] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.118 ; +; -7.443 ; LS[5] ; nBODf0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.110 ; +; -7.436 ; LS[12] ; LS[15] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.103 ; +; -7.401 ; LS[3] ; LS[7] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.068 ; +; -7.400 ; LS[3] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.067 ; +; -7.394 ; LS[17] ; nRESout~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.061 ; +; -7.385 ; LS[11] ; nRESout~reg0 ; C25M ; C25M ; 1.000 ; 0.000 ; 8.052 ; +; -7.383 ; LS[13] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.050 ; +; -7.382 ; LS[11] ; SDRAMActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.049 ; +; -7.380 ; LS[14] ; LS[19] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.047 ; +; -7.367 ; LS[16] ; InitActv ; C25M ; C25M ; 1.000 ; 0.000 ; 8.034 ; +; -7.365 ; LS[5] ; LS[10] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.032 ; +; -7.363 ; LS[16] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.030 ; +; -7.360 ; LS[5] ; LS[21] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.027 ; +; -7.349 ; LS[7] ; LS[17] ; C25M ; C25M ; 1.000 ; 0.000 ; 8.016 ; ++--------+-----------+--------------+--------------+-------------+--------------+------------+------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Hold: 'DRCLK' ; ++---------+---------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; ++---------+---------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; -16.286 ; DRShift ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; C25M ; DRCLK ; 0.000 ; -2.165 ; 1.549 ; +; 60.000 ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; DRCLK ; DRCLK ; 0.000 ; 0.000 ; 80.000 ; ++---------+---------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Hold: 'ARCLK' ; ++---------+---------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; ++---------+---------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ +; -16.276 ; ARShift ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; C25M ; ARCLK ; 0.000 ; -2.195 ; 1.529 ; +; 60.000 ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; ARCLK ; ARCLK ; 0.000 ; 0.000 ; 80.000 ; ++---------+---------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------+-------------+--------------+------------+------------+ + + ++------------------------------------------------------------------------------------------------------------+ +; Hold: 'C25M' ; ++--------+--------------+--------------+--------------+-------------+--------------+------------+------------+ +; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; ++--------+--------------+--------------+--------------+-------------+--------------+------------+------------+ +; -1.579 ; ARCLK ; ARCLK ; ARCLK ; C25M ; 0.000 ; 3.348 ; 2.366 ; +; -1.079 ; ARCLK ; ARCLK ; ARCLK ; C25M ; -0.500 ; 3.348 ; 2.366 ; +; 1.374 ; nBODr0 ; nBODr ; C25M ; C25M ; 0.000 ; 0.000 ; 1.595 ; +; 1.382 ; nRESr0 ; nRESr ; C25M ; C25M ; 0.000 ; 0.000 ; 1.603 ; +; 1.677 ; SDRAMActv ; SDRAMActv ; C25M ; C25M ; 0.000 ; 0.000 ; 1.898 ; +; 1.739 ; S[2] ; S[2] ; C25M ; C25M ; 0.000 ; 0.000 ; 1.960 ; +; 1.879 ; PHI0r0 ; PHI0r1 ; C25M ; C25M ; -0.500 ; 0.000 ; 1.600 ; +; 1.907 ; UFMD[14] ; UFMD[14] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.128 ; +; 1.908 ; UFMD[13] ; UFMD[13] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.129 ; +; 2.005 ; S[1] ; S[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.226 ; +; 2.014 ; S[1] ; S[2] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.235 ; +; 2.127 ; InitIntr ; InitIntr ; C25M ; C25M ; 0.000 ; 0.000 ; 2.348 ; +; 2.160 ; PHI0r2 ; S[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.381 ; +; 2.165 ; PHI0r2 ; S[0] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.386 ; +; 2.213 ; nFCS~reg0 ; nFCS~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 2.434 ; +; 2.285 ; SetLoaded ; SetLoaded ; C25M ; C25M ; 0.000 ; 0.000 ; 2.506 ; +; 2.288 ; DEVSELr0 ; DEVSELr ; C25M ; C25M ; -0.500 ; 0.000 ; 2.009 ; +; 2.290 ; SetLoaded ; ARShift ; C25M ; C25M ; 0.000 ; 0.000 ; 2.511 ; +; 2.292 ; SetLoaded ; DRShift ; C25M ; C25M ; 0.000 ; 0.000 ; 2.513 ; +; 2.299 ; MOSIOE ; WRD[6] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.520 ; +; 2.328 ; PHI0r1 ; PHI0r2 ; C25M ; C25M ; 0.000 ; 0.000 ; 2.549 ; +; 2.380 ; S[0] ; S[0] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.601 ; +; 2.383 ; nWEcur ; SDOE ; C25M ; C25M ; 0.000 ; 0.000 ; 2.604 ; +; 2.383 ; S[0] ; S[2] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.604 ; +; 2.387 ; S[0] ; S[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.608 ; +; 2.397 ; S[0] ; SDOE ; C25M ; C25M ; 0.000 ; 0.000 ; 2.618 ; +; 2.523 ; DEVSELr ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 2.744 ; +; 2.768 ; PHI0r2 ; nWEcur ; C25M ; C25M ; 0.000 ; 0.000 ; 2.989 ; +; 2.770 ; nBODr ; nBODf0 ; C25M ; C25M ; 0.000 ; 0.000 ; 2.991 ; +; 2.771 ; InitActv ; WRD[6] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.992 ; +; 2.771 ; InitActv ; WRD[7] ; C25M ; C25M ; 0.000 ; 0.000 ; 2.992 ; +; 2.829 ; LS[4] ; DRCLK ; C25M ; C25M ; 0.000 ; 0.000 ; 3.050 ; +; 2.868 ; nRESout~reg0 ; nRESout~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 3.089 ; +; 2.874 ; LS[2] ; LS[2] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.095 ; +; 2.877 ; nRESout~reg0 ; nFCS~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 3.098 ; +; 2.896 ; LS[1] ; LS[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.117 ; +; 2.903 ; InitActv ; SDOE ; C25M ; C25M ; 0.000 ; 0.000 ; 3.124 ; +; 2.966 ; RAMSEL ; SDOE ; C25M ; C25M ; 0.000 ; 0.000 ; 3.187 ; +; 3.035 ; RAcur[11] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.256 ; +; 3.084 ; InitActv ; InitActv ; C25M ; C25M ; 0.000 ; 0.000 ; 3.305 ; +; 3.091 ; nBODf ; InitActv ; C25M ; C25M ; 0.000 ; 0.000 ; 3.312 ; +; 3.177 ; MOSIout ; WRD[6] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.398 ; +; 3.185 ; S[0] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.406 ; +; 3.188 ; S[2] ; S[0] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.409 ; +; 3.264 ; nBODf ; nRESout~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 3.485 ; +; 3.266 ; S[2] ; S[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.487 ; +; 3.281 ; RAMSEL ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.502 ; +; 3.284 ; LS[1] ; DRCLK ; C25M ; C25M ; 0.000 ; 0.000 ; 3.505 ; +; 3.285 ; LS[1] ; ARCLK ; C25M ; C25M ; 0.000 ; 0.000 ; 3.506 ; +; 3.301 ; LS[0] ; InitActv ; C25M ; C25M ; 0.000 ; 0.000 ; 3.522 ; +; 3.320 ; RAcur[0] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.541 ; +; 3.342 ; LS[4] ; DRShift ; C25M ; C25M ; 0.000 ; 0.000 ; 3.563 ; +; 3.352 ; LS[2] ; SetLoaded ; C25M ; C25M ; 0.000 ; 0.000 ; 3.573 ; +; 3.377 ; LS[22] ; LS[22] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.598 ; +; 3.389 ; InitIntr ; SDRAMActv ; C25M ; C25M ; 0.000 ; 0.000 ; 3.610 ; +; 3.392 ; InitIntr ; nRESout~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 3.613 ; +; 3.429 ; nBODf ; SDRAMActv ; C25M ; C25M ; 0.000 ; 0.000 ; 3.650 ; +; 3.437 ; nBODf ; InitIntr ; C25M ; C25M ; 0.000 ; 0.000 ; 3.658 ; +; 3.521 ; LS[0] ; InitIntr ; C25M ; C25M ; 0.000 ; 0.000 ; 3.742 ; +; 3.523 ; S[2] ; SDOE ; C25M ; C25M ; 0.000 ; 0.000 ; 3.744 ; +; 3.530 ; LS[21] ; FCK~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 3.751 ; +; 3.539 ; LS[20] ; LS[20] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.760 ; +; 3.546 ; RAcur[10] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.767 ; +; 3.552 ; S[1] ; S[0] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.773 ; +; 3.559 ; PHI0r2 ; RACr ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[10] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[9] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[11] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[3] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[8] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[2] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.559 ; PHI0r2 ; RAcur[0] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.780 ; +; 3.588 ; SetLoaded ; DRCLK ; C25M ; C25M ; 0.000 ; 0.000 ; 3.809 ; +; 3.597 ; PHI0r1 ; S[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.818 ; +; 3.602 ; PHI0r1 ; S[0] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.823 ; +; 3.652 ; LS[13] ; LS[19] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.873 ; +; 3.660 ; S[2] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.881 ; +; 3.674 ; S[1] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 3.895 ; +; 3.685 ; LS[6] ; LS[6] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.906 ; +; 3.701 ; LS[4] ; LS[4] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.922 ; +; 3.703 ; LS[1] ; LS[2] ; C25M ; C25M ; 0.000 ; 0.000 ; 3.924 ; +; 3.708 ; S[1] ; SDOE ; C25M ; C25M ; 0.000 ; 0.000 ; 3.929 ; +; 3.798 ; nRESout~reg0 ; InitActv ; C25M ; C25M ; 0.000 ; 0.000 ; 4.019 ; +; 3.823 ; LS[4] ; MOSIOE ; C25M ; C25M ; 0.000 ; 0.000 ; 4.044 ; +; 3.825 ; RAcur[8] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 4.046 ; +; 3.874 ; S[2] ; nWEcur ; C25M ; C25M ; 0.000 ; 0.000 ; 4.095 ; +; 3.925 ; LS[2] ; DRShift ; C25M ; C25M ; 0.000 ; 0.000 ; 4.146 ; +; 3.965 ; LS[13] ; LS[16] ; C25M ; C25M ; 0.000 ; 0.000 ; 4.186 ; +; 4.022 ; LS[0] ; nRESout~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 4.243 ; +; 4.093 ; RAcur[9] ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 4.314 ; +; 4.116 ; nRESr ; S[1] ; C25M ; C25M ; 0.000 ; 0.000 ; 4.337 ; +; 4.157 ; LS[14] ; MOSIout ; C25M ; C25M ; 0.000 ; 0.000 ; 4.378 ; +; 4.184 ; nRESout~reg0 ; FCK~reg0 ; C25M ; C25M ; 0.000 ; 0.000 ; 4.405 ; +; 4.184 ; nRESout~reg0 ; MOSIOE ; C25M ; C25M ; 0.000 ; 0.000 ; 4.405 ; +; 4.205 ; PHI0r1 ; nWEcur ; C25M ; C25M ; 0.000 ; 0.000 ; 4.426 ; +; 4.209 ; LS[1] ; WRD[6] ; C25M ; C25M ; 0.000 ; 0.000 ; 4.430 ; +; 4.233 ; RACr ; RAMSEL ; C25M ; C25M ; 0.000 ; 0.000 ; 4.454 ; +; 4.233 ; LS[3] ; InitActv ; C25M ; C25M ; 0.000 ; 0.000 ; 4.454 ; +; 4.238 ; S[1] ; nWEcur ; C25M ; C25M ; 0.000 ; 0.000 ; 4.459 ; ++--------+--------------+--------------+--------------+-------------+--------------+------------+------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Minimum Pulse Width: 'ARCLK' ; ++---------+--------------+----------------+------------------+-------+------------+---------------------------------------------------------------------------------------------------------+ +; Slack ; Actual Width ; Required Width ; Type ; Clock ; Clock Edge ; Target ; ++---------+--------------+----------------+------------------+-------+------------+---------------------------------------------------------------------------------------------------------+ +; -29.500 ; 0.500 ; 30.000 ; High Pulse Width ; ARCLK ; Rise ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; +; -29.500 ; 0.500 ; 30.000 ; Low Pulse Width ; ARCLK ; Rise ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|maxii_ufm_block1~OBSERVABLEADDRESSREGOUT ; +; 0.500 ; 0.500 ; 0.000 ; High Pulse Width ; ARCLK ; Rise ; ARCLK|regout ; +; 0.500 ; 0.500 ; 0.000 ; Low Pulse Width ; ARCLK ; Rise ; ARCLK|regout ; +; 0.500 ; 0.500 ; 0.000 ; High Pulse Width ; ARCLK ; Rise ; UFM_inst|UFM_altufm_none_0ep_component|maxii_ufm_block1|arclk ; +; 0.500 ; 0.500 ; 0.000 ; Low Pulse Width ; ARCLK ; Rise ; UFM_inst|UFM_altufm_none_0ep_component|maxii_ufm_block1|arclk ; ++---------+--------------+----------------+------------------+-------+------------+---------------------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Minimum Pulse Width: 'DRCLK' ; ++---------+--------------+----------------+------------------+-------+------------+---------------------------------------------------------------------------------------------+ +; Slack ; Actual Width ; Required Width ; Type ; Clock ; Clock Edge ; Target ; ++---------+--------------+----------------+------------------+-------+------------+---------------------------------------------------------------------------------------------+ +; -29.500 ; 0.500 ; 30.000 ; High Pulse Width ; DRCLK ; Rise ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; +; -29.500 ; 0.500 ; 30.000 ; Low Pulse Width ; DRCLK ; Rise ; UFM:UFM_inst|UFM_altufm_none_0ep:UFM_altufm_none_0ep_component|wire_maxii_ufm_block1_drdout ; +; 0.500 ; 0.500 ; 0.000 ; High Pulse Width ; DRCLK ; Rise ; DRCLK|regout ; +; 0.500 ; 0.500 ; 0.000 ; Low Pulse Width ; DRCLK ; Rise ; DRCLK|regout ; +; 0.500 ; 0.500 ; 0.000 ; High Pulse Width ; DRCLK ; Rise ; UFM_inst|UFM_altufm_none_0ep_component|maxii_ufm_block1|drclk ; +; 0.500 ; 0.500 ; 0.000 ; Low Pulse Width ; DRCLK ; Rise ; UFM_inst|UFM_altufm_none_0ep_component|maxii_ufm_block1|drclk ; ++---------+--------------+----------------+------------------+-------+------------+---------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------+ +; Minimum Pulse Width: 'C25M' ; ++--------+--------------+----------------+------------------+-------+------------+-----------+ +; Slack ; Actual Width ; Required Width ; Type ; Clock ; Clock Edge ; Target ; ++--------+--------------+----------------+------------------+-------+------------+-----------+ +; -2.289 ; 1.000 ; 3.289 ; Port Rate ; C25M ; Rise ; C25M ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; ARCLK ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; ARCLK ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; ARShift ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; ARShift ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; DEVSELr ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; DEVSELr ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Fall ; DEVSELr0 ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Fall ; DEVSELr0 ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; DRCLK ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; DRCLK ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; DRShift ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; DRShift ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; FCK~reg0 ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; FCK~reg0 ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; InitActv ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; InitActv ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; InitIntr ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; InitIntr ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[0] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[0] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[10] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[10] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[11] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[11] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[12] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[12] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[13] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[13] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[14] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[14] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[15] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[15] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[16] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[16] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[17] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[17] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[18] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[18] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[19] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[19] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[1] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[1] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[20] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[20] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[21] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[21] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[22] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[22] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[2] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[2] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[3] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[3] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[4] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[4] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[5] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[5] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[6] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[6] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[7] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[7] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[8] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[8] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; LS[9] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; LS[9] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; MOSIOE ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; MOSIOE ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; MOSIout ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; MOSIout ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Fall ; PHI0r0 ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Fall ; PHI0r0 ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; PHI0r1 ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; PHI0r1 ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; PHI0r2 ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; PHI0r2 ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RACr ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RACr ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAMSEL ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAMSEL ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[0] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[0] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[10] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[10] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[11] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[11] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[1] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[1] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[2] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[2] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[3] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[3] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[8] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[8] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; RAcur[9] ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; RAcur[9] ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; SDOE ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; SDOE ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; SDRAMActv ; +; 0.234 ; 0.500 ; 0.266 ; Low Pulse Width ; C25M ; Rise ; SDRAMActv ; +; 0.234 ; 0.500 ; 0.266 ; High Pulse Width ; C25M ; Rise ; S[0] ; ++--------+--------------+----------------+------------------+-------+------------+-----------+ + + ++-----------------------------------------------------------------------+ +; Setup Times ; ++-----------+------------+-------+-------+------------+-----------------+ +; Data Port ; Clock Port ; Rise ; Fall ; Clock Edge ; Clock Reference ; ++-----------+------------+-------+-------+------------+-----------------+ +; MISO ; C25M ; 2.942 ; 2.942 ; Rise ; C25M ; +; RA[*] ; C25M ; 3.501 ; 3.501 ; Rise ; C25M ; +; RA[0] ; C25M ; 2.717 ; 2.717 ; Rise ; C25M ; +; RA[1] ; C25M ; 1.838 ; 1.838 ; Rise ; C25M ; +; RA[2] ; C25M ; 1.842 ; 1.842 ; Rise ; C25M ; +; RA[3] ; C25M ; 2.604 ; 2.604 ; Rise ; C25M ; +; RA[8] ; C25M ; 2.435 ; 2.435 ; Rise ; C25M ; +; RA[9] ; C25M ; 2.467 ; 2.467 ; Rise ; C25M ; +; RA[10] ; C25M ; 2.663 ; 2.663 ; Rise ; C25M ; +; RA[11] ; C25M ; 2.353 ; 2.353 ; Rise ; C25M ; +; RA[12] ; C25M ; 3.501 ; 3.501 ; Rise ; C25M ; +; RA[13] ; C25M ; 3.219 ; 3.219 ; Rise ; C25M ; +; RA[14] ; C25M ; 2.101 ; 2.101 ; Rise ; C25M ; +; RA[15] ; C25M ; 3.148 ; 3.148 ; Rise ; C25M ; +; RD[*] ; C25M ; 3.584 ; 3.584 ; Rise ; C25M ; +; RD[0] ; C25M ; 2.094 ; 2.094 ; Rise ; C25M ; +; RD[1] ; C25M ; 1.819 ; 1.819 ; Rise ; C25M ; +; RD[2] ; C25M ; 2.431 ; 2.431 ; Rise ; C25M ; +; RD[3] ; C25M ; 2.028 ; 2.028 ; Rise ; C25M ; +; RD[4] ; C25M ; 1.817 ; 1.817 ; Rise ; C25M ; +; RD[5] ; C25M ; 2.454 ; 2.454 ; Rise ; C25M ; +; RD[6] ; C25M ; 3.584 ; 3.584 ; Rise ; C25M ; +; RD[7] ; C25M ; 3.280 ; 3.280 ; Rise ; C25M ; +; nBOD ; C25M ; 2.712 ; 2.712 ; Rise ; C25M ; +; nRES ; C25M ; 2.707 ; 2.707 ; Rise ; C25M ; +; nWE ; C25M ; 2.649 ; 2.649 ; Rise ; C25M ; +; PHI0 ; C25M ; 2.420 ; 2.420 ; Fall ; C25M ; +; nDEVSEL ; C25M ; 2.916 ; 2.916 ; Fall ; C25M ; ++-----------+------------+-------+-------+------------+-----------------+ + + ++-------------------------------------------------------------------------+ +; Hold Times ; ++-----------+------------+--------+--------+------------+-----------------+ +; Data Port ; Clock Port ; Rise ; Fall ; Clock Edge ; Clock Reference ; ++-----------+------------+--------+--------+------------+-----------------+ +; MISO ; C25M ; -2.388 ; -2.388 ; Rise ; C25M ; +; RA[*] ; C25M ; -1.284 ; -1.284 ; Rise ; C25M ; +; RA[0] ; C25M ; -2.163 ; -2.163 ; Rise ; C25M ; +; RA[1] ; C25M ; -1.284 ; -1.284 ; Rise ; C25M ; +; RA[2] ; C25M ; -1.288 ; -1.288 ; Rise ; C25M ; +; RA[3] ; C25M ; -2.050 ; -2.050 ; Rise ; C25M ; +; RA[8] ; C25M ; -1.881 ; -1.881 ; Rise ; C25M ; +; RA[9] ; C25M ; -1.913 ; -1.913 ; Rise ; C25M ; +; RA[10] ; C25M ; -2.109 ; -2.109 ; Rise ; C25M ; +; RA[11] ; C25M ; -1.799 ; -1.799 ; Rise ; C25M ; +; RA[12] ; C25M ; -2.947 ; -2.947 ; Rise ; C25M ; +; RA[13] ; C25M ; -2.665 ; -2.665 ; Rise ; C25M ; +; RA[14] ; C25M ; -1.547 ; -1.547 ; Rise ; C25M ; +; RA[15] ; C25M ; -2.594 ; -2.594 ; Rise ; C25M ; +; RD[*] ; C25M ; -1.263 ; -1.263 ; Rise ; C25M ; +; RD[0] ; C25M ; -1.540 ; -1.540 ; Rise ; C25M ; +; RD[1] ; C25M ; -1.265 ; -1.265 ; Rise ; C25M ; +; RD[2] ; C25M ; -1.877 ; -1.877 ; Rise ; C25M ; +; RD[3] ; C25M ; -1.474 ; -1.474 ; Rise ; C25M ; +; RD[4] ; C25M ; -1.263 ; -1.263 ; Rise ; C25M ; +; RD[5] ; C25M ; -1.900 ; -1.900 ; Rise ; C25M ; +; RD[6] ; C25M ; -3.030 ; -3.030 ; Rise ; C25M ; +; RD[7] ; C25M ; -2.726 ; -2.726 ; Rise ; C25M ; +; nBOD ; C25M ; -2.158 ; -2.158 ; Rise ; C25M ; +; nRES ; C25M ; -2.153 ; -2.153 ; Rise ; C25M ; +; nWE ; C25M ; -2.095 ; -2.095 ; Rise ; C25M ; +; PHI0 ; C25M ; -1.866 ; -1.866 ; Fall ; C25M ; +; nDEVSEL ; C25M ; -2.362 ; -2.362 ; Fall ; C25M ; ++-----------+------------+--------+--------+------------+-----------------+ + + ++-----------------------------------------------------------------------+ +; Clock to Output Times ; ++-----------+------------+-------+-------+------------+-----------------+ +; Data Port ; Clock Port ; Rise ; Fall ; Clock Edge ; Clock Reference ; ++-----------+------------+-------+-------+------------+-----------------+ +; FCK ; C25M ; 8.081 ; 8.081 ; Rise ; C25M ; +; MOSI ; C25M ; 8.599 ; 8.599 ; Rise ; C25M ; +; SD[*] ; C25M ; 8.802 ; 8.802 ; Rise ; C25M ; +; SD[0] ; C25M ; 6.853 ; 6.853 ; Rise ; C25M ; +; SD[1] ; C25M ; 6.847 ; 6.847 ; Rise ; C25M ; +; SD[2] ; C25M ; 6.820 ; 6.820 ; Rise ; C25M ; +; SD[3] ; C25M ; 6.867 ; 6.867 ; Rise ; C25M ; +; SD[4] ; C25M ; 6.848 ; 6.848 ; Rise ; C25M ; +; SD[5] ; C25M ; 6.814 ; 6.814 ; Rise ; C25M ; +; SD[6] ; C25M ; 8.802 ; 8.802 ; Rise ; C25M ; +; SD[7] ; C25M ; 8.542 ; 8.542 ; Rise ; C25M ; +; nFCS ; C25M ; 6.854 ; 6.854 ; Rise ; C25M ; +; nRESout ; C25M ; 8.024 ; 8.024 ; Rise ; C25M ; ++-----------+------------+-------+-------+------------+-----------------+ + + ++-----------------------------------------------------------------------+ +; Minimum Clock to Output Times ; ++-----------+------------+-------+-------+------------+-----------------+ +; Data Port ; Clock Port ; Rise ; Fall ; Clock Edge ; Clock Reference ; ++-----------+------------+-------+-------+------------+-----------------+ +; FCK ; C25M ; 8.081 ; 8.081 ; Rise ; C25M ; +; MOSI ; C25M ; 8.599 ; 8.599 ; Rise ; C25M ; +; SD[*] ; C25M ; 6.814 ; 6.814 ; Rise ; C25M ; +; SD[0] ; C25M ; 6.853 ; 6.853 ; Rise ; C25M ; +; SD[1] ; C25M ; 6.847 ; 6.847 ; Rise ; C25M ; +; SD[2] ; C25M ; 6.820 ; 6.820 ; Rise ; C25M ; +; SD[3] ; C25M ; 6.867 ; 6.867 ; Rise ; C25M ; +; SD[4] ; C25M ; 6.848 ; 6.848 ; Rise ; C25M ; +; SD[5] ; C25M ; 6.814 ; 6.814 ; Rise ; C25M ; +; SD[6] ; C25M ; 8.802 ; 8.802 ; Rise ; C25M ; +; SD[7] ; C25M ; 8.542 ; 8.542 ; Rise ; C25M ; +; nFCS ; C25M ; 6.854 ; 6.854 ; Rise ; C25M ; +; nRESout ; C25M ; 8.024 ; 8.024 ; Rise ; C25M ; ++-----------+------------+-------+-------+------------+-----------------+ + + ++----------------------------------------------------+ +; Propagation Delay ; ++------------+-------------+-------+----+----+-------+ +; Input Port ; Output Port ; RR ; RF ; FR ; FF ; ++------------+-------------+-------+----+----+-------+ +; DMAin ; DMAout ; 8.003 ; ; ; 8.003 ; +; INTin ; INTout ; 8.012 ; ; ; 8.012 ; ++------------+-------------+-------+----+----+-------+ + + ++----------------------------------------------------+ +; Minimum Propagation Delay ; ++------------+-------------+-------+----+----+-------+ +; Input Port ; Output Port ; RR ; RF ; FR ; FF ; ++------------+-------------+-------+----+----+-------+ +; DMAin ; DMAout ; 8.003 ; ; ; 8.003 ; +; INTin ; INTout ; 8.012 ; ; ; 8.012 ; ++------------+-------------+-------+----+----+-------+ + + ++----------------------------------------------------------------------+ +; Output Enable Times ; ++-----------+------------+-------+------+------------+-----------------+ +; Data Port ; Clock Port ; Rise ; Fall ; Clock Edge ; Clock Reference ; ++-----------+------------+-------+------+------------+-----------------+ +; MOSI ; C25M ; 6.350 ; ; Rise ; C25M ; +; SD[*] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[0] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[1] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[2] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[3] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[4] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[5] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[6] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[7] ; C25M ; 7.768 ; ; Rise ; C25M ; ++-----------+------------+-------+------+------------+-----------------+ + + ++----------------------------------------------------------------------+ +; Minimum Output Enable Times ; ++-----------+------------+-------+------+------------+-----------------+ +; Data Port ; Clock Port ; Rise ; Fall ; Clock Edge ; Clock Reference ; ++-----------+------------+-------+------+------------+-----------------+ +; MOSI ; C25M ; 6.350 ; ; Rise ; C25M ; +; SD[*] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[0] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[1] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[2] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[3] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[4] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[5] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[6] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[7] ; C25M ; 7.768 ; ; Rise ; C25M ; ++-----------+------------+-------+------+------------+-----------------+ + + ++-------------------------------------------------------------------------------+ +; Output Disable Times ; ++-----------+------------+-----------+-----------+------------+-----------------+ +; Data Port ; Clock Port ; 0 to Hi-Z ; 1 to Hi-Z ; Clock Edge ; Clock Reference ; ++-----------+------------+-----------+-----------+------------+-----------------+ +; MOSI ; C25M ; 6.350 ; ; Rise ; C25M ; +; SD[*] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[0] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[1] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[2] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[3] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[4] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[5] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[6] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[7] ; C25M ; 7.768 ; ; Rise ; C25M ; ++-----------+------------+-----------+-----------+------------+-----------------+ + + ++-------------------------------------------------------------------------------+ +; Minimum Output Disable Times ; ++-----------+------------+-----------+-----------+------------+-----------------+ +; Data Port ; Clock Port ; 0 to Hi-Z ; 1 to Hi-Z ; Clock Edge ; Clock Reference ; ++-----------+------------+-----------+-----------+------------+-----------------+ +; MOSI ; C25M ; 6.350 ; ; Rise ; C25M ; +; SD[*] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[0] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[1] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[2] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[3] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[4] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[5] ; C25M ; 8.282 ; ; Rise ; C25M ; +; SD[6] ; C25M ; 7.768 ; ; Rise ; C25M ; +; SD[7] ; C25M ; 7.768 ; ; Rise ; C25M ; ++-----------+------------+-----------+-----------+------------+-----------------+ + + ++-------------------------------------------------------------------+ +; Setup Transfers ; ++------------+----------+----------+----------+----------+----------+ +; From Clock ; To Clock ; RR Paths ; FR Paths ; RF Paths ; FF Paths ; ++------------+----------+----------+----------+----------+----------+ +; ARCLK ; ARCLK ; 1 ; 0 ; 0 ; 0 ; +; C25M ; ARCLK ; 1 ; 0 ; 0 ; 0 ; +; ARCLK ; C25M ; 1 ; 1 ; 0 ; 0 ; +; C25M ; C25M ; 1370 ; 2 ; 0 ; 0 ; +; DRCLK ; C25M ; 3 ; 0 ; 0 ; 0 ; +; C25M ; DRCLK ; 1 ; 0 ; 0 ; 0 ; +; DRCLK ; DRCLK ; 1 ; 0 ; 0 ; 0 ; ++------------+----------+----------+----------+----------+----------+ +Entries labeled "false path" only account for clock-to-clock false paths and not path-based false paths. As a result, actual path counts may be lower than reported. + + ++-------------------------------------------------------------------+ +; Hold Transfers ; ++------------+----------+----------+----------+----------+----------+ +; From Clock ; To Clock ; RR Paths ; FR Paths ; RF Paths ; FF Paths ; ++------------+----------+----------+----------+----------+----------+ +; ARCLK ; ARCLK ; 1 ; 0 ; 0 ; 0 ; +; C25M ; ARCLK ; 1 ; 0 ; 0 ; 0 ; +; ARCLK ; C25M ; 1 ; 1 ; 0 ; 0 ; +; C25M ; C25M ; 1370 ; 2 ; 0 ; 0 ; +; DRCLK ; C25M ; 3 ; 0 ; 0 ; 0 ; +; C25M ; DRCLK ; 1 ; 0 ; 0 ; 0 ; +; DRCLK ; DRCLK ; 1 ; 0 ; 0 ; 0 ; ++------------+----------+----------+----------+----------+----------+ +Entries labeled "false path" only account for clock-to-clock false paths and not path-based false paths. As a result, actual path counts may be lower than reported. + + +--------------- +; Report TCCS ; +--------------- +No dedicated SERDES Transmitter circuitry present in device or used in design + + +--------------- +; Report RSKM ; +--------------- +No dedicated SERDES Receiver circuitry present in device or used in design + + ++------------------------------------------------+ +; Unconstrained Paths ; ++---------------------------------+-------+------+ +; Property ; Setup ; Hold ; ++---------------------------------+-------+------+ +; Illegal Clocks ; 0 ; 0 ; +; Unconstrained Clocks ; 0 ; 0 ; +; Unconstrained Input Ports ; 28 ; 28 ; +; Unconstrained Input Port Paths ; 28 ; 28 ; +; Unconstrained Output Ports ; 14 ; 14 ; +; Unconstrained Output Port Paths ; 23 ; 23 ; ++---------------------------------+-------+------+ + + ++------------------------------------+ +; TimeQuest Timing Analyzer Messages ; ++------------------------------------+ +Info: ******************************************************************* +Info: Running Quartus II 32-bit TimeQuest Timing Analyzer + Info: Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition + Info: Processing started: Thu Mar 18 04:40:54 2021 +Info: Command: quartus_sta GR8RAM -c GR8RAM +Info: qsta_default_script.tcl version: #1 +Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected +Info (21077): Low junction temperature is 0 degrees C +Info (21077): High junction temperature is 85 degrees C +Info (306004): Started post-fitting delay annotation +Info (306005): Delay annotation completed successfully +Critical Warning (332012): Synopsys Design Constraints File file not found: 'GR8RAM.sdc'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design. +Info (332142): No user constrained base clocks found in the design. Calling "derive_clocks -period 1.0" +Info (332105): Deriving Clocks + Info (332105): create_clock -period 1.000 -name DRCLK DRCLK + Info (332105): create_clock -period 1.000 -name ARCLK ARCLK + Info (332105): create_clock -period 1.000 -name C25M C25M +Info: Found TIMEQUEST_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS = ON +Critical Warning (332148): Timing requirements not met +Info (332146): Worst-case setup slack is -99.000 + Info (332119): Slack End Point TNS Clock + Info (332119): ========= ============= ===================== + Info (332119): -99.000 -99.000 ARCLK + Info (332119): -99.000 -99.000 DRCLK + Info (332119): -8.447 -415.877 C25M +Info (332146): Worst-case hold slack is -16.286 + Info (332119): Slack End Point TNS Clock + Info (332119): ========= ============= ===================== + Info (332119): -16.286 -16.286 DRCLK + Info (332119): -16.276 -16.276 ARCLK + Info (332119): -1.579 -1.579 C25M +Info (332140): No Recovery paths to report +Info (332140): No Removal paths to report +Info (332146): Worst-case minimum pulse width slack is -29.500 + Info (332119): Slack End Point TNS Clock + Info (332119): ========= ============= ===================== + Info (332119): -29.500 -59.000 ARCLK + Info (332119): -29.500 -59.000 DRCLK + Info (332119): -2.289 -2.289 C25M +Info (332001): The selected device family is not supported by the report_metastability command. +Info (332102): Design is not fully constrained for setup requirements +Info (332102): Design is not fully constrained for hold requirements +Info: Quartus II 32-bit TimeQuest Timing Analyzer was successful. 0 errors, 2 warnings + Info: Peak virtual memory: 286 megabytes + Info: Processing ended: Thu Mar 18 04:40:58 2021 + Info: Elapsed time: 00:00:04 + Info: Total CPU time (on all processors): 00:00:04 + + diff --git a/cpld/output_files/GR8RAM.sta.summary b/cpld/output_files/GR8RAM.sta.summary new file mode 100755 index 0000000..1711c4c --- /dev/null +++ b/cpld/output_files/GR8RAM.sta.summary @@ -0,0 +1,41 @@ +------------------------------------------------------------ +TimeQuest Timing Analyzer Summary +------------------------------------------------------------ + +Type : Setup 'ARCLK' +Slack : -99.000 +TNS : -99.000 + +Type : Setup 'DRCLK' +Slack : -99.000 +TNS : -99.000 + +Type : Setup 'C25M' +Slack : -8.447 +TNS : -415.877 + +Type : Hold 'DRCLK' +Slack : -16.286 +TNS : -16.286 + +Type : Hold 'ARCLK' +Slack : -16.276 +TNS : -16.276 + +Type : Hold 'C25M' +Slack : -1.579 +TNS : -1.579 + +Type : Minimum Pulse Width 'ARCLK' +Slack : -29.500 +TNS : -59.000 + +Type : Minimum Pulse Width 'DRCLK' +Slack : -29.500 +TNS : -59.000 + +Type : Minimum Pulse Width 'C25M' +Slack : -2.289 +TNS : -2.289 + +------------------------------------------------------------