Bläddra i källkod

Добавлены обёртки для модулей Fifo, FifoCtrl и SpiM для каждого устройства. Fifo переключены в режим First Word Fallthrough

Anatoliy Chigirinskiy 1 år sedan
förälder
incheckning
a84aed2510
65 ändrade filer med 2986 tillägg och 2044 borttagningar
  1. 2 2
      src/src/FifoCtrl/Fifo16x3/Fifo16x3.ipc
  2. 119 109
      src/src/FifoCtrl/Fifo16x3/Fifo16x3.v
  3. 95 73
      src/src/FifoCtrl/Fifo16x3/Fifo16x3.vo
  4. 1 1
      src/src/FifoCtrl/Fifo16x3/Fifo16x3_tmp.v
  5. 119 109
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3.vg
  6. 35 35
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn.rpt.html
  7. 1 1
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_resource.html
  8. 1 1
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_rsc.xml
  9. 1 1
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_tmp.v
  10. 1 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/fifo_define.v
  11. 20 6
      src/src/FifoCtrl/FifoCtrl.v
  12. 2 2
      src/src/FifoCtrl/FifoDDS/FifoDDS.ipc
  13. 131 121
      src/src/FifoCtrl/FifoDDS/FifoDDS.v
  14. 97 75
      src/src/FifoCtrl/FifoDDS/FifoDDS.vo
  15. 1 1
      src/src/FifoCtrl/FifoDDS/FifoDDS_tmp.v
  16. 1 1
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FIFOHS.prj
  17. 3 3
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.log
  18. 131 121
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.vg
  19. 35 35
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html
  20. 1 1
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html
  21. 1 1
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_rsc.xml
  22. 1 1
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v
  23. 1 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/fifo_define.v
  24. 2 2
      src/src/FifoCtrl/FifoLMX/FifoLMX.ipc
  25. 236 215
      src/src/FifoCtrl/FifoLMX/FifoLMX.v
  26. 165 109
      src/src/FifoCtrl/FifoLMX/FifoLMX.vo
  27. 1 1
      src/src/FifoCtrl/FifoLMX/FifoLMX_tmp.v
  28. 1 1
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FIFOHS.prj
  29. 3 3
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.log
  30. 236 215
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.vg
  31. 25 25
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn.rpt.html
  32. 2 2
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_resource.html
  33. 1 1
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_rsc.xml
  34. 1 1
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_tmp.v
  35. 1 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/fifo_define.v
  36. 2 2
      src/src/FifoCtrl/FifoMax2870/FifoMax2870.ipc
  37. 154 146
      src/src/FifoCtrl/FifoMax2870/FifoMax2870.v
  38. 122 103
      src/src/FifoCtrl/FifoMax2870/FifoMax2870.vo
  39. 1 1
      src/src/FifoCtrl/FifoMax2870/FifoMax2870_tmp.v
  40. 1 1
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FIFOHS.prj
  41. 3 3
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.log
  42. 154 146
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.vg
  43. 28 28
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn.rpt.html
  44. 2 2
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_resource.html
  45. 1 1
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_rsc.xml
  46. 1 1
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_tmp.v
  47. 1 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/fifo_define.v
  48. 2 2
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.ipc
  49. 120 110
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.v
  50. 95 73
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.vo
  51. 1 1
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg_tmp.v
  52. 120 110
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg.vg
  53. 35 35
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn.rpt.html
  54. 1 1
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_resource.html
  55. 1 1
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_rsc.xml
  56. 1 1
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_tmp.v
  57. 1 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/fifo_define.v
  58. 95 0
      src/src/FifoCtrl/Wrappers/AttenuatorWrapper.v
  59. 95 0
      src/src/FifoCtrl/Wrappers/DDSWrapper.v
  60. 95 0
      src/src/FifoCtrl/Wrappers/DacWrapper.v
  61. 95 0
      src/src/FifoCtrl/Wrappers/LmxWrapper.v
  62. 95 0
      src/src/FifoCtrl/Wrappers/Max2870Wrapper.v
  63. 95 0
      src/src/FifoCtrl/Wrappers/PotWrapper.v
  64. 94 0
      src/src/FifoCtrl/Wrappers/ShifRegWrapper.v
  65. 1 1
      src/src/Top/TopSbTmsg.v

+ 2 - 2
src/src/FifoCtrl/Fifo16x3/Fifo16x3.ipc

@@ -17,7 +17,7 @@ ECCSelected=false
 EmptyClear=1
 EmptySet=1
 EnReset=true
-FirstWordFallThrough=false
+FirstWordFallThrough=true
 FullClear=1
 FullSet=1
 LANG=0
@@ -28,7 +28,7 @@ ReadDataWidth=16
 ReadDepth=2
 ResetSynchronization=true
 SSRAM=false
-StandardFIFO=true
+StandardFIFO=false
 Synthesis_tool=GowinSynthesis
 WriteDataNum=false
 WriteDataWidth=16

+ 119 - 109
src/src/FifoCtrl/Fifo16x3/Fifo16x3.v

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:55:54 2024
+//Thu Apr 25 16:04:59 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,119 +17,129 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-vahir674uzd2OiV3w+Bn5UM7bqyXNIfBVZd6eqmzcuorRygBunqP4eqIhVyXOS1sSnqfiX/x128w
-OswsCnNb9H26NFu2OM6ZKD2lja7iiBqBAZSG9YL+oppPlATFy282YLNHt4PWNohA2xmsXHf+33mZ
-MsgIQ/rjHRJeRnCETz1LqexF5DvqrAgpdDFY//lAHK2y1KyqlZZplE5j78p3tpKt/LPMdf76sK7s
-0JDCvuQDglmxMHRgsBu4q6EwvvtjwNCUH0wjRzbxzM1os4jZ+6JOo7SVnhOvJsX39yS5myt5iCc0
-8EBSw3ws65M+RdRy7NJQNObwF7BLw6n8P0l8og==
+W3HrOAkNrb9fyqeg7xkmFYNJEXf+2L4xAs1NganKSsLdhqtqnzGilurt3rhiuavKOthhpj0CIxX1
+ZedEQJHy1YoMcnQT/3ZR2V3s3tn5tIa0uYYmQ8HT3UmPy8pHZ9XT/zgb2OmdgjJxDOHxDE7oxPBw
+9cYYeTV+3m3U6h+r4eV1SJQSYMc4UjdcIpk/DWgts59MtW68EHUmHQxC7WbB6lq0/1Vwga5FznK/
++9xK15Qi3TKg78a8SyeARfBIq/ZyaIeoIf0QdOas+rARU4dzyqiiiy7sm42o4pyAR9PegR9hQGE7
+t/bYNDjO0d+SB5/il7zBD/3fBQDGuJm2Z5KM7Q==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=5808)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=6368)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
+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
 `pragma protect end_protected
 module Fifo16x3 (
   Data,

+ 95 - 73
src/src/FifoCtrl/Fifo16x3/Fifo16x3.vo

@@ -2,7 +2,7 @@
 //All rights reserved.
 //File Title: Post-PnR Simulation Model file
 //Tool Version: V1.9.9.02
-//Created Time: Wed Apr 24 12:55:54 2024
+//Created Time: Thu Apr 25 16:04:59 2024
 
 `timescale 100 ps/100 ps
 module Fifo16x3(
@@ -37,30 +37,30 @@ wire VCC;
 wire WrClk;
 wire WrEn;
 wire \fifo_inst/n20_5 ;
-wire \fifo_inst/n24_3 ;
-wire \fifo_inst/n167_3 ;
-wire \fifo_inst/n218_4 ;
+wire \fifo_inst/n26_4 ;
+wire \fifo_inst/n217_4 ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/rbin_num_next_0_9 ;
-wire \fifo_inst/rempty_val1 ;
+wire \fifo_inst/rempty_val_8 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
+wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
+wire [1:0] \fifo_inst/rbin_num_next ;
 wire [1:1] \fifo_inst/Equal.wbinnext ;
-wire [1:1] \fifo_inst/rbin_num_next ;
-wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [1:0] \fifo_inst/reset_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/rbin_num ;
+wire [1:0] \fifo_inst/Equal.rq1_wptr ;
+wire [1:0] \fifo_inst/Equal.rq2_wptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [0:0] \fifo_inst/Equal.wbin ;
@@ -82,39 +82,41 @@ LUT4 \fifo_inst/n20_s1  (
 	.F(\fifo_inst/n20_5 )
 );
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
-LUT2 \fifo_inst/n24_s0  (
-	.I0(Empty),
-	.I1(RdEn),
-	.F(\fifo_inst/n24_3 )
+LUT3 \fifo_inst/n26_s1  (
+	.I0(RdEn),
+	.I1(Empty),
+	.I2(\fifo_inst/rempty_val ),
+	.F(\fifo_inst/n26_4 )
+);
+defparam \fifo_inst/n26_s1 .INIT=8'h0E;
+LUT3 \fifo_inst/Equal.rgraynext_0_s0  (
+	.I0(\fifo_inst/rbin_num [0]),
+	.I1(\fifo_inst/rbin_num_next [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/Equal.rgraynext [0])
 );
-defparam \fifo_inst/n24_s0 .INIT=4'h4;
+defparam \fifo_inst/Equal.rgraynext_0_s0 .INIT=8'h1E;
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wgraynext [0])
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
-LUT2 \fifo_inst/n167_s0  (
-	.I0(\fifo_inst/rempty_val ),
-	.I1(\fifo_inst/reset_r [1]),
-	.F(\fifo_inst/n167_3 )
-);
-defparam \fifo_inst/n167_s0 .INIT=4'hE;
-LUT2 \fifo_inst/n218_s1  (
+LUT2 \fifo_inst/n217_s1  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val_7 ),
-	.F(\fifo_inst/n218_4 )
+	.F(\fifo_inst/n217_4 )
 );
-defparam \fifo_inst/n218_s1 .INIT=4'h4;
+defparam \fifo_inst/n217_s1 .INIT=4'h4;
 LUT4 \fifo_inst/rempty_val_s3  (
-	.I0(\fifo_inst/wptr [0]),
-	.I1(\fifo_inst/rptr [0]),
-	.I2(\fifo_inst/wptr [1]),
-	.I3(\fifo_inst/rbin_num [1]),
+	.I0(\fifo_inst/Equal.rq2_wptr [1]),
+	.I1(\fifo_inst/rempty_val_8 ),
+	.I2(\fifo_inst/Equal.rq2_wptr [0]),
+	.I3(\fifo_inst/rbin_num_next [0]),
 	.F(\fifo_inst/rempty_val )
 );
-defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h4221;
 LUT4 \fifo_inst/wfull_val_s3  (
 	.I0(\fifo_inst/wptr [0]),
 	.I1(\fifo_inst/wptr [1]),
@@ -131,8 +133,8 @@ LUT3 \fifo_inst/wfull_val1_s9  (
 );
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 LUT3 \fifo_inst/wfull_val1_s10  (
-	.I0(\fifo_inst/wfull_val1_0 ),
-	.I1(\fifo_inst/wfull_val_7 ),
+	.I0(\fifo_inst/wfull_val_7 ),
+	.I1(\fifo_inst/wfull_val1_0 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/wfull_val1_0 )
 );
@@ -145,48 +147,47 @@ LUT3 \fifo_inst/Full_d_s  (
 );
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 LUT3 \fifo_inst/Full_s8  (
-	.I0(\fifo_inst/Full_1 ),
-	.I1(\fifo_inst/wfull_val_7 ),
+	.I0(\fifo_inst/wfull_val_7 ),
+	.I1(\fifo_inst/Full_1 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/Full_1 )
 );
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
+LUT3 \fifo_inst/rbin_num_next_0_s5  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rbin_num_next [0])
+);
+defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
+LUT3 \fifo_inst/rbin_num_next_1_s2  (
+	.I0(\fifo_inst/rbin_num_next [0]),
+	.I1(\fifo_inst/rbin_num [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/rbin_num_next [1])
+);
+defparam \fifo_inst/rbin_num_next_1_s2 .INIT=8'hB4;
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.F(\fifo_inst/Equal.wbinnext_0_7 )
 );
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wbinnext [1])
 );
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
-LUT4 \fifo_inst/rbin_num_next_1_s3  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s3 .INIT=16'hBF40;
-LUT3 \fifo_inst/rbin_num_next_0_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next_0_9 )
-);
-defparam \fifo_inst/rbin_num_next_0_s4 .INIT=8'hB4;
-LUT4 \fifo_inst/Equal.rgraynext_0_s1  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext [0])
+LUT4 \fifo_inst/rempty_val_s4  (
+	.I0(\fifo_inst/Equal.rq2_wptr [0]),
+	.I1(\fifo_inst/Equal.rq2_wptr [1]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rempty_val_8 )
 );
-defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+defparam \fifo_inst/rempty_val_s4 .INIT=16'h871E;
 DFFP \fifo_inst/reset_r_0_s0  (
 	.D(GND),
 	.CLK(\fifo_inst/n4_6 ),
@@ -216,12 +217,40 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next_0_9 ),
+	.D(\fifo_inst/rbin_num_next [0]),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
+	.D(\fifo_inst/wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [1])
+);
+defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
+	.D(\fifo_inst/wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [0])
+);
+defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [1])
+);
+defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [0])
+);
+defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_0_s0  (
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.CLK(RdClk),
@@ -250,17 +279,10 @@ DFFC \fifo_inst/Equal.wbin_0_s0  (
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/rempty_val1_s0  (
-	.D(\fifo_inst/rempty_val ),
-	.CLK(RdClk),
-	.PRESET(\fifo_inst/n167_3 ),
-	.Q(\fifo_inst/rempty_val1 )
-);
-defparam \fifo_inst/rempty_val1_s0 .INIT=1'b1;
 DFFP \fifo_inst/Empty_s0  (
-	.D(\fifo_inst/rempty_val1 ),
+	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/n167_3 ),
+	.PRESET(\fifo_inst/reset_r [1]),
 	.Q(Empty)
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -281,7 +303,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val_7 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n218_4 ),
+	.PRESET(\fifo_inst/n217_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -295,7 +317,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n218_4 ),
+	.PRESET(\fifo_inst/n217_4 ),
 	.Q(\fifo_inst/Full_2 )
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -304,14 +326,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n24_3 ),
+	.CEB(\fifo_inst/n26_4 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, Data[15:0]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, GND, VCC, VCC}),
-	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [0], GND, GND, GND, GND}),
 	.DO({\fifo_inst/DO [31:16], Q[15:0]})
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;

+ 1 - 1
src/src/FifoCtrl/Fifo16x3/Fifo16x3_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:55:54 2024
+//Created Time: Thu Apr 25 16:04:59 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 119 - 109
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3.vg

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:55:54 2024
+//Thu Apr 25 16:04:59 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,119 +17,129 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-vahir674uzd2OiV3w+Bn5UM7bqyXNIfBVZd6eqmzcuorRygBunqP4eqIhVyXOS1sSnqfiX/x128w
-OswsCnNb9H26NFu2OM6ZKD2lja7iiBqBAZSG9YL+oppPlATFy282YLNHt4PWNohA2xmsXHf+33mZ
-MsgIQ/rjHRJeRnCETz1LqexF5DvqrAgpdDFY//lAHK2y1KyqlZZplE5j78p3tpKt/LPMdf76sK7s
-0JDCvuQDglmxMHRgsBu4q6EwvvtjwNCUH0wjRzbxzM1os4jZ+6JOo7SVnhOvJsX39yS5myt5iCc0
-8EBSw3ws65M+RdRy7NJQNObwF7BLw6n8P0l8og==
+W3HrOAkNrb9fyqeg7xkmFYNJEXf+2L4xAs1NganKSsLdhqtqnzGilurt3rhiuavKOthhpj0CIxX1
+ZedEQJHy1YoMcnQT/3ZR2V3s3tn5tIa0uYYmQ8HT3UmPy8pHZ9XT/zgb2OmdgjJxDOHxDE7oxPBw
+9cYYeTV+3m3U6h+r4eV1SJQSYMc4UjdcIpk/DWgts59MtW68EHUmHQxC7WbB6lq0/1Vwga5FznK/
++9xK15Qi3TKg78a8SyeARfBIq/ZyaIeoIf0QdOas+rARU4dzyqiiiy7sm42o4pyAR9PegR9hQGE7
+t/bYNDjO0d+SB5/il7zBD/3fBQDGuJm2Z5KM7Q==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=5808)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=6368)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
+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
 `pragma protect end_protected
 module Fifo16x3 (
   Data,

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 35 - 35
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn.rpt.html


+ 1 - 1
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_resource.html

@@ -31,7 +31,7 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 </tr>
 <tr>
 <td class="label">Fifo16x3 (C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
-<td align = "center">16</td>
+<td align = "center">19</td>
 <td align = "center">-</td>
 <td align = "center">18</td>
 <td align = "center">-</td>

+ 1 - 1
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_rsc.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Module name="Fifo16x3" Register="16" Lut="18" Bsram="1" T_Register="16(16)" T_Lut="18(18)" T_Bsram="1(1)"/>
+<Module name="Fifo16x3" Register="19" Lut="18" Bsram="1" T_Register="19(19)" T_Lut="18(18)" T_Bsram="1(1)"/>

+ 1 - 1
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:55:54 2024
+//Created Time: Thu Apr 25 16:04:59 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/fifo_define.v

@@ -1,4 +1,5 @@
 `define module_name Fifo16x3
 `define EBR_BASED
+`define FWFT
 `define En_Reset
 `define Reset_Synchronization

+ 20 - 6
src/src/FifoCtrl/FifoCtrl.v

@@ -133,26 +133,40 @@ always @(posedge WrClk_i) begin
     end
 end
 
-always @(*) begin
+always @(posedge RdClk_i) begin
     if (Rst_i) begin 
-        ReadEn_o = 1'b0;
+        ReadEn_o <= 1'b0;
     end
     else begin  
         if (!FifoEmpty_i && !BusySpiM_i) begin 
-            ReadEn_o = 1'b1;
+            ReadEn_o <= 1'b1;
         end
         else begin 
-            ReadEn_o = 1'b0;
+            ReadEn_o <= 1'b0;
         end
     end
 end
 
+// always @(posedge RdClk_i) begin 
+//     if (Rst_i) begin 
+//         ValRdData_o <= 1'b0;
+//     end
+//     else begin 
+//         if (ReadEn_o) begin 
+//             ValRdData_o <= 1'b1;
+//         end
+//         else begin 
+//             ValRdData_o <= 1'b0;
+//         end
+//     end
+// end
+
 always @(posedge RdClk_i) begin 
     if (Rst_i) begin 
         ValRdData_o <= 1'b0;
     end
-    else begin 
-        if (ReadEn_o) begin 
+    else begin
+        if (!FifoEmpty_i && !BusySpiM_i) begin 
             ValRdData_o <= 1'b1;
         end
         else begin 

+ 2 - 2
src/src/FifoCtrl/FifoDDS/FifoDDS.ipc

@@ -17,7 +17,7 @@ ECCSelected=false
 EmptyClear=1
 EmptySet=1
 EnReset=true
-FirstWordFallThrough=false
+FirstWordFallThrough=true
 FullClear=1
 FullSet=1
 LANG=0
@@ -28,7 +28,7 @@ ReadDataWidth=64
 ReadDepth=2
 ResetSynchronization=true
 SSRAM=false
-StandardFIFO=true
+StandardFIFO=false
 Synthesis_tool=GowinSynthesis
 WriteDataNum=false
 WriteDataWidth=64

+ 131 - 121
src/src/FifoCtrl/FifoDDS/FifoDDS.v

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:25:14 2024
+//Thu Apr 25 16:06:49 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,131 +17,141 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-k1kSHEK6wLFQInHGt7VHC6fSnyD9mPxFLm3NjikHsWB3svUi80t+yPqX4bNxt4eZ/9G3QzVcAx5+
-c/hbq0FUbFlQvkhEKVeagGCWqvLtSu3ilV6woUFeFnzYQ9iXJmIv2A9DXzY4g8qcNQWaG7BTzMA4
-tkoaYcw3gv/wiVt51WY0hFDORuRkcL+PEQ/jxyXh7wG5S+/mCKIPOfKtJv2nSeDPXepflgq7vTuO
-e94b++3KKawa+mY7ITsnj7YPfh1r3h1FFyS02zu26krg14zR/VX+X4J1gHMSchub29vSXXyzG8sG
-3lcjaqbvI4T9REBx2R3WmlHRx2Hq0N3AFEWgOQ==
+bhm5ZxuHD5fe6lKy2Dq5AwHxacJ1cWMwBMX9H8GmdL4lnDV2AKUKXoXHJPX5qkh7Ng/EuDXlf3tq
+XgChMGXHxhGKlXwTDGbPZ7rg+R+CLwCXNxLjHDLHZj7jAwx16WNjn6S5gfS7ZWNO/UifNMSnMT3R
+m/cUTYMLIkyS4qXtYi2xztDEhzoau2SQnLDGMrABROuNOwwpPJPYPMCZrpYnUTE9prjojUwFQhnT
+aNSO4thTEH7/k6gA0a1Hr9Kwu6d3XW6q2dZH78mYOaedKNxNSU95OsQ/GrR3fobX7P5Bxrf3upgd
+Xs0Rq7KS+nMjcFcl7E3CRA+0+XO4iCSxRkS+iA==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=6464)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7024)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-S1uLEXyA72HuhqvzIqpFEi+qHnxy7mk=
+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
+yLUXcvMsVv4bPZxPFw==
 `pragma protect end_protected
 module FifoDDS (
   Data,

+ 97 - 75
src/src/FifoCtrl/FifoDDS/FifoDDS.vo

@@ -2,7 +2,7 @@
 //All rights reserved.
 //File Title: Post-PnR Simulation Model file
 //Tool Version: V1.9.9.02
-//Created Time: Wed Apr 24 12:25:14 2024
+//Created Time: Thu Apr 25 16:06:49 2024
 
 `timescale 100 ps/100 ps
 module FifoDDS(
@@ -37,30 +37,30 @@ wire VCC;
 wire WrClk;
 wire WrEn;
 wire \fifo_inst/n20_5 ;
-wire \fifo_inst/n24_3 ;
-wire \fifo_inst/n359_3 ;
-wire \fifo_inst/n458_4 ;
+wire \fifo_inst/n26_4 ;
+wire \fifo_inst/n457_4 ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/rbin_num_next_0_9 ;
-wire \fifo_inst/rempty_val1 ;
+wire \fifo_inst/rempty_val_8 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
+wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
+wire [1:0] \fifo_inst/rbin_num_next ;
 wire [1:1] \fifo_inst/Equal.wbinnext ;
-wire [1:1] \fifo_inst/rbin_num_next ;
-wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [1:0] \fifo_inst/reset_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/rbin_num ;
+wire [1:0] \fifo_inst/Equal.rq1_wptr ;
+wire [1:0] \fifo_inst/Equal.rq2_wptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [0:0] \fifo_inst/Equal.wbin ;
@@ -81,39 +81,41 @@ LUT4 \fifo_inst/n20_s1  (
 	.F(\fifo_inst/n20_5 )
 );
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
-LUT2 \fifo_inst/n24_s0  (
-	.I0(Empty),
-	.I1(RdEn),
-	.F(\fifo_inst/n24_3 )
+LUT3 \fifo_inst/n26_s1  (
+	.I0(RdEn),
+	.I1(Empty),
+	.I2(\fifo_inst/rempty_val ),
+	.F(\fifo_inst/n26_4 )
+);
+defparam \fifo_inst/n26_s1 .INIT=8'h0E;
+LUT3 \fifo_inst/Equal.rgraynext_0_s0  (
+	.I0(\fifo_inst/rbin_num [0]),
+	.I1(\fifo_inst/rbin_num_next [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/Equal.rgraynext [0])
 );
-defparam \fifo_inst/n24_s0 .INIT=4'h4;
+defparam \fifo_inst/Equal.rgraynext_0_s0 .INIT=8'h1E;
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wgraynext [0])
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
-LUT2 \fifo_inst/n359_s0  (
-	.I0(\fifo_inst/rempty_val ),
-	.I1(\fifo_inst/reset_r [1]),
-	.F(\fifo_inst/n359_3 )
-);
-defparam \fifo_inst/n359_s0 .INIT=4'hE;
-LUT2 \fifo_inst/n458_s1  (
+LUT2 \fifo_inst/n457_s1  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val_7 ),
-	.F(\fifo_inst/n458_4 )
+	.F(\fifo_inst/n457_4 )
 );
-defparam \fifo_inst/n458_s1 .INIT=4'h4;
+defparam \fifo_inst/n457_s1 .INIT=4'h4;
 LUT4 \fifo_inst/rempty_val_s3  (
-	.I0(\fifo_inst/wptr [0]),
-	.I1(\fifo_inst/rptr [0]),
-	.I2(\fifo_inst/wptr [1]),
-	.I3(\fifo_inst/rbin_num [1]),
+	.I0(\fifo_inst/Equal.rq2_wptr [1]),
+	.I1(\fifo_inst/rempty_val_8 ),
+	.I2(\fifo_inst/Equal.rq2_wptr [0]),
+	.I3(\fifo_inst/rbin_num_next [0]),
 	.F(\fifo_inst/rempty_val )
 );
-defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h4221;
 LUT4 \fifo_inst/wfull_val_s3  (
 	.I0(\fifo_inst/wptr [0]),
 	.I1(\fifo_inst/wptr [1]),
@@ -130,8 +132,8 @@ LUT3 \fifo_inst/wfull_val1_s9  (
 );
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 LUT3 \fifo_inst/wfull_val1_s10  (
-	.I0(\fifo_inst/wfull_val1_0 ),
-	.I1(\fifo_inst/wfull_val_7 ),
+	.I0(\fifo_inst/wfull_val_7 ),
+	.I1(\fifo_inst/wfull_val1_0 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/wfull_val1_0 )
 );
@@ -144,48 +146,47 @@ LUT3 \fifo_inst/Full_d_s  (
 );
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 LUT3 \fifo_inst/Full_s8  (
-	.I0(\fifo_inst/Full_1 ),
-	.I1(\fifo_inst/wfull_val_7 ),
+	.I0(\fifo_inst/wfull_val_7 ),
+	.I1(\fifo_inst/Full_1 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/Full_1 )
 );
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
+LUT3 \fifo_inst/rbin_num_next_0_s5  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rbin_num_next [0])
+);
+defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
+LUT3 \fifo_inst/rbin_num_next_1_s2  (
+	.I0(\fifo_inst/rbin_num_next [0]),
+	.I1(\fifo_inst/rbin_num [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/rbin_num_next [1])
+);
+defparam \fifo_inst/rbin_num_next_1_s2 .INIT=8'hB4;
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.F(\fifo_inst/Equal.wbinnext_0_7 )
 );
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wbinnext [1])
 );
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
-LUT4 \fifo_inst/rbin_num_next_1_s3  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s3 .INIT=16'hBF40;
-LUT3 \fifo_inst/rbin_num_next_0_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next_0_9 )
-);
-defparam \fifo_inst/rbin_num_next_0_s4 .INIT=8'hB4;
-LUT4 \fifo_inst/Equal.rgraynext_0_s1  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext [0])
+LUT4 \fifo_inst/rempty_val_s4  (
+	.I0(\fifo_inst/Equal.rq2_wptr [0]),
+	.I1(\fifo_inst/Equal.rq2_wptr [1]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rempty_val_8 )
 );
-defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+defparam \fifo_inst/rempty_val_s4 .INIT=16'h871E;
 DFFP \fifo_inst/reset_r_0_s0  (
 	.D(GND),
 	.CLK(\fifo_inst/n4_6 ),
@@ -215,12 +216,40 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next_0_9 ),
+	.D(\fifo_inst/rbin_num_next [0]),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
+	.D(\fifo_inst/wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [1])
+);
+defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
+	.D(\fifo_inst/wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [0])
+);
+defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [1])
+);
+defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [0])
+);
+defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_0_s0  (
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.CLK(RdClk),
@@ -249,17 +278,10 @@ DFFC \fifo_inst/Equal.wbin_0_s0  (
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/rempty_val1_s0  (
-	.D(\fifo_inst/rempty_val ),
-	.CLK(RdClk),
-	.PRESET(\fifo_inst/n359_3 ),
-	.Q(\fifo_inst/rempty_val1 )
-);
-defparam \fifo_inst/rempty_val1_s0 .INIT=1'b1;
 DFFP \fifo_inst/Empty_s0  (
-	.D(\fifo_inst/rempty_val1 ),
+	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/n359_3 ),
+	.PRESET(\fifo_inst/reset_r [1]),
 	.Q(Empty)
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -280,7 +302,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val_7 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n458_4 ),
+	.PRESET(\fifo_inst/n457_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -294,7 +316,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n458_4 ),
+	.PRESET(\fifo_inst/n457_4 ),
 	.Q(\fifo_inst/Full_2 )
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -303,14 +325,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n24_3 ),
+	.CEB(\fifo_inst/n26_4 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({Data[31:0]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, VCC, VCC, VCC, VCC}),
-	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [0], GND, GND, GND, GND, GND}),
 	.DO({Q[31:0]})
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
@@ -324,14 +346,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_1_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n24_3 ),
+	.CEB(\fifo_inst/n26_4 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({Data[63:32]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, VCC, VCC, VCC, VCC}),
-	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [0], GND, GND, GND, GND, GND}),
 	.DO({Q[63:32]})
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .READ_MODE=1'b0;

+ 1 - 1
src/src/FifoCtrl/FifoDDS/FifoDDS_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:25:14 2024
+//Created Time: Thu Apr 25 16:06:49 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 1
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FIFOHS.prj

@@ -10,7 +10,7 @@
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <Option type="include_path" value="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data"/>
-        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/fifo_hs/temp/FIFOHS"/>
+        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/FifoDDS/temp/FIFOHS"/>
         <Option type="output_file" value="FifoDDS.vg"/>
         <Option type="output_template" value="FifoDDS_tmp.v"/>
         <Option type="ram_balance" value="1"/>

+ 3 - 3
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.log

