From b526739dc28225b64df4907893506954b33b58eb Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Tue, 10 Jul 2018 14:18:14 +0200 Subject: [PATCH] change ring buffer almost full handling - now single words are discarded --- .../FIFO/FIFO_DC_36x128_DynThr_OutReg.edn | 617 +++++++-------- .../FIFO/FIFO_DC_36x128_DynThr_OutReg.ipx | 10 +- .../FIFO/FIFO_DC_36x128_DynThr_OutReg.jhd | 343 +++++++++ .../FIFO/FIFO_DC_36x128_DynThr_OutReg.lpc | 14 +- .../FIFO/FIFO_DC_36x128_DynThr_OutReg.srp | 24 +- .../FIFO/FIFO_DC_36x128_DynThr_OutReg.vhd | 206 ++--- .../FIFO_DC_36x128_DynThr_OutReg_generate.log | 16 +- .../FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd | 14 +- base/cores/ecp3/FIFO/generate_core.tcl | 4 +- base/cores/ecp3/FIFO/generate_ngd.tcl | 2 +- base/cores/ecp3/FIFO/msg_file.log | 28 +- .../tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd | 14 +- .../FIFO_DC_36x128_DynThr_OutReg.cst | 4 +- .../FIFO_DC_36x128_DynThr_OutReg.edn | 703 +++++++++--------- .../FIFO_DC_36x128_DynThr_OutReg.jhd | 2 + .../FIFO_DC_36x128_DynThr_OutReg.lpc | 26 +- .../FIFO_DC_36x128_DynThr_OutReg.ngd | Bin 139223 -> 139819 bytes .../FIFO_DC_36x128_DynThr_OutReg.ngo | Bin 53753 -> 54197 bytes .../FIFO_DC_36x128_DynThr_OutReg.srp | 24 +- .../FIFO_DC_36x128_DynThr_OutReg.vhd | 202 ++--- .../FIFO_DC_36x128_DynThr_OutReg_generate.log | 16 +- .../FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd | 14 +- .../generate_core.tcl | 4 +- .../generate_ngd.tcl | 12 +- .../FIFO_DC_36x128_DynThr_OutReg/msg_file.log | 16 +- .../tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd | 14 +- releases/tdc_v2.3/Channel_200.vhd | 20 +- 27 files changed, 1380 insertions(+), 969 deletions(-) diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.edn b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.edn index 3dfc2e6..d0faa0c 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.edn +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.edn @@ -4,9 +4,9 @@ (keywordMap (keywordLevel 0)) (status (written - (timestamp 2015 4 9 9 22 22) - (program "SCUBA" (version "Diamond (64-bit) 3.4.0.80")))) - (comment "/opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type ebfifo -depth 128 -width 36 -depth 128 -rdata_width 36 -regout -no_enable -pe -1 -pf 0 ") + (timestamp 2018 7 6 11 51 36) + (program "SCUBA" (version "Diamond (64-bit) 3.9.1.119")))) + (comment "/d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type ebfifo -depth 128 -width 36 -depth 128 -rdata_width 36 -regout -no_enable -pe 0 -pf -1 ") (library ORCLIB (edifLevel 0) (technology @@ -458,7 +458,7 @@ (direction INPUT)) (port RPReset (direction INPUT)) - (port (array (rename AmFullThresh "AmFullThresh(6:0)") 7) + (port (array (rename AmEmptyThresh "AmEmptyThresh(6:0)") 7) (direction INPUT)) (port (array (rename Q "Q(35:0)") 36) (direction OUTPUT)) @@ -466,25 +466,31 @@ (direction OUTPUT)) (port Full (direction OUTPUT)) - (port AlmostFull + (port AlmostEmpty (direction OUTPUT))) (property NGD_DRC_MASK (integer 1)) (contents - (instance AND2_t17 + (instance AND2_t19 (viewRef view1 (cellRef AND2))) - (instance INV_1 + (instance INV_2 (viewRef view1 (cellRef INV))) - (instance AND2_t16 + (instance AND2_t18 (viewRef view1 (cellRef AND2))) - (instance INV_0 + (instance INV_1 (viewRef view1 (cellRef INV))) - (instance OR2_t15 + (instance OR2_t17 (viewRef view1 (cellRef OR2))) + (instance XOR2_t16 + (viewRef view1 + (cellRef XOR2))) + (instance XOR2_t15 + (viewRef view1 + (cellRef XOR2))) (instance XOR2_t14 (viewRef view1 (cellRef XOR2))) @@ -521,12 +527,6 @@ (instance XOR2_t3 (viewRef view1 (cellRef XOR2))) - (instance XOR2_t2 - (viewRef view1 - (cellRef XOR2))) - (instance XOR2_t1 - (viewRef view1 - (cellRef XOR2))) (instance LUT4_19 (viewRef view1 (cellRef ROM16X1A)) @@ -607,7 +607,7 @@ (cellRef ROM16X1A)) (property initval (string "0x6996"))) - (instance XOR2_t0 + (instance XOR2_t2 (viewRef view1 (cellRef XOR2))) (instance LUT4_3 @@ -630,6 +630,15 @@ (cellRef ROM16X1A)) (property initval (string "0x4001"))) + (instance INV_0 + (viewRef view1 + (cellRef INV))) + (instance AND2_t1 + (viewRef view1 + (cellRef AND2))) + (instance AND2_t0 + (viewRef view1 + (cellRef AND2))) (instance pdp_ram_0_0_0 (viewRef view1 (cellRef PDPW16KC)) @@ -1103,7 +1112,7 @@ (string "ENABLED"))) (instance FF_0 (viewRef view1 - (cellRef FD1S3DX)) + (cellRef FD1S3BX)) (property GSR (string "ENABLED"))) (instance w_gctr_cia @@ -1142,19 +1151,19 @@ (instance scuba_vhi_inst (viewRef view1 (cellRef VHI))) - (instance wcnt_0 + (instance rcnt_0 (viewRef view1 (cellRef FSUB2B))) - (instance wcnt_1 + (instance rcnt_1 (viewRef view1 (cellRef FSUB2B))) - (instance wcnt_2 + (instance rcnt_2 (viewRef view1 (cellRef FSUB2B))) - (instance wcnt_3 + (instance rcnt_3 (viewRef view1 (cellRef FSUB2B))) - (instance wcnt_4 + (instance rcnt_4 (viewRef view1 (cellRef FSUB2B))) (instance empty_cmp_ci_a @@ -1193,19 +1202,19 @@ (instance a1 (viewRef view1 (cellRef FADD2B))) - (instance af_d_cmp_ci_a + (instance ae_cmp_ci_a (viewRef view1 (cellRef FADD2B))) - (instance af_d_cmp_0 + (instance ae_cmp_0 (viewRef view1 (cellRef AGEB2))) - (instance af_d_cmp_1 + (instance ae_cmp_1 (viewRef view1 (cellRef AGEB2))) - (instance af_d_cmp_2 + (instance ae_cmp_2 (viewRef view1 (cellRef AGEB2))) - (instance af_d_cmp_3 + (instance ae_cmp_3 (viewRef view1 (cellRef AGEB2))) (instance scuba_vlo_inst @@ -1216,12 +1225,12 @@ (cellRef FADD2B))) (net invout_1 (joined - (portRef Z (instanceRef INV_1)) - (portRef B (instanceRef AND2_t17)))) + (portRef Z (instanceRef INV_2)) + (portRef B (instanceRef AND2_t19)))) (net invout_0 (joined - (portRef Z (instanceRef INV_0)) - (portRef B (instanceRef AND2_t16)))) + (portRef Z (instanceRef INV_1)) + (portRef B (instanceRef AND2_t18)))) (net w_g2b_xor_cluster_1 (joined (portRef AD2 (instanceRef LUT4_12)) @@ -1230,34 +1239,38 @@ (joined (portRef AD2 (instanceRef LUT4_4)) (portRef DO0 (instanceRef LUT4_10)))) + (net rcnt_reg_6_inv + (joined + (portRef B (instanceRef AND2_t1)) + (portRef Z (instanceRef INV_0)))) (net w_gdata_0 (joined (portRef D (instanceRef FF_82)) - (portRef Z (instanceRef XOR2_t14)))) + (portRef Z (instanceRef XOR2_t16)))) (net w_gdata_1 (joined (portRef D (instanceRef FF_81)) - (portRef Z (instanceRef XOR2_t13)))) + (portRef Z (instanceRef XOR2_t15)))) (net w_gdata_2 (joined (portRef D (instanceRef FF_80)) - (portRef Z (instanceRef XOR2_t12)))) + (portRef Z (instanceRef XOR2_t14)))) (net w_gdata_3 (joined (portRef D (instanceRef FF_79)) - (portRef Z (instanceRef XOR2_t11)))) + (portRef Z (instanceRef XOR2_t13)))) (net w_gdata_4 (joined (portRef D (instanceRef FF_78)) - (portRef Z (instanceRef XOR2_t10)))) + (portRef Z (instanceRef XOR2_t12)))) (net w_gdata_5 (joined (portRef D (instanceRef FF_77)) - (portRef Z (instanceRef XOR2_t9)))) + (portRef Z (instanceRef XOR2_t11)))) (net w_gdata_6 (joined (portRef D (instanceRef FF_76)) - (portRef Z (instanceRef XOR2_t8)))) + (portRef Z (instanceRef XOR2_t10)))) (net wptr_0 (joined (portRef Q (instanceRef FF_74)) @@ -1294,31 +1307,31 @@ (net r_gdata_0 (joined (portRef D (instanceRef FF_58)) - (portRef Z (instanceRef XOR2_t7)))) + (portRef Z (instanceRef XOR2_t9)))) (net r_gdata_1 (joined (portRef D (instanceRef FF_57)) - (portRef Z (instanceRef XOR2_t6)))) + (portRef Z (instanceRef XOR2_t8)))) (net r_gdata_2 (joined (portRef D (instanceRef FF_56)) - (portRef Z (instanceRef XOR2_t5)))) + (portRef Z (instanceRef XOR2_t7)))) (net r_gdata_3 (joined (portRef D (instanceRef FF_55)) - (portRef Z (instanceRef XOR2_t4)))) + (portRef Z (instanceRef XOR2_t6)))) (net r_gdata_4 (joined (portRef D (instanceRef FF_54)) - (portRef Z (instanceRef XOR2_t3)))) + (portRef Z (instanceRef XOR2_t5)))) (net r_gdata_5 (joined (portRef D (instanceRef FF_53)) - (portRef Z (instanceRef XOR2_t2)))) + (portRef Z (instanceRef XOR2_t4)))) (net r_gdata_6 (joined (portRef D (instanceRef FF_52)) - (portRef Z (instanceRef XOR2_t1)))) + (portRef Z (instanceRef XOR2_t3)))) (net rptr_0 (joined (portRef Q (instanceRef FF_50)) @@ -1490,6 +1503,7 @@ (portRef AD0 (instanceRef LUT4_19)) (portRef AD2 (instanceRef LUT4_17)) (portRef AD1 (instanceRef LUT4_16)) + (portRef A (instanceRef XOR2_t2)) (portRef AD1 (instanceRef LUT4_3)) (portRef AD1 (instanceRef LUT4_2)))) (net w_gcount_r7 @@ -1570,17 +1584,21 @@ (portRef AD0 (instanceRef LUT4_11)) (portRef AD2 (instanceRef LUT4_9)) (portRef AD1 (instanceRef LUT4_8)) - (portRef B (instanceRef XOR2_t0)) (portRef AD1 (instanceRef LUT4_1)) (portRef AD1 (instanceRef LUT4_0)))) (net r_gcount_w7 (joined (portRef D (instanceRef FF_11)) (portRef Q (instanceRef FF_27)))) + (net rcnt_reg_7 + (joined + (portRef Q (instanceRef FF_3)) + (portRef A (instanceRef AND2_t1)) + (portRef A (instanceRef AND2_t0)))) (net rRst (joined - (portRef PD (instanceRef FF_2)) - (portRef Z (instanceRef OR2_t15)) + (portRef PD (instanceRef FF_0)) + (portRef Z (instanceRef OR2_t17)) (portRef PD (instanceRef FF_66)) (portRef CD (instanceRef FF_65)) (portRef CD (instanceRef FF_64)) @@ -1620,7 +1638,16 @@ (portRef CD (instanceRef FF_14)) (portRef CD (instanceRef FF_13)) (portRef CD (instanceRef FF_12)) - (portRef CD (instanceRef FF_11)))) + (portRef CD (instanceRef FF_11)) + (portRef CD (instanceRef FF_10)) + (portRef CD (instanceRef FF_9)) + (portRef CD (instanceRef FF_8)) + (portRef CD (instanceRef FF_7)) + (portRef CD (instanceRef FF_6)) + (portRef CD (instanceRef FF_5)) + (portRef CD (instanceRef FF_4)) + (portRef CD (instanceRef FF_3)) + (portRef PD (instanceRef FF_2)))) (net iwcount_0 (joined (portRef NC0 (instanceRef w_gctr_0)) @@ -1675,8 +1702,7 @@ (net wcount_7 (joined (portRef PC1 (instanceRef w_gctr_3)) - (portRef B (instanceRef XOR2_t8)) - (portRef A (instanceRef XOR2_t0)) + (portRef B (instanceRef XOR2_t10)) (portRef AD2 (instanceRef LUT4_1)) (portRef AD2 (instanceRef LUT4_0)) (portRef Q (instanceRef FF_83)) @@ -1736,19 +1762,20 @@ (net rcount_7 (joined (portRef PC1 (instanceRef r_gctr_3)) - (portRef B (instanceRef XOR2_t1)) + (portRef B (instanceRef XOR2_t3)) + (portRef B (instanceRef XOR2_t2)) (portRef AD2 (instanceRef LUT4_3)) (portRef AD2 (instanceRef LUT4_2)) (portRef Q (instanceRef FF_59)) (portRef D (instanceRef FF_51)) (portRef D (instanceRef FF_43)))) - (net wcnt_sub_0 + (net rcnt_sub_0 (joined - (portRef S1 (instanceRef wcnt_0)) + (portRef S1 (instanceRef rcnt_0)) (portRef D (instanceRef FF_10)))) (net precin (joined - (portRef BI (instanceRef wcnt_0)) + (portRef BI (instanceRef rcnt_0)) (portRef COUT (instanceRef precin_inst284)))) (net scuba_vhi (joined @@ -1763,85 +1790,55 @@ (portRef A1 (instanceRef w_gctr_cia)) (portRef B1 (instanceRef r_gctr_cia)) (portRef A1 (instanceRef r_gctr_cia)) - (portRef A0 (instanceRef wcnt_0)))) - (net wcnt_sub_1 + (portRef A0 (instanceRef rcnt_0)))) + (net rcnt_sub_1 (joined - (portRef S0 (instanceRef wcnt_1)) + (portRef S0 (instanceRef rcnt_1)) (portRef D (instanceRef FF_9)))) - (net wcnt_sub_2 + (net rcnt_sub_2 (joined - (portRef S1 (instanceRef wcnt_1)) + (portRef S1 (instanceRef rcnt_1)) (portRef D (instanceRef FF_8)))) (net co0_2 (joined - (portRef BI (instanceRef wcnt_1)) - (portRef BOUT (instanceRef wcnt_0)))) - (net wcnt_sub_3 + (portRef BI (instanceRef rcnt_1)) + (portRef BOUT (instanceRef rcnt_0)))) + (net rcnt_sub_3 (joined - (portRef S0 (instanceRef wcnt_2)) + (portRef S0 (instanceRef rcnt_2)) (portRef D (instanceRef FF_7)))) - (net wcnt_sub_4 + (net rcnt_sub_4 (joined - (portRef S1 (instanceRef wcnt_2)) + (portRef S1 (instanceRef rcnt_2)) (portRef D (instanceRef FF_6)))) (net co1_2 (joined - (portRef BI (instanceRef wcnt_2)) - (portRef BOUT (instanceRef wcnt_1)))) - (net wcnt_sub_5 + (portRef BI (instanceRef rcnt_2)) + (portRef BOUT (instanceRef rcnt_1)))) + (net rcnt_sub_5 (joined - (portRef S0 (instanceRef wcnt_3)) + (portRef S0 (instanceRef rcnt_3)) (portRef D (instanceRef FF_5)))) - (net wcnt_sub_6 + (net rcnt_sub_6 (joined - (portRef S1 (instanceRef wcnt_3)) + (portRef S1 (instanceRef rcnt_3)) (portRef D (instanceRef FF_4)))) (net co2_2 (joined - (portRef BI (instanceRef wcnt_3)) - (portRef BOUT (instanceRef wcnt_2)))) - (net wcnt_sub_7 + (portRef BI (instanceRef rcnt_3)) + (portRef BOUT (instanceRef rcnt_2)))) + (net rcnt_sub_7 (joined - (portRef S0 (instanceRef wcnt_4)) + (portRef S0 (instanceRef rcnt_4)) (portRef D (instanceRef FF_3)))) (net co3_2 (joined - (portRef BI (instanceRef wcnt_4)) - (portRef BOUT (instanceRef wcnt_3)))) - (net wcnt_sub_msb - (joined - (portRef A0 (instanceRef wcnt_4)) - (portRef Z (instanceRef XOR2_t0)))) - (net rden_i + (portRef BI (instanceRef rcnt_4)) + (portRef BOUT (instanceRef rcnt_3)))) + (net rcnt_sub_msb (joined - (portRef A1 (instanceRef empty_cmp_ci_a)) - (portRef Z (instanceRef AND2_t16)) - (portRef CSR0 (instanceRef pdp_ram_0_0_0)) - (portRef SP (instanceRef FF_66)) - (portRef SP (instanceRef FF_65)) - (portRef SP (instanceRef FF_64)) - (portRef SP (instanceRef FF_63)) - (portRef SP (instanceRef FF_62)) - (portRef SP (instanceRef FF_61)) - (portRef SP (instanceRef FF_60)) - (portRef SP (instanceRef FF_59)) - (portRef SP (instanceRef FF_58)) - (portRef SP (instanceRef FF_57)) - (portRef SP (instanceRef FF_56)) - (portRef SP (instanceRef FF_55)) - (portRef SP (instanceRef FF_54)) - (portRef SP (instanceRef FF_53)) - (portRef SP (instanceRef FF_52)) - (portRef SP (instanceRef FF_51)) - (portRef SP (instanceRef FF_50)) - (portRef SP (instanceRef FF_49)) - (portRef SP (instanceRef FF_48)) - (portRef SP (instanceRef FF_47)) - (portRef SP (instanceRef FF_46)) - (portRef SP (instanceRef FF_45)) - (portRef SP (instanceRef FF_44)) - (portRef SP (instanceRef FF_43)) - (portRef B1 (instanceRef empty_cmp_ci_a)))) + (portRef A0 (instanceRef rcnt_4)) + (portRef Z (instanceRef XOR2_t2)))) (net cmp_ci (joined (portRef CI (instanceRef empty_cmp_0)) @@ -1849,26 +1846,30 @@ (net wcount_r0 (joined (portRef B0 (instanceRef empty_cmp_0)) - (portRef DO0 (instanceRef LUT4_12)))) + (portRef DO0 (instanceRef LUT4_12)) + (portRef A1 (instanceRef rcnt_0)))) (net wcount_r1 (joined (portRef B1 (instanceRef empty_cmp_0)) - (portRef DO0 (instanceRef LUT4_13)))) + (portRef DO0 (instanceRef LUT4_13)) + (portRef A0 (instanceRef rcnt_1)))) (net rcount_0 (joined (portRef A0 (instanceRef empty_cmp_0)) - (portRef A (instanceRef XOR2_t7)) + (portRef A (instanceRef XOR2_t9)) (portRef Q (instanceRef FF_66)) (portRef D (instanceRef FF_50)) - (portRef PC0 (instanceRef r_gctr_0)))) + (portRef PC0 (instanceRef r_gctr_0)) + (portRef B1 (instanceRef rcnt_0)))) (net rcount_1 (joined (portRef A1 (instanceRef empty_cmp_0)) - (portRef B (instanceRef XOR2_t7)) - (portRef A (instanceRef XOR2_t6)) + (portRef B (instanceRef XOR2_t9)) + (portRef A (instanceRef XOR2_t8)) (portRef Q (instanceRef FF_65)) (portRef D (instanceRef FF_49)) - (portRef PC1 (instanceRef r_gctr_0)))) + (portRef PC1 (instanceRef r_gctr_0)) + (portRef B0 (instanceRef rcnt_1)))) (net co0_3 (joined (portRef CI (instanceRef empty_cmp_1)) @@ -1876,27 +1877,31 @@ (net wcount_r2 (joined (portRef B0 (instanceRef empty_cmp_1)) - (portRef DO0 (instanceRef LUT4_14)))) + (portRef DO0 (instanceRef LUT4_14)) + (portRef A1 (instanceRef rcnt_1)))) (net wcount_r3 (joined (portRef B1 (instanceRef empty_cmp_1)) - (portRef DO0 (instanceRef LUT4_15)))) + (portRef DO0 (instanceRef LUT4_15)) + (portRef A0 (instanceRef rcnt_2)))) (net rcount_2 (joined (portRef A0 (instanceRef empty_cmp_1)) - (portRef B (instanceRef XOR2_t6)) - (portRef A (instanceRef XOR2_t5)) + (portRef B (instanceRef XOR2_t8)) + (portRef A (instanceRef XOR2_t7)) (portRef Q (instanceRef FF_64)) (portRef D (instanceRef FF_48)) - (portRef PC0 (instanceRef r_gctr_1)))) + (portRef PC0 (instanceRef r_gctr_1)) + (portRef B1 (instanceRef rcnt_1)))) (net rcount_3 (joined (portRef A1 (instanceRef empty_cmp_1)) - (portRef B (instanceRef XOR2_t5)) - (portRef A (instanceRef XOR2_t4)) + (portRef B (instanceRef XOR2_t7)) + (portRef A (instanceRef XOR2_t6)) (portRef Q (instanceRef FF_63)) (portRef D (instanceRef FF_47)) - (portRef PC1 (instanceRef r_gctr_1)))) + (portRef PC1 (instanceRef r_gctr_1)) + (portRef B0 (instanceRef rcnt_2)))) (net co1_3 (joined (portRef CI (instanceRef empty_cmp_2)) @@ -1906,28 +1911,32 @@ (portRef B0 (instanceRef empty_cmp_2)) (portRef DO0 (instanceRef LUT4_19)) (portRef AD0 (instanceRef LUT4_13)) - (portRef AD3 (instanceRef LUT4_12)))) + (portRef AD3 (instanceRef LUT4_12)) + (portRef A1 (instanceRef rcnt_2)))) (net wcount_r5 (joined (portRef B1 (instanceRef empty_cmp_2)) (portRef DO0 (instanceRef LUT4_16)) - (portRef AD0 (instanceRef LUT4_14)))) + (portRef AD0 (instanceRef LUT4_14)) + (portRef A0 (instanceRef rcnt_3)))) (net rcount_4 (joined (portRef A0 (instanceRef empty_cmp_2)) - (portRef B (instanceRef XOR2_t4)) - (portRef A (instanceRef XOR2_t3)) + (portRef B (instanceRef XOR2_t6)) + (portRef A (instanceRef XOR2_t5)) (portRef Q (instanceRef FF_62)) (portRef D (instanceRef FF_46)) - (portRef PC0 (instanceRef r_gctr_2)))) + (portRef PC0 (instanceRef r_gctr_2)) + (portRef B1 (instanceRef rcnt_2)))) (net rcount_5 (joined (portRef A1 (instanceRef empty_cmp_2)) - (portRef B (instanceRef XOR2_t3)) - (portRef A (instanceRef XOR2_t2)) + (portRef B (instanceRef XOR2_t5)) + (portRef A (instanceRef XOR2_t4)) (portRef Q (instanceRef FF_61)) (portRef D (instanceRef FF_45)) - (portRef PC1 (instanceRef r_gctr_2)))) + (portRef PC1 (instanceRef r_gctr_2)) + (portRef B0 (instanceRef rcnt_3)))) (net co2_3 (joined (portRef CI (instanceRef empty_cmp_3)) @@ -1936,7 +1945,8 @@ (joined (portRef B0 (instanceRef empty_cmp_3)) (portRef DO0 (instanceRef LUT4_17)) - (portRef AD0 (instanceRef LUT4_15)))) + (portRef AD0 (instanceRef LUT4_15)) + (portRef A1 (instanceRef rcnt_3)))) (net empty_cmp_clr (joined (portRef B1 (instanceRef empty_cmp_3)) @@ -1944,11 +1954,12 @@ (net rcount_6 (joined (portRef A0 (instanceRef empty_cmp_3)) - (portRef B (instanceRef XOR2_t2)) - (portRef A (instanceRef XOR2_t1)) + (portRef B (instanceRef XOR2_t4)) + (portRef A (instanceRef XOR2_t3)) (portRef Q (instanceRef FF_60)) (portRef D (instanceRef FF_44)) - (portRef PC0 (instanceRef r_gctr_3)))) + (portRef PC0 (instanceRef r_gctr_3)) + (portRef B1 (instanceRef rcnt_3)))) (net empty_cmp_set (joined (portRef A1 (instanceRef empty_cmp_3)) @@ -1961,6 +1972,36 @@ (joined (portRef CI (instanceRef a0)) (portRef GE (instanceRef empty_cmp_3)))) + (net wren_i + (joined + (portRef A1 (instanceRef full_cmp_ci_a)) + (portRef Z (instanceRef AND2_t19)) + (portRef CEW (instanceRef pdp_ram_0_0_0)) + (portRef SP (instanceRef FF_90)) + (portRef SP (instanceRef FF_89)) + (portRef SP (instanceRef FF_88)) + (portRef SP (instanceRef FF_87)) + (portRef SP (instanceRef FF_86)) + (portRef SP (instanceRef FF_85)) + (portRef SP (instanceRef FF_84)) + (portRef SP (instanceRef FF_83)) + (portRef SP (instanceRef FF_82)) + (portRef SP (instanceRef FF_81)) + (portRef SP (instanceRef FF_80)) + (portRef SP (instanceRef FF_79)) + (portRef SP (instanceRef FF_78)) + (portRef SP (instanceRef FF_77)) + (portRef SP (instanceRef FF_76)) + (portRef SP (instanceRef FF_75)) + (portRef SP (instanceRef FF_74)) + (portRef SP (instanceRef FF_73)) + (portRef SP (instanceRef FF_72)) + (portRef SP (instanceRef FF_71)) + (portRef SP (instanceRef FF_70)) + (portRef SP (instanceRef FF_69)) + (portRef SP (instanceRef FF_68)) + (portRef SP (instanceRef FF_67)) + (portRef B1 (instanceRef full_cmp_ci_a)))) (net cmp_ci_1 (joined (portRef CI (instanceRef full_cmp_0)) @@ -1968,30 +2009,26 @@ (net rcount_w0 (joined (portRef B0 (instanceRef full_cmp_0)) - (portRef DO0 (instanceRef LUT4_4)) - (portRef B1 (instanceRef wcnt_0)))) + (portRef DO0 (instanceRef LUT4_4)))) (net rcount_w1 (joined (portRef B1 (instanceRef full_cmp_0)) - (portRef DO0 (instanceRef LUT4_5)) - (portRef B0 (instanceRef wcnt_1)))) + (portRef DO0 (instanceRef LUT4_5)))) (net wcount_0 (joined (portRef A0 (instanceRef full_cmp_0)) - (portRef A (instanceRef XOR2_t14)) + (portRef A (instanceRef XOR2_t16)) (portRef Q (instanceRef FF_90)) (portRef D (instanceRef FF_74)) - (portRef PC0 (instanceRef w_gctr_0)) - (portRef A1 (instanceRef wcnt_0)))) + (portRef PC0 (instanceRef w_gctr_0)))) (net wcount_1 (joined (portRef A1 (instanceRef full_cmp_0)) - (portRef B (instanceRef XOR2_t14)) - (portRef A (instanceRef XOR2_t13)) + (portRef B (instanceRef XOR2_t16)) + (portRef A (instanceRef XOR2_t15)) (portRef Q (instanceRef FF_89)) (portRef D (instanceRef FF_73)) - (portRef PC1 (instanceRef w_gctr_0)) - (portRef A0 (instanceRef wcnt_1)))) + (portRef PC1 (instanceRef w_gctr_0)))) (net co0_4 (joined (portRef CI (instanceRef full_cmp_1)) @@ -1999,31 +2036,27 @@ (net rcount_w2 (joined (portRef B0 (instanceRef full_cmp_1)) - (portRef DO0 (instanceRef LUT4_6)) - (portRef B1 (instanceRef wcnt_1)))) + (portRef DO0 (instanceRef LUT4_6)))) (net rcount_w3 (joined (portRef B1 (instanceRef full_cmp_1)) - (portRef DO0 (instanceRef LUT4_7)) - (portRef B0 (instanceRef wcnt_2)))) + (portRef DO0 (instanceRef LUT4_7)))) (net wcount_2 (joined (portRef A0 (instanceRef full_cmp_1)) - (portRef B (instanceRef XOR2_t13)) - (portRef A (instanceRef XOR2_t12)) + (portRef B (instanceRef XOR2_t15)) + (portRef A (instanceRef XOR2_t14)) (portRef Q (instanceRef FF_88)) (portRef D (instanceRef FF_72)) - (portRef PC0 (instanceRef w_gctr_1)) - (portRef A1 (instanceRef wcnt_1)))) + (portRef PC0 (instanceRef w_gctr_1)))) (net wcount_3 (joined (portRef A1 (instanceRef full_cmp_1)) - (portRef B (instanceRef XOR2_t12)) - (portRef A (instanceRef XOR2_t11)) + (portRef B (instanceRef XOR2_t14)) + (portRef A (instanceRef XOR2_t13)) (portRef Q (instanceRef FF_87)) (portRef D (instanceRef FF_71)) - (portRef PC1 (instanceRef w_gctr_1)) - (portRef A0 (instanceRef wcnt_2)))) + (portRef PC1 (instanceRef w_gctr_1)))) (net co1_4 (joined (portRef CI (instanceRef full_cmp_2)) @@ -2033,32 +2066,28 @@ (portRef B0 (instanceRef full_cmp_2)) (portRef DO0 (instanceRef LUT4_11)) (portRef AD0 (instanceRef LUT4_5)) - (portRef AD3 (instanceRef LUT4_4)) - (portRef B1 (instanceRef wcnt_2)))) + (portRef AD3 (instanceRef LUT4_4)))) (net rcount_w5 (joined (portRef B1 (instanceRef full_cmp_2)) (portRef DO0 (instanceRef LUT4_8)) - (portRef AD0 (instanceRef LUT4_6)) - (portRef B0 (instanceRef wcnt_3)))) + (portRef AD0 (instanceRef LUT4_6)))) (net wcount_4 (joined (portRef A0 (instanceRef full_cmp_2)) - (portRef B (instanceRef XOR2_t11)) - (portRef A (instanceRef XOR2_t10)) + (portRef B (instanceRef XOR2_t13)) + (portRef A (instanceRef XOR2_t12)) (portRef Q (instanceRef FF_86)) (portRef D (instanceRef FF_70)) - (portRef PC0 (instanceRef w_gctr_2)) - (portRef A1 (instanceRef wcnt_2)))) + (portRef PC0 (instanceRef w_gctr_2)))) (net wcount_5 (joined (portRef A1 (instanceRef full_cmp_2)) - (portRef B (instanceRef XOR2_t10)) - (portRef A (instanceRef XOR2_t9)) + (portRef B (instanceRef XOR2_t12)) + (portRef A (instanceRef XOR2_t11)) (portRef Q (instanceRef FF_85)) (portRef D (instanceRef FF_69)) - (portRef PC1 (instanceRef w_gctr_2)) - (portRef A0 (instanceRef wcnt_3)))) + (portRef PC1 (instanceRef w_gctr_2)))) (net co2_4 (joined (portRef CI (instanceRef full_cmp_3)) @@ -2067,8 +2096,7 @@ (joined (portRef B0 (instanceRef full_cmp_3)) (portRef DO0 (instanceRef LUT4_9)) - (portRef AD0 (instanceRef LUT4_7)) - (portRef B1 (instanceRef wcnt_3)))) + (portRef AD0 (instanceRef LUT4_7)))) (net full_cmp_clr (joined (portRef B1 (instanceRef full_cmp_3)) @@ -2076,12 +2104,11 @@ (net wcount_6 (joined (portRef A0 (instanceRef full_cmp_3)) - (portRef B (instanceRef XOR2_t9)) - (portRef A (instanceRef XOR2_t8)) + (portRef B (instanceRef XOR2_t11)) + (portRef A (instanceRef XOR2_t10)) (portRef Q (instanceRef FF_84)) (portRef D (instanceRef FF_68)) - (portRef PC0 (instanceRef w_gctr_3)) - (portRef A1 (instanceRef wcnt_3)))) + (portRef PC0 (instanceRef w_gctr_3)))) (net full_cmp_set (joined (portRef A1 (instanceRef full_cmp_3)) @@ -2094,94 +2121,100 @@ (joined (portRef CI (instanceRef a1)) (portRef GE (instanceRef full_cmp_3)))) - (net wren_i + (net rden_i (joined - (portRef A1 (instanceRef af_d_cmp_ci_a)) - (portRef Z (instanceRef AND2_t17)) - (portRef CEW (instanceRef pdp_ram_0_0_0)) - (portRef SP (instanceRef FF_90)) - (portRef SP (instanceRef FF_89)) - (portRef SP (instanceRef FF_88)) - (portRef SP (instanceRef FF_87)) - (portRef SP (instanceRef FF_86)) - (portRef SP (instanceRef FF_85)) - (portRef SP (instanceRef FF_84)) - (portRef SP (instanceRef FF_83)) - (portRef SP (instanceRef FF_82)) - (portRef SP (instanceRef FF_81)) - (portRef SP (instanceRef FF_80)) - (portRef SP (instanceRef FF_79)) - (portRef SP (instanceRef FF_78)) - (portRef SP (instanceRef FF_77)) - (portRef SP (instanceRef FF_76)) - (portRef SP (instanceRef FF_75)) - (portRef SP (instanceRef FF_74)) - (portRef SP (instanceRef FF_73)) - (portRef SP (instanceRef FF_72)) - (portRef SP (instanceRef FF_71)) - (portRef SP (instanceRef FF_70)) - (portRef SP (instanceRef FF_69)) - (portRef SP (instanceRef FF_68)) - (portRef SP (instanceRef FF_67)) - (portRef B1 (instanceRef full_cmp_ci_a)) - (portRef A1 (instanceRef full_cmp_ci_a)) - (portRef B1 (instanceRef af_d_cmp_ci_a)))) + (portRef A1 (instanceRef ae_cmp_ci_a)) + (portRef Z (instanceRef AND2_t18)) + (portRef CSR0 (instanceRef pdp_ram_0_0_0)) + (portRef SP (instanceRef FF_66)) + (portRef SP (instanceRef FF_65)) + (portRef SP (instanceRef FF_64)) + (portRef SP (instanceRef FF_63)) + (portRef SP (instanceRef FF_62)) + (portRef SP (instanceRef FF_61)) + (portRef SP (instanceRef FF_60)) + (portRef SP (instanceRef FF_59)) + (portRef SP (instanceRef FF_58)) + (portRef SP (instanceRef FF_57)) + (portRef SP (instanceRef FF_56)) + (portRef SP (instanceRef FF_55)) + (portRef SP (instanceRef FF_54)) + (portRef SP (instanceRef FF_53)) + (portRef SP (instanceRef FF_52)) + (portRef SP (instanceRef FF_51)) + (portRef SP (instanceRef FF_50)) + (portRef SP (instanceRef FF_49)) + (portRef SP (instanceRef FF_48)) + (portRef SP (instanceRef FF_47)) + (portRef SP (instanceRef FF_46)) + (portRef SP (instanceRef FF_45)) + (portRef SP (instanceRef FF_44)) + (portRef SP (instanceRef FF_43)) + (portRef B1 (instanceRef empty_cmp_ci_a)) + (portRef A1 (instanceRef empty_cmp_ci_a)) + (portRef B1 (instanceRef ae_cmp_ci_a)))) (net cmp_ci_2 (joined - (portRef CI (instanceRef af_d_cmp_0)) - (portRef COUT (instanceRef af_d_cmp_ci_a)))) - (net wcnt_reg_0 + (portRef CI (instanceRef ae_cmp_0)) + (portRef COUT (instanceRef ae_cmp_ci_a)))) + (net rcnt_reg_0 (joined - (portRef A0 (instanceRef af_d_cmp_0)) + (portRef B0 (instanceRef ae_cmp_0)) (portRef Q (instanceRef FF_10)))) - (net wcnt_reg_1 + (net rcnt_reg_1 (joined - (portRef A1 (instanceRef af_d_cmp_0)) + (portRef B1 (instanceRef ae_cmp_0)) (portRef Q (instanceRef FF_9)))) (net co0_5 (joined - (portRef CI (instanceRef af_d_cmp_1)) - (portRef GE (instanceRef af_d_cmp_0)))) - (net wcnt_reg_2 + (portRef CI (instanceRef ae_cmp_1)) + (portRef GE (instanceRef ae_cmp_0)))) + (net rcnt_reg_2 (joined - (portRef A0 (instanceRef af_d_cmp_1)) + (portRef B0 (instanceRef ae_cmp_1)) (portRef Q (instanceRef FF_8)))) - (net wcnt_reg_3 + (net rcnt_reg_3 (joined - (portRef A1 (instanceRef af_d_cmp_1)) + (portRef B1 (instanceRef ae_cmp_1)) (portRef Q (instanceRef FF_7)))) (net co1_5 (joined - (portRef CI (instanceRef af_d_cmp_2)) - (portRef GE (instanceRef af_d_cmp_1)))) - (net wcnt_reg_4 + (portRef CI (instanceRef ae_cmp_2)) + (portRef GE (instanceRef ae_cmp_1)))) + (net rcnt_reg_4 (joined - (portRef A0 (instanceRef af_d_cmp_2)) + (portRef B0 (instanceRef ae_cmp_2)) (portRef Q (instanceRef FF_6)))) - (net wcnt_reg_5 + (net rcnt_reg_5 (joined - (portRef A1 (instanceRef af_d_cmp_2)) + (portRef B1 (instanceRef ae_cmp_2)) (portRef Q (instanceRef FF_5)))) (net co2_5 (joined - (portRef CI (instanceRef af_d_cmp_3)) - (portRef GE (instanceRef af_d_cmp_2)))) - (net wcnt_reg_6 + (portRef CI (instanceRef ae_cmp_3)) + (portRef GE (instanceRef ae_cmp_2)))) + (net rcnt_reg_6 (joined - (portRef A0 (instanceRef af_d_cmp_3)) + (portRef B0 (instanceRef ae_cmp_3)) + (portRef A (instanceRef INV_0)) + (portRef B (instanceRef AND2_t0)) (portRef Q (instanceRef FF_4)))) - (net wcnt_reg_7 + (net ae_clrsig (joined - (portRef A1 (instanceRef af_d_cmp_3)) - (portRef Q (instanceRef FF_3)))) - (net af_d + (portRef B1 (instanceRef ae_cmp_3)) + (portRef Z (instanceRef AND2_t1)))) + (net ae_setsig + (joined + (portRef A1 (instanceRef ae_cmp_3)) + (portRef Z (instanceRef AND2_t0)))) + (net ae_d (joined (portRef S0 (instanceRef a2)) (portRef D (instanceRef FF_0)))) - (net af_d_c + (net ae_d_c (joined (portRef CI (instanceRef a2)) - (portRef GE (instanceRef af_d_cmp_3)))) + (portRef GE (instanceRef ae_cmp_3)))) (net scuba_vlo (joined (portRef Z (instanceRef scuba_vlo_inst)) @@ -2223,10 +2256,10 @@ (portRef B1 (instanceRef precin_inst284)) (portRef A0 (instanceRef precin_inst284)) (portRef A1 (instanceRef precin_inst284)) - (portRef B0 (instanceRef wcnt_0)) - (portRef B0 (instanceRef wcnt_4)) - (portRef B1 (instanceRef wcnt_4)) - (portRef A1 (instanceRef wcnt_4)) + (portRef B0 (instanceRef rcnt_0)) + (portRef B0 (instanceRef rcnt_4)) + (portRef B1 (instanceRef rcnt_4)) + (portRef A1 (instanceRef rcnt_4)) (portRef CI (instanceRef empty_cmp_ci_a)) (portRef B0 (instanceRef empty_cmp_ci_a)) (portRef A0 (instanceRef empty_cmp_ci_a)) @@ -2241,28 +2274,27 @@ (portRef B1 (instanceRef a1)) (portRef A0 (instanceRef a1)) (portRef A1 (instanceRef a1)) - (portRef CI (instanceRef af_d_cmp_ci_a)) - (portRef B0 (instanceRef af_d_cmp_ci_a)) - (portRef A0 (instanceRef af_d_cmp_ci_a)) - (portRef B1 (instanceRef af_d_cmp_3)) + (portRef CI (instanceRef ae_cmp_ci_a)) + (portRef B0 (instanceRef ae_cmp_ci_a)) + (portRef A0 (instanceRef ae_cmp_ci_a)) (portRef B0 (instanceRef a2)) (portRef B1 (instanceRef a2)) (portRef A0 (instanceRef a2)) (portRef A1 (instanceRef a2)))) - (net partial_full + (net partial_empty (joined - (portRef AlmostFull) + (portRef AlmostEmpty) (portRef Q (instanceRef FF_0)))) (net Full (joined (portRef Full) (portRef Q (instanceRef FF_1)) - (portRef A (instanceRef INV_1)))) + (portRef A (instanceRef INV_2)))) (net Empty (joined (portRef Empty) (portRef Q (instanceRef FF_2)) - (portRef A (instanceRef INV_0)))) + (portRef A (instanceRef INV_1)))) (net dataout35 (joined (portRef (member Q 0)) @@ -2407,42 +2439,42 @@ (joined (portRef (member Q 35)) (portRef DO18 (instanceRef pdp_ram_0_0_0)))) - (net AmFullThresh6 + (net AmEmptyThresh6 (joined - (portRef (member AmFullThresh 0)) - (portRef B0 (instanceRef af_d_cmp_3)))) - (net AmFullThresh5 + (portRef (member AmEmptyThresh 0)) + (portRef A0 (instanceRef ae_cmp_3)))) + (net AmEmptyThresh5 (joined - (portRef (member AmFullThresh 1)) - (portRef B1 (instanceRef af_d_cmp_2)))) - (net AmFullThresh4 + (portRef (member AmEmptyThresh 1)) + (portRef A1 (instanceRef ae_cmp_2)))) + (net AmEmptyThresh4 (joined - (portRef (member AmFullThresh 2)) - (portRef B0 (instanceRef af_d_cmp_2)))) - (net AmFullThresh3 + (portRef (member AmEmptyThresh 2)) + (portRef A0 (instanceRef ae_cmp_2)))) + (net AmEmptyThresh3 (joined - (portRef (member AmFullThresh 3)) - (portRef B1 (instanceRef af_d_cmp_1)))) - (net AmFullThresh2 + (portRef (member AmEmptyThresh 3)) + (portRef A1 (instanceRef ae_cmp_1)))) + (net AmEmptyThresh2 (joined - (portRef (member AmFullThresh 4)) - (portRef B0 (instanceRef af_d_cmp_1)))) - (net AmFullThresh1 + (portRef (member AmEmptyThresh 4)) + (portRef A0 (instanceRef ae_cmp_1)))) + (net AmEmptyThresh1 (joined - (portRef (member AmFullThresh 5)) - (portRef B1 (instanceRef af_d_cmp_0)))) - (net AmFullThresh0 + (portRef (member AmEmptyThresh 5)) + (portRef A1 (instanceRef ae_cmp_0)))) + (net AmEmptyThresh0 (joined - (portRef (member AmFullThresh 6)) - (portRef B0 (instanceRef af_d_cmp_0)))) + (portRef (member AmEmptyThresh 6)) + (portRef A0 (instanceRef ae_cmp_0)))) (net RPRst (joined (portRef RPReset) - (portRef B (instanceRef OR2_t15)))) + (portRef B (instanceRef OR2_t17)))) (net reset (joined (portRef Reset) - (portRef A (instanceRef OR2_t15)) + (portRef A (instanceRef OR2_t17)) (portRef RST (instanceRef pdp_ram_0_0_0)) (portRef PD (instanceRef FF_90)) (portRef CD (instanceRef FF_89)) @@ -2484,24 +2516,15 @@ (portRef CD (instanceRef FF_21)) (portRef CD (instanceRef FF_20)) (portRef CD (instanceRef FF_19)) - (portRef CD (instanceRef FF_10)) - (portRef CD (instanceRef FF_9)) - (portRef CD (instanceRef FF_8)) - (portRef CD (instanceRef FF_7)) - (portRef CD (instanceRef FF_6)) - (portRef CD (instanceRef FF_5)) - (portRef CD (instanceRef FF_4)) - (portRef CD (instanceRef FF_3)) - (portRef CD (instanceRef FF_1)) - (portRef CD (instanceRef FF_0)))) + (portRef CD (instanceRef FF_1)))) (net rden (joined (portRef RdEn) - (portRef A (instanceRef AND2_t16)))) + (portRef A (instanceRef AND2_t18)))) (net wren (joined (portRef WrEn) - (portRef A (instanceRef AND2_t17)))) + (portRef A (instanceRef AND2_t19)))) (net rclk (joined (portRef RdClock) @@ -2546,7 +2569,16 @@ (portRef CK (instanceRef FF_21)) (portRef CK (instanceRef FF_20)) (portRef CK (instanceRef FF_19)) - (portRef CK (instanceRef FF_2)))) + (portRef CK (instanceRef FF_10)) + (portRef CK (instanceRef FF_9)) + (portRef CK (instanceRef FF_8)) + (portRef CK (instanceRef FF_7)) + (portRef CK (instanceRef FF_6)) + (portRef CK (instanceRef FF_5)) + (portRef CK (instanceRef FF_4)) + (portRef CK (instanceRef FF_3)) + (portRef CK (instanceRef FF_2)) + (portRef CK (instanceRef FF_0)))) (net wclk (joined (portRef WrClock) @@ -2591,16 +2623,7 @@ (portRef CK (instanceRef FF_13)) (portRef CK (instanceRef FF_12)) (portRef CK (instanceRef FF_11)) - (portRef CK (instanceRef FF_10)) - (portRef CK (instanceRef FF_9)) - (portRef CK (instanceRef FF_8)) - (portRef CK (instanceRef FF_7)) - (portRef CK (instanceRef FF_6)) - (portRef CK (instanceRef FF_5)) - (portRef CK (instanceRef FF_4)) - (portRef CK (instanceRef FF_3)) - (portRef CK (instanceRef FF_1)) - (portRef CK (instanceRef FF_0)))) + (portRef CK (instanceRef FF_1)))) (net datain35 (joined (portRef (member Data 0)) diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.ipx b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.ipx index d554bb6..04cb07b 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.ipx +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.ipx @@ -1,9 +1,9 @@ - + - - - - + + + + diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.jhd b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.jhd index e69de29..f513696 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.jhd +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.jhd @@ -0,0 +1,343 @@ +MODULE FIFO_DC_36x128_DynThr_OutReg DEFIN FIFO_DC_36x128_DynThr_OutReg.vhd + SUBMODULE FADD2B + INSTANCE a2 + SUBMODULE VLO + INSTANCE scuba_vlo_inst + SUBMODULE AGEB2 + INSTANCE ae_cmp_3 + SUBMODULE AGEB2 + INSTANCE ae_cmp_2 + SUBMODULE AGEB2 + INSTANCE ae_cmp_1 + SUBMODULE AGEB2 + INSTANCE ae_cmp_0 + SUBMODULE FADD2B + INSTANCE ae_cmp_ci_a + SUBMODULE FADD2B + INSTANCE a1 + SUBMODULE AGEB2 + INSTANCE full_cmp_3 + SUBMODULE AGEB2 + INSTANCE full_cmp_2 + SUBMODULE AGEB2 + INSTANCE full_cmp_1 + SUBMODULE AGEB2 + INSTANCE full_cmp_0 + SUBMODULE FADD2B + INSTANCE full_cmp_ci_a + SUBMODULE FADD2B + INSTANCE a0 + SUBMODULE AGEB2 + INSTANCE empty_cmp_3 + SUBMODULE AGEB2 + INSTANCE empty_cmp_2 + SUBMODULE AGEB2 + INSTANCE empty_cmp_1 + SUBMODULE AGEB2 + INSTANCE empty_cmp_0 + SUBMODULE FADD2B + INSTANCE empty_cmp_ci_a + SUBMODULE FSUB2B + INSTANCE rcnt_4 + SUBMODULE FSUB2B + INSTANCE rcnt_3 + SUBMODULE FSUB2B + INSTANCE rcnt_2 + SUBMODULE FSUB2B + INSTANCE rcnt_1 + SUBMODULE FSUB2B + INSTANCE rcnt_0 + SUBMODULE VHI + INSTANCE scuba_vhi_inst + SUBMODULE FADD2B + INSTANCE precin_inst284 + SUBMODULE CU2 + INSTANCE r_gctr_3 + SUBMODULE CU2 + INSTANCE r_gctr_2 + SUBMODULE CU2 + INSTANCE r_gctr_1 + SUBMODULE CU2 + INSTANCE r_gctr_0 + SUBMODULE FADD2B + INSTANCE r_gctr_cia + SUBMODULE CU2 + INSTANCE w_gctr_3 + SUBMODULE CU2 + INSTANCE w_gctr_2 + SUBMODULE CU2 + INSTANCE w_gctr_1 + SUBMODULE CU2 + INSTANCE w_gctr_0 + SUBMODULE FADD2B + INSTANCE w_gctr_cia + SUBMODULE FD1S3BX + INSTANCE FF_0 + SUBMODULE FD1S3DX + INSTANCE FF_1 + SUBMODULE FD1S3BX + INSTANCE FF_2 + SUBMODULE FD1S3DX + INSTANCE FF_3 + SUBMODULE FD1S3DX + INSTANCE FF_4 + SUBMODULE FD1S3DX + INSTANCE FF_5 + SUBMODULE FD1S3DX + INSTANCE FF_6 + SUBMODULE FD1S3DX + INSTANCE FF_7 + SUBMODULE FD1S3DX + INSTANCE FF_8 + SUBMODULE FD1S3DX + INSTANCE FF_9 + SUBMODULE FD1S3DX + INSTANCE FF_10 + SUBMODULE FD1S3DX + INSTANCE FF_11 + SUBMODULE FD1S3DX + INSTANCE FF_12 + SUBMODULE FD1S3DX + INSTANCE FF_13 + SUBMODULE FD1S3DX + INSTANCE FF_14 + SUBMODULE FD1S3DX + INSTANCE FF_15 + SUBMODULE FD1S3DX + INSTANCE FF_16 + SUBMODULE FD1S3DX + INSTANCE FF_17 + SUBMODULE FD1S3DX + INSTANCE FF_18 + SUBMODULE FD1S3DX + INSTANCE FF_19 + SUBMODULE FD1S3DX + INSTANCE FF_20 + SUBMODULE FD1S3DX + INSTANCE FF_21 + SUBMODULE FD1S3DX + INSTANCE FF_22 + SUBMODULE FD1S3DX + INSTANCE FF_23 + SUBMODULE FD1S3DX + INSTANCE FF_24 + SUBMODULE FD1S3DX + INSTANCE FF_25 + SUBMODULE FD1S3DX + INSTANCE FF_26 + SUBMODULE FD1S3DX + INSTANCE FF_27 + SUBMODULE FD1S3DX + INSTANCE FF_28 + SUBMODULE FD1S3DX + INSTANCE FF_29 + SUBMODULE FD1S3DX + INSTANCE FF_30 + SUBMODULE FD1S3DX + INSTANCE FF_31 + SUBMODULE FD1S3DX + INSTANCE FF_32 + SUBMODULE FD1S3DX + INSTANCE FF_33 + SUBMODULE FD1S3DX + INSTANCE FF_34 + SUBMODULE FD1S3DX + INSTANCE FF_35 + SUBMODULE FD1S3DX + INSTANCE FF_36 + SUBMODULE FD1S3DX + INSTANCE FF_37 + SUBMODULE FD1S3DX + INSTANCE FF_38 + SUBMODULE FD1S3DX + INSTANCE FF_39 + SUBMODULE FD1S3DX + INSTANCE FF_40 + SUBMODULE FD1S3DX + INSTANCE FF_41 + SUBMODULE FD1S3DX + INSTANCE FF_42 + SUBMODULE FD1P3DX + INSTANCE FF_43 + SUBMODULE FD1P3DX + INSTANCE FF_44 + SUBMODULE FD1P3DX + INSTANCE FF_45 + SUBMODULE FD1P3DX + INSTANCE FF_46 + SUBMODULE FD1P3DX + INSTANCE FF_47 + SUBMODULE FD1P3DX + INSTANCE FF_48 + SUBMODULE FD1P3DX + INSTANCE FF_49 + SUBMODULE FD1P3DX + INSTANCE FF_50 + SUBMODULE FD1P3DX + INSTANCE FF_51 + SUBMODULE FD1P3DX + INSTANCE FF_52 + SUBMODULE FD1P3DX + INSTANCE FF_53 + SUBMODULE FD1P3DX + INSTANCE FF_54 + SUBMODULE FD1P3DX + INSTANCE FF_55 + SUBMODULE FD1P3DX + INSTANCE FF_56 + SUBMODULE FD1P3DX + INSTANCE FF_57 + SUBMODULE FD1P3DX + INSTANCE FF_58 + SUBMODULE FD1P3DX + INSTANCE FF_59 + SUBMODULE FD1P3DX + INSTANCE FF_60 + SUBMODULE FD1P3DX + INSTANCE FF_61 + SUBMODULE FD1P3DX + INSTANCE FF_62 + SUBMODULE FD1P3DX + INSTANCE FF_63 + SUBMODULE FD1P3DX + INSTANCE FF_64 + SUBMODULE FD1P3DX + INSTANCE FF_65 + SUBMODULE FD1P3BX + INSTANCE FF_66 + SUBMODULE FD1P3DX + INSTANCE FF_67 + SUBMODULE FD1P3DX + INSTANCE FF_68 + SUBMODULE FD1P3DX + INSTANCE FF_69 + SUBMODULE FD1P3DX + INSTANCE FF_70 + SUBMODULE FD1P3DX + INSTANCE FF_71 + SUBMODULE FD1P3DX + INSTANCE FF_72 + SUBMODULE FD1P3DX + INSTANCE FF_73 + SUBMODULE FD1P3DX + INSTANCE FF_74 + SUBMODULE FD1P3DX + INSTANCE FF_75 + SUBMODULE FD1P3DX + INSTANCE FF_76 + SUBMODULE FD1P3DX + INSTANCE FF_77 + SUBMODULE FD1P3DX + INSTANCE FF_78 + SUBMODULE FD1P3DX + INSTANCE FF_79 + SUBMODULE FD1P3DX + INSTANCE FF_80 + SUBMODULE FD1P3DX + INSTANCE FF_81 + SUBMODULE FD1P3DX + INSTANCE FF_82 + SUBMODULE FD1P3DX + INSTANCE FF_83 + SUBMODULE FD1P3DX + INSTANCE FF_84 + SUBMODULE FD1P3DX + INSTANCE FF_85 + SUBMODULE FD1P3DX + INSTANCE FF_86 + SUBMODULE FD1P3DX + INSTANCE FF_87 + SUBMODULE FD1P3DX + INSTANCE FF_88 + SUBMODULE FD1P3DX + INSTANCE FF_89 + SUBMODULE FD1P3BX + INSTANCE FF_90 + SUBMODULE PDPW16KC + INSTANCE pdp_ram_0_0_0 + SUBMODULE AND2 + INSTANCE AND2_t0 + SUBMODULE AND2 + INSTANCE AND2_t1 + SUBMODULE INV + INSTANCE INV_0 + SUBMODULE ROM16X1A + INSTANCE LUT4_0 + SUBMODULE ROM16X1A + INSTANCE LUT4_1 + SUBMODULE ROM16X1A + INSTANCE LUT4_2 + SUBMODULE ROM16X1A + INSTANCE LUT4_3 + SUBMODULE XOR2 + INSTANCE XOR2_t2 + SUBMODULE ROM16X1A + INSTANCE LUT4_4 + SUBMODULE ROM16X1A + INSTANCE LUT4_5 + SUBMODULE ROM16X1A + INSTANCE LUT4_6 + SUBMODULE ROM16X1A + INSTANCE LUT4_7 + SUBMODULE ROM16X1A + INSTANCE LUT4_8 + SUBMODULE ROM16X1A + INSTANCE LUT4_9 + SUBMODULE ROM16X1A + INSTANCE LUT4_10 + SUBMODULE ROM16X1A + INSTANCE LUT4_11 + SUBMODULE ROM16X1A + INSTANCE LUT4_12 + SUBMODULE ROM16X1A + INSTANCE LUT4_13 + SUBMODULE ROM16X1A + INSTANCE LUT4_14 + SUBMODULE ROM16X1A + INSTANCE LUT4_15 + SUBMODULE ROM16X1A + INSTANCE LUT4_16 + SUBMODULE ROM16X1A + INSTANCE LUT4_17 + SUBMODULE ROM16X1A + INSTANCE LUT4_18 + SUBMODULE ROM16X1A + INSTANCE LUT4_19 + SUBMODULE XOR2 + INSTANCE XOR2_t3 + SUBMODULE XOR2 + INSTANCE XOR2_t4 + SUBMODULE XOR2 + INSTANCE XOR2_t5 + SUBMODULE XOR2 + INSTANCE XOR2_t6 + SUBMODULE XOR2 + INSTANCE XOR2_t7 + SUBMODULE XOR2 + INSTANCE XOR2_t8 + SUBMODULE XOR2 + INSTANCE XOR2_t9 + SUBMODULE XOR2 + INSTANCE XOR2_t10 + SUBMODULE XOR2 + INSTANCE XOR2_t11 + SUBMODULE XOR2 + INSTANCE XOR2_t12 + SUBMODULE XOR2 + INSTANCE XOR2_t13 + SUBMODULE XOR2 + INSTANCE XOR2_t14 + SUBMODULE XOR2 + INSTANCE XOR2_t15 + SUBMODULE XOR2 + INSTANCE XOR2_t16 + SUBMODULE OR2 + INSTANCE OR2_t17 + SUBMODULE INV + INSTANCE INV_1 + SUBMODULE AND2 + INSTANCE AND2_t18 + SUBMODULE INV + INSTANCE INV_2 + SUBMODULE AND2 + INSTANCE AND2_t19 diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.lpc b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.lpc index e2c0325..353174b 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.lpc +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.lpc @@ -12,12 +12,12 @@ VendorName=Lattice Semiconductor Corporation CoreType=LPM CoreStatus=Demo CoreName=FIFO_DC -CoreRevision=5.7 +CoreRevision=5.8 ModuleName=FIFO_DC_36x128_DynThr_OutReg SourceFormat=VHDL ParameterFileVersion=1.0 -Date=04/09/2015 -Time=09:22:22 +Date=07/06/2018 +Time=11:51:35 [Parameters] Verilog=0 @@ -34,11 +34,11 @@ RDepth=128 RWidth=36 regout=1 CtrlByRdEn=0 -EmpFlg=0 -PeMode=Static - Dual Threshold +EmpFlg=1 +PeMode=Dynamic - Single Threshold PeAssert=10 PeDeassert=12 -FullFlg=1 +FullFlg=0 PfMode=Dynamic - Single Threshold PfAssert=508 PfDeassert=506 @@ -47,4 +47,4 @@ WDataCount=0 EnECC=0 [Command] -cmd_line= -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe -1 -pf 0 +cmd_line= -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe 0 -pf -1 diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.srp b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.srp index e214ba0..2c2ea91 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.srp +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.srp @@ -1,19 +1,19 @@ -SCUBA, Version Diamond (64-bit) 3.4.0.80 -Thu Apr 9 09:22:22 2015 +SCUBA, Version Diamond (64-bit) 3.9.1.119 +Fri Jul 6 11:51:36 2018 Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved. Copyright (c) 1995 AT&T Corp. All rights reserved. Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved. Copyright (c) 2001 Agere Systems All rights reserved. -Copyright (c) 2002-2014 Lattice Semiconductor Corporation, All rights reserved. +Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved. - Issued command : /opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe -1 -pf 0 + Issued command : /d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe 0 -pf -1 Circuit name : FIFO_DC_36x128_DynThr_OutReg Module type : ebfifo - Module Version : 5.7 + Module Version : 5.8 Ports : - Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmFullThresh[6:0] - Outputs : Q[35:0], Empty, Full, AlmostFull + Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmEmptyThresh[6:0] + Outputs : Q[35:0], Empty, Full, AlmostEmpty I/O buffer : not inserted EDIF output : FIFO_DC_36x128_DynThr_OutReg.edn VHDL output : FIFO_DC_36x128_DynThr_OutReg.vhd @@ -24,20 +24,20 @@ Copyright (c) 2002-2014 Lattice Semiconductor Corporation, All rights reserved. Report output : FIFO_DC_36x128_DynThr_OutReg.srp Element Usage : AGEB2 : 12 - AND2 : 2 + AND2 : 4 CU2 : 8 FADD2B : 9 FSUB2B : 5 FD1P3BX : 2 FD1P3DX : 46 - FD1S3BX : 1 - FD1S3DX : 42 - INV : 2 + FD1S3BX : 2 + FD1S3DX : 41 + INV : 3 OR2 : 1 ROM16X1A : 20 XOR2 : 15 PDPW16KC : 1 Estimated Resource Usage: - LUT : 106 + LUT : 108 EBR : 1 Reg : 91 diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.vhd b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.vhd index 5df39e9..8eb7a66 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.vhd +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg.vhd @@ -1,8 +1,8 @@ --- VHDL netlist generated by SCUBA Diamond (64-bit) 3.4.0.80 --- Module Version: 5.7 ---/opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type ebfifo -depth 128 -width 36 -depth 128 -rdata_width 36 -regout -no_enable -pe -1 -pf 0 +-- VHDL netlist generated by SCUBA Diamond (64-bit) 3.9.1.119 +-- Module Version: 5.8 +--/d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type ebfifo -depth 128 -width 36 -depth 128 -rdata_width 36 -regout -no_enable -pe 0 -pf -1 --- Thu Apr 9 09:22:22 2015 +-- Fri Jul 6 11:51:36 2018 library IEEE; use IEEE.std_logic_1164.all; @@ -20,11 +20,11 @@ entity FIFO_DC_36x128_DynThr_OutReg is RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; - AmFullThresh: in std_logic_vector(6 downto 0); + AmEmptyThresh: in std_logic_vector(6 downto 0); Q: out std_logic_vector(35 downto 0); Empty: out std_logic; Full: out std_logic; - AlmostFull: out std_logic); + AlmostEmpty: out std_logic); end FIFO_DC_36x128_DynThr_OutReg; architecture Structure of FIFO_DC_36x128_DynThr_OutReg is @@ -34,6 +34,7 @@ architecture Structure of FIFO_DC_36x128_DynThr_OutReg is signal invout_0: std_logic; signal w_g2b_xor_cluster_1: std_logic; signal r_g2b_xor_cluster_1: std_logic; + signal rcnt_reg_6_inv: std_logic; signal w_gdata_0: std_logic; signal w_gdata_1: std_logic; signal w_gdata_2: std_logic; @@ -112,9 +113,10 @@ architecture Structure of FIFO_DC_36x128_DynThr_OutReg is signal r_gcount_w6: std_logic; signal r_gcount_w27: std_logic; signal r_gcount_w7: std_logic; + signal rcnt_reg_7: std_logic; signal empty_i: std_logic; - signal rRst: std_logic; signal full_i: std_logic; + signal rRst: std_logic; signal iwcount_0: std_logic; signal iwcount_1: std_logic; signal w_gctr_ci: std_logic; @@ -143,22 +145,21 @@ architecture Structure of FIFO_DC_36x128_DynThr_OutReg is signal co3_1: std_logic; signal co2_1: std_logic; signal rcount_7: std_logic; - signal wcnt_sub_0: std_logic; + signal rcnt_sub_0: std_logic; signal precin: std_logic; signal scuba_vhi: std_logic; - signal wcnt_sub_1: std_logic; - signal wcnt_sub_2: std_logic; + signal rcnt_sub_1: std_logic; + signal rcnt_sub_2: std_logic; signal co0_2: std_logic; - signal wcnt_sub_3: std_logic; - signal wcnt_sub_4: std_logic; + signal rcnt_sub_3: std_logic; + signal rcnt_sub_4: std_logic; signal co1_2: std_logic; - signal wcnt_sub_5: std_logic; - signal wcnt_sub_6: std_logic; + signal rcnt_sub_5: std_logic; + signal rcnt_sub_6: std_logic; signal co2_2: std_logic; - signal wcnt_sub_7: std_logic; + signal rcnt_sub_7: std_logic; signal co3_2: std_logic; - signal wcnt_sub_msb: std_logic; - signal rden_i: std_logic; + signal rcnt_sub_msb: std_logic; signal cmp_ci: std_logic; signal wcount_r0: std_logic; signal wcount_r1: std_logic; @@ -181,6 +182,7 @@ architecture Structure of FIFO_DC_36x128_DynThr_OutReg is signal empty_cmp_set: std_logic; signal empty_d: std_logic; signal empty_d_c: std_logic; + signal wren_i: std_logic; signal cmp_ci_1: std_logic; signal rcount_w0: std_logic; signal rcount_w1: std_logic; @@ -203,21 +205,22 @@ architecture Structure of FIFO_DC_36x128_DynThr_OutReg is signal full_cmp_set: std_logic; signal full_d: std_logic; signal full_d_c: std_logic; - signal wren_i: std_logic; + signal rden_i: std_logic; signal cmp_ci_2: std_logic; - signal wcnt_reg_0: std_logic; - signal wcnt_reg_1: std_logic; + signal rcnt_reg_0: std_logic; + signal rcnt_reg_1: std_logic; signal co0_5: std_logic; - signal wcnt_reg_2: std_logic; - signal wcnt_reg_3: std_logic; + signal rcnt_reg_2: std_logic; + signal rcnt_reg_3: std_logic; signal co1_5: std_logic; - signal wcnt_reg_4: std_logic; - signal wcnt_reg_5: std_logic; + signal rcnt_reg_4: std_logic; + signal rcnt_reg_5: std_logic; signal co2_5: std_logic; - signal wcnt_reg_6: std_logic; - signal wcnt_reg_7: std_logic; - signal af_d: std_logic; - signal af_d_c: std_logic; + signal rcnt_reg_6: std_logic; + signal ae_clrsig: std_logic; + signal ae_setsig: std_logic; + signal ae_d: std_logic; + signal ae_d_c: std_logic; signal scuba_vlo: std_logic; -- local component declarations @@ -438,61 +441,61 @@ architecture Structure of FIFO_DC_36x128_DynThr_OutReg is begin -- component instantiation statements - AND2_t17: AND2 + AND2_t19: AND2 port map (A=>WrEn, B=>invout_1, Z=>wren_i); - INV_1: INV + INV_2: INV port map (A=>full_i, Z=>invout_1); - AND2_t16: AND2 + AND2_t18: AND2 port map (A=>RdEn, B=>invout_0, Z=>rden_i); - INV_0: INV + INV_1: INV port map (A=>empty_i, Z=>invout_0); - OR2_t15: OR2 + OR2_t17: OR2 port map (A=>Reset, B=>RPReset, Z=>rRst); - XOR2_t14: XOR2 + XOR2_t16: XOR2 port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); - XOR2_t13: XOR2 + XOR2_t15: XOR2 port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); - XOR2_t12: XOR2 + XOR2_t14: XOR2 port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); - XOR2_t11: XOR2 + XOR2_t13: XOR2 port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); - XOR2_t10: XOR2 + XOR2_t12: XOR2 port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); - XOR2_t9: XOR2 + XOR2_t11: XOR2 port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); - XOR2_t8: XOR2 + XOR2_t10: XOR2 port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); - XOR2_t7: XOR2 + XOR2_t9: XOR2 port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); - XOR2_t6: XOR2 + XOR2_t8: XOR2 port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); - XOR2_t5: XOR2 + XOR2_t7: XOR2 port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); - XOR2_t4: XOR2 + XOR2_t6: XOR2 port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); - XOR2_t3: XOR2 + XOR2_t5: XOR2 port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); - XOR2_t2: XOR2 + XOR2_t4: XOR2 port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); - XOR2_t1: XOR2 + XOR2_t3: XOR2 port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); LUT4_19: ROM16X1A @@ -579,8 +582,8 @@ begin port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w0); - XOR2_t0: XOR2 - port map (A=>wcount_7, B=>r_gcount_w27, Z=>wcnt_sub_msb); + XOR2_t2: XOR2 + port map (A=>w_gcount_r27, B=>rcount_7, Z=>rcnt_sub_msb); LUT4_3: ROM16X1A generic map (initval=> X"0410") @@ -602,6 +605,15 @@ begin port map (AD3=>wptr_7, AD2=>wcount_7, AD1=>r_gcount_w27, AD0=>scuba_vlo, DO0=>full_cmp_clr); + INV_0: INV + port map (A=>rcnt_reg_6, Z=>rcnt_reg_6_inv); + + AND2_t1: AND2 + port map (A=>rcnt_reg_7, B=>rcnt_reg_6_inv, Z=>ae_clrsig); + + AND2_t0: AND2 + port map (A=>rcnt_reg_7, B=>rcnt_reg_6, Z=>ae_setsig); + pdp_ram_0_0_0: PDPW16KC generic map (CSDECODE_R=> "0b001", CSDECODE_W=> "0b001", GSR=> "DISABLED", REGMODE=> "OUTREG", DATA_WIDTH_R=> 36, DATA_WIDTH_W=> 36) @@ -933,28 +945,28 @@ begin port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); FF_10: FD1S3DX - port map (D=>wcnt_sub_0, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_0); + port map (D=>rcnt_sub_0, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_0); FF_9: FD1S3DX - port map (D=>wcnt_sub_1, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_1); + port map (D=>rcnt_sub_1, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_1); FF_8: FD1S3DX - port map (D=>wcnt_sub_2, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_2); + port map (D=>rcnt_sub_2, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_2); FF_7: FD1S3DX - port map (D=>wcnt_sub_3, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_3); + port map (D=>rcnt_sub_3, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_3); FF_6: FD1S3DX - port map (D=>wcnt_sub_4, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_4); + port map (D=>rcnt_sub_4, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_4); FF_5: FD1S3DX - port map (D=>wcnt_sub_5, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_5); + port map (D=>rcnt_sub_5, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_5); FF_4: FD1S3DX - port map (D=>wcnt_sub_6, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_6); + port map (D=>rcnt_sub_6, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_6); FF_3: FD1S3DX - port map (D=>wcnt_sub_7, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_7); + port map (D=>rcnt_sub_7, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_7); FF_2: FD1S3BX port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); @@ -962,8 +974,8 @@ begin FF_1: FD1S3DX port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); - FF_0: FD1S3DX - port map (D=>af_d, CK=>WrClock, CD=>Reset, Q=>AlmostFull); + FF_0: FD1S3BX + port map (D=>ae_d, CK=>RdClock, PD=>rRst, Q=>AlmostEmpty); w_gctr_cia: FADD2B port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, @@ -1015,29 +1027,29 @@ begin scuba_vhi_inst: VHI port map (Z=>scuba_vhi); - wcnt_0: FSUB2B - port map (A0=>scuba_vhi, A1=>wcount_0, B0=>scuba_vlo, - B1=>rcount_w0, BI=>precin, BOUT=>co0_2, S0=>open, - S1=>wcnt_sub_0); - - wcnt_1: FSUB2B - port map (A0=>wcount_1, A1=>wcount_2, B0=>rcount_w1, - B1=>rcount_w2, BI=>co0_2, BOUT=>co1_2, S0=>wcnt_sub_1, - S1=>wcnt_sub_2); - - wcnt_2: FSUB2B - port map (A0=>wcount_3, A1=>wcount_4, B0=>rcount_w3, - B1=>r_g2b_xor_cluster_0, BI=>co1_2, BOUT=>co2_2, - S0=>wcnt_sub_3, S1=>wcnt_sub_4); - - wcnt_3: FSUB2B - port map (A0=>wcount_5, A1=>wcount_6, B0=>rcount_w5, - B1=>rcount_w6, BI=>co2_2, BOUT=>co3_2, S0=>wcnt_sub_5, - S1=>wcnt_sub_6); - - wcnt_4: FSUB2B - port map (A0=>wcnt_sub_msb, A1=>scuba_vlo, B0=>scuba_vlo, - B1=>scuba_vlo, BI=>co3_2, BOUT=>open, S0=>wcnt_sub_7, + rcnt_0: FSUB2B + port map (A0=>scuba_vhi, A1=>wcount_r0, B0=>scuba_vlo, + B1=>rcount_0, BI=>precin, BOUT=>co0_2, S0=>open, + S1=>rcnt_sub_0); + + rcnt_1: FSUB2B + port map (A0=>wcount_r1, A1=>wcount_r2, B0=>rcount_1, + B1=>rcount_2, BI=>co0_2, BOUT=>co1_2, S0=>rcnt_sub_1, + S1=>rcnt_sub_2); + + rcnt_2: FSUB2B + port map (A0=>wcount_r3, A1=>w_g2b_xor_cluster_0, B0=>rcount_3, + B1=>rcount_4, BI=>co1_2, BOUT=>co2_2, S0=>rcnt_sub_3, + S1=>rcnt_sub_4); + + rcnt_3: FSUB2B + port map (A0=>wcount_r5, A1=>wcount_r6, B0=>rcount_5, + B1=>rcount_6, BI=>co2_2, BOUT=>co3_2, S0=>rcnt_sub_5, + S1=>rcnt_sub_6); + + rcnt_4: FSUB2B + port map (A0=>rcnt_sub_msb, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, BI=>co3_2, BOUT=>open, S0=>rcnt_sub_7, S1=>open); empty_cmp_ci_a: FADD2B @@ -1090,32 +1102,32 @@ begin B1=>scuba_vlo, CI=>full_d_c, COUT=>open, S0=>full_d, S1=>open); - af_d_cmp_ci_a: FADD2B - port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + ae_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, CI=>scuba_vlo, COUT=>cmp_ci_2, S0=>open, S1=>open); - af_d_cmp_0: AGEB2 - port map (A0=>wcnt_reg_0, A1=>wcnt_reg_1, B0=>AmFullThresh(0), - B1=>AmFullThresh(1), CI=>cmp_ci_2, GE=>co0_5); + ae_cmp_0: AGEB2 + port map (A0=>AmEmptyThresh(0), A1=>AmEmptyThresh(1), + B0=>rcnt_reg_0, B1=>rcnt_reg_1, CI=>cmp_ci_2, GE=>co0_5); - af_d_cmp_1: AGEB2 - port map (A0=>wcnt_reg_2, A1=>wcnt_reg_3, B0=>AmFullThresh(2), - B1=>AmFullThresh(3), CI=>co0_5, GE=>co1_5); + ae_cmp_1: AGEB2 + port map (A0=>AmEmptyThresh(2), A1=>AmEmptyThresh(3), + B0=>rcnt_reg_2, B1=>rcnt_reg_3, CI=>co0_5, GE=>co1_5); - af_d_cmp_2: AGEB2 - port map (A0=>wcnt_reg_4, A1=>wcnt_reg_5, B0=>AmFullThresh(4), - B1=>AmFullThresh(5), CI=>co1_5, GE=>co2_5); + ae_cmp_2: AGEB2 + port map (A0=>AmEmptyThresh(4), A1=>AmEmptyThresh(5), + B0=>rcnt_reg_4, B1=>rcnt_reg_5, CI=>co1_5, GE=>co2_5); - af_d_cmp_3: AGEB2 - port map (A0=>wcnt_reg_6, A1=>wcnt_reg_7, B0=>AmFullThresh(6), - B1=>scuba_vlo, CI=>co2_5, GE=>af_d_c); + ae_cmp_3: AGEB2 + port map (A0=>AmEmptyThresh(6), A1=>ae_setsig, B0=>rcnt_reg_6, + B1=>ae_clrsig, CI=>co2_5, GE=>ae_d_c); scuba_vlo_inst: VLO port map (Z=>scuba_vlo); a2: FADD2B port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, - B1=>scuba_vlo, CI=>af_d_c, COUT=>open, S0=>af_d, S1=>open); + B1=>scuba_vlo, CI=>ae_d_c, COUT=>open, S0=>ae_d, S1=>open); Empty <= empty_i; Full <= full_i; diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_generate.log b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_generate.log index 7309dc6..1078cfa 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_generate.log +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_generate.log @@ -2,24 +2,24 @@ Starting process: module Starting process: -SCUBA, Version Diamond (64-bit) 3.4.0.80 -Thu Apr 9 09:22:22 2015 +SCUBA, Version Diamond (64-bit) 3.9.1.119 +Fri Jul 6 11:51:36 2018 Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved. Copyright (c) 1995 AT&T Corp. All rights reserved. Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved. Copyright (c) 2001 Agere Systems All rights reserved. -Copyright (c) 2002-2014 Lattice Semiconductor Corporation, All rights reserved. +Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved. BEGIN SCUBA Module Synthesis - Issued command : /opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe -1 -pf 0 + Issued command : /d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe 0 -pf -1 Circuit name : FIFO_DC_36x128_DynThr_OutReg Module type : ebfifo - Module Version : 5.7 + Module Version : 5.8 Ports : - Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmFullThresh[6:0] - Outputs : Q[35:0], Empty, Full, AlmostFull + Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmEmptyThresh[6:0] + Outputs : Q[35:0], Empty, Full, AlmostEmpty I/O buffer : not inserted EDIF output : FIFO_DC_36x128_DynThr_OutReg.edn VHDL output : FIFO_DC_36x128_DynThr_OutReg.vhd @@ -29,7 +29,7 @@ BEGIN SCUBA Module Synthesis Bus notation : big endian Report output : FIFO_DC_36x128_DynThr_OutReg.srp Estimated Resource Usage: - LUT : 106 + LUT : 108 EBR : 1 Reg : 91 diff --git a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd index 15da9ef..7623f25 100644 --- a/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd +++ b/base/cores/ecp3/FIFO/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd @@ -1,6 +1,6 @@ --- VHDL module instantiation generated by SCUBA Diamond (64-bit) 3.4.0.80 --- Module Version: 5.7 --- Thu Apr 9 09:22:22 2015 +-- VHDL module instantiation generated by SCUBA Diamond (64-bit) 3.9.1.119 +-- Module Version: 5.8 +-- Fri Jul 6 11:51:36 2018 -- parameterized module component declaration component FIFO_DC_36x128_DynThr_OutReg @@ -8,13 +8,13 @@ component FIFO_DC_36x128_DynThr_OutReg WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; - AmFullThresh: in std_logic_vector(6 downto 0); + AmEmptyThresh: in std_logic_vector(6 downto 0); Q: out std_logic_vector(35 downto 0); Empty: out std_logic; - Full: out std_logic; AlmostFull: out std_logic); + Full: out std_logic; AlmostEmpty: out std_logic); end component; -- parameterized module component instance __ : FIFO_DC_36x128_DynThr_OutReg port map (Data(35 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, - RdEn=>__, Reset=>__, RPReset=>__, AmFullThresh(6 downto 0)=>__, - Q(35 downto 0)=>__, Empty=>__, Full=>__, AlmostFull=>__); + RdEn=>__, Reset=>__, RPReset=>__, AmEmptyThresh(6 downto 0)=>__, + Q(35 downto 0)=>__, Empty=>__, Full=>__, AlmostEmpty=>__); diff --git a/base/cores/ecp3/FIFO/generate_core.tcl b/base/cores/ecp3/FIFO/generate_core.tcl index 0e1d16c..63b9fbe 100644 --- a/base/cores/ecp3/FIFO/generate_core.tcl +++ b/base/cores/ecp3/FIFO/generate_core.tcl @@ -85,7 +85,7 @@ set Para(install_dir) $env(TOOLRTF) set Para(FPGAPath) "[file join $Para(install_dir) ispfpga bin $platformpath]" set scuba "$Para(FPGAPath)/scuba" -set modulename "FIFO_DC_36x64_DynThr_OutReg" +set modulename "FIFO_DC_36x128_DynThr_OutReg" set lang "vhdl" set lpcfile "$Para(sbp_path)/$modulename.lpc" set arch "ep5c00" @@ -94,7 +94,7 @@ set fdcfile "$Para(sbp_path)/$modulename.fdc" if {[file exists $fdcfile] == 0} { append scuba " " $cmd_line } else { - append scuba " " $cmd_line " " -fdc " " $fdcfile + append scuba " " $cmd_line " " -fdc " " \"$fdcfile\" } set Para(result) [catch {eval exec "$scuba"} msg] #puts $msg diff --git a/base/cores/ecp3/FIFO/generate_ngd.tcl b/base/cores/ecp3/FIFO/generate_ngd.tcl index 3ebf887..48b59d9 100644 --- a/base/cores/ecp3/FIFO/generate_ngd.tcl +++ b/base/cores/ecp3/FIFO/generate_ngd.tcl @@ -50,7 +50,7 @@ set Para(install_dir) $env(TOOLRTF) set Para(FPGAPath) "[file join $Para(install_dir) ispfpga bin $platformpath]" set Para(bin_dir) "[file join $Para(install_dir) bin $platformpath]" -set Para(ModuleName) "FIFO_DC_36x64_DynThr_OutReg" +set Para(ModuleName) "FIFO_DC_36x128_DynThr_OutReg" set Para(Module) "FIFO_DC" set Para(libname) latticeecp3 set Para(arch_name) ep5c00 diff --git a/base/cores/ecp3/FIFO/msg_file.log b/base/cores/ecp3/FIFO/msg_file.log index 83391a2..6278535 100644 --- a/base/cores/ecp3/FIFO/msg_file.log +++ b/base/cores/ecp3/FIFO/msg_file.log @@ -1,33 +1,33 @@ -SCUBA, Version Diamond (64-bit) 3.5.0.102 -Mon Sep 21 11:51:55 2015 +SCUBA, Version Diamond (64-bit) 3.9.1.119 +Fri Jul 6 11:51:36 2018 Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved. Copyright (c) 1995 AT&T Corp. All rights reserved. Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved. Copyright (c) 2001 Agere Systems All rights reserved. -Copyright (c) 2002-2015 Lattice Semiconductor Corporation, All rights reserved. +Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved. BEGIN SCUBA Module Synthesis - Issued command : /opt/lattice/diamond/3.5_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x64_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 6 -data_width 36 -num_words 64 -rdata_width 36 -outdata REGISTERED -no_enable -pe -1 -pf 0 - Circuit name : FIFO_DC_36x64_DynThr_OutReg + Issued command : /d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5c00 -type fifodc -addr_width 7 -data_width 36 -num_words 128 -rdata_width 36 -outdata REGISTERED -no_enable -pe 0 -pf -1 + Circuit name : FIFO_DC_36x128_DynThr_OutReg Module type : ebfifo Module Version : 5.8 Ports : - Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmFullThresh[5:0] - Outputs : Q[35:0], Empty, Full, AlmostFull + Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmEmptyThresh[6:0] + Outputs : Q[35:0], Empty, Full, AlmostEmpty I/O buffer : not inserted - EDIF output : FIFO_DC_36x64_DynThr_OutReg.edn - VHDL output : FIFO_DC_36x64_DynThr_OutReg.vhd - VHDL template : FIFO_DC_36x64_DynThr_OutReg_tmpl.vhd - VHDL testbench : tb_FIFO_DC_36x64_DynThr_OutReg_tmpl.vhd + EDIF output : FIFO_DC_36x128_DynThr_OutReg.edn + VHDL output : FIFO_DC_36x128_DynThr_OutReg.vhd + VHDL template : FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd + VHDL testbench : tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd VHDL purpose : for synthesis and simulation Bus notation : big endian - Report output : FIFO_DC_36x64_DynThr_OutReg.srp + Report output : FIFO_DC_36x128_DynThr_OutReg.srp Estimated Resource Usage: - LUT : 100 + LUT : 108 EBR : 1 - Reg : 80 + Reg : 91 END SCUBA Module Synthesis diff --git a/base/cores/ecp3/FIFO/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd b/base/cores/ecp3/FIFO/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd index eb311c8..535809f 100644 --- a/base/cores/ecp3/FIFO/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd +++ b/base/cores/ecp3/FIFO/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd @@ -1,4 +1,4 @@ --- VHDL testbench template generated by SCUBA Diamond (64-bit) 3.4.0.80 +-- VHDL testbench template generated by SCUBA Diamond (64-bit) 3.9.1.119 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; @@ -17,9 +17,9 @@ architecture test of tb is port (Data : in std_logic_vector(35 downto 0); WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; - AmFullThresh : in std_logic_vector(6 downto 0); + AmEmptyThresh : in std_logic_vector(6 downto 0); Q : out std_logic_vector(35 downto 0); Empty: out std_logic; - Full: out std_logic; AlmostFull: out std_logic + Full: out std_logic; AlmostEmpty: out std_logic ); end component; @@ -30,17 +30,17 @@ architecture test of tb is signal RdEn: std_logic := '0'; signal Reset: std_logic := '0'; signal RPReset: std_logic := '0'; - signal AmFullThresh : std_logic_vector(6 downto 0) := (others => '0'); + signal AmEmptyThresh : std_logic_vector(6 downto 0) := (others => '0'); signal Q : std_logic_vector(35 downto 0); signal Empty: std_logic; signal Full: std_logic; - signal AlmostFull: std_logic; + signal AlmostEmpty: std_logic; begin u1 : FIFO_DC_36x128_DynThr_OutReg port map (Data => Data, WrClock => WrClock, RdClock => RdClock, WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, - AmFullThresh => AmFullThresh, Q => Q, Empty => Empty, Full => Full, - AlmostFull => AlmostFull + AmEmptyThresh => AmEmptyThresh, Q => Q, Empty => Empty, Full => Full, + AlmostEmpty => AlmostEmpty ); process diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.cst b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.cst index 1aa3df3..1ed51d2 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.cst +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.cst @@ -1,3 +1,3 @@ -Date=03/17/2015 -Time=15:27:13 +Date=07/06/2018 +Time=16:42:22 diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.edn b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.edn index f12ce27..7f38535 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.edn +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.edn @@ -4,9 +4,9 @@ (keywordMap (keywordLevel 0)) (status (written - (timestamp 2015 3 17 15 27 16) - (program "SCUBA" (version "Diamond (64-bit) 3.4.0.80")))) - (comment "/opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00m -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe -1 -pf 0 -fdc /home/cugur/Projects/TDC_on_TRB3/trb3/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.fdc ") + (timestamp 2018 7 6 16 42 28) + (program "SCUBA" (version "Diamond (64-bit) 3.9.1.119")))) + (comment "/d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00g -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe 0 -pf -1 -fdc /d/jspc22/trb/git/dirich/dirich/diamond/test/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.fdc ") (library ORCLIB (edifLevel 0) (technology @@ -413,7 +413,7 @@ (direction INPUT)) (port RPReset (direction INPUT)) - (port (array (rename AmFullThresh "AmFullThresh(6:0)") 7) + (port (array (rename AmEmptyThresh "AmEmptyThresh(6:0)") 7) (direction INPUT)) (port (array (rename Q "Q(35:0)") 36) (direction OUTPUT)) @@ -421,25 +421,31 @@ (direction OUTPUT)) (port Full (direction OUTPUT)) - (port AlmostFull + (port AlmostEmpty (direction OUTPUT))) (property NGD_DRC_MASK (integer 1)) (contents - (instance AND2_t17 + (instance AND2_t19 (viewRef view1 (cellRef AND2))) - (instance INV_1 + (instance INV_2 (viewRef view1 (cellRef INV))) - (instance AND2_t16 + (instance AND2_t18 (viewRef view1 (cellRef AND2))) - (instance INV_0 + (instance INV_1 (viewRef view1 (cellRef INV))) - (instance OR2_t15 + (instance OR2_t17 (viewRef view1 (cellRef OR2))) + (instance XOR2_t16 + (viewRef view1 + (cellRef XOR2))) + (instance XOR2_t15 + (viewRef view1 + (cellRef XOR2))) (instance XOR2_t14 (viewRef view1 (cellRef XOR2))) @@ -476,12 +482,6 @@ (instance XOR2_t3 (viewRef view1 (cellRef XOR2))) - (instance XOR2_t2 - (viewRef view1 - (cellRef XOR2))) - (instance XOR2_t1 - (viewRef view1 - (cellRef XOR2))) (instance LUT4_19 (viewRef view1 (cellRef ROM16X1A)) @@ -562,7 +562,7 @@ (cellRef ROM16X1A)) (property initval (string "0x6996"))) - (instance XOR2_t0 + (instance XOR2_t2 (viewRef view1 (cellRef XOR2))) (instance LUT4_3 @@ -585,6 +585,15 @@ (cellRef ROM16X1A)) (property initval (string "0x4001"))) + (instance INV_0 + (viewRef view1 + (cellRef INV))) + (instance AND2_t1 + (viewRef view1 + (cellRef AND2))) + (instance AND2_t0 + (viewRef view1 + (cellRef AND2))) (instance pdp_ram_0_0_0 (viewRef view1 (cellRef PDPW16KD)) @@ -1062,7 +1071,7 @@ (string "ENABLED"))) (instance FF_0 (viewRef view1 - (cellRef FD1S3DX)) + (cellRef FD1S3BX)) (property GSR (string "ENABLED"))) (instance w_gctr_cia @@ -1186,7 +1195,7 @@ (string "0x0000")) (property INIT0 (string "0x0000"))) - (instance wcnt_0 + (instance rcnt_0 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1197,7 +1206,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance wcnt_1 + (instance rcnt_1 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1208,7 +1217,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance wcnt_2 + (instance rcnt_2 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1219,7 +1228,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance wcnt_3 + (instance rcnt_3 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1230,7 +1239,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance wcnt_4 + (instance rcnt_4 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1373,7 +1382,7 @@ (string "0x66AA")) (property INIT0 (string "0x66AA"))) - (instance af_d_cmp_ci_a + (instance ae_cmp_ci_a (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1384,7 +1393,7 @@ (string "0x66AA")) (property INIT0 (string "0x66AA"))) - (instance af_d_cmp_0 + (instance ae_cmp_0 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1395,7 +1404,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance af_d_cmp_1 + (instance ae_cmp_1 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1406,7 +1415,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance af_d_cmp_2 + (instance ae_cmp_2 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1417,7 +1426,7 @@ (string "0x99AA")) (property INIT0 (string "0x99AA"))) - (instance af_d_cmp_3 + (instance ae_cmp_3 (viewRef view1 (cellRef CCU2C)) (property INJECT1_1 @@ -1447,12 +1456,12 @@ (string "0x66AA"))) (net invout_1 (joined - (portRef Z (instanceRef INV_1)) - (portRef B (instanceRef AND2_t17)))) + (portRef Z (instanceRef INV_2)) + (portRef B (instanceRef AND2_t19)))) (net invout_0 (joined - (portRef Z (instanceRef INV_0)) - (portRef B (instanceRef AND2_t16)))) + (portRef Z (instanceRef INV_1)) + (portRef B (instanceRef AND2_t18)))) (net w_g2b_xor_cluster_1 (joined (portRef AD2 (instanceRef LUT4_12)) @@ -1461,34 +1470,38 @@ (joined (portRef AD2 (instanceRef LUT4_4)) (portRef DO0 (instanceRef LUT4_10)))) + (net rcnt_reg_6_inv + (joined + (portRef B (instanceRef AND2_t1)) + (portRef Z (instanceRef INV_0)))) (net w_gdata_0 (joined (portRef D (instanceRef FF_82)) - (portRef Z (instanceRef XOR2_t14)))) + (portRef Z (instanceRef XOR2_t16)))) (net w_gdata_1 (joined (portRef D (instanceRef FF_81)) - (portRef Z (instanceRef XOR2_t13)))) + (portRef Z (instanceRef XOR2_t15)))) (net w_gdata_2 (joined (portRef D (instanceRef FF_80)) - (portRef Z (instanceRef XOR2_t12)))) + (portRef Z (instanceRef XOR2_t14)))) (net w_gdata_3 (joined (portRef D (instanceRef FF_79)) - (portRef Z (instanceRef XOR2_t11)))) + (portRef Z (instanceRef XOR2_t13)))) (net w_gdata_4 (joined (portRef D (instanceRef FF_78)) - (portRef Z (instanceRef XOR2_t10)))) + (portRef Z (instanceRef XOR2_t12)))) (net w_gdata_5 (joined (portRef D (instanceRef FF_77)) - (portRef Z (instanceRef XOR2_t9)))) + (portRef Z (instanceRef XOR2_t11)))) (net w_gdata_6 (joined (portRef D (instanceRef FF_76)) - (portRef Z (instanceRef XOR2_t8)))) + (portRef Z (instanceRef XOR2_t10)))) (net wptr_0 (joined (portRef Q (instanceRef FF_74)) @@ -1525,31 +1538,31 @@ (net r_gdata_0 (joined (portRef D (instanceRef FF_58)) - (portRef Z (instanceRef XOR2_t7)))) + (portRef Z (instanceRef XOR2_t9)))) (net r_gdata_1 (joined (portRef D (instanceRef FF_57)) - (portRef Z (instanceRef XOR2_t6)))) + (portRef Z (instanceRef XOR2_t8)))) (net r_gdata_2 (joined (portRef D (instanceRef FF_56)) - (portRef Z (instanceRef XOR2_t5)))) + (portRef Z (instanceRef XOR2_t7)))) (net r_gdata_3 (joined (portRef D (instanceRef FF_55)) - (portRef Z (instanceRef XOR2_t4)))) + (portRef Z (instanceRef XOR2_t6)))) (net r_gdata_4 (joined (portRef D (instanceRef FF_54)) - (portRef Z (instanceRef XOR2_t3)))) + (portRef Z (instanceRef XOR2_t5)))) (net r_gdata_5 (joined (portRef D (instanceRef FF_53)) - (portRef Z (instanceRef XOR2_t2)))) + (portRef Z (instanceRef XOR2_t4)))) (net r_gdata_6 (joined (portRef D (instanceRef FF_52)) - (portRef Z (instanceRef XOR2_t1)))) + (portRef Z (instanceRef XOR2_t3)))) (net rptr_0 (joined (portRef Q (instanceRef FF_50)) @@ -1721,6 +1734,7 @@ (portRef AD0 (instanceRef LUT4_19)) (portRef AD2 (instanceRef LUT4_17)) (portRef AD1 (instanceRef LUT4_16)) + (portRef A (instanceRef XOR2_t2)) (portRef AD1 (instanceRef LUT4_3)) (portRef AD1 (instanceRef LUT4_2)))) (net w_gcount_r7 @@ -1801,17 +1815,21 @@ (portRef AD0 (instanceRef LUT4_11)) (portRef AD2 (instanceRef LUT4_9)) (portRef AD1 (instanceRef LUT4_8)) - (portRef B (instanceRef XOR2_t0)) (portRef AD1 (instanceRef LUT4_1)) (portRef AD1 (instanceRef LUT4_0)))) (net r_gcount_w7 (joined (portRef D (instanceRef FF_11)) (portRef Q (instanceRef FF_27)))) + (net rcnt_reg_7 + (joined + (portRef Q (instanceRef FF_3)) + (portRef A (instanceRef AND2_t1)) + (portRef A (instanceRef AND2_t0)))) (net rRst (joined - (portRef PD (instanceRef FF_2)) - (portRef Z (instanceRef OR2_t15)) + (portRef PD (instanceRef FF_0)) + (portRef Z (instanceRef OR2_t17)) (portRef PD (instanceRef FF_66)) (portRef CD (instanceRef FF_65)) (portRef CD (instanceRef FF_64)) @@ -1851,7 +1869,16 @@ (portRef CD (instanceRef FF_14)) (portRef CD (instanceRef FF_13)) (portRef CD (instanceRef FF_12)) - (portRef CD (instanceRef FF_11)))) + (portRef CD (instanceRef FF_11)) + (portRef CD (instanceRef FF_10)) + (portRef CD (instanceRef FF_9)) + (portRef CD (instanceRef FF_8)) + (portRef CD (instanceRef FF_7)) + (portRef CD (instanceRef FF_6)) + (portRef CD (instanceRef FF_5)) + (portRef CD (instanceRef FF_4)) + (portRef CD (instanceRef FF_3)) + (portRef PD (instanceRef FF_2)))) (net iwcount_0 (joined (portRef S0 (instanceRef w_gctr_0)) @@ -1906,8 +1933,7 @@ (net wcount_7 (joined (portRef A1 (instanceRef w_gctr_3)) - (portRef B (instanceRef XOR2_t8)) - (portRef A (instanceRef XOR2_t0)) + (portRef B (instanceRef XOR2_t10)) (portRef AD2 (instanceRef LUT4_1)) (portRef AD2 (instanceRef LUT4_0)) (portRef Q (instanceRef FF_83)) @@ -1967,98 +1993,69 @@ (net rcount_7 (joined (portRef A1 (instanceRef r_gctr_3)) - (portRef B (instanceRef XOR2_t1)) + (portRef B (instanceRef XOR2_t3)) + (portRef B (instanceRef XOR2_t2)) (portRef AD2 (instanceRef LUT4_3)) (portRef AD2 (instanceRef LUT4_2)) (portRef Q (instanceRef FF_59)) (portRef D (instanceRef FF_51)) (portRef D (instanceRef FF_43)))) - (net wcnt_sub_0 + (net rcnt_sub_0 (joined - (portRef S1 (instanceRef wcnt_0)) + (portRef S1 (instanceRef rcnt_0)) (portRef D (instanceRef FF_10)))) (net precin (joined - (portRef CIN (instanceRef wcnt_0)) + (portRef CIN (instanceRef rcnt_0)) (portRef COUT (instanceRef precin_inst284)))) - (net wcnt_sub_1 + (net rcnt_sub_1 (joined - (portRef S0 (instanceRef wcnt_1)) + (portRef S0 (instanceRef rcnt_1)) (portRef D (instanceRef FF_9)))) - (net wcnt_sub_2 + (net rcnt_sub_2 (joined - (portRef S1 (instanceRef wcnt_1)) + (portRef S1 (instanceRef rcnt_1)) (portRef D (instanceRef FF_8)))) (net co0_2 (joined - (portRef CIN (instanceRef wcnt_1)) - (portRef COUT (instanceRef wcnt_0)))) - (net wcnt_sub_3 + (portRef CIN (instanceRef rcnt_1)) + (portRef COUT (instanceRef rcnt_0)))) + (net rcnt_sub_3 (joined - (portRef S0 (instanceRef wcnt_2)) + (portRef S0 (instanceRef rcnt_2)) (portRef D (instanceRef FF_7)))) - (net wcnt_sub_4 + (net rcnt_sub_4 (joined - (portRef S1 (instanceRef wcnt_2)) + (portRef S1 (instanceRef rcnt_2)) (portRef D (instanceRef FF_6)))) (net co1_2 (joined - (portRef CIN (instanceRef wcnt_2)) - (portRef COUT (instanceRef wcnt_1)))) - (net wcnt_sub_5 + (portRef CIN (instanceRef rcnt_2)) + (portRef COUT (instanceRef rcnt_1)))) + (net rcnt_sub_5 (joined - (portRef S0 (instanceRef wcnt_3)) + (portRef S0 (instanceRef rcnt_3)) (portRef D (instanceRef FF_5)))) - (net wcnt_sub_6 + (net rcnt_sub_6 (joined - (portRef S1 (instanceRef wcnt_3)) + (portRef S1 (instanceRef rcnt_3)) (portRef D (instanceRef FF_4)))) (net co2_2 (joined - (portRef CIN (instanceRef wcnt_3)) - (portRef COUT (instanceRef wcnt_2)))) - (net wcnt_sub_7 + (portRef CIN (instanceRef rcnt_3)) + (portRef COUT (instanceRef rcnt_2)))) + (net rcnt_sub_7 (joined - (portRef S0 (instanceRef wcnt_4)) + (portRef S0 (instanceRef rcnt_4)) (portRef D (instanceRef FF_3)))) - (net wcnt_sub_msb + (net rcnt_sub_msb (joined - (portRef A0 (instanceRef wcnt_4)) - (portRef Z (instanceRef XOR2_t0)))) + (portRef A0 (instanceRef rcnt_4)) + (portRef Z (instanceRef XOR2_t2)))) (net co3_2 (joined - (portRef CIN (instanceRef wcnt_4)) - (portRef COUT (instanceRef wcnt_3)))) - (net rden_i - (joined - (portRef A1 (instanceRef empty_cmp_ci_a)) - (portRef Z (instanceRef AND2_t16)) - (portRef CSR0 (instanceRef pdp_ram_0_0_0)) - (portRef SP (instanceRef FF_66)) - (portRef SP (instanceRef FF_65)) - (portRef SP (instanceRef FF_64)) - (portRef SP (instanceRef FF_63)) - (portRef SP (instanceRef FF_62)) - (portRef SP (instanceRef FF_61)) - (portRef SP (instanceRef FF_60)) - (portRef SP (instanceRef FF_59)) - (portRef SP (instanceRef FF_58)) - (portRef SP (instanceRef FF_57)) - (portRef SP (instanceRef FF_56)) - (portRef SP (instanceRef FF_55)) - (portRef SP (instanceRef FF_54)) - (portRef SP (instanceRef FF_53)) - (portRef SP (instanceRef FF_52)) - (portRef SP (instanceRef FF_51)) - (portRef SP (instanceRef FF_50)) - (portRef SP (instanceRef FF_49)) - (portRef SP (instanceRef FF_48)) - (portRef SP (instanceRef FF_47)) - (portRef SP (instanceRef FF_46)) - (portRef SP (instanceRef FF_45)) - (portRef SP (instanceRef FF_44)) - (portRef SP (instanceRef FF_43)) - (portRef B1 (instanceRef empty_cmp_ci_a)))) + (portRef CIN (instanceRef rcnt_4)) + (portRef COUT (instanceRef rcnt_3)))) (net cmp_ci (joined (portRef CIN (instanceRef empty_cmp_0)) @@ -2066,26 +2063,30 @@ (net wcount_r0 (joined (portRef B0 (instanceRef empty_cmp_0)) - (portRef DO0 (instanceRef LUT4_12)))) + (portRef DO0 (instanceRef LUT4_12)) + (portRef A1 (instanceRef rcnt_0)))) (net wcount_r1 (joined (portRef B1 (instanceRef empty_cmp_0)) - (portRef DO0 (instanceRef LUT4_13)))) + (portRef DO0 (instanceRef LUT4_13)) + (portRef A0 (instanceRef rcnt_1)))) (net rcount_0 (joined (portRef A0 (instanceRef empty_cmp_0)) - (portRef A (instanceRef XOR2_t7)) + (portRef A (instanceRef XOR2_t9)) (portRef Q (instanceRef FF_66)) (portRef D (instanceRef FF_50)) - (portRef A0 (instanceRef r_gctr_0)))) + (portRef A0 (instanceRef r_gctr_0)) + (portRef B1 (instanceRef rcnt_0)))) (net rcount_1 (joined (portRef A1 (instanceRef empty_cmp_0)) - (portRef B (instanceRef XOR2_t7)) - (portRef A (instanceRef XOR2_t6)) + (portRef B (instanceRef XOR2_t9)) + (portRef A (instanceRef XOR2_t8)) (portRef Q (instanceRef FF_65)) (portRef D (instanceRef FF_49)) - (portRef A1 (instanceRef r_gctr_0)))) + (portRef A1 (instanceRef r_gctr_0)) + (portRef B0 (instanceRef rcnt_1)))) (net co0_3 (joined (portRef CIN (instanceRef empty_cmp_1)) @@ -2093,27 +2094,31 @@ (net wcount_r2 (joined (portRef B0 (instanceRef empty_cmp_1)) - (portRef DO0 (instanceRef LUT4_14)))) + (portRef DO0 (instanceRef LUT4_14)) + (portRef A1 (instanceRef rcnt_1)))) (net wcount_r3 (joined (portRef B1 (instanceRef empty_cmp_1)) - (portRef DO0 (instanceRef LUT4_15)))) + (portRef DO0 (instanceRef LUT4_15)) + (portRef A0 (instanceRef rcnt_2)))) (net rcount_2 (joined (portRef A0 (instanceRef empty_cmp_1)) - (portRef B (instanceRef XOR2_t6)) - (portRef A (instanceRef XOR2_t5)) + (portRef B (instanceRef XOR2_t8)) + (portRef A (instanceRef XOR2_t7)) (portRef Q (instanceRef FF_64)) (portRef D (instanceRef FF_48)) - (portRef A0 (instanceRef r_gctr_1)))) + (portRef A0 (instanceRef r_gctr_1)) + (portRef B1 (instanceRef rcnt_1)))) (net rcount_3 (joined (portRef A1 (instanceRef empty_cmp_1)) - (portRef B (instanceRef XOR2_t5)) - (portRef A (instanceRef XOR2_t4)) + (portRef B (instanceRef XOR2_t7)) + (portRef A (instanceRef XOR2_t6)) (portRef Q (instanceRef FF_63)) (portRef D (instanceRef FF_47)) - (portRef A1 (instanceRef r_gctr_1)))) + (portRef A1 (instanceRef r_gctr_1)) + (portRef B0 (instanceRef rcnt_2)))) (net co1_3 (joined (portRef CIN (instanceRef empty_cmp_2)) @@ -2123,28 +2128,32 @@ (portRef B0 (instanceRef empty_cmp_2)) (portRef DO0 (instanceRef LUT4_19)) (portRef AD0 (instanceRef LUT4_13)) - (portRef AD3 (instanceRef LUT4_12)))) + (portRef AD3 (instanceRef LUT4_12)) + (portRef A1 (instanceRef rcnt_2)))) (net wcount_r5 (joined (portRef B1 (instanceRef empty_cmp_2)) (portRef DO0 (instanceRef LUT4_16)) - (portRef AD0 (instanceRef LUT4_14)))) + (portRef AD0 (instanceRef LUT4_14)) + (portRef A0 (instanceRef rcnt_3)))) (net rcount_4 (joined (portRef A0 (instanceRef empty_cmp_2)) - (portRef B (instanceRef XOR2_t4)) - (portRef A (instanceRef XOR2_t3)) + (portRef B (instanceRef XOR2_t6)) + (portRef A (instanceRef XOR2_t5)) (portRef Q (instanceRef FF_62)) (portRef D (instanceRef FF_46)) - (portRef A0 (instanceRef r_gctr_2)))) + (portRef A0 (instanceRef r_gctr_2)) + (portRef B1 (instanceRef rcnt_2)))) (net rcount_5 (joined (portRef A1 (instanceRef empty_cmp_2)) - (portRef B (instanceRef XOR2_t3)) - (portRef A (instanceRef XOR2_t2)) + (portRef B (instanceRef XOR2_t5)) + (portRef A (instanceRef XOR2_t4)) (portRef Q (instanceRef FF_61)) (portRef D (instanceRef FF_45)) - (portRef A1 (instanceRef r_gctr_2)))) + (portRef A1 (instanceRef r_gctr_2)) + (portRef B0 (instanceRef rcnt_3)))) (net co2_3 (joined (portRef CIN (instanceRef empty_cmp_3)) @@ -2153,7 +2162,8 @@ (joined (portRef B0 (instanceRef empty_cmp_3)) (portRef DO0 (instanceRef LUT4_17)) - (portRef AD0 (instanceRef LUT4_15)))) + (portRef AD0 (instanceRef LUT4_15)) + (portRef A1 (instanceRef rcnt_3)))) (net empty_cmp_clr (joined (portRef B1 (instanceRef empty_cmp_3)) @@ -2161,11 +2171,12 @@ (net rcount_6 (joined (portRef A0 (instanceRef empty_cmp_3)) - (portRef B (instanceRef XOR2_t2)) - (portRef A (instanceRef XOR2_t1)) + (portRef B (instanceRef XOR2_t4)) + (portRef A (instanceRef XOR2_t3)) (portRef Q (instanceRef FF_60)) (portRef D (instanceRef FF_44)) - (portRef A0 (instanceRef r_gctr_3)))) + (portRef A0 (instanceRef r_gctr_3)) + (portRef B1 (instanceRef rcnt_3)))) (net empty_cmp_set (joined (portRef A1 (instanceRef empty_cmp_3)) @@ -2178,6 +2189,36 @@ (joined (portRef CIN (instanceRef a0)) (portRef COUT (instanceRef empty_cmp_3)))) + (net wren_i + (joined + (portRef A1 (instanceRef full_cmp_ci_a)) + (portRef Z (instanceRef AND2_t19)) + (portRef CEW (instanceRef pdp_ram_0_0_0)) + (portRef SP (instanceRef FF_90)) + (portRef SP (instanceRef FF_89)) + (portRef SP (instanceRef FF_88)) + (portRef SP (instanceRef FF_87)) + (portRef SP (instanceRef FF_86)) + (portRef SP (instanceRef FF_85)) + (portRef SP (instanceRef FF_84)) + (portRef SP (instanceRef FF_83)) + (portRef SP (instanceRef FF_82)) + (portRef SP (instanceRef FF_81)) + (portRef SP (instanceRef FF_80)) + (portRef SP (instanceRef FF_79)) + (portRef SP (instanceRef FF_78)) + (portRef SP (instanceRef FF_77)) + (portRef SP (instanceRef FF_76)) + (portRef SP (instanceRef FF_75)) + (portRef SP (instanceRef FF_74)) + (portRef SP (instanceRef FF_73)) + (portRef SP (instanceRef FF_72)) + (portRef SP (instanceRef FF_71)) + (portRef SP (instanceRef FF_70)) + (portRef SP (instanceRef FF_69)) + (portRef SP (instanceRef FF_68)) + (portRef SP (instanceRef FF_67)) + (portRef B1 (instanceRef full_cmp_ci_a)))) (net cmp_ci_1 (joined (portRef CIN (instanceRef full_cmp_0)) @@ -2185,30 +2226,26 @@ (net rcount_w0 (joined (portRef B0 (instanceRef full_cmp_0)) - (portRef DO0 (instanceRef LUT4_4)) - (portRef B1 (instanceRef wcnt_0)))) + (portRef DO0 (instanceRef LUT4_4)))) (net rcount_w1 (joined (portRef B1 (instanceRef full_cmp_0)) - (portRef DO0 (instanceRef LUT4_5)) - (portRef B0 (instanceRef wcnt_1)))) + (portRef DO0 (instanceRef LUT4_5)))) (net wcount_0 (joined (portRef A0 (instanceRef full_cmp_0)) - (portRef A (instanceRef XOR2_t14)) + (portRef A (instanceRef XOR2_t16)) (portRef Q (instanceRef FF_90)) (portRef D (instanceRef FF_74)) - (portRef A0 (instanceRef w_gctr_0)) - (portRef A1 (instanceRef wcnt_0)))) + (portRef A0 (instanceRef w_gctr_0)))) (net wcount_1 (joined (portRef A1 (instanceRef full_cmp_0)) - (portRef B (instanceRef XOR2_t14)) - (portRef A (instanceRef XOR2_t13)) + (portRef B (instanceRef XOR2_t16)) + (portRef A (instanceRef XOR2_t15)) (portRef Q (instanceRef FF_89)) (portRef D (instanceRef FF_73)) - (portRef A1 (instanceRef w_gctr_0)) - (portRef A0 (instanceRef wcnt_1)))) + (portRef A1 (instanceRef w_gctr_0)))) (net co0_4 (joined (portRef CIN (instanceRef full_cmp_1)) @@ -2216,31 +2253,27 @@ (net rcount_w2 (joined (portRef B0 (instanceRef full_cmp_1)) - (portRef DO0 (instanceRef LUT4_6)) - (portRef B1 (instanceRef wcnt_1)))) + (portRef DO0 (instanceRef LUT4_6)))) (net rcount_w3 (joined (portRef B1 (instanceRef full_cmp_1)) - (portRef DO0 (instanceRef LUT4_7)) - (portRef B0 (instanceRef wcnt_2)))) + (portRef DO0 (instanceRef LUT4_7)))) (net wcount_2 (joined (portRef A0 (instanceRef full_cmp_1)) - (portRef B (instanceRef XOR2_t13)) - (portRef A (instanceRef XOR2_t12)) + (portRef B (instanceRef XOR2_t15)) + (portRef A (instanceRef XOR2_t14)) (portRef Q (instanceRef FF_88)) (portRef D (instanceRef FF_72)) - (portRef A0 (instanceRef w_gctr_1)) - (portRef A1 (instanceRef wcnt_1)))) + (portRef A0 (instanceRef w_gctr_1)))) (net wcount_3 (joined (portRef A1 (instanceRef full_cmp_1)) - (portRef B (instanceRef XOR2_t12)) - (portRef A (instanceRef XOR2_t11)) + (portRef B (instanceRef XOR2_t14)) + (portRef A (instanceRef XOR2_t13)) (portRef Q (instanceRef FF_87)) (portRef D (instanceRef FF_71)) - (portRef A1 (instanceRef w_gctr_1)) - (portRef A0 (instanceRef wcnt_2)))) + (portRef A1 (instanceRef w_gctr_1)))) (net co1_4 (joined (portRef CIN (instanceRef full_cmp_2)) @@ -2250,32 +2283,28 @@ (portRef B0 (instanceRef full_cmp_2)) (portRef DO0 (instanceRef LUT4_11)) (portRef AD0 (instanceRef LUT4_5)) - (portRef AD3 (instanceRef LUT4_4)) - (portRef B1 (instanceRef wcnt_2)))) + (portRef AD3 (instanceRef LUT4_4)))) (net rcount_w5 (joined (portRef B1 (instanceRef full_cmp_2)) (portRef DO0 (instanceRef LUT4_8)) - (portRef AD0 (instanceRef LUT4_6)) - (portRef B0 (instanceRef wcnt_3)))) + (portRef AD0 (instanceRef LUT4_6)))) (net wcount_4 (joined (portRef A0 (instanceRef full_cmp_2)) - (portRef B (instanceRef XOR2_t11)) - (portRef A (instanceRef XOR2_t10)) + (portRef B (instanceRef XOR2_t13)) + (portRef A (instanceRef XOR2_t12)) (portRef Q (instanceRef FF_86)) (portRef D (instanceRef FF_70)) - (portRef A0 (instanceRef w_gctr_2)) - (portRef A1 (instanceRef wcnt_2)))) + (portRef A0 (instanceRef w_gctr_2)))) (net wcount_5 (joined (portRef A1 (instanceRef full_cmp_2)) - (portRef B (instanceRef XOR2_t10)) - (portRef A (instanceRef XOR2_t9)) + (portRef B (instanceRef XOR2_t12)) + (portRef A (instanceRef XOR2_t11)) (portRef Q (instanceRef FF_85)) (portRef D (instanceRef FF_69)) - (portRef A1 (instanceRef w_gctr_2)) - (portRef A0 (instanceRef wcnt_3)))) + (portRef A1 (instanceRef w_gctr_2)))) (net co2_4 (joined (portRef CIN (instanceRef full_cmp_3)) @@ -2284,8 +2313,7 @@ (joined (portRef B0 (instanceRef full_cmp_3)) (portRef DO0 (instanceRef LUT4_9)) - (portRef AD0 (instanceRef LUT4_7)) - (portRef B1 (instanceRef wcnt_3)))) + (portRef AD0 (instanceRef LUT4_7)))) (net full_cmp_clr (joined (portRef B1 (instanceRef full_cmp_3)) @@ -2293,12 +2321,11 @@ (net wcount_6 (joined (portRef A0 (instanceRef full_cmp_3)) - (portRef B (instanceRef XOR2_t9)) - (portRef A (instanceRef XOR2_t8)) + (portRef B (instanceRef XOR2_t11)) + (portRef A (instanceRef XOR2_t10)) (portRef Q (instanceRef FF_84)) (portRef D (instanceRef FF_68)) - (portRef A0 (instanceRef w_gctr_3)) - (portRef A1 (instanceRef wcnt_3)))) + (portRef A0 (instanceRef w_gctr_3)))) (net full_cmp_set (joined (portRef A1 (instanceRef full_cmp_3)) @@ -2311,95 +2338,93 @@ (joined (portRef CIN (instanceRef a1)) (portRef COUT (instanceRef full_cmp_3)))) - (net wren_i + (net rden_i (joined - (portRef A1 (instanceRef af_d_cmp_ci_a)) - (portRef Z (instanceRef AND2_t17)) - (portRef CEW (instanceRef pdp_ram_0_0_0)) - (portRef SP (instanceRef FF_90)) - (portRef SP (instanceRef FF_89)) - (portRef SP (instanceRef FF_88)) - (portRef SP (instanceRef FF_87)) - (portRef SP (instanceRef FF_86)) - (portRef SP (instanceRef FF_85)) - (portRef SP (instanceRef FF_84)) - (portRef SP (instanceRef FF_83)) - (portRef SP (instanceRef FF_82)) - (portRef SP (instanceRef FF_81)) - (portRef SP (instanceRef FF_80)) - (portRef SP (instanceRef FF_79)) - (portRef SP (instanceRef FF_78)) - (portRef SP (instanceRef FF_77)) - (portRef SP (instanceRef FF_76)) - (portRef SP (instanceRef FF_75)) - (portRef SP (instanceRef FF_74)) - (portRef SP (instanceRef FF_73)) - (portRef SP (instanceRef FF_72)) - (portRef SP (instanceRef FF_71)) - (portRef SP (instanceRef FF_70)) - (portRef SP (instanceRef FF_69)) - (portRef SP (instanceRef FF_68)) - (portRef SP (instanceRef FF_67)) - (portRef B1 (instanceRef full_cmp_ci_a)) - (portRef A1 (instanceRef full_cmp_ci_a)) - (portRef B1 (instanceRef af_d_cmp_ci_a)))) - (net x - (joined - (portRef CIN (instanceRef af_d_cmp_ci_a)) - (portRef CIN (instanceRef w_gctr_cia)) - (portRef CIN (instanceRef r_gctr_cia)) - (portRef CIN (instanceRef precin_inst284)) - (portRef CIN (instanceRef empty_cmp_ci_a)) - (portRef CIN (instanceRef full_cmp_ci_a)))) + (portRef A1 (instanceRef ae_cmp_ci_a)) + (portRef Z (instanceRef AND2_t18)) + (portRef CSR0 (instanceRef pdp_ram_0_0_0)) + (portRef SP (instanceRef FF_66)) + (portRef SP (instanceRef FF_65)) + (portRef SP (instanceRef FF_64)) + (portRef SP (instanceRef FF_63)) + (portRef SP (instanceRef FF_62)) + (portRef SP (instanceRef FF_61)) + (portRef SP (instanceRef FF_60)) + (portRef SP (instanceRef FF_59)) + (portRef SP (instanceRef FF_58)) + (portRef SP (instanceRef FF_57)) + (portRef SP (instanceRef FF_56)) + (portRef SP (instanceRef FF_55)) + (portRef SP (instanceRef FF_54)) + (portRef SP (instanceRef FF_53)) + (portRef SP (instanceRef FF_52)) + (portRef SP (instanceRef FF_51)) + (portRef SP (instanceRef FF_50)) + (portRef SP (instanceRef FF_49)) + (portRef SP (instanceRef FF_48)) + (portRef SP (instanceRef FF_47)) + (portRef SP (instanceRef FF_46)) + (portRef SP (instanceRef FF_45)) + (portRef SP (instanceRef FF_44)) + (portRef SP (instanceRef FF_43)) + (portRef B1 (instanceRef empty_cmp_ci_a)) + (portRef A1 (instanceRef empty_cmp_ci_a)) + (portRef B1 (instanceRef ae_cmp_ci_a)))) (net cmp_ci_2 (joined - (portRef CIN (instanceRef af_d_cmp_0)) - (portRef COUT (instanceRef af_d_cmp_ci_a)))) - (net wcnt_reg_0 + (portRef CIN (instanceRef ae_cmp_0)) + (portRef COUT (instanceRef ae_cmp_ci_a)))) + (net rcnt_reg_0 (joined - (portRef A0 (instanceRef af_d_cmp_0)) + (portRef B0 (instanceRef ae_cmp_0)) (portRef Q (instanceRef FF_10)))) - (net wcnt_reg_1 + (net rcnt_reg_1 (joined - (portRef A1 (instanceRef af_d_cmp_0)) + (portRef B1 (instanceRef ae_cmp_0)) (portRef Q (instanceRef FF_9)))) (net co0_5 (joined - (portRef CIN (instanceRef af_d_cmp_1)) - (portRef COUT (instanceRef af_d_cmp_0)))) - (net wcnt_reg_2 + (portRef CIN (instanceRef ae_cmp_1)) + (portRef COUT (instanceRef ae_cmp_0)))) + (net rcnt_reg_2 (joined - (portRef A0 (instanceRef af_d_cmp_1)) + (portRef B0 (instanceRef ae_cmp_1)) (portRef Q (instanceRef FF_8)))) - (net wcnt_reg_3 + (net rcnt_reg_3 (joined - (portRef A1 (instanceRef af_d_cmp_1)) + (portRef B1 (instanceRef ae_cmp_1)) (portRef Q (instanceRef FF_7)))) (net co1_5 (joined - (portRef CIN (instanceRef af_d_cmp_2)) - (portRef COUT (instanceRef af_d_cmp_1)))) - (net wcnt_reg_4 + (portRef CIN (instanceRef ae_cmp_2)) + (portRef COUT (instanceRef ae_cmp_1)))) + (net rcnt_reg_4 (joined - (portRef A0 (instanceRef af_d_cmp_2)) + (portRef B0 (instanceRef ae_cmp_2)) (portRef Q (instanceRef FF_6)))) - (net wcnt_reg_5 + (net rcnt_reg_5 (joined - (portRef A1 (instanceRef af_d_cmp_2)) + (portRef B1 (instanceRef ae_cmp_2)) (portRef Q (instanceRef FF_5)))) (net co2_5 (joined - (portRef CIN (instanceRef af_d_cmp_3)) - (portRef COUT (instanceRef af_d_cmp_2)))) - (net wcnt_reg_6 + (portRef CIN (instanceRef ae_cmp_3)) + (portRef COUT (instanceRef ae_cmp_2)))) + (net rcnt_reg_6 (joined - (portRef A0 (instanceRef af_d_cmp_3)) + (portRef B0 (instanceRef ae_cmp_3)) + (portRef A (instanceRef INV_0)) + (portRef B (instanceRef AND2_t0)) (portRef Q (instanceRef FF_4)))) - (net wcnt_reg_7 + (net ae_clrsig (joined - (portRef A1 (instanceRef af_d_cmp_3)) - (portRef Q (instanceRef FF_3)))) - (net af_d + (portRef B1 (instanceRef ae_cmp_3)) + (portRef Z (instanceRef AND2_t1)))) + (net ae_setsig + (joined + (portRef A1 (instanceRef ae_cmp_3)) + (portRef Z (instanceRef AND2_t0)))) + (net ae_d (joined (portRef S0 (instanceRef a2)) (portRef D (instanceRef FF_0)))) @@ -2465,27 +2490,27 @@ (portRef B0 (instanceRef precin_inst284)) (portRef A1 (instanceRef precin_inst284)) (portRef A0 (instanceRef precin_inst284)) - (portRef C1 (instanceRef wcnt_0)) - (portRef C0 (instanceRef wcnt_0)) - (portRef D1 (instanceRef wcnt_0)) - (portRef D0 (instanceRef wcnt_0)) - (portRef A0 (instanceRef wcnt_0)) - (portRef C1 (instanceRef wcnt_1)) - (portRef C0 (instanceRef wcnt_1)) - (portRef D1 (instanceRef wcnt_1)) - (portRef D0 (instanceRef wcnt_1)) - (portRef C1 (instanceRef wcnt_2)) - (portRef C0 (instanceRef wcnt_2)) - (portRef D1 (instanceRef wcnt_2)) - (portRef D0 (instanceRef wcnt_2)) - (portRef C1 (instanceRef wcnt_3)) - (portRef C0 (instanceRef wcnt_3)) - (portRef D1 (instanceRef wcnt_3)) - (portRef D0 (instanceRef wcnt_3)) - (portRef C1 (instanceRef wcnt_4)) - (portRef C0 (instanceRef wcnt_4)) - (portRef D1 (instanceRef wcnt_4)) - (portRef D0 (instanceRef wcnt_4)) + (portRef C1 (instanceRef rcnt_0)) + (portRef C0 (instanceRef rcnt_0)) + (portRef D1 (instanceRef rcnt_0)) + (portRef D0 (instanceRef rcnt_0)) + (portRef A0 (instanceRef rcnt_0)) + (portRef C1 (instanceRef rcnt_1)) + (portRef C0 (instanceRef rcnt_1)) + (portRef D1 (instanceRef rcnt_1)) + (portRef D0 (instanceRef rcnt_1)) + (portRef C1 (instanceRef rcnt_2)) + (portRef C0 (instanceRef rcnt_2)) + (portRef D1 (instanceRef rcnt_2)) + (portRef D0 (instanceRef rcnt_2)) + (portRef C1 (instanceRef rcnt_3)) + (portRef C0 (instanceRef rcnt_3)) + (portRef D1 (instanceRef rcnt_3)) + (portRef D0 (instanceRef rcnt_3)) + (portRef C1 (instanceRef rcnt_4)) + (portRef C0 (instanceRef rcnt_4)) + (portRef D1 (instanceRef rcnt_4)) + (portRef D0 (instanceRef rcnt_4)) (portRef C1 (instanceRef empty_cmp_ci_a)) (portRef C0 (instanceRef empty_cmp_ci_a)) (portRef D1 (instanceRef empty_cmp_ci_a)) @@ -2534,26 +2559,26 @@ (portRef C0 (instanceRef a1)) (portRef D1 (instanceRef a1)) (portRef D0 (instanceRef a1)) - (portRef C1 (instanceRef af_d_cmp_ci_a)) - (portRef C0 (instanceRef af_d_cmp_ci_a)) - (portRef D1 (instanceRef af_d_cmp_ci_a)) - (portRef D0 (instanceRef af_d_cmp_ci_a)) - (portRef D1 (instanceRef af_d_cmp_0)) - (portRef D0 (instanceRef af_d_cmp_0)) - (portRef C1 (instanceRef af_d_cmp_0)) - (portRef C0 (instanceRef af_d_cmp_0)) - (portRef D1 (instanceRef af_d_cmp_1)) - (portRef D0 (instanceRef af_d_cmp_1)) - (portRef C1 (instanceRef af_d_cmp_1)) - (portRef C0 (instanceRef af_d_cmp_1)) - (portRef D1 (instanceRef af_d_cmp_2)) - (portRef D0 (instanceRef af_d_cmp_2)) - (portRef C1 (instanceRef af_d_cmp_2)) - (portRef C0 (instanceRef af_d_cmp_2)) - (portRef D1 (instanceRef af_d_cmp_3)) - (portRef D0 (instanceRef af_d_cmp_3)) - (portRef C1 (instanceRef af_d_cmp_3)) - (portRef C0 (instanceRef af_d_cmp_3)) + (portRef C1 (instanceRef ae_cmp_ci_a)) + (portRef C0 (instanceRef ae_cmp_ci_a)) + (portRef D1 (instanceRef ae_cmp_ci_a)) + (portRef D0 (instanceRef ae_cmp_ci_a)) + (portRef D1 (instanceRef ae_cmp_0)) + (portRef D0 (instanceRef ae_cmp_0)) + (portRef C1 (instanceRef ae_cmp_0)) + (portRef C0 (instanceRef ae_cmp_0)) + (portRef D1 (instanceRef ae_cmp_1)) + (portRef D0 (instanceRef ae_cmp_1)) + (portRef C1 (instanceRef ae_cmp_1)) + (portRef C0 (instanceRef ae_cmp_1)) + (portRef D1 (instanceRef ae_cmp_2)) + (portRef D0 (instanceRef ae_cmp_2)) + (portRef C1 (instanceRef ae_cmp_2)) + (portRef C0 (instanceRef ae_cmp_2)) + (portRef D1 (instanceRef ae_cmp_3)) + (portRef D0 (instanceRef ae_cmp_3)) + (portRef C1 (instanceRef ae_cmp_3)) + (portRef C0 (instanceRef ae_cmp_3)) (portRef C1 (instanceRef a2)) (portRef C0 (instanceRef a2)) (portRef D1 (instanceRef a2)) @@ -2608,10 +2633,10 @@ (portRef B0 (instanceRef r_gctr_2)) (portRef B1 (instanceRef r_gctr_3)) (portRef B0 (instanceRef r_gctr_3)) - (portRef B0 (instanceRef wcnt_0)) - (portRef B1 (instanceRef wcnt_4)) - (portRef B0 (instanceRef wcnt_4)) - (portRef A1 (instanceRef wcnt_4)) + (portRef B0 (instanceRef rcnt_0)) + (portRef B1 (instanceRef rcnt_4)) + (portRef B0 (instanceRef rcnt_4)) + (portRef A1 (instanceRef rcnt_4)) (portRef B0 (instanceRef empty_cmp_ci_a)) (portRef A0 (instanceRef empty_cmp_ci_a)) (portRef B1 (instanceRef a0)) @@ -2624,31 +2649,30 @@ (portRef B0 (instanceRef a1)) (portRef A1 (instanceRef a1)) (portRef A0 (instanceRef a1)) - (portRef B0 (instanceRef af_d_cmp_ci_a)) - (portRef A0 (instanceRef af_d_cmp_ci_a)) - (portRef B1 (instanceRef af_d_cmp_3)) + (portRef B0 (instanceRef ae_cmp_ci_a)) + (portRef A0 (instanceRef ae_cmp_ci_a)) (portRef B1 (instanceRef a2)) (portRef B0 (instanceRef a2)) (portRef A1 (instanceRef a2)) (portRef A0 (instanceRef a2)))) - (net af_d_c + (net ae_d_c (joined (portRef CIN (instanceRef a2)) - (portRef COUT (instanceRef af_d_cmp_3)))) - (net partial_full + (portRef COUT (instanceRef ae_cmp_3)))) + (net partial_empty (joined - (portRef AlmostFull) + (portRef AlmostEmpty) (portRef Q (instanceRef FF_0)))) (net Full (joined (portRef Full) (portRef Q (instanceRef FF_1)) - (portRef A (instanceRef INV_1)))) + (portRef A (instanceRef INV_2)))) (net Empty (joined (portRef Empty) (portRef Q (instanceRef FF_2)) - (portRef A (instanceRef INV_0)))) + (portRef A (instanceRef INV_1)))) (net dataout35 (joined (portRef (member Q 0)) @@ -2793,42 +2817,42 @@ (joined (portRef (member Q 35)) (portRef DO18 (instanceRef pdp_ram_0_0_0)))) - (net AmFullThresh6 + (net AmEmptyThresh6 (joined - (portRef (member AmFullThresh 0)) - (portRef B0 (instanceRef af_d_cmp_3)))) - (net AmFullThresh5 + (portRef (member AmEmptyThresh 0)) + (portRef A0 (instanceRef ae_cmp_3)))) + (net AmEmptyThresh5 (joined - (portRef (member AmFullThresh 1)) - (portRef B1 (instanceRef af_d_cmp_2)))) - (net AmFullThresh4 + (portRef (member AmEmptyThresh 1)) + (portRef A1 (instanceRef ae_cmp_2)))) + (net AmEmptyThresh4 (joined - (portRef (member AmFullThresh 2)) - (portRef B0 (instanceRef af_d_cmp_2)))) - (net AmFullThresh3 + (portRef (member AmEmptyThresh 2)) + (portRef A0 (instanceRef ae_cmp_2)))) + (net AmEmptyThresh3 (joined - (portRef (member AmFullThresh 3)) - (portRef B1 (instanceRef af_d_cmp_1)))) - (net AmFullThresh2 + (portRef (member AmEmptyThresh 3)) + (portRef A1 (instanceRef ae_cmp_1)))) + (net AmEmptyThresh2 (joined - (portRef (member AmFullThresh 4)) - (portRef B0 (instanceRef af_d_cmp_1)))) - (net AmFullThresh1 + (portRef (member AmEmptyThresh 4)) + (portRef A0 (instanceRef ae_cmp_1)))) + (net AmEmptyThresh1 (joined - (portRef (member AmFullThresh 5)) - (portRef B1 (instanceRef af_d_cmp_0)))) - (net AmFullThresh0 + (portRef (member AmEmptyThresh 5)) + (portRef A1 (instanceRef ae_cmp_0)))) + (net AmEmptyThresh0 (joined - (portRef (member AmFullThresh 6)) - (portRef B0 (instanceRef af_d_cmp_0)))) + (portRef (member AmEmptyThresh 6)) + (portRef A0 (instanceRef ae_cmp_0)))) (net RPRst (joined (portRef RPReset) - (portRef B (instanceRef OR2_t15)))) + (portRef B (instanceRef OR2_t17)))) (net reset (joined (portRef Reset) - (portRef A (instanceRef OR2_t15)) + (portRef A (instanceRef OR2_t17)) (portRef RST (instanceRef pdp_ram_0_0_0)) (portRef PD (instanceRef FF_90)) (portRef CD (instanceRef FF_89)) @@ -2870,24 +2894,15 @@ (portRef CD (instanceRef FF_21)) (portRef CD (instanceRef FF_20)) (portRef CD (instanceRef FF_19)) - (portRef CD (instanceRef FF_10)) - (portRef CD (instanceRef FF_9)) - (portRef CD (instanceRef FF_8)) - (portRef CD (instanceRef FF_7)) - (portRef CD (instanceRef FF_6)) - (portRef CD (instanceRef FF_5)) - (portRef CD (instanceRef FF_4)) - (portRef CD (instanceRef FF_3)) - (portRef CD (instanceRef FF_1)) - (portRef CD (instanceRef FF_0)))) + (portRef CD (instanceRef FF_1)))) (net rden (joined (portRef RdEn) - (portRef A (instanceRef AND2_t16)))) + (portRef A (instanceRef AND2_t18)))) (net wren (joined (portRef WrEn) - (portRef A (instanceRef AND2_t17)))) + (portRef A (instanceRef AND2_t19)))) (net rclk (joined (portRef RdClock) @@ -2932,7 +2947,16 @@ (portRef CK (instanceRef FF_21)) (portRef CK (instanceRef FF_20)) (portRef CK (instanceRef FF_19)) - (portRef CK (instanceRef FF_2)))) + (portRef CK (instanceRef FF_10)) + (portRef CK (instanceRef FF_9)) + (portRef CK (instanceRef FF_8)) + (portRef CK (instanceRef FF_7)) + (portRef CK (instanceRef FF_6)) + (portRef CK (instanceRef FF_5)) + (portRef CK (instanceRef FF_4)) + (portRef CK (instanceRef FF_3)) + (portRef CK (instanceRef FF_2)) + (portRef CK (instanceRef FF_0)))) (net wclk (joined (portRef WrClock) @@ -2977,16 +3001,7 @@ (portRef CK (instanceRef FF_13)) (portRef CK (instanceRef FF_12)) (portRef CK (instanceRef FF_11)) - (portRef CK (instanceRef FF_10)) - (portRef CK (instanceRef FF_9)) - (portRef CK (instanceRef FF_8)) - (portRef CK (instanceRef FF_7)) - (portRef CK (instanceRef FF_6)) - (portRef CK (instanceRef FF_5)) - (portRef CK (instanceRef FF_4)) - (portRef CK (instanceRef FF_3)) - (portRef CK (instanceRef FF_1)) - (portRef CK (instanceRef FF_0)))) + (portRef CK (instanceRef FF_1)))) (net datain35 (joined (portRef (member Data 0)) diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.jhd b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.jhd index e69de29..2f1d423 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.jhd +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.jhd @@ -0,0 +1,2 @@ +VHDL_ENTITY_ONLY FIFO_DC_36x128_DynThr_OutReg DEFIN FIFO_DC_36x128_DynThr_OutReg.vhd +MODULE FIFO_DC_36x128_DynThr_OutReg DEFIN FIFO_DC_36x128_DynThr_OutReg.vhd diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.lpc b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.lpc index 4838502..c8484c7 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.lpc +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.lpc @@ -1,23 +1,23 @@ [Device] -Family=ecp5um -PartType=LFE5UM-85F -PartName=LFE5UM-85F-8MG285C +Family=ecp5um5g +PartType=LFE5UM5G-85F +PartName=LFE5UM5G-85F-8BG381C SpeedGrade=8 -Package=CSFBGA285 +Package=CABGA381 OperatingCondition=COM -Status=C +Status=P [IP] VendorName=Lattice Semiconductor Corporation CoreType=LPM CoreStatus=Demo CoreName=FIFO_DC -CoreRevision=5.7 +CoreRevision=5.8 ModuleName=FIFO_DC_36x128_DynThr_OutReg -SourceFormat=vhdl +SourceFormat=VHDL ParameterFileVersion=1.0 -Date=03/17/2015 -Time=15:27:13 +Date=07/06/2018 +Time=16:42:22 [Parameters] Verilog=0 @@ -35,11 +35,11 @@ RWidth=36 regout=1 ClockEn=0 CtrlByRdEn=0 -EmpFlg=0 -PeMode=Static - Dual Threshold +EmpFlg=1 +PeMode=Dynamic - Single Threshold PeAssert=10 PeDeassert=12 -FullFlg=1 +FullFlg=0 PfMode=Dynamic - Single Threshold PfAssert=508 PfDeassert=506 @@ -50,4 +50,4 @@ WDataCount=0 EnECC=0 [Command] -cmd_line= -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00m -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe -1 -pf 0 +cmd_line= -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00g -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe 0 -pf -1 diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.ngd b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.ngd index ff2a058ebf6610b724718a93ce7391770b2486dd..e3fea9ac24af1e2903d8aa9b5cb0dd6e6f6668d8 100644 GIT binary patch literal 139819 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

S|km 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 diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.ngo b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg.ngo index a8d344f0fdbc0ebd8949694b467fbca8d849eb04..dc564a930003e6754874d19a840c9ed1fb5d6fe9 100644 GIT binary patch literal 54197 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, B=>invout_1, Z=>wren_i); - INV_1: INV + INV_2: INV port map (A=>full_i, Z=>invout_1); - AND2_t16: AND2 + AND2_t18: AND2 port map (A=>RdEn, B=>invout_0, Z=>rden_i); - INV_0: INV + INV_1: INV port map (A=>empty_i, Z=>invout_0); - OR2_t15: OR2 + OR2_t17: OR2 port map (A=>Reset, B=>RPReset, Z=>rRst); - XOR2_t14: XOR2 + XOR2_t16: XOR2 port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); - XOR2_t13: XOR2 + XOR2_t15: XOR2 port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); - XOR2_t12: XOR2 + XOR2_t14: XOR2 port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); - XOR2_t11: XOR2 + XOR2_t13: XOR2 port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); - XOR2_t10: XOR2 + XOR2_t12: XOR2 port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); - XOR2_t9: XOR2 + XOR2_t11: XOR2 port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); - XOR2_t8: XOR2 + XOR2_t10: XOR2 port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); - XOR2_t7: XOR2 + XOR2_t9: XOR2 port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); - XOR2_t6: XOR2 + XOR2_t8: XOR2 port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); - XOR2_t5: XOR2 + XOR2_t7: XOR2 port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); - XOR2_t4: XOR2 + XOR2_t6: XOR2 port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); - XOR2_t3: XOR2 + XOR2_t5: XOR2 port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); - XOR2_t2: XOR2 + XOR2_t4: XOR2 port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); - XOR2_t1: XOR2 + XOR2_t3: XOR2 port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); LUT4_19: ROM16X1A @@ -461,8 +464,8 @@ begin port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w0); - XOR2_t0: XOR2 - port map (A=>wcount_7, B=>r_gcount_w27, Z=>wcnt_sub_msb); + XOR2_t2: XOR2 + port map (A=>w_gcount_r27, B=>rcount_7, Z=>rcnt_sub_msb); LUT4_3: ROM16X1A generic map (initval=> X"0410") @@ -484,6 +487,15 @@ begin port map (AD3=>wptr_7, AD2=>wcount_7, AD1=>r_gcount_w27, AD0=>scuba_vlo, DO0=>full_cmp_clr); + INV_0: INV + port map (A=>rcnt_reg_6, Z=>rcnt_reg_6_inv); + + AND2_t1: AND2 + port map (A=>rcnt_reg_7, B=>rcnt_reg_6_inv, Z=>ae_clrsig); + + AND2_t0: AND2 + port map (A=>rcnt_reg_7, B=>rcnt_reg_6, Z=>ae_setsig); + pdp_ram_0_0_0: PDPW16KD generic map (INIT_DATA=> "STATIC", ASYNC_RESET_RELEASE=> "SYNC", CSDECODE_R=> "0b001", CSDECODE_W=> "0b001", GSR=> "ENABLED", @@ -817,28 +829,28 @@ begin port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); FF_10: FD1S3DX - port map (D=>wcnt_sub_0, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_0); + port map (D=>rcnt_sub_0, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_0); FF_9: FD1S3DX - port map (D=>wcnt_sub_1, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_1); + port map (D=>rcnt_sub_1, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_1); FF_8: FD1S3DX - port map (D=>wcnt_sub_2, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_2); + port map (D=>rcnt_sub_2, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_2); FF_7: FD1S3DX - port map (D=>wcnt_sub_3, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_3); + port map (D=>rcnt_sub_3, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_3); FF_6: FD1S3DX - port map (D=>wcnt_sub_4, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_4); + port map (D=>rcnt_sub_4, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_4); FF_5: FD1S3DX - port map (D=>wcnt_sub_5, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_5); + port map (D=>rcnt_sub_5, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_5); FF_4: FD1S3DX - port map (D=>wcnt_sub_6, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_6); + port map (D=>rcnt_sub_6, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_6); FF_3: FD1S3DX - port map (D=>wcnt_sub_7, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_7); + port map (D=>rcnt_sub_7, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_7); FF_2: FD1S3BX port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); @@ -846,8 +858,8 @@ begin FF_1: FD1S3DX port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); - FF_0: FD1S3DX - port map (D=>af_d, CK=>WrClock, CD=>Reset, Q=>AlmostFull); + FF_0: FD1S3BX + port map (D=>ae_d, CK=>RdClock, PD=>rRst, Q=>AlmostEmpty); w_gctr_cia: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"66AA", @@ -934,44 +946,44 @@ begin B1=>scuba_vhi, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, D1=>scuba_vhi, CIN=>'X', S0=>open, S1=>open, COUT=>precin); - wcnt_0: CCU2C + rcnt_0: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>scuba_vhi, A1=>wcount_0, B0=>scuba_vlo, - B1=>rcount_w0, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, - D1=>scuba_vhi, CIN=>precin, S0=>open, S1=>wcnt_sub_0, + port map (A0=>scuba_vhi, A1=>wcount_r0, B0=>scuba_vlo, + B1=>rcount_0, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, + D1=>scuba_vhi, CIN=>precin, S0=>open, S1=>rcnt_sub_0, COUT=>co0_2); - wcnt_1: CCU2C + rcnt_1: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcount_1, A1=>wcount_2, B0=>rcount_w1, - B1=>rcount_w2, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, - D1=>scuba_vhi, CIN=>co0_2, S0=>wcnt_sub_1, S1=>wcnt_sub_2, + port map (A0=>wcount_r1, A1=>wcount_r2, B0=>rcount_1, + B1=>rcount_2, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, + D1=>scuba_vhi, CIN=>co0_2, S0=>rcnt_sub_1, S1=>rcnt_sub_2, COUT=>co1_2); - wcnt_2: CCU2C + rcnt_2: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcount_3, A1=>wcount_4, B0=>rcount_w3, - B1=>r_g2b_xor_cluster_0, C0=>scuba_vhi, C1=>scuba_vhi, - D0=>scuba_vhi, D1=>scuba_vhi, CIN=>co1_2, S0=>wcnt_sub_3, - S1=>wcnt_sub_4, COUT=>co2_2); + port map (A0=>wcount_r3, A1=>w_g2b_xor_cluster_0, B0=>rcount_3, + B1=>rcount_4, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, + D1=>scuba_vhi, CIN=>co1_2, S0=>rcnt_sub_3, S1=>rcnt_sub_4, + COUT=>co2_2); - wcnt_3: CCU2C + rcnt_3: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcount_5, A1=>wcount_6, B0=>rcount_w5, - B1=>rcount_w6, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, - D1=>scuba_vhi, CIN=>co2_2, S0=>wcnt_sub_5, S1=>wcnt_sub_6, + port map (A0=>wcount_r5, A1=>wcount_r6, B0=>rcount_5, + B1=>rcount_6, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, + D1=>scuba_vhi, CIN=>co2_2, S0=>rcnt_sub_5, S1=>rcnt_sub_6, COUT=>co3_2); - wcnt_4: CCU2C + rcnt_4: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcnt_sub_msb, A1=>scuba_vlo, B0=>scuba_vlo, + port map (A0=>rcnt_sub_msb, A1=>scuba_vlo, B0=>scuba_vlo, B1=>scuba_vlo, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, - D1=>scuba_vhi, CIN=>co3_2, S0=>wcnt_sub_7, S1=>open, + D1=>scuba_vhi, CIN=>co3_2, S0=>rcnt_sub_7, S1=>open, COUT=>open); empty_cmp_ci_a: CCU2C @@ -1063,43 +1075,43 @@ begin D1=>scuba_vhi, CIN=>full_d_c, S0=>full_d, S1=>open, COUT=>open); - af_d_cmp_ci_a: CCU2C + ae_cmp_ci_a: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"66AA", INIT0=> X"66AA") - port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, D1=>scuba_vhi, CIN=>'X', S0=>open, S1=>open, COUT=>cmp_ci_2); - af_d_cmp_0: CCU2C + ae_cmp_0: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcnt_reg_0, A1=>wcnt_reg_1, B0=>AmFullThresh(0), - B1=>AmFullThresh(1), C0=>scuba_vhi, C1=>scuba_vhi, + port map (A0=>AmEmptyThresh(0), A1=>AmEmptyThresh(1), + B0=>rcnt_reg_0, B1=>rcnt_reg_1, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, D1=>scuba_vhi, CIN=>cmp_ci_2, S0=>open, S1=>open, COUT=>co0_5); - af_d_cmp_1: CCU2C + ae_cmp_1: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcnt_reg_2, A1=>wcnt_reg_3, B0=>AmFullThresh(2), - B1=>AmFullThresh(3), C0=>scuba_vhi, C1=>scuba_vhi, + port map (A0=>AmEmptyThresh(2), A1=>AmEmptyThresh(3), + B0=>rcnt_reg_2, B1=>rcnt_reg_3, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, D1=>scuba_vhi, CIN=>co0_5, S0=>open, S1=>open, COUT=>co1_5); - af_d_cmp_2: CCU2C + ae_cmp_2: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcnt_reg_4, A1=>wcnt_reg_5, B0=>AmFullThresh(4), - B1=>AmFullThresh(5), C0=>scuba_vhi, C1=>scuba_vhi, + port map (A0=>AmEmptyThresh(4), A1=>AmEmptyThresh(5), + B0=>rcnt_reg_4, B1=>rcnt_reg_5, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, D1=>scuba_vhi, CIN=>co1_5, S0=>open, S1=>open, COUT=>co2_5); - af_d_cmp_3: CCU2C + ae_cmp_3: CCU2C generic map (INJECT1_1=> "NO", INJECT1_0=> "NO", INIT1=> X"99AA", INIT0=> X"99AA") - port map (A0=>wcnt_reg_6, A1=>wcnt_reg_7, B0=>AmFullThresh(6), - B1=>scuba_vlo, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, - D1=>scuba_vhi, CIN=>co2_5, S0=>open, S1=>open, COUT=>af_d_c); + port map (A0=>AmEmptyThresh(6), A1=>ae_setsig, B0=>rcnt_reg_6, + B1=>ae_clrsig, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, + D1=>scuba_vhi, CIN=>co2_5, S0=>open, S1=>open, COUT=>ae_d_c); scuba_vhi_inst: VHI port map (Z=>scuba_vhi); @@ -1112,7 +1124,7 @@ begin INIT0=> X"66AA") port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, B1=>scuba_vlo, C0=>scuba_vhi, C1=>scuba_vhi, D0=>scuba_vhi, - D1=>scuba_vhi, CIN=>af_d_c, S0=>af_d, S1=>open, COUT=>open); + D1=>scuba_vhi, CIN=>ae_d_c, S0=>ae_d, S1=>open, COUT=>open); Empty <= empty_i; Full <= full_i; diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_generate.log b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_generate.log index 3986559..c0cef45 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_generate.log +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_generate.log @@ -3,24 +3,24 @@ Starting process: Configuration data saved -SCUBA, Version Diamond (64-bit) 3.4.0.80 -Tue Mar 17 15:27:13 2015 +SCUBA, Version Diamond (64-bit) 3.9.1.119 +Fri Jul 6 16:42:22 2018 Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved. Copyright (c) 1995 AT&T Corp. All rights reserved. Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved. Copyright (c) 2001 Agere Systems All rights reserved. -Copyright (c) 2002-2014 Lattice Semiconductor Corporation, All rights reserved. +Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved. BEGIN SCUBA Module Synthesis - Issued command : /opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00m -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe -1 -pf 0 + Issued command : /d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00g -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe 0 -pf -1 Circuit name : FIFO_DC_36x128_DynThr_OutReg Module type : ebfifo - Module Version : 5.7 + Module Version : 5.8 Ports : - Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmFullThresh[6:0] - Outputs : Q[35:0], Empty, Full, AlmostFull + Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmEmptyThresh[6:0] + Outputs : Q[35:0], Empty, Full, AlmostEmpty I/O buffer : not inserted EDIF output : FIFO_DC_36x128_DynThr_OutReg.edn VHDL output : FIFO_DC_36x128_DynThr_OutReg.vhd @@ -30,7 +30,7 @@ BEGIN SCUBA Module Synthesis Bus notation : big endian Report output : FIFO_DC_36x128_DynThr_OutReg.srp Estimated Resource Usage: - LUT : 106 + LUT : 108 EBR : 1 Reg : 91 diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd index 45d014d..27d7158 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd @@ -1,6 +1,6 @@ --- VHDL module instantiation generated by SCUBA Diamond (64-bit) 3.4.0.80 --- Module Version: 5.7 --- Tue Mar 17 15:27:16 2015 +-- VHDL module instantiation generated by SCUBA Diamond (64-bit) 3.9.1.119 +-- Module Version: 5.8 +-- Fri Jul 6 16:42:28 2018 -- parameterized module component declaration component FIFO_DC_36x128_DynThr_OutReg @@ -8,13 +8,13 @@ component FIFO_DC_36x128_DynThr_OutReg WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; - AmFullThresh: in std_logic_vector(6 downto 0); + AmEmptyThresh: in std_logic_vector(6 downto 0); Q: out std_logic_vector(35 downto 0); Empty: out std_logic; - Full: out std_logic; AlmostFull: out std_logic); + Full: out std_logic; AlmostEmpty: out std_logic); end component; -- parameterized module component instance __ : FIFO_DC_36x128_DynThr_OutReg port map (Data(35 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, - RdEn=>__, Reset=>__, RPReset=>__, AmFullThresh(6 downto 0)=>__, - Q(35 downto 0)=>__, Empty=>__, Full=>__, AlmostFull=>__); + RdEn=>__, Reset=>__, RPReset=>__, AmEmptyThresh(6 downto 0)=>__, + Q(35 downto 0)=>__, Empty=>__, Full=>__, AlmostEmpty=>__); diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_core.tcl b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_core.tcl index 1f2afd3..be47d86 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_core.tcl +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_core.tcl @@ -88,13 +88,13 @@ set scuba "$Para(FPGAPath)/scuba" set modulename "FIFO_DC_36x128_DynThr_OutReg" set lang "vhdl" set lpcfile "$Para(sbp_path)/$modulename.lpc" -set arch "sa5p00m" +set arch "sa5p00g" set cmd_line [GetCmdLine $lpcfile] set fdcfile "$Para(sbp_path)/$modulename.fdc" if {[file exists $fdcfile] == 0} { append scuba " " $cmd_line } else { - append scuba " " $cmd_line " " -fdc " " $fdcfile + append scuba " " $cmd_line " " -fdc " " \"$fdcfile\" } set Para(result) [catch {eval exec "$scuba"} msg] #puts $msg diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_ngd.tcl b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_ngd.tcl index 8e87ae6..9b55da5 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_ngd.tcl +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/generate_ngd.tcl @@ -52,13 +52,13 @@ set Para(bin_dir) "[file join $Para(install_dir) bin $platformpath]" set Para(ModuleName) "FIFO_DC_36x128_DynThr_OutReg" set Para(Module) "FIFO_DC" -set Para(libname) ecp5um -set Para(arch_name) sa5p00m -set Para(PartType) "LFE5UM-85F" +set Para(libname) ecp5um5g +set Para(arch_name) sa5p00g +set Para(PartType) "LFE5UM5G-85F" -set Para(tech_syn) ecp5um -set Para(tech_cae) ecp5um -set Para(Package) "CSFBGA285" +set Para(tech_syn) ecp5um5g +set Para(tech_cae) ecp5um5g +set Para(Package) "CABGA381" set Para(SpeedGrade) "8" set Para(FMax) "100" set fdcfile "$Para(sbp_path)/$Para(ModuleName).fdc" diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/msg_file.log b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/msg_file.log index 4fd4900..27f8086 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/msg_file.log +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/msg_file.log @@ -1,21 +1,21 @@ -SCUBA, Version Diamond (64-bit) 3.4.0.80 -Tue Mar 17 15:27:13 2015 +SCUBA, Version Diamond (64-bit) 3.9.1.119 +Fri Jul 6 16:42:22 2018 Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved. Copyright (c) 1995 AT&T Corp. All rights reserved. Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved. Copyright (c) 2001 Agere Systems All rights reserved. -Copyright (c) 2002-2014 Lattice Semiconductor Corporation, All rights reserved. +Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved. BEGIN SCUBA Module Synthesis - Issued command : /opt/lattice/diamond/3.4_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00m -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe -1 -pf 0 + Issued command : /d/jspc29/lattice/diamond/3.9_x64/ispfpga/bin/lin64/scuba -w -n FIFO_DC_36x128_DynThr_OutReg -lang vhdl -synth synplify -bus_exp 7 -bb -arch sa5p00g -type ebfifo -depth 128 -width 36 -rwidth 36 -regout -no_enable -sync_reset -pe 0 -pf -1 Circuit name : FIFO_DC_36x128_DynThr_OutReg Module type : ebfifo - Module Version : 5.7 + Module Version : 5.8 Ports : - Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmFullThresh[6:0] - Outputs : Q[35:0], Empty, Full, AlmostFull + Inputs : Data[35:0], WrClock, RdClock, WrEn, RdEn, Reset, RPReset, AmEmptyThresh[6:0] + Outputs : Q[35:0], Empty, Full, AlmostEmpty I/O buffer : not inserted EDIF output : FIFO_DC_36x128_DynThr_OutReg.edn VHDL output : FIFO_DC_36x128_DynThr_OutReg.vhd @@ -25,7 +25,7 @@ BEGIN SCUBA Module Synthesis Bus notation : big endian Report output : FIFO_DC_36x128_DynThr_OutReg.srp Estimated Resource Usage: - LUT : 106 + LUT : 108 EBR : 1 Reg : 91 diff --git a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd index eb311c8..535809f 100644 --- a/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd +++ b/base/cores/ecp5/FIFO/FIFO_DC_36x128_DynThr_OutReg/tb_FIFO_DC_36x128_DynThr_OutReg_tmpl.vhd @@ -1,4 +1,4 @@ --- VHDL testbench template generated by SCUBA Diamond (64-bit) 3.4.0.80 +-- VHDL testbench template generated by SCUBA Diamond (64-bit) 3.9.1.119 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; @@ -17,9 +17,9 @@ architecture test of tb is port (Data : in std_logic_vector(35 downto 0); WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; - AmFullThresh : in std_logic_vector(6 downto 0); + AmEmptyThresh : in std_logic_vector(6 downto 0); Q : out std_logic_vector(35 downto 0); Empty: out std_logic; - Full: out std_logic; AlmostFull: out std_logic + Full: out std_logic; AlmostEmpty: out std_logic ); end component; @@ -30,17 +30,17 @@ architecture test of tb is signal RdEn: std_logic := '0'; signal Reset: std_logic := '0'; signal RPReset: std_logic := '0'; - signal AmFullThresh : std_logic_vector(6 downto 0) := (others => '0'); + signal AmEmptyThresh : std_logic_vector(6 downto 0) := (others => '0'); signal Q : std_logic_vector(35 downto 0); signal Empty: std_logic; signal Full: std_logic; - signal AlmostFull: std_logic; + signal AlmostEmpty: std_logic; begin u1 : FIFO_DC_36x128_DynThr_OutReg port map (Data => Data, WrClock => WrClock, RdClock => RdClock, WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, - AmFullThresh => AmFullThresh, Q => Q, Empty => Empty, Full => Full, - AlmostFull => AlmostFull + AmEmptyThresh => AmEmptyThresh, Q => Q, Empty => Empty, Full => Full, + AlmostEmpty => AlmostEmpty ); process diff --git a/releases/tdc_v2.3/Channel_200.vhd b/releases/tdc_v2.3/Channel_200.vhd index 091aff6..9bca469 100644 --- a/releases/tdc_v2.3/Channel_200.vhd +++ b/releases/tdc_v2.3/Channel_200.vhd @@ -68,7 +68,7 @@ architecture Channel_200 of Channel_200 is signal data_a : std_logic_vector(327-FPGA_TYPE*8 downto 0); signal data_b : std_logic_vector(327-FPGA_TYPE*8 downto 0); signal result : std_logic_vector(327-FPGA_TYPE*8 downto 0); - signal ff_array_en : std_logic; + signal ff_array_en : std_logic := '0'; -- hit detection signal result_2_r : std_logic := '0'; @@ -120,6 +120,7 @@ architecture Channel_200 of Channel_200 is signal ringBuffer_empty : std_logic; signal ringBuffer_full : std_logic; signal ringBuffer_almost_full_sync : std_logic; + signal ringBuffer_almost_empty : std_logic := '0'; signal ringBuffer_almost_full : std_logic := '0'; signal ringBuffer_almost_full_flag : std_logic := '0'; signal ringBuffer_wr_en : std_logic; @@ -376,9 +377,10 @@ begin -- Channel_200 CHAIN_DATA_OUT => chain ); -- end generate; - + assert RING_BUFFER_SIZE = 7 report "only ring buffer size 7 is available at the moment" severity error; + RingBuffer_128_dyn : if RING_BUFFER_SIZE = 7 generate - FIFO : FIFO_DC_36x128_DynThr_OutReg + FIFO : entity work.FIFO_DC_36x128_DynThr_OutReg port map ( Data => ringBuffer_data_in, WrClock => CLK_200, @@ -387,13 +389,15 @@ begin -- Channel_200 RdEn => ringBuffer_rd_en, Reset => RESET_100, RPReset => RESET_100, - AmFullThresh => RING_BUFFER_FULL_THRES_IN, + AmEmptyThresh => RING_BUFFER_FULL_THRES_IN, Q => ringBuffer_data_out, Empty => ringBuffer_empty, Full => ringBuffer_full, - AlmostFull => ringBuffer_almost_full); + AlmostEmpty => ringBuffer_almost_empty); end generate RingBuffer_128_dyn; + ringBuffer_almost_full <= not ringBuffer_almost_empty; + RingBuffer_64_dyn : if RING_BUFFER_SIZE = 5 generate FIFO : FIFO_DC_36x64_DynThr_OutReg port map ( @@ -459,8 +463,8 @@ begin -- Channel_200 AlmostFull => ringBuffer_almost_full); end generate RingBuffer_32; - ringBuffer_almost_full_sync <= ringBuffer_almost_full when rising_edge(CLK_100); - ringBuffer_rd_en <= ringBuffer_rd_data or ringBuffer_almost_full_sync when rising_edge(CLK_100); + ringBuffer_almost_full_sync <= ringBuffer_almost_full when rising_edge(CLK_100); + ringBuffer_rd_en <= ringBuffer_rd_data or (ringBuffer_almost_full and ringBuffer_almost_full_sync and not ringBuffer_rd_en) when rising_edge(CLK_100); FIFO_ALMOST_FULL_OUT <= ringBuffer_almost_full_flag; FifoAlmostEmptyFlag : process (CLK_100) @@ -470,7 +474,7 @@ begin -- Channel_200 ringBuffer_almost_full_flag <= '0'; elsif FSM_RD_STATE = READOUT_DATA_C then ringBuffer_almost_full_flag <= '0'; - elsif ringBuffer_almost_full_sync = '1' then + elsif ringBuffer_almost_full = '1' then ringBuffer_almost_full_flag <= '1'; end if; end if; -- 2.43.0