@@ -39,7 +39,7 @@ WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
-[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\fifo_hs\temp\FIFOHS\FifoDDS.vg" completed
-Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\fifo_hs\temp\FIFOHS\FifoDDS_tmp.v" completed
-[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\fifo_hs\temp\FIFOHS\FifoDDS_syn.rpt.html" completed
+[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoDDS\temp\FIFOHS\FifoDDS.vg" completed
+Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoDDS\temp\FIFOHS\FifoDDS_tmp.v" completed
+[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoDDS\temp\FIFOHS\FifoDDS_syn.rpt.html" completed
 GowinSynthesis finish

+ 131 - 121
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.vg

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:25:14 2024
+//Thu Apr 25 16:06:49 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,131 +17,141 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-k1kSHEK6wLFQInHGt7VHC6fSnyD9mPxFLm3NjikHsWB3svUi80t+yPqX4bNxt4eZ/9G3QzVcAx5+
-c/hbq0FUbFlQvkhEKVeagGCWqvLtSu3ilV6woUFeFnzYQ9iXJmIv2A9DXzY4g8qcNQWaG7BTzMA4
-tkoaYcw3gv/wiVt51WY0hFDORuRkcL+PEQ/jxyXh7wG5S+/mCKIPOfKtJv2nSeDPXepflgq7vTuO
-e94b++3KKawa+mY7ITsnj7YPfh1r3h1FFyS02zu26krg14zR/VX+X4J1gHMSchub29vSXXyzG8sG
-3lcjaqbvI4T9REBx2R3WmlHRx2Hq0N3AFEWgOQ==
+bhm5ZxuHD5fe6lKy2Dq5AwHxacJ1cWMwBMX9H8GmdL4lnDV2AKUKXoXHJPX5qkh7Ng/EuDXlf3tq
+XgChMGXHxhGKlXwTDGbPZ7rg+R+CLwCXNxLjHDLHZj7jAwx16WNjn6S5gfS7ZWNO/UifNMSnMT3R
+m/cUTYMLIkyS4qXtYi2xztDEhzoau2SQnLDGMrABROuNOwwpPJPYPMCZrpYnUTE9prjojUwFQhnT
+aNSO4thTEH7/k6gA0a1Hr9Kwu6d3XW6q2dZH78mYOaedKNxNSU95OsQ/GrR3fobX7P5Bxrf3upgd
+Xs0Rq7KS+nMjcFcl7E3CRA+0+XO4iCSxRkS+iA==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=6464)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7024)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-S1uLEXyA72HuhqvzIqpFEi+qHnxy7mk=
+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
+yLUXcvMsVv4bPZxPFw==
 `pragma protect end_protected
 module FifoDDS (
   Data,

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 35 - 35
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html


+ 1 - 1
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html

@@ -31,7 +31,7 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 </tr>
 <tr>
 <td class="label">FifoDDS (C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
-<td align = "center">16</td>
+<td align = "center">19</td>
 <td align = "center">-</td>
 <td align = "center">18</td>
 <td align = "center">-</td>

+ 1 - 1
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_rsc.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Module name="FifoDDS" Register="16" Lut="18" Bsram="2" T_Register="16(16)" T_Lut="18(18)" T_Bsram="2(2)"/>
+<Module name="FifoDDS" Register="19" Lut="18" Bsram="2" T_Register="19(19)" T_Lut="18(18)" T_Bsram="2(2)"/>

+ 1 - 1
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:25:14 2024
+//Created Time: Thu Apr 25 16:06:49 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/fifo_define.v

@@ -1,4 +1,5 @@
 `define module_name FifoDDS
 `define EBR_BASED
+`define FWFT
 `define En_Reset
 `define Reset_Synchronization

+ 2 - 2
src/src/FifoCtrl/FifoLMX/FifoLMX.ipc

@@ -17,7 +17,7 @@ ECCSelected=false
 EmptyClear=1
 EmptySet=1
 EnReset=true
-FirstWordFallThrough=false
+FirstWordFallThrough=true
 FullClear=1
 FullSet=1
 LANG=0
@@ -28,7 +28,7 @@ ReadDataWidth=24
 ReadDepth=16
 ResetSynchronization=true
 SSRAM=false
-StandardFIFO=true
+StandardFIFO=false
 Synthesis_tool=GowinSynthesis
 WriteDataNum=false
 WriteDataWidth=24

+ 236 - 215
src/src/FifoCtrl/FifoLMX/FifoLMX.v

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:23:21 2024
+//Thu Apr 25 16:07:21 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,225 +17,246 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-TWdYKCfk8QjOxKjcO4uO2OLVDPyswDOeKlEPLmff7hhYNJqZT36bk7d0vtiXqPznikbe2H9VJg8o
-vYqP8fO8qNBdtKDmtPyNjY/xJ7+nNTbkfXZE4cud4+WWF4viRow8bg/n6V62N7T7/TgYokkQRHmH
-VvyVPOBZVzsYmd62Xobnhwth+XJQbyZiHKHr2iLs8zAoS+FOalEoxoZY6WnSIErzm+WyGs2VIqmm
-NtVJCzvB6TSYkVSd6+BBYqZCDsceal1pXNkArTkHoORsgC3FLdNsw2T+E1VaGsP1mI8VVdV5q7eF
-94qiuv/yg/ZzegyQInI2qjdphdi2XVNj/o6z7w==
+CQcsRTWNeKG9A5gO3GdSoNvW9zYr3PmooBz3vJJYrHFkazaqmvxtJGKC4UGygBk8vXE1NIKCzrix
+ts+4g61KOHhd4DYNMOb3HmV2I8s6SwAwCtu3mmY7S4+o5MuyzYTpV9YtKBoZ5ym6957lrUY9d1Be
+l7oLPcGOtiL/0cFFmy2gn3xaI84cJbhlR21C0bH47TYv5uDNGJlHNQKdqgZBDsKL3HQYCIYwveIM
+wqd3+uZjlD1zeWl08Z045RPP/iKAfoW8j34G5ZM1sLye6hjUb1N3OsyAZP+JXOeDgZ+OW1OVwvuI
+Eeo9r6zKZBCzzoX/vEjCCVRH/vbTUoQQ9buY6g==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=11824)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=13040)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-h0CJ2e7b8jmTGvIdzhP2nVeDnFJTEUzP9g==
+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
 `pragma protect end_protected
 module FifoLMX (
   Data,

+ 165 - 109
src/src/FifoCtrl/FifoLMX/FifoLMX.vo

@@ -2,7 +2,7 @@
 //All rights reserved.
 //File Title: Post-PnR Simulation Model file
 //Tool Version: V1.9.9.02
-//Created Time: Wed Apr 24 12:23:21 2024
+//Created Time: Thu Apr 25 16:07:21 2024
 
 `timescale 100 ps/100 ps
 module FifoLMX(
@@ -37,47 +37,46 @@ wire VCC;
 wire WrClk;
 wire WrEn;
 wire \fifo_inst/n23_5 ;
-wire \fifo_inst/n27_3 ;
+wire \fifo_inst/n29_4 ;
 wire \fifo_inst/wfull_val ;
-wire \fifo_inst/n277_3 ;
-wire \fifo_inst/n372_4 ;
+wire \fifo_inst/n371_4 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/Equal.rgraynext_2_4 ;
+wire \fifo_inst/Equal.rgraynext_1_4 ;
 wire \fifo_inst/Equal.wgraynext_1_4 ;
 wire \fifo_inst/Equal.wgraynext_2_4 ;
 wire \fifo_inst/Equal.wgraynext_3_4 ;
 wire \fifo_inst/wfull_val_4 ;
 wire \fifo_inst/wfull_val_5 ;
-wire \fifo_inst/n372_5 ;
+wire \fifo_inst/n371_5 ;
 wire \fifo_inst/wfull_val1_16 ;
 wire \fifo_inst/Full_11 ;
-wire \fifo_inst/rbin_num_next_0_9 ;
 wire \fifo_inst/rempty_val ;
-wire \fifo_inst/rempty_val1 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
-wire \fifo_inst/n128_1_SUM ;
-wire \fifo_inst/n128_3 ;
-wire \fifo_inst/n129_1_SUM ;
-wire \fifo_inst/n129_3 ;
 wire \fifo_inst/n130_1_SUM ;
 wire \fifo_inst/n130_3 ;
 wire \fifo_inst/n131_1_SUM ;
 wire \fifo_inst/n131_3 ;
+wire \fifo_inst/n132_1_SUM ;
+wire \fifo_inst/n132_3 ;
+wire \fifo_inst/n133_1_SUM ;
+wire \fifo_inst/n133_3 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
 wire [3:0] \fifo_inst/Equal.rgraynext ;
 wire [3:0] \fifo_inst/Equal.wgraynext ;
-wire [4:1] \fifo_inst/rbin_num_next ;
+wire [4:0] \fifo_inst/rbin_num_next ;
 wire [4:1] \fifo_inst/Equal.wbinnext ;
 wire [1:0] \fifo_inst/reset_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [4:0] \fifo_inst/rbin_num ;
+wire [4:0] \fifo_inst/Equal.rq1_wptr ;
+wire [4:0] \fifo_inst/Equal.rq2_wptr ;
 wire [3:0] \fifo_inst/rptr ;
 wire [4:0] \fifo_inst/wptr ;
 wire [3:0] \fifo_inst/Equal.wbin ;
@@ -99,29 +98,29 @@ LUT4 \fifo_inst/n23_s1  (
 	.F(\fifo_inst/n23_5 )
 );
 defparam \fifo_inst/n23_s1 .INIT=16'h5300;
-LUT2 \fifo_inst/n27_s0  (
-	.I0(Empty),
-	.I1(RdEn),
-	.F(\fifo_inst/n27_3 )
-);
-defparam \fifo_inst/n27_s0 .INIT=4'h4;
-LUT4 \fifo_inst/Equal.rgraynext_1_s0  (
-	.I0(\fifo_inst/n27_3 ),
-	.I1(\fifo_inst/rbin_num [0]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.I3(\fifo_inst/rbin_num [2]),
+LUT3 \fifo_inst/n29_s1  (
+	.I0(RdEn),
+	.I1(Empty),
+	.I2(\fifo_inst/rempty_val ),
+	.F(\fifo_inst/n29_4 )
+);
+defparam \fifo_inst/n29_s1 .INIT=8'h0E;
+LUT3 \fifo_inst/Equal.rgraynext_1_s0  (
+	.I0(\fifo_inst/Equal.rgraynext_1_4 ),
+	.I1(\fifo_inst/rbin_num_next [1]),
+	.I2(\fifo_inst/rbin_num [2]),
 	.F(\fifo_inst/Equal.rgraynext [1])
 );
-defparam \fifo_inst/Equal.rgraynext_1_s0 .INIT=16'h07F8;
+defparam \fifo_inst/Equal.rgraynext_1_s0 .INIT=8'h1E;
 LUT3 \fifo_inst/Equal.rgraynext_2_s0  (
-	.I0(\fifo_inst/Equal.rgraynext_2_4 ),
+	.I0(\fifo_inst/Equal.rgraynext_1_4 ),
 	.I1(\fifo_inst/rbin_num [2]),
 	.I2(\fifo_inst/rbin_num [3]),
 	.F(\fifo_inst/Equal.rgraynext [2])
 );
 defparam \fifo_inst/Equal.rgraynext_2_s0 .INIT=8'h1E;
 LUT4 \fifo_inst/Equal.rgraynext_3_s0  (
-	.I0(\fifo_inst/Equal.rgraynext_2_4 ),
+	.I0(\fifo_inst/Equal.rgraynext_1_4 ),
 	.I1(\fifo_inst/rbin_num [2]),
 	.I2(\fifo_inst/rbin_num [3]),
 	.I3(\fifo_inst/rbin_num [4]),
@@ -167,19 +166,13 @@ LUT4 \fifo_inst/wfull_val_s0  (
 	.F(\fifo_inst/wfull_val )
 );
 defparam \fifo_inst/wfull_val_s0 .INIT=16'h6000;
-LUT2 \fifo_inst/n277_s0  (
-	.I0(\fifo_inst/rempty_val ),
-	.I1(\fifo_inst/reset_r [1]),
-	.F(\fifo_inst/n277_3 )
-);
-defparam \fifo_inst/n277_s0 .INIT=4'hE;
-LUT3 \fifo_inst/n372_s1  (
+LUT3 \fifo_inst/n371_s1  (
 	.I0(\fifo_inst/wfull_val_4 ),
 	.I1(\fifo_inst/wfull_val_5 ),
-	.I2(\fifo_inst/n372_5 ),
-	.F(\fifo_inst/n372_4 )
+	.I2(\fifo_inst/n371_5 ),
+	.F(\fifo_inst/n371_4 )
 );
-defparam \fifo_inst/n372_s1 .INIT=8'h80;
+defparam \fifo_inst/n371_s1 .INIT=8'h80;
 LUT3 \fifo_inst/wfull_val1_s9  (
 	.I0(\fifo_inst/wfull_val1_3 ),
 	.I1(\fifo_inst/wfull_val1_2 ),
@@ -189,7 +182,7 @@ LUT3 \fifo_inst/wfull_val1_s9  (
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 LUT4 \fifo_inst/wfull_val1_s10  (
 	.I0(\fifo_inst/wfull_val_5 ),
-	.I1(\fifo_inst/n372_5 ),
+	.I1(\fifo_inst/n371_5 ),
 	.I2(\fifo_inst/wfull_val_4 ),
 	.I3(\fifo_inst/wfull_val1_16 ),
 	.F(\fifo_inst/wfull_val1_0 )
@@ -204,27 +197,42 @@ LUT3 \fifo_inst/Full_d_s  (
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 LUT4 \fifo_inst/Full_s8  (
 	.I0(\fifo_inst/wfull_val_5 ),
-	.I1(\fifo_inst/n372_5 ),
+	.I1(\fifo_inst/n371_5 ),
 	.I2(\fifo_inst/wfull_val_4 ),
 	.I3(\fifo_inst/Full_11 ),
 	.F(\fifo_inst/Full_1 )
 );
 defparam \fifo_inst/Full_s8 .INIT=16'hFF80;
-LUT2 \fifo_inst/rbin_num_next_2_s3  (
-	.I0(\fifo_inst/Equal.rgraynext_2_4 ),
+LUT3 \fifo_inst/rbin_num_next_0_s5  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rbin_num_next [0])
+);
+defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
+LUT4 \fifo_inst/rbin_num_next_1_s5  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.I3(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/rbin_num_next [1])
+);
+defparam \fifo_inst/rbin_num_next_1_s5 .INIT=16'hBF40;
+LUT2 \fifo_inst/rbin_num_next_2_s5  (
+	.I0(\fifo_inst/Equal.rgraynext_1_4 ),
 	.I1(\fifo_inst/rbin_num [2]),
 	.F(\fifo_inst/rbin_num_next [2])
 );
-defparam \fifo_inst/rbin_num_next_2_s3 .INIT=4'h6;
-LUT3 \fifo_inst/rbin_num_next_3_s3  (
-	.I0(\fifo_inst/Equal.rgraynext_2_4 ),
+defparam \fifo_inst/rbin_num_next_2_s5 .INIT=4'h6;
+LUT3 \fifo_inst/rbin_num_next_3_s5  (
+	.I0(\fifo_inst/Equal.rgraynext_1_4 ),
 	.I1(\fifo_inst/rbin_num [2]),
 	.I2(\fifo_inst/rbin_num [3]),
 	.F(\fifo_inst/rbin_num_next [3])
 );
-defparam \fifo_inst/rbin_num_next_3_s3 .INIT=8'h78;
+defparam \fifo_inst/rbin_num_next_3_s5 .INIT=8'h78;
 LUT4 \fifo_inst/rbin_num_next_4_s2  (
-	.I0(\fifo_inst/Equal.rgraynext_2_4 ),
+	.I0(\fifo_inst/Equal.rgraynext_1_4 ),
 	.I1(\fifo_inst/rbin_num [2]),
 	.I2(\fifo_inst/rbin_num [3]),
 	.I3(\fifo_inst/rbin_num [4]),
@@ -259,14 +267,14 @@ LUT4 \fifo_inst/Equal.wbinnext_4_s2  (
 	.F(\fifo_inst/Equal.wbinnext [4])
 );
 defparam \fifo_inst/Equal.wbinnext_4_s2 .INIT=16'hBF40;
-LUT4 \fifo_inst/Equal.rgraynext_2_s1  (
+LUT4 \fifo_inst/Equal.rgraynext_1_s1  (
 	.I0(Empty),
 	.I1(RdEn),
 	.I2(\fifo_inst/rbin_num [0]),
 	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext_2_4 )
+	.F(\fifo_inst/Equal.rgraynext_1_4 )
 );
-defparam \fifo_inst/Equal.rgraynext_2_s1 .INIT=16'h4000;
+defparam \fifo_inst/Equal.rgraynext_1_s1 .INIT=16'h4000;
 LUT2 \fifo_inst/Equal.wgraynext_1_s1  (
 	.I0(WrEn),
 	.I1(\fifo_inst/Equal.wbin [0]),
@@ -304,13 +312,13 @@ LUT4 \fifo_inst/wfull_val_s2  (
 	.F(\fifo_inst/wfull_val_5 )
 );
 defparam \fifo_inst/wfull_val_s2 .INIT=16'h0990;
-LUT3 \fifo_inst/n372_s2  (
+LUT3 \fifo_inst/n371_s2  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wptr [4]),
 	.I2(\fifo_inst/rbin_num [4]),
-	.F(\fifo_inst/n372_5 )
+	.F(\fifo_inst/n371_5 )
 );
-defparam \fifo_inst/n372_s2 .INIT=8'h14;
+defparam \fifo_inst/n371_s2 .INIT=8'h14;
 LUT2 \fifo_inst/wfull_val1_s11  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val1_0 ),
@@ -331,33 +339,18 @@ LUT4 \fifo_inst/Equal.wbinnext_1_s4  (
 	.F(\fifo_inst/Equal.wbinnext [1])
 );
 defparam \fifo_inst/Equal.wbinnext_1_s4 .INIT=16'hBF40;
-LUT4 \fifo_inst/rbin_num_next_1_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s4 .INIT=16'hBF40;
-LUT3 \fifo_inst/rbin_num_next_0_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next_0_9 )
-);
-defparam \fifo_inst/rbin_num_next_0_s4 .INIT=8'hB4;
 LUT4 \fifo_inst/Equal.rgraynext_0_s1  (
 	.I0(Empty),
 	.I1(RdEn),
 	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rbin_num_next [1]),
 	.F(\fifo_inst/Equal.rgraynext [0])
 );
-defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h4BB4;
 LUT3 \fifo_inst/rempty_val_s2  (
-	.I0(\fifo_inst/wptr [4]),
-	.I1(\fifo_inst/rbin_num [4]),
-	.I2(\fifo_inst/n131_3 ),
+	.I0(\fifo_inst/rbin_num_next [4]),
+	.I1(\fifo_inst/Equal.rq2_wptr [4]),
+	.I2(\fifo_inst/n133_3 ),
 	.F(\fifo_inst/rempty_val )
 );
 defparam \fifo_inst/rempty_val_s2 .INIT=8'h09;
@@ -411,12 +404,82 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next_0_9 ),
+	.D(\fifo_inst/rbin_num_next [0]),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_4_s0  (
+	.D(\fifo_inst/wptr [4]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [4])
+);
+defparam \fifo_inst/Equal.rq1_wptr_4_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_3_s0  (
+	.D(\fifo_inst/wptr [3]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [3])
+);
+defparam \fifo_inst/Equal.rq1_wptr_3_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_2_s0  (
+	.D(\fifo_inst/wptr [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [2])
+);
+defparam \fifo_inst/Equal.rq1_wptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
+	.D(\fifo_inst/wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [1])
+);
+defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
+	.D(\fifo_inst/wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [0])
+);
+defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_4_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [4]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [4])
+);
+defparam \fifo_inst/Equal.rq2_wptr_4_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_3_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [3]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [3])
+);
+defparam \fifo_inst/Equal.rq2_wptr_3_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_2_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [2])
+);
+defparam \fifo_inst/Equal.rq2_wptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [1])
+);
+defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [0])
+);
+defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_3_s0  (
 	.D(\fifo_inst/Equal.rgraynext [3]),
 	.CLK(RdClk),
@@ -508,17 +571,10 @@ DFFC \fifo_inst/Equal.wbin_0_s0  (
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/rempty_val1_s0  (
-	.D(\fifo_inst/rempty_val ),
-	.CLK(RdClk),
-	.PRESET(\fifo_inst/n277_3 ),
-	.Q(\fifo_inst/rempty_val1 )
-);
-defparam \fifo_inst/rempty_val1_s0 .INIT=1'b1;
 DFFP \fifo_inst/Empty_s0  (
-	.D(\fifo_inst/rempty_val1 ),
+	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/n277_3 ),
+	.PRESET(\fifo_inst/reset_r [1]),
 	.Q(Empty)
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -539,7 +595,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n372_4 ),
+	.PRESET(\fifo_inst/n371_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -553,7 +609,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n372_4 ),
+	.PRESET(\fifo_inst/n371_4 ),
 	.Q(\fifo_inst/Full_2 )
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -562,14 +618,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n23_5 ),
 	.RESETA(GND),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n27_3 ),
+	.CEB(\fifo_inst/n29_4 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({GND, GND, GND, GND, GND, GND, GND, GND, Data[23:0]}),
 	.ADA({GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [3:0], GND, VCC, VCC, VCC, VCC}),
-	.ADB({GND, GND, GND, GND, GND, \fifo_inst/rbin_num [3:0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [3:0], GND, GND, GND, GND, GND}),
 	.DO({\fifo_inst/DO [31:24], Q[23:0]})
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
@@ -578,42 +634,42 @@ defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_1=32;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .RESET_MODE="ASYNC";
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BLK_SEL_0=3'b000;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BLK_SEL_1=3'b000;
-ALU \fifo_inst/n128_s0  (
-	.I0(\fifo_inst/wptr [0]),
-	.I1(\fifo_inst/rptr [0]),
-	.I3(GND),
-	.CIN(GND),
-	.COUT(\fifo_inst/n128_3 ),
-	.SUM(\fifo_inst/n128_1_SUM )
-);
-defparam \fifo_inst/n128_s0 .ALU_MODE=3;
-ALU \fifo_inst/n129_s0  (
-	.I0(\fifo_inst/wptr [1]),
-	.I1(\fifo_inst/rptr [1]),
-	.I3(GND),
-	.CIN(\fifo_inst/n128_3 ),
-	.COUT(\fifo_inst/n129_3 ),
-	.SUM(\fifo_inst/n129_1_SUM )
-);
-defparam \fifo_inst/n129_s0 .ALU_MODE=3;
 ALU \fifo_inst/n130_s0  (
-	.I0(\fifo_inst/wptr [2]),
-	.I1(\fifo_inst/rptr [2]),
+	.I0(\fifo_inst/Equal.rgraynext [0]),
+	.I1(\fifo_inst/Equal.rq2_wptr [0]),
 	.I3(GND),
-	.CIN(\fifo_inst/n129_3 ),
+	.CIN(GND),
 	.COUT(\fifo_inst/n130_3 ),
 	.SUM(\fifo_inst/n130_1_SUM )
 );
 defparam \fifo_inst/n130_s0 .ALU_MODE=3;
 ALU \fifo_inst/n131_s0  (
-	.I0(\fifo_inst/wptr [3]),
-	.I1(\fifo_inst/rptr [3]),
+	.I0(\fifo_inst/Equal.rgraynext [1]),
+	.I1(\fifo_inst/Equal.rq2_wptr [1]),
 	.I3(GND),
 	.CIN(\fifo_inst/n130_3 ),
 	.COUT(\fifo_inst/n131_3 ),
 	.SUM(\fifo_inst/n131_1_SUM )
 );
 defparam \fifo_inst/n131_s0 .ALU_MODE=3;
+ALU \fifo_inst/n132_s0  (
+	.I0(\fifo_inst/Equal.rgraynext [2]),
+	.I1(\fifo_inst/Equal.rq2_wptr [2]),
+	.I3(GND),
+	.CIN(\fifo_inst/n131_3 ),
+	.COUT(\fifo_inst/n132_3 ),
+	.SUM(\fifo_inst/n132_1_SUM )
+);
+defparam \fifo_inst/n132_s0 .ALU_MODE=3;
+ALU \fifo_inst/n133_s0  (
+	.I0(\fifo_inst/Equal.rgraynext [3]),
+	.I1(\fifo_inst/Equal.rq2_wptr [3]),
+	.I3(GND),
+	.CIN(\fifo_inst/n132_3 ),
+	.COUT(\fifo_inst/n133_3 ),
+	.SUM(\fifo_inst/n133_1_SUM )
+);
+defparam \fifo_inst/n133_s0 .ALU_MODE=3;
 INV \fifo_inst/n4_s2  (
 	.I(RdClk),
 	.O(\fifo_inst/n4_6 )

+ 1 - 1
src/src/FifoCtrl/FifoLMX/FifoLMX_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:23:21 2024
+//Created Time: Thu Apr 25 16:07:21 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 1
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FIFOHS.prj

@@ -10,7 +10,7 @@
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <Option type="include_path" value="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data"/>
-        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/temp/FIFOHS"/>
+        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/FifoLMX/temp/FIFOHS"/>
         <Option type="output_file" value="FifoLMX.vg"/>
         <Option type="output_template" value="FifoLMX_tmp.v"/>
         <Option type="ram_balance" value="1"/>

+ 3 - 3
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.log

@@ -39,7 +39,7 @@ WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
-[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\temp\FIFOHS\FifoLMX.vg" completed
-Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\temp\FIFOHS\FifoLMX_tmp.v" completed
-[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\temp\FIFOHS\FifoLMX_syn.rpt.html" completed
+[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoLMX\temp\FIFOHS\FifoLMX.vg" completed
+Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoLMX\temp\FIFOHS\FifoLMX_tmp.v" completed
+[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoLMX\temp\FIFOHS\FifoLMX_syn.rpt.html" completed
 GowinSynthesis finish

+ 236 - 215
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.vg

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:23:21 2024
+//Thu Apr 25 16:07:21 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,225 +17,246 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-TWdYKCfk8QjOxKjcO4uO2OLVDPyswDOeKlEPLmff7hhYNJqZT36bk7d0vtiXqPznikbe2H9VJg8o
-vYqP8fO8qNBdtKDmtPyNjY/xJ7+nNTbkfXZE4cud4+WWF4viRow8bg/n6V62N7T7/TgYokkQRHmH
-VvyVPOBZVzsYmd62Xobnhwth+XJQbyZiHKHr2iLs8zAoS+FOalEoxoZY6WnSIErzm+WyGs2VIqmm
-NtVJCzvB6TSYkVSd6+BBYqZCDsceal1pXNkArTkHoORsgC3FLdNsw2T+E1VaGsP1mI8VVdV5q7eF
-94qiuv/yg/ZzegyQInI2qjdphdi2XVNj/o6z7w==
+CQcsRTWNeKG9A5gO3GdSoNvW9zYr3PmooBz3vJJYrHFkazaqmvxtJGKC4UGygBk8vXE1NIKCzrix
+ts+4g61KOHhd4DYNMOb3HmV2I8s6SwAwCtu3mmY7S4+o5MuyzYTpV9YtKBoZ5ym6957lrUY9d1Be
+l7oLPcGOtiL/0cFFmy2gn3xaI84cJbhlR21C0bH47TYv5uDNGJlHNQKdqgZBDsKL3HQYCIYwveIM
+wqd3+uZjlD1zeWl08Z045RPP/iKAfoW8j34G5ZM1sLye6hjUb1N3OsyAZP+JXOeDgZ+OW1OVwvuI
+Eeo9r6zKZBCzzoX/vEjCCVRH/vbTUoQQ9buY6g==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=11824)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=13040)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-h0CJ2e7b8jmTGvIdzhP2nVeDnFJTEUzP9g==
+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
 `pragma protect end_protected
 module FifoLMX (
   Data,

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 25 - 25
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn.rpt.html


+ 2 - 2
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_resource.html

@@ -31,9 +31,9 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 </tr>
 <tr>
 <td class="label">FifoLMX (C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
-<td align = "center">28</td>
+<td align = "center">37</td>
 <td align = "center">4</td>
-<td align = "center">39</td>
+<td align = "center">38</td>
 <td align = "center">-</td>
 <td align = "center">1</td>
 <td align = "center">-</td>

+ 1 - 1
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_rsc.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Module name="FifoLMX" Register="28" Alu="4" Lut="39" Bsram="1" T_Register="28(28)" T_Alu="4(4)" T_Lut="39(39)" T_Bsram="1(1)"/>
+<Module name="FifoLMX" Register="37" Alu="4" Lut="38" Bsram="1" T_Register="37(37)" T_Alu="4(4)" T_Lut="38(38)" T_Bsram="1(1)"/>

+ 1 - 1
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:23:21 2024
+//Created Time: Thu Apr 25 16:07:21 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/fifo_define.v

@@ -1,4 +1,5 @@
 `define module_name FifoLMX
 `define EBR_BASED
+`define FWFT
 `define En_Reset
 `define Reset_Synchronization

+ 2 - 2
src/src/FifoCtrl/FifoMax2870/FifoMax2870.ipc

@@ -17,7 +17,7 @@ ECCSelected=false
 EmptyClear=1
 EmptySet=1
 EnReset=true
-FirstWordFallThrough=false
+FirstWordFallThrough=true
 FullClear=1
 FullSet=1
 LANG=0
@@ -28,7 +28,7 @@ ReadDataWidth=32
 ReadDepth=4
 ResetSynchronization=true
 SSRAM=false
-StandardFIFO=true
+StandardFIFO=false
 Synthesis_tool=GowinSynthesis
 WriteDataNum=false
 WriteDataWidth=32

+ 154 - 146
src/src/FifoCtrl/FifoMax2870/FifoMax2870.v

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:27:38 2024
+//Thu Apr 25 16:07:36 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,156 +17,164 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-SddClgFUnFcYNNNFe/GREt+yYcvvDamaqjoPQfIWM0LA235wZ3uxWgdlVE6ogq3z8rJcDNh2Vk6n
-WmtkYDkltTV3ZakkUI9hoihHOZ0kEEg0ENfIBQY7LI/v1uOaRbVBDT7xONJxBZWqblaKX8JD7gl9
-Q3FDrcHURS0w5s5rUQg52+LsElok8MDwoAaqung6mO2Hi7ad853CQ3VvsuUOvkNxFlOO2KW7lLvH
-E+zi7LhcnKxCXfgXqZps/WOSy8pLwOfknXo2J0C4X7ETNAWQjVMYgmM05+0Kj8TIpFD5zf/Aex4J
-C5SLMTV3Jrp7q+HDrwaqg3pSNYd+cDEDG/p1RQ==
+Da6ePPXJ0x1Zkr3+qduAM8J+kvtpawq4mD4KNKBETeC4EH7Szs6BzQt56oavp90RuKDAboLkt4Jg
++G92rwctBdMEwq+eB6c7QPHl/H1uRLQVqlR4yx0r3BOVYQPjoymqLzmZv8veGRBC1kdMpZB80yUK
+zmz+xkaf5+Uj2LoGUbWb2pOECph91GIFDeF+RqGJtZTKyt08qFT8oijjiMTL0Xb+qn22EE7E1RFY
+OllWGiYHO4QEEG6qgweiS5shJRiL6+3Pxmw7CJNrKZ/zyFyC0a6pFdp6mTM2DN5SkKBIq/YzyLXr
+XKL3+73PMXlMajN6EcsM4S1BTp7fXxaHLIWB1w==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=7888)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=8352)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-6E4yevchwVEOhr/h4l1dGiLo+4R65Q==
+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
 `pragma protect end_protected
 module FifoMax2870 (
   Data,

+ 122 - 103
src/src/FifoCtrl/FifoMax2870/FifoMax2870.vo

@@ -2,7 +2,7 @@
 //All rights reserved.
 //File Title: Post-PnR Simulation Model file
 //Tool Version: V1.9.9.02
-//Created Time: Wed Apr 24 12:27:39 2024
+//Created Time: Thu Apr 25 16:07:36 2024
 
 `timescale 100 ps/100 ps
 module FifoMax2870(
@@ -37,37 +37,35 @@ wire VCC;
 wire WrClk;
 wire WrEn;
 wire \fifo_inst/n21_5 ;
-wire \fifo_inst/n25_3 ;
-wire \fifo_inst/n257_3 ;
+wire \fifo_inst/n27_4 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/Equal.wgraynext_1_4 ;
 wire \fifo_inst/wfull_val_4 ;
 wire \fifo_inst/wfull_val_5 ;
-wire \fifo_inst/n336_6 ;
+wire \fifo_inst/n335_6 ;
 wire \fifo_inst/wfull_val ;
-wire \fifo_inst/rbin_num_next_0_9 ;
 wire \fifo_inst/rempty_val ;
-wire \fifo_inst/rempty_val1 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
-wire \fifo_inst/n156_1_SUM ;
-wire \fifo_inst/n156_3 ;
-wire \fifo_inst/n157_1_SUM ;
-wire \fifo_inst/n157_3 ;
+wire \fifo_inst/n158_1_SUM ;
+wire \fifo_inst/n158_3 ;
+wire \fifo_inst/n159_1_SUM ;
+wire \fifo_inst/n159_3 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
 wire [1:0] \fifo_inst/Equal.rgraynext ;
 wire [1:0] \fifo_inst/Equal.wgraynext ;
-wire [2:1] \fifo_inst/rbin_num_next ;
+wire [2:0] \fifo_inst/rbin_num_next ;
 wire [2:1] \fifo_inst/Equal.wbinnext ;
 wire [1:0] \fifo_inst/reset_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [2:0] \fifo_inst/rbin_num ;
+wire [2:0] \fifo_inst/Equal.rq1_wptr ;
+wire [2:0] \fifo_inst/Equal.rq2_wptr ;
 wire [1:0] \fifo_inst/rptr ;
 wire [2:0] \fifo_inst/wptr ;
 wire [1:0] \fifo_inst/Equal.wbin ;
@@ -88,20 +86,28 @@ LUT4 \fifo_inst/n21_s1  (
 	.F(\fifo_inst/n21_5 )
 );
 defparam \fifo_inst/n21_s1 .INIT=16'h5300;
-LUT2 \fifo_inst/n25_s0  (
-	.I0(Empty),
-	.I1(RdEn),
-	.F(\fifo_inst/n25_3 )
+LUT3 \fifo_inst/n27_s1  (
+	.I0(RdEn),
+	.I1(Empty),
+	.I2(\fifo_inst/rempty_val ),
+	.F(\fifo_inst/n27_4 )
+);
+defparam \fifo_inst/n27_s1 .INIT=8'h0E;
+LUT3 \fifo_inst/Equal.rgraynext_0_s0  (
+	.I0(\fifo_inst/rbin_num_next [0]),
+	.I1(\fifo_inst/rbin_num [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/Equal.rgraynext [0])
 );
-defparam \fifo_inst/n25_s0 .INIT=4'h4;
+defparam \fifo_inst/Equal.rgraynext_0_s0 .INIT=8'h1E;
 LUT4 \fifo_inst/Equal.rgraynext_1_s0  (
-	.I0(\fifo_inst/n25_3 ),
+	.I0(\fifo_inst/rbin_num_next [0]),
 	.I1(\fifo_inst/rbin_num [0]),
 	.I2(\fifo_inst/rbin_num [1]),
 	.I3(\fifo_inst/rbin_num [2]),
 	.F(\fifo_inst/Equal.rgraynext [1])
 );
-defparam \fifo_inst/Equal.rgraynext_1_s0 .INIT=16'h07F8;
+defparam \fifo_inst/Equal.rgraynext_1_s0 .INIT=16'h0BF4;
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
 	.I0(\fifo_inst/n21_5 ),
 	.I1(\fifo_inst/Equal.wbin [0]),
@@ -110,19 +116,13 @@ LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
 LUT4 \fifo_inst/Equal.wgraynext_1_s0  (
-	.I0(Full),
-	.I1(\fifo_inst/Equal.wgraynext_1_4 ),
+	.I0(\fifo_inst/n21_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
 	.I2(\fifo_inst/Equal.wbin [1]),
 	.I3(\fifo_inst/wptr [2]),
 	.F(\fifo_inst/Equal.wgraynext [1])
 );
-defparam \fifo_inst/Equal.wgraynext_1_s0 .INIT=16'h0BF4;
-LUT2 \fifo_inst/n257_s0  (
-	.I0(\fifo_inst/rempty_val ),
-	.I1(\fifo_inst/reset_r [1]),
-	.F(\fifo_inst/n257_3 )
-);
-defparam \fifo_inst/n257_s0 .INIT=4'hE;
+defparam \fifo_inst/Equal.wgraynext_1_s0 .INIT=16'h07F8;
 LUT3 \fifo_inst/wfull_val1_s9  (
 	.I0(\fifo_inst/wfull_val1_3 ),
 	.I1(\fifo_inst/wfull_val1_2 ),
@@ -153,34 +153,49 @@ LUT4 \fifo_inst/Full_s8  (
 	.F(\fifo_inst/Full_1 )
 );
 defparam \fifo_inst/Full_s8 .INIT=16'h00F8;
+LUT3 \fifo_inst/rbin_num_next_0_s5  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rbin_num_next [0])
+);
+defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
+LUT3 \fifo_inst/rbin_num_next_1_s5  (
+	.I0(\fifo_inst/rbin_num_next [0]),
+	.I1(\fifo_inst/rbin_num [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/rbin_num_next [1])
+);
+defparam \fifo_inst/rbin_num_next_1_s5 .INIT=8'hB4;
 LUT4 \fifo_inst/rbin_num_next_2_s2  (
-	.I0(\fifo_inst/n25_3 ),
+	.I0(\fifo_inst/rbin_num_next [0]),
 	.I1(\fifo_inst/rbin_num [0]),
 	.I2(\fifo_inst/rbin_num [1]),
 	.I3(\fifo_inst/rbin_num [2]),
 	.F(\fifo_inst/rbin_num_next [2])
 );
-defparam \fifo_inst/rbin_num_next_2_s2 .INIT=16'h7F80;
+defparam \fifo_inst/rbin_num_next_2_s2 .INIT=16'hBF40;
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
 	.I0(\fifo_inst/n21_5 ),
 	.I1(\fifo_inst/Equal.wbin [0]),
 	.F(\fifo_inst/Equal.wbinnext_0_7 )
 );
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
+LUT3 \fifo_inst/Equal.wbinnext_1_s3  (
+	.I0(\fifo_inst/n21_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.I2(\fifo_inst/Equal.wbin [1]),
+	.F(\fifo_inst/Equal.wbinnext [1])
+);
+defparam \fifo_inst/Equal.wbinnext_1_s3 .INIT=8'h78;
 LUT4 \fifo_inst/Equal.wbinnext_2_s2  (
-	.I0(Full),
-	.I1(\fifo_inst/Equal.wgraynext_1_4 ),
+	.I0(\fifo_inst/n21_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
 	.I2(\fifo_inst/Equal.wbin [1]),
 	.I3(\fifo_inst/wptr [2]),
 	.F(\fifo_inst/Equal.wbinnext [2])
 );
-defparam \fifo_inst/Equal.wbinnext_2_s2 .INIT=16'hBF40;
-LUT2 \fifo_inst/Equal.wgraynext_1_s1  (
-	.I0(WrEn),
-	.I1(\fifo_inst/Equal.wbin [0]),
-	.F(\fifo_inst/Equal.wgraynext_1_4 )
-);
-defparam \fifo_inst/Equal.wgraynext_1_s1 .INIT=4'h8;
+defparam \fifo_inst/Equal.wbinnext_2_s2 .INIT=16'h7F80;
 LUT2 \fifo_inst/wfull_val_s1  (
 	.I0(\fifo_inst/wptr [2]),
 	.I1(\fifo_inst/rbin_num [2]),
@@ -195,22 +210,14 @@ LUT4 \fifo_inst/wfull_val_s2  (
 	.F(\fifo_inst/wfull_val_5 )
 );
 defparam \fifo_inst/wfull_val_s2 .INIT=16'h0990;
-LUT4 \fifo_inst/Equal.wbinnext_1_s4  (
-	.I0(Full),
-	.I1(WrEn),
-	.I2(\fifo_inst/Equal.wbin [0]),
-	.I3(\fifo_inst/Equal.wbin [1]),
-	.F(\fifo_inst/Equal.wbinnext [1])
-);
-defparam \fifo_inst/Equal.wbinnext_1_s4 .INIT=16'hBF40;
-LUT4 \fifo_inst/n336_s2  (
+LUT4 \fifo_inst/n335_s2  (
 	.I0(\fifo_inst/wptr [2]),
 	.I1(\fifo_inst/rbin_num [2]),
 	.I2(\fifo_inst/reset_w [1]),
 	.I3(\fifo_inst/wfull_val_5 ),
-	.F(\fifo_inst/n336_6 )
+	.F(\fifo_inst/n335_6 )
 );
-defparam \fifo_inst/n336_s2 .INIT=16'h0600;
+defparam \fifo_inst/n335_s2 .INIT=16'h0600;
 LUT3 \fifo_inst/wfull_val_s3  (
 	.I0(\fifo_inst/wptr [2]),
 	.I1(\fifo_inst/rbin_num [2]),
@@ -218,33 +225,10 @@ LUT3 \fifo_inst/wfull_val_s3  (
 	.F(\fifo_inst/wfull_val )
 );
 defparam \fifo_inst/wfull_val_s3 .INIT=8'h60;
-LUT4 \fifo_inst/rbin_num_next_1_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s4 .INIT=16'hBF40;
-LUT3 \fifo_inst/rbin_num_next_0_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next_0_9 )
-);
-defparam \fifo_inst/rbin_num_next_0_s4 .INIT=8'hB4;
-LUT4 \fifo_inst/Equal.rgraynext_0_s1  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext [0])
-);
-defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
 LUT3 \fifo_inst/rempty_val_s2  (
-	.I0(\fifo_inst/wptr [2]),
-	.I1(\fifo_inst/rbin_num [2]),
-	.I2(\fifo_inst/n157_3 ),
+	.I0(\fifo_inst/rbin_num_next [2]),
+	.I1(\fifo_inst/Equal.rq2_wptr [2]),
+	.I2(\fifo_inst/n159_3 ),
 	.F(\fifo_inst/rempty_val )
 );
 defparam \fifo_inst/rempty_val_s2 .INIT=8'h09;
@@ -284,12 +268,54 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next_0_9 ),
+	.D(\fifo_inst/rbin_num_next [0]),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_2_s0  (
+	.D(\fifo_inst/wptr [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [2])
+);
+defparam \fifo_inst/Equal.rq1_wptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
+	.D(\fifo_inst/wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [1])
+);
+defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
+	.D(\fifo_inst/wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [0])
+);
+defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_2_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [2])
+);
+defparam \fifo_inst/Equal.rq2_wptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [1])
+);
+defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [0])
+);
+defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_1_s0  (
 	.D(\fifo_inst/Equal.rgraynext [1]),
 	.CLK(RdClk),
@@ -339,17 +365,10 @@ DFFC \fifo_inst/Equal.wbin_0_s0  (
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/rempty_val1_s0  (
-	.D(\fifo_inst/rempty_val ),
-	.CLK(RdClk),
-	.PRESET(\fifo_inst/n257_3 ),
-	.Q(\fifo_inst/rempty_val1 )
-);
-defparam \fifo_inst/rempty_val1_s0 .INIT=1'b1;
 DFFP \fifo_inst/Empty_s0  (
-	.D(\fifo_inst/rempty_val1 ),
+	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/n257_3 ),
+	.PRESET(\fifo_inst/reset_r [1]),
 	.Q(Empty)
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -370,7 +389,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n336_6 ),
+	.PRESET(\fifo_inst/n335_6 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -384,7 +403,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n336_6 ),
+	.PRESET(\fifo_inst/n335_6 ),
 	.Q(\fifo_inst/Full_2 )
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -393,14 +412,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n21_5 ),
 	.RESETA(GND),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n25_3 ),
+	.CEB(\fifo_inst/n27_4 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({Data[31:0]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [1:0], GND, VCC, VCC, VCC, VCC}),
-	.ADB({GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [1:0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [1:0], GND, GND, GND, GND, GND}),
 	.DO({Q[31:0]})
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
@@ -409,24 +428,24 @@ defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_1=32;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .RESET_MODE="ASYNC";
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BLK_SEL_0=3'b000;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BLK_SEL_1=3'b000;
-ALU \fifo_inst/n156_s0  (
-	.I0(\fifo_inst/wptr [0]),
-	.I1(\fifo_inst/rptr [0]),
+ALU \fifo_inst/n158_s0  (
+	.I0(\fifo_inst/Equal.rgraynext [0]),
+	.I1(\fifo_inst/Equal.rq2_wptr [0]),
 	.I3(GND),
 	.CIN(GND),
-	.COUT(\fifo_inst/n156_3 ),
-	.SUM(\fifo_inst/n156_1_SUM )
+	.COUT(\fifo_inst/n158_3 ),
+	.SUM(\fifo_inst/n158_1_SUM )
 );
-defparam \fifo_inst/n156_s0 .ALU_MODE=3;
-ALU \fifo_inst/n157_s0  (
-	.I0(\fifo_inst/wptr [1]),
-	.I1(\fifo_inst/rptr [1]),
+defparam \fifo_inst/n158_s0 .ALU_MODE=3;
+ALU \fifo_inst/n159_s0  (
+	.I0(\fifo_inst/Equal.rgraynext [1]),
+	.I1(\fifo_inst/Equal.rq2_wptr [1]),
 	.I3(GND),
-	.CIN(\fifo_inst/n156_3 ),
-	.COUT(\fifo_inst/n157_3 ),
-	.SUM(\fifo_inst/n157_1_SUM )
+	.CIN(\fifo_inst/n158_3 ),
+	.COUT(\fifo_inst/n159_3 ),
+	.SUM(\fifo_inst/n159_1_SUM )
 );
-defparam \fifo_inst/n157_s0 .ALU_MODE=3;
+defparam \fifo_inst/n159_s0 .ALU_MODE=3;
 INV \fifo_inst/n4_s2  (
 	.I(RdClk),
 	.O(\fifo_inst/n4_6 )

+ 1 - 1
src/src/FifoCtrl/FifoMax2870/FifoMax2870_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:27:38 2024
+//Created Time: Thu Apr 25 16:07:36 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 1
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FIFOHS.prj

@@ -10,7 +10,7 @@
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <Option type="include_path" value="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data"/>
-        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/FifoMax2870/fifo_hs/temp/FIFOHS"/>
+        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/FifoMax2870/temp/FIFOHS"/>
         <Option type="output_file" value="FifoMax2870.vg"/>
         <Option type="output_template" value="FifoMax2870_tmp.v"/>
         <Option type="ram_balance" value="1"/>

+ 3 - 3
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.log

@@ -39,7 +39,7 @@ WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
-[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\fifo_hs\temp\FIFOHS\FifoMax2870.vg" completed
-Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\fifo_hs\temp\FIFOHS\FifoMax2870_tmp.v" completed
-[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\fifo_hs\temp\FIFOHS\FifoMax2870_syn.rpt.html" completed
+[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\temp\FIFOHS\FifoMax2870.vg" completed
+Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\temp\FIFOHS\FifoMax2870_tmp.v" completed
+[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\temp\FIFOHS\FifoMax2870_syn.rpt.html" completed
 GowinSynthesis finish

+ 154 - 146
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.vg

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 12:27:38 2024
+//Thu Apr 25 16:07:36 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,156 +17,164 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-SddClgFUnFcYNNNFe/GREt+yYcvvDamaqjoPQfIWM0LA235wZ3uxWgdlVE6ogq3z8rJcDNh2Vk6n
-WmtkYDkltTV3ZakkUI9hoihHOZ0kEEg0ENfIBQY7LI/v1uOaRbVBDT7xONJxBZWqblaKX8JD7gl9
-Q3FDrcHURS0w5s5rUQg52+LsElok8MDwoAaqung6mO2Hi7ad853CQ3VvsuUOvkNxFlOO2KW7lLvH
-E+zi7LhcnKxCXfgXqZps/WOSy8pLwOfknXo2J0C4X7ETNAWQjVMYgmM05+0Kj8TIpFD5zf/Aex4J
-C5SLMTV3Jrp7q+HDrwaqg3pSNYd+cDEDG/p1RQ==
+Da6ePPXJ0x1Zkr3+qduAM8J+kvtpawq4mD4KNKBETeC4EH7Szs6BzQt56oavp90RuKDAboLkt4Jg
++G92rwctBdMEwq+eB6c7QPHl/H1uRLQVqlR4yx0r3BOVYQPjoymqLzmZv8veGRBC1kdMpZB80yUK
+zmz+xkaf5+Uj2LoGUbWb2pOECph91GIFDeF+RqGJtZTKyt08qFT8oijjiMTL0Xb+qn22EE7E1RFY
+OllWGiYHO4QEEG6qgweiS5shJRiL6+3Pxmw7CJNrKZ/zyFyC0a6pFdp6mTM2DN5SkKBIq/YzyLXr
+XKL3+73PMXlMajN6EcsM4S1BTp7fXxaHLIWB1w==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=7888)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=8352)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-6E4yevchwVEOhr/h4l1dGiLo+4R65Q==
+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
 `pragma protect end_protected
 module FifoMax2870 (
   Data,

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 28 - 28
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn.rpt.html


+ 2 - 2
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_resource.html

@@ -31,9 +31,9 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 </tr>
 <tr>
 <td class="label">FifoMax2870 (C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
-<td align = "center">20</td>
-<td align = "center">2</td>
 <td align = "center">25</td>
+<td align = "center">2</td>
+<td align = "center">23</td>
 <td align = "center">-</td>
 <td align = "center">1</td>
 <td align = "center">-</td>

+ 1 - 1
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_rsc.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Module name="FifoMax2870" Register="20" Alu="2" Lut="25" Bsram="1" T_Register="20(20)" T_Alu="2(2)" T_Lut="25(25)" T_Bsram="1(1)"/>
+<Module name="FifoMax2870" Register="25" Alu="2" Lut="23" Bsram="1" T_Register="25(25)" T_Alu="2(2)" T_Lut="23(23)" T_Bsram="1(1)"/>

+ 1 - 1
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 12:27:38 2024
+//Created Time: Thu Apr 25 16:07:36 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/fifo_define.v

@@ -1,4 +1,5 @@
 `define module_name FifoMax2870
 `define EBR_BASED
+`define FWFT
 `define En_Reset
 `define Reset_Synchronization

+ 2 - 2
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.ipc

@@ -17,7 +17,7 @@ ECCSelected=false
 EmptyClear=1
 EmptySet=1
 EnReset=true
-FirstWordFallThrough=false
+FirstWordFallThrough=true
 FullClear=1
 FullSet=1
 LANG=0
@@ -28,7 +28,7 @@ ReadDataWidth=8
 ReadDepth=2
 ResetSynchronization=true
 SSRAM=false
-StandardFIFO=true
+StandardFIFO=false
 Synthesis_tool=GowinSynthesis
 WriteDataNum=false
 WriteDataWidth=8

+ 120 - 110
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.v

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 14:54:26 2024
+//Thu Apr 25 16:08:18 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,120 +17,130 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-ri3/2MaA3o2gl+75xxjukQm5K0YP3OMlgHDQSNqiqnaALpa036lSBs3wfql9tudIILGRZvaEM5nF
-vim3aQnaXFi3eSVLOzBnr1Ro7ezGEUCBRzIb88ZL0nC/TuIpZjqfqhSX8LVaZ3bVPD73wJRJSjp9
-nJ7PQ49+eGDrKR51BpQNQ2mp9L7sTt48VzQyUzw7+XzBUuvGGPhesqBEvkqqZHIx/Pb+TNlAcAnN
-B2ebawuAN6JTfYpnhedrocKeOZPOd2FuItdMPiXxyE2k0pSDr1mmv3wNoE5QyN2u8U5x8CcdQjfj
-TCiBKnj8AtxX/hjF5wT9nW2SWG6/F2zIdPpJqw==
+rE66WtNKtc22HlKA/X4eJurtJEnvZemh7Zi9pohq7hHdYu15Y21d8CKvWJizh8HxY9I0OT+eTJYe
+eqAmDwscz3d6gWPx0ty1wAovCUkRxoMRBOBCmiJBj1FAq23KXlKei5tCXIQQG+7uAA9Mz6Jr+6hd
++siV1FTOW4hlWZSMlHvcc5M3QH2IpgONxuKpGtgigAjcxFHeL61jOKWUafSHFW6bf8j2J5rsbwqY
+ArJzg7FAyvR/3aNkWyNra/6lK47Ld15z5DXOp6Qw4yowJyzNpUIg7BGTwuT5hvVdE8HU5+LAGBLC
+8DM4h8FNMqFHubE/tetwFYOqKFxGclYw1Xqrhw==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=5840)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=6400)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-sV7+/rQKRBAMCUDVtSYhFepC2389xlMHIWg=
+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
+BrWHDjSsnheYikR4eooDlA==
 `pragma protect end_protected
 module FifoShiftReg (
   Data,

+ 95 - 73
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.vo

@@ -2,7 +2,7 @@
 //All rights reserved.
 //File Title: Post-PnR Simulation Model file
 //Tool Version: V1.9.9.02
-//Created Time: Wed Apr 24 14:54:26 2024
+//Created Time: Thu Apr 25 16:08:18 2024
 
 `timescale 100 ps/100 ps
 module FifoShiftReg(
@@ -37,30 +37,30 @@ wire VCC;
 wire WrClk;
 wire WrEn;
 wire \fifo_inst/n20_5 ;
-wire \fifo_inst/n24_3 ;
-wire \fifo_inst/n135_3 ;
-wire \fifo_inst/n178_4 ;
+wire \fifo_inst/n26_4 ;
+wire \fifo_inst/n177_4 ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/rbin_num_next_0_9 ;
-wire \fifo_inst/rempty_val1 ;
+wire \fifo_inst/rempty_val_8 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
+wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
+wire [1:0] \fifo_inst/rbin_num_next ;
 wire [1:1] \fifo_inst/Equal.wbinnext ;
-wire [1:1] \fifo_inst/rbin_num_next ;
-wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [1:0] \fifo_inst/reset_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/rbin_num ;
+wire [1:0] \fifo_inst/Equal.rq1_wptr ;
+wire [1:0] \fifo_inst/Equal.rq2_wptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [0:0] \fifo_inst/Equal.wbin ;
@@ -82,39 +82,41 @@ LUT4 \fifo_inst/n20_s1  (
 	.F(\fifo_inst/n20_5 )
 );
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
-LUT2 \fifo_inst/n24_s0  (
-	.I0(Empty),
-	.I1(RdEn),
-	.F(\fifo_inst/n24_3 )
+LUT3 \fifo_inst/n26_s1  (
+	.I0(RdEn),
+	.I1(Empty),
+	.I2(\fifo_inst/rempty_val ),
+	.F(\fifo_inst/n26_4 )
+);
+defparam \fifo_inst/n26_s1 .INIT=8'h0E;
+LUT3 \fifo_inst/Equal.rgraynext_0_s0  (
+	.I0(\fifo_inst/rbin_num [0]),
+	.I1(\fifo_inst/rbin_num_next [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/Equal.rgraynext [0])
 );
-defparam \fifo_inst/n24_s0 .INIT=4'h4;
+defparam \fifo_inst/Equal.rgraynext_0_s0 .INIT=8'h1E;
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wgraynext [0])
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
-LUT2 \fifo_inst/n135_s0  (
-	.I0(\fifo_inst/rempty_val ),
-	.I1(\fifo_inst/reset_r [1]),
-	.F(\fifo_inst/n135_3 )
-);
-defparam \fifo_inst/n135_s0 .INIT=4'hE;
-LUT2 \fifo_inst/n178_s1  (
+LUT2 \fifo_inst/n177_s1  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val_7 ),
-	.F(\fifo_inst/n178_4 )
+	.F(\fifo_inst/n177_4 )
 );
-defparam \fifo_inst/n178_s1 .INIT=4'h4;
+defparam \fifo_inst/n177_s1 .INIT=4'h4;
 LUT4 \fifo_inst/rempty_val_s3  (
-	.I0(\fifo_inst/wptr [0]),
-	.I1(\fifo_inst/rptr [0]),
-	.I2(\fifo_inst/wptr [1]),
-	.I3(\fifo_inst/rbin_num [1]),
+	.I0(\fifo_inst/Equal.rq2_wptr [1]),
+	.I1(\fifo_inst/rempty_val_8 ),
+	.I2(\fifo_inst/Equal.rq2_wptr [0]),
+	.I3(\fifo_inst/rbin_num_next [0]),
 	.F(\fifo_inst/rempty_val )
 );
-defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h4221;
 LUT4 \fifo_inst/wfull_val_s3  (
 	.I0(\fifo_inst/wptr [0]),
 	.I1(\fifo_inst/wptr [1]),
@@ -131,8 +133,8 @@ LUT3 \fifo_inst/wfull_val1_s9  (
 );
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 LUT3 \fifo_inst/wfull_val1_s10  (
-	.I0(\fifo_inst/wfull_val1_0 ),
-	.I1(\fifo_inst/wfull_val_7 ),
+	.I0(\fifo_inst/wfull_val_7 ),
+	.I1(\fifo_inst/wfull_val1_0 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/wfull_val1_0 )
 );
@@ -145,48 +147,47 @@ LUT3 \fifo_inst/Full_d_s  (
 );
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 LUT3 \fifo_inst/Full_s8  (
-	.I0(\fifo_inst/Full_1 ),
-	.I1(\fifo_inst/wfull_val_7 ),
+	.I0(\fifo_inst/wfull_val_7 ),
+	.I1(\fifo_inst/Full_1 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/Full_1 )
 );
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
+LUT3 \fifo_inst/rbin_num_next_0_s5  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rbin_num_next [0])
+);
+defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
+LUT3 \fifo_inst/rbin_num_next_1_s2  (
+	.I0(\fifo_inst/rbin_num_next [0]),
+	.I1(\fifo_inst/rbin_num [0]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/rbin_num_next [1])
+);
+defparam \fifo_inst/rbin_num_next_1_s2 .INIT=8'hB4;
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.F(\fifo_inst/Equal.wbinnext_0_7 )
 );
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
-	.I0(\fifo_inst/n20_5 ),
-	.I1(\fifo_inst/Equal.wbin [0]),
+	.I0(\fifo_inst/Equal.wbin [0]),
+	.I1(\fifo_inst/n20_5 ),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wbinnext [1])
 );
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
-LUT4 \fifo_inst/rbin_num_next_1_s3  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s3 .INIT=16'hBF40;
-LUT3 \fifo_inst/rbin_num_next_0_s4  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next_0_9 )
-);
-defparam \fifo_inst/rbin_num_next_0_s4 .INIT=8'hB4;
-LUT4 \fifo_inst/Equal.rgraynext_0_s1  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.I3(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext [0])
+LUT4 \fifo_inst/rempty_val_s4  (
+	.I0(\fifo_inst/Equal.rq2_wptr [0]),
+	.I1(\fifo_inst/Equal.rq2_wptr [1]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rbin_num [0]),
+	.F(\fifo_inst/rempty_val_8 )
 );
-defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+defparam \fifo_inst/rempty_val_s4 .INIT=16'h871E;
 DFFP \fifo_inst/reset_r_0_s0  (
 	.D(GND),
 	.CLK(\fifo_inst/n4_6 ),
@@ -216,12 +217,40 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next_0_9 ),
+	.D(\fifo_inst/rbin_num_next [0]),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
+	.D(\fifo_inst/wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [1])
+);
+defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
+	.D(\fifo_inst/wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq1_wptr [0])
+);
+defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [1])
+);
+defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
+	.D(\fifo_inst/Equal.rq1_wptr [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/Equal.rq2_wptr [0])
+);
+defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_0_s0  (
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.CLK(RdClk),
@@ -250,17 +279,10 @@ DFFC \fifo_inst/Equal.wbin_0_s0  (
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/rempty_val1_s0  (
-	.D(\fifo_inst/rempty_val ),
-	.CLK(RdClk),
-	.PRESET(\fifo_inst/n135_3 ),
-	.Q(\fifo_inst/rempty_val1 )
-);
-defparam \fifo_inst/rempty_val1_s0 .INIT=1'b1;
 DFFP \fifo_inst/Empty_s0  (
-	.D(\fifo_inst/rempty_val1 ),
+	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/n135_3 ),
+	.PRESET(\fifo_inst/reset_r [1]),
 	.Q(Empty)
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -281,7 +303,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val_7 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n178_4 ),
+	.PRESET(\fifo_inst/n177_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -295,7 +317,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n178_4 ),
+	.PRESET(\fifo_inst/n177_4 ),
 	.Q(\fifo_inst/Full_2 )
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -304,14 +326,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n24_3 ),
+	.CEB(\fifo_inst/n26_4 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, Data[7:0]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, GND, GND}),
-	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [0], GND, GND, GND}),
 	.DO({\fifo_inst/DO [31:8], Q[7:0]})
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;

+ 1 - 1
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 14:54:26 2024
+//Created Time: Thu Apr 25 16:08:18 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 120 - 110
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg.vg

@@ -1,7 +1,7 @@
 //
 //Written by GowinSynthesis
 //Tool Version "V1.9.9.02"
-//Wed Apr 24 14:54:26 2024
+//Thu Apr 25 16:08:18 2024
 
 //Source file index table:
 //file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
@@ -17,120 +17,130 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-ri3/2MaA3o2gl+75xxjukQm5K0YP3OMlgHDQSNqiqnaALpa036lSBs3wfql9tudIILGRZvaEM5nF
-vim3aQnaXFi3eSVLOzBnr1Ro7ezGEUCBRzIb88ZL0nC/TuIpZjqfqhSX8LVaZ3bVPD73wJRJSjp9
-nJ7PQ49+eGDrKR51BpQNQ2mp9L7sTt48VzQyUzw7+XzBUuvGGPhesqBEvkqqZHIx/Pb+TNlAcAnN
-B2ebawuAN6JTfYpnhedrocKeOZPOd2FuItdMPiXxyE2k0pSDr1mmv3wNoE5QyN2u8U5x8CcdQjfj
-TCiBKnj8AtxX/hjF5wT9nW2SWG6/F2zIdPpJqw==
+rE66WtNKtc22HlKA/X4eJurtJEnvZemh7Zi9pohq7hHdYu15Y21d8CKvWJizh8HxY9I0OT+eTJYe
+eqAmDwscz3d6gWPx0ty1wAovCUkRxoMRBOBCmiJBj1FAq23KXlKei5tCXIQQG+7uAA9Mz6Jr+6hd
++siV1FTOW4hlWZSMlHvcc5M3QH2IpgONxuKpGtgigAjcxFHeL61jOKWUafSHFW6bf8j2J5rsbwqY
+ArJzg7FAyvR/3aNkWyNra/6lK47Ld15z5DXOp6Qw4yowJyzNpUIg7BGTwuT5hvVdE8HU5+LAGBLC
+8DM4h8FNMqFHubE/tetwFYOqKFxGclYw1Xqrhw==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=5840)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=6400)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-sV7+/rQKRBAMCUDVtSYhFepC2389xlMHIWg=
+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
+BrWHDjSsnheYikR4eooDlA==
 `pragma protect end_protected
 module FifoShiftReg (
   Data,

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 35 - 35
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn.rpt.html


+ 1 - 1
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_resource.html

@@ -31,7 +31,7 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 </tr>
 <tr>
 <td class="label">FifoShiftReg (C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
-<td align = "center">16</td>
+<td align = "center">19</td>
 <td align = "center">-</td>
 <td align = "center">18</td>
 <td align = "center">-</td>

+ 1 - 1
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_rsc.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Module name="FifoShiftReg" Register="16" Lut="18" Bsram="1" T_Register="16(16)" T_Lut="18(18)" T_Bsram="1(1)"/>
+<Module name="FifoShiftReg" Register="19" Lut="18" Bsram="1" T_Register="19(19)" T_Lut="18(18)" T_Bsram="1(1)"/>

+ 1 - 1
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_tmp.v

@@ -4,7 +4,7 @@
 //Tool Version: V1.9.9.02
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-
-//Created Time: Wed Apr 24 14:54:26 2024
+//Created Time: Thu Apr 25 16:08:18 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------

+ 1 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/fifo_define.v

@@ -1,4 +1,5 @@
 `define module_name FifoShiftReg
 `define EBR_BASED
+`define FWFT
 `define En_Reset
 `define Reset_Synchronization

+ 95 - 0
src/src/FifoCtrl/Wrappers/AttenuatorWrapper.v

@@ -0,0 +1,95 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     AttenuatorWrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the Fifo, Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module AttenuatorWrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 1,
+    parameter OUT_WIDTH = 16,
+    parameter DATA_WIDTH = 16
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromAttFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromAttFifo;
+wire readEnAtt;
+wire writeEnAtt;
+wire valRdDataATT;
+wire busySpiMAtt;
+wire attFifoFull;
+wire attFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(16)
+) FifoCtrlAtt
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMAtt),
+	.FifoFull_i		(attFifoFull),
+	.FifoEmpty_i	(attFifoEmpty),
+	.Data_o			(dataFromAttFifoCtrl),
+	.ReadEn_o		(readEnAtt),
+	.WriteEn_o		(writeEnAtt),
+	.ValRdData_o	(valRdDataATT)
+);
+
+Fifo16x3 FifoAtt_inst (
+	.Data	(dataFromAttFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnAtt),
+	.RdEn	(readEnAtt),
+	.Full	(attFifoFull),
+	.Empty	(attFifoEmpty),
+	.Q		(dataFromAttFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(16)
+)SpiMAtt(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataATT),
+	.SpiData_i	(dataFromAttFifo),
+	.Busy_o	    (busySpiMAtt),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 95 - 0
src/src/FifoCtrl/Wrappers/DDSWrapper.v

@@ -0,0 +1,95 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     DDSWrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the Fifo, Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module DDSWrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 3,
+    parameter OUT_WIDTH = 64,
+    parameter DATA_WIDTH = 64
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromDdsFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromDdsFifo;
+wire readEnDds;
+wire writeEnDds;
+wire valRdDataDDS;
+wire busySpiMDds;
+wire ddsFifoFull;
+wire ddsFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(3),
+	.OUT_WIDTH		(64)
+) FifoCtrlDDS
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMDds),
+	.FifoFull_i		(ddsFifoFull),
+	.FifoEmpty_i	(ddsFifoEmpty),
+	.Data_o			(dataFromDdsFifoCtrl),
+	.ReadEn_o		(readEnDds),
+	.WriteEn_o		(writeEnDds),
+	.ValRdData_o	(valRdDataDDS)
+);
+
+FifoDDS FifoDDS_inst (
+	.Data	(dataFromDdsFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnDds),
+	.RdEn	(readEnDds),
+	.Full	(ddsFifoFull),
+	.Empty	(ddsFifoEmpty),
+	.Q		(dataFromDdsFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(64)
+)SpiMDDS(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataDDS),
+	.SpiData_i	(dataFromDdsFifo),
+	.Busy_o	    (busySpiMDds),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 95 - 0
src/src/FifoCtrl/Wrappers/DacWrapper.v

@@ -0,0 +1,95 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     DDSWrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the Fifo, Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module DacWrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 1,
+    parameter OUT_WIDTH = 16,
+    parameter DATA_WIDTH = 16
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromDacFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromDacFifo;
+wire readEnDac;
+wire writeEnDac;
+wire valRdDataDAC;
+wire busySpiMDac;
+wire dacFifoFull;
+wire dacFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(16)
+) FifoCtrlDac
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMDac),
+	.FifoFull_i		(dacFifoFull),
+	.FifoEmpty_i	(dacFifoEmpty),
+	.Data_o			(dataFromDacFifoCtrl),
+	.ReadEn_o		(readEnDac),
+	.WriteEn_o		(writeEnDac),
+	.ValRdData_o	(valRdDataDAC)
+);
+
+Fifo16x3 FifoDAC_inst (
+	.Data	(dataFromDacFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnDac),
+	.RdEn	(readEnDac),
+	.Full	(dacFifoFull),
+	.Empty	(dacFifoEmpty),
+	.Q		(dataFromDacFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(16)
+)SpiMDac(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataDAC),
+	.SpiData_i	(dataFromDacFifo),
+	.Busy_o	    (busySpiMDac),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 95 - 0
src/src/FifoCtrl/Wrappers/LmxWrapper.v

@@ -0,0 +1,95 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     LmxWrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the LMX Fifo, LMX Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module LmxWrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 1,
+    parameter OUT_WIDTH = 24,
+    parameter DATA_WIDTH = 24
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromLmxFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromLmxFifo;
+wire readEnLmx;
+wire writeEnLmx;
+wire valRdDataLMX;
+wire busySpiMLmx;
+wire lmxFifoFull;
+wire lmxFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(24)
+) FifoCtrlLmx
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMLmx),
+	.FifoFull_i		(lmxFifoFull),
+	.FifoEmpty_i	(lmxFifoEmpty),
+	.Data_o			(dataFromLmxFifoCtrl),
+	.ReadEn_o		(readEnLmx),
+	.WriteEn_o		(writeEnLmx),
+	.ValRdData_o	(valRdDataLMX)
+);
+
+FifoLMX FifoLMX_inst (
+	.Data	(dataFromLmxFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnLmx),
+	.RdEn	(readEnLmx),
+	.Full	(lmxFifoFull),
+	.Empty	(lmxFifoEmpty),
+	.Q		(dataFromLmxFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(24)
+)SpiMLmx(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataLMX),
+	.SpiData_i	(dataFromLmxFifo),
+	.Busy_o	    (busySpiMLmx),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 95 - 0
src/src/FifoCtrl/Wrappers/Max2870Wrapper.v

@@ -0,0 +1,95 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     Max2870Wrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the Fifo, Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module Max2870Wrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 2,
+    parameter OUT_WIDTH = 32,
+    parameter DATA_WIDTH = 32
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromMaxFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromMaxFifo;
+wire readEnMax;
+wire writeEnMax;
+wire valRdDataMAX;
+wire busySpiMMax;
+wire maxFifoFull;
+wire maxFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(2),
+	.OUT_WIDTH		(32)
+) FifoCtrlMax
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMMax),
+	.FifoFull_i		(maxFifoFull),
+	.FifoEmpty_i	(maxFifoEmpty),
+	.Data_o			(dataFromMaxFifoCtrl),
+	.ReadEn_o		(readEnMax),
+	.WriteEn_o		(writeEnMax),
+	.ValRdData_o	(valRdDataMAX)
+);
+
+FifoMax2870 FifoMax2870_inst (
+	.Data	(dataFromMaxFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnMax),
+	.RdEn	(readEnMax),
+	.Full	(maxFifoFull),
+	.Empty	(maxFifoEmpty),
+	.Q		(dataFromMaxFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(32)
+)SpiMMax(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataMAX),
+	.SpiData_i	(dataFromMaxFifo),
+	.Busy_o	    (busySpiMMax),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 95 - 0
src/src/FifoCtrl/Wrappers/PotWrapper.v

@@ -0,0 +1,95 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     DDSWrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the Fifo, Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module PotWrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 1,
+    parameter OUT_WIDTH = 16,
+    parameter DATA_WIDTH = 16
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromPotFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromPotFifo;
+wire readEnPot;
+wire writeEnPot;
+wire valRdDataPOT;
+wire busySpiMPot;
+wire potFifoFull;
+wire potFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(16)
+) FifoCtrlPot
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMPot),
+	.FifoFull_i		(potFifoFull),
+	.FifoEmpty_i	(potFifoEmpty),
+	.Data_o			(dataFromPotFifoCtrl),
+	.ReadEn_o		(readEnPot),
+	.WriteEn_o		(writeEnPot),
+	.ValRdData_o	(valRdDataPOT)
+);
+
+Fifo16x3 FifoPot_inst (
+	.Data	(dataFromPotFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnPot),
+	.RdEn	(readEnPot),
+	.Full	(potFifoFull),
+	.Empty	(potFifoEmpty),
+	.Q		(dataFromPotFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(16)
+)SpiMPot(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataPOT),
+	.SpiData_i	(dataFromPotFifo),
+	.Busy_o	    (busySpiMPot),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 94 - 0
src/src/FifoCtrl/Wrappers/ShifRegWrapper.v

@@ -0,0 +1,94 @@
+// Company:         TAIR
+// Engineer:        Chigrinskiy A.  
+// 
+// Create Date:     18/04/2024 
+// Design Name: 
+// Module Name:     ShiftRegWrapper
+// Project Name:    SB_TMSG44V1_FPGA
+// Target Devices:  Board: SB_TMSG44v1. FPGA: GW1N-LV9PG256C6/I5
+// Tool versions:
+// Description:    This module is a wrapper for the Fifo, Fifo Controller and SPI Master modules.
+//
+// Dependencies:  
+// Revision: 
+// Revision 1.0 - File Created
+// Additional Comments: 
+//
+////////////////////////////////////////////////////////////////////////////////////////////
+module ShiftRegWrapper #(
+    parameter IN_WIDTH = 24,
+    parameter WR_NUM = 1,
+    parameter OUT_WIDTH = 8,
+    parameter DATA_WIDTH = 8
+)(
+    input WrClk_i,
+    input RdClk_i,
+    input Rst_i,
+    input [IN_WIDTH-1:0] Data_i,
+    input Val_i,
+
+    output Ss_o,
+    output Sck_o,
+    output Mosi_o
+);
+//================================================================================
+//	                                REG/WIRE
+//================================================================================    
+wire [OUT_WIDTH-1:0] dataFromShRegFifoCtrl;
+wire [OUT_WIDTH-1:0] dataFromShRegFifo;
+wire readEnShReg;
+wire writeEnShReg;
+wire valRdDataShReg;
+wire busySpiMShReg;
+wire shRegFifoFull;
+wire shRegFifoEmpty;
+
+//==========================================================================//
+//									CODING									//
+//==========================================================================//
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(8)
+) FifoCtrlShReg
+(
+	.WrClk_i		(WrClk_i),
+	.RdClk_i		(RdClk_i),
+	.Rst_i			(Rst_i),
+	.Data_i			(Data_i),
+	.Val_i			(Val_i),
+	.BusySpiM_i		(busySpiMShReg),
+	.FifoFull_i		(shRegFifoFull),
+	.FifoEmpty_i	(shRegFifoEmpty),
+	.Data_o			(dataFromShRegFifoCtrl),
+	.ReadEn_o		(readEnShReg),
+	.WriteEn_o		(writeEnShReg),
+	.ValRdData_o	(valRdDataShReg)
+);
+
+FifoShiftReg FifoShReg_inst (
+	.Data	(dataFromShRegFifoCtrl),
+	.WrClk	(WrClk_i),
+	.RdClk	(RdClk_i),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnShReg),
+	.RdEn	(readEnShReg),
+	.Full	(shRegFifoFull),
+	.Empty	(shRegFifoEmpty),
+	.Q		(dataFromShRegFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(8)
+)SpiMShReg(
+	.Clk_i		(RdClk_i),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataShReg),
+	.SpiData_i	(dataFromShRegFifo),
+	.Busy_o	    (busySpiMShReg),
+	.Ss_o		(Ss_o),
+	.Mosi_o		(Mosi_o),
+	.Sck_o		(Sck_o)
+);
+
+endmodule

+ 1 - 1
src/src/Top/TopSbTmsg.v

@@ -196,4 +196,4 @@ GpioCtrl GpioCtrl
 );
 
 
-endmodule
+endmodule