瀏覽代碼

Добавлены FIFO для всех устройств

Anatoliy Chigirinskiy 1 年之前
父節點
當前提交
7748f0db41
共有 75 個文件被更改,包括 12362 次插入51 次删除
  1. 35 0
      src/src/FifoCtrl/Fifo16x3/Fifo16x3.ipc
  2. 177 0
      src/src/FifoCtrl/Fifo16x3/Fifo16x3.v
  3. 331 0
      src/src/FifoCtrl/Fifo16x3/Fifo16x3.vo
  4. 24 0
      src/src/FifoCtrl/Fifo16x3/Fifo16x3_tmp.v
  5. 20 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/FIFOHS.prj
  6. 45 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3.log
  7. 177 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3.vg
  8. 1300 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn.rpt.html
  9. 46 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_resource.html
  10. 2 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_rsc.xml
  11. 24 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_tmp.v
  12. 4 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/fifo_define.v
  13. 6 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/fifo_parameter.v
  14. 1 0
      src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/project.ini
  15. 二進制
      src/src/FifoCtrl/FifoCtrl.docx
  16. 20 5
      src/src/FifoCtrl/FifoCtrl.v
  17. 39 0
      src/src/FifoCtrl/FifoCtrl_tb.do
  18. 11 10
      src/src/FifoCtrl/FifoCtrl_tb.sv
  19. 35 0
      src/src/FifoCtrl/FifoDDS/FifoDDS.ipc
  20. 189 0
      src/src/FifoCtrl/FifoDDS/FifoDDS.v
  21. 351 0
      src/src/FifoCtrl/FifoDDS/FifoDDS.vo
  22. 24 0
      src/src/FifoCtrl/FifoDDS/FifoDDS_tmp.v
  23. 20 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FIFOHS.prj
  24. 45 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.log
  25. 189 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.vg
  26. 1300 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html
  27. 46 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html
  28. 2 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_rsc.xml
  29. 24 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v
  30. 4 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/fifo_define.v
  31. 6 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/fifo_parameter.v
  32. 1 0
      src/src/FifoCtrl/FifoDDS/temp/FIFOHS/project.ini
  33. 35 0
      src/src/FifoCtrl/FifoLMX/FifoLMX.ipc
  34. 283 0
      src/src/FifoCtrl/FifoLMX/FifoLMX.v
  35. 625 0
      src/src/FifoCtrl/FifoLMX/FifoLMX.vo
  36. 24 0
      src/src/FifoCtrl/FifoLMX/FifoLMX_tmp.v
  37. 20 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FIFOHS.prj
  38. 45 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.log
  39. 283 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.vg
  40. 1420 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn.rpt.html
  41. 46 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_resource.html
  42. 2 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_rsc.xml
  43. 24 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_tmp.v
  44. 4 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/fifo_define.v
  45. 6 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/fifo_parameter.v
  46. 1 0
      src/src/FifoCtrl/FifoLMX/temp/FIFOHS/project.ini
  47. 35 0
      src/src/FifoCtrl/FifoMax2870/FifoMax2870.ipc
  48. 214 0
      src/src/FifoCtrl/FifoMax2870/FifoMax2870.v
  49. 438 0
      src/src/FifoCtrl/FifoMax2870/FifoMax2870.vo
  50. 24 0
      src/src/FifoCtrl/FifoMax2870/FifoMax2870_tmp.v
  51. 20 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FIFOHS.prj
  52. 45 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.log
  53. 214 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.vg
  54. 1340 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn.rpt.html
  55. 46 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_resource.html
  56. 2 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_rsc.xml
  57. 24 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_tmp.v
  58. 4 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/fifo_define.v
  59. 6 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/fifo_parameter.v
  60. 1 0
      src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/project.ini
  61. 35 0
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.ipc
  62. 178 0
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.v
  63. 331 0
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.vo
  64. 24 0
      src/src/FifoCtrl/FifoShiftReg/FifoShiftReg_tmp.v
  65. 20 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FIFOHS.prj
  66. 45 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg.log
  67. 178 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg.vg
  68. 1300 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn.rpt.html
  69. 46 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_resource.html
  70. 2 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_rsc.xml
  71. 24 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_tmp.v
  72. 4 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/fifo_define.v
  73. 6 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/fifo_parameter.v
  74. 1 0
      src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/project.ini
  75. 439 36
      src/src/Top/TopSbTmsg.v

+ 35 - 0
src/src/FifoCtrl/Fifo16x3/Fifo16x3.ipc

@@ -0,0 +1,35 @@
+[General]
+ipc_version=4
+file=Fifo16x3
+module=Fifo16x3
+target_device=gw1n9-014
+type=fifo_hs
+version=1.0
+
+[Config]
+AlmostEmptyFlag=false
+AlmostEmptyFlagItem=Empty_Single Threshold Constant Parameter
+AlmostFullFlag=false
+AlmostFullFlagItem=Full_Single Threshold Constant Parameter
+BSRAM=true
+ControlledByRdEn=false
+ECCSelected=false
+EmptyClear=1
+EmptySet=1
+EnReset=true
+FirstWordFallThrough=false
+FullClear=1
+FullSet=1
+LANG=0
+OutputRegistersSelected=false
+REG=false
+ReadDataNum=false
+ReadDataWidth=16
+ReadDepth=2
+ResetSynchronization=true
+SSRAM=false
+StandardFIFO=true
+Synthesis_tool=GowinSynthesis
+WriteDataNum=false
+WriteDataWidth=16
+WriteDepth=2

+ 177 - 0
src/src/FifoCtrl/Fifo16x3/Fifo16x3.v

@@ -0,0 +1,177 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:55:54 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5808)
+`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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
+`pragma protect end_protected
+module Fifo16x3 (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [15:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [15:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.Fifo16x3  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[15:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[15:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* Fifo16x3 */

+ 331 - 0
src/src/FifoCtrl/Fifo16x3/Fifo16x3.vo

@@ -0,0 +1,331 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//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
+
+`timescale 100 ps/100 ps
+module Fifo16x3(
+	Data,
+	Reset,
+	WrClk,
+	RdClk,
+	WrEn,
+	RdEn,
+	Q,
+	Empty,
+	Full
+);
+input [15:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [15:0] Q;
+output Empty;
+output Full;
+wire [15:0] Data;
+wire Empty;
+wire Full;
+wire GND;
+wire [15:0] Q;
+wire RdClk;
+wire RdEn;
+wire Reset;
+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/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/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.wgraynext ;
+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 [0:0] \fifo_inst/rptr ;
+wire [1:0] \fifo_inst/wptr ;
+wire [0:0] \fifo_inst/Equal.wbin ;
+wire [31:16] \fifo_inst/DO ;
+VCC VCC_cZ (
+  .V(VCC)
+);
+GND GND_cZ (
+  .G(GND)
+);
+GSR GSR (
+	.GSRI(VCC)
+);
+LUT4 \fifo_inst/n20_s1  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.I3(WrEn),
+	.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 )
+);
+defparam \fifo_inst/n24_s0 .INIT=4'h4;
+LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.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  (
+	.I0(\fifo_inst/reset_w [1]),
+	.I1(\fifo_inst/wfull_val_7 ),
+	.F(\fifo_inst/n218_4 )
+);
+defparam \fifo_inst/n218_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]),
+	.F(\fifo_inst/rempty_val )
+);
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
+LUT4 \fifo_inst/wfull_val_s3  (
+	.I0(\fifo_inst/wptr [0]),
+	.I1(\fifo_inst/wptr [1]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rptr [0]),
+	.F(\fifo_inst/wfull_val_7 )
+);
+defparam \fifo_inst/wfull_val_s3 .INIT=16'h1428;
+LUT3 \fifo_inst/wfull_val1_s9  (
+	.I0(\fifo_inst/wfull_val1_3 ),
+	.I1(\fifo_inst/wfull_val1_2 ),
+	.I2(\fifo_inst/wfull_val1_0 ),
+	.F(\fifo_inst/wfull_val1 )
+);
+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 ),
+	.I2(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/wfull_val1_0 )
+);
+defparam \fifo_inst/wfull_val1_s10 .INIT=8'h0E;
+LUT3 \fifo_inst/Full_d_s  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.F(Full)
+);
+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 ),
+	.I2(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/Full_1 )
+);
+defparam \fifo_inst/Full_s8 .INIT=8'h0E;
+LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
+	.I0(\fifo_inst/n20_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_s2  (
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.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])
+);
+defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+DFFP \fifo_inst/reset_r_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [0])
+);
+defparam \fifo_inst/reset_r_0_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_1_s0  (
+	.D(\fifo_inst/reset_w [0]),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [1])
+);
+defparam \fifo_inst/reset_w_1_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [0])
+);
+defparam \fifo_inst/reset_w_0_s0 .INIT=1'b1;
+DFFC \fifo_inst/rbin_num_1_s0  (
+	.D(\fifo_inst/rbin_num_next [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [1])
+);
+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 ),
+	.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/rptr_0_s0  (
+	.D(\fifo_inst/Equal.rgraynext [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [0])
+);
+defparam \fifo_inst/rptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_1_s0  (
+	.D(\fifo_inst/Equal.wbinnext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [1])
+);
+defparam \fifo_inst/wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_0_s0  (
+	.D(\fifo_inst/Equal.wgraynext [0]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [0])
+);
+defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_0_s0  (
+	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.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 ),
+	.CLK(RdClk),
+	.PRESET(\fifo_inst/n167_3 ),
+	.Q(Empty)
+);
+defparam \fifo_inst/Empty_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_r_1_s0  (
+	.D(\fifo_inst/reset_r [0]),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [1])
+);
+defparam \fifo_inst/reset_r_1_s0 .INIT=1'b1;
+DFFC \fifo_inst/wfull_val1_s0  (
+	.D(\fifo_inst/wfull_val_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wfull_val1_2 )
+);
+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 ),
+	.Q(\fifo_inst/wfull_val1_3 )
+);
+defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
+DFFC \fifo_inst/Full_s0  (
+	.D(\fifo_inst/wfull_val1 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Full_1_2 )
+);
+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 ),
+	.Q(\fifo_inst/Full_2 )
+);
+defparam \fifo_inst/Full_s1 .INIT=1'b1;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n20_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n24_3 ),
+	.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}),
+	.DO({\fifo_inst/DO [31:16], Q[15:0]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_0=16;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_1=16;
+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;
+INV \fifo_inst/n4_s2  (
+	.I(RdClk),
+	.O(\fifo_inst/n4_6 )
+);
+INV \fifo_inst/n9_s2  (
+	.I(WrClk),
+	.O(\fifo_inst/n9_6 )
+);
+endmodule

+ 24 - 0
src/src/FifoCtrl/Fifo16x3/Fifo16x3_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:55:54 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	Fifo16x3 your_instance_name(
+		.Data(Data_i), //input [15:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [15:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

+ 20 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/FIFOHS.prj

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE gowin-synthesis-project>
+<Project>
+    <Version>beta</Version>
+    <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
+    <FileList>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+    </FileList>
+    <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/Fifo16x3/temp/FIFOHS"/>
+        <Option type="output_file" value="Fifo16x3.vg"/>
+        <Option type="output_template" value="Fifo16x3_tmp.v"/>
+        <Option type="ram_balance" value="1"/>
+        <Option type="ram_rw_check" value="1"/>
+        <Option type="verilog_language" value="sysv-2017"/>
+    </OptionList>
+</Project>

+ 45 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3.log

@@ -0,0 +1,45 @@
+GowinSynthesis start
+Running parser ...
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'Fifo16x3'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+NOTE  (EX0101) : Current top module is "Fifo16x3"
+[5%] Running netlist conversion ...
+Running device independent optimization ...
+[10%] Optimizing Phase 0 completed
+[15%] Optimizing Phase 1 completed
+[25%] Optimizing Phase 2 completed
+Running inference ...
+[30%] Inferring Phase 0 completed
+[40%] Inferring Phase 1 completed
+[50%] Inferring Phase 2 completed
+[55%] Inferring Phase 3 completed
+Running technical mapping ...
+[60%] Tech-Mapping Phase 0 completed
+[65%] Tech-Mapping Phase 1 completed
+[75%] Tech-Mapping Phase 2 completed
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0101) : The netlist is not one directed acyclic graph
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+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\Fifo16x3\temp\FIFOHS\Fifo16x3.vg" completed
+Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\Fifo16x3\temp\FIFOHS\Fifo16x3_tmp.v" completed
+[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\Fifo16x3\temp\FIFOHS\Fifo16x3_syn.rpt.html" completed
+GowinSynthesis finish

+ 177 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3.vg

@@ -0,0 +1,177 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:55:54 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5808)
+`pragma protect data_keyowner="default-ip-vendor"
+`pragma protect data_keyname="default-ip-key"
+`pragma protect data_method="aes128-cfb"
+`pragma protect data_block
+nIT4R8erw2BN6d3bxwBLsxkCDGwI/ftpWI0jgyx57xG8jk1O24EQgQFSZvgcdkYcjjuF9ngBr/Tr
+KItImemsvLNJWxNC9wqGd05DlU4d8lNjqR5IlvWxaYwl7VIl6h+CTLbi52V4JxxnYT8EXqBJyYvi
+EuLkEPsVpIAS1cgLg7bj2PvGCZpT4TtVUCSu/peFsXRLdQ3AMISX0M4IilInbQyIuPgXWEZKMEVU
++zZkZpADrx4UgZhQxOJB4njop7Uwywo5gPkNqXNmAHAEHo6psDOH9SISGmwm/9ZfuBTjZpNt/XrZ
+5tabLikEIBQQi0sWprsCy4bIc8O0L+7KiWdfkbFa4+4q2uMeFhMjsAeHIM+UEYM0MlHA32wYHPLs
+EzIZ/7YiI7xJqodGNXQSBnxE9lcRoyERaHRmXWvGQGEaB9Og1yksX+WVGU/YoZocTDHegnlE2/1L
+M1WshjUnRgSWrUXamkoxWgp/SOTurMtHdg1xojSeFNTcflGa1cmd2a5g/nQTjaIz3EkwM8yUaINv
+SsUYsIbuFt9EclqosgFTbe/3b5KvaE3QY88nhJRaSi7GXNZHM1iuRTSfAwIt1UEiH5ULBePmVIzV
+9M+qkow4WmokV7lvvUSNEFVbT66Tzhpw0CzVebExpxNZnq0kliTY7Dkd2rh6kidEQz4oz9q+pJCK
+Rv/DUqK/yMUiLxmJ30Lp/BiwQsFO/2qQHq5VUjuxuOmpT6yjsWTjuMPM6ITezKUsEFZt26WWZh0e
+8jhlMkrFMp2BwBD8vRy4PDZefpVn14m/LuUizRk/Os1AcLgFYlwKy0476hsebzJOCj3M/zxmNQQv
+mKU76T6R7AtdrkEvr/bdKgAxbMnbloQwvnbhK+lBoYpEWObSOkOt1YamPiAgrIe9QdF9wsHo+hGr
+2Q8CaSgupyAQ9lFJKCA9aYzdx3/VQbhY2a9dO0LsO34SPWu0jcoOUMJo3AIYkdX801OGo9+rt492
+IXTGxatl+pElnNo7uhBAjKd6OL+mvUOBNQG0qozuEpxM1FeDINqGRgT3j5x1iT/9YYlVI4SxPK/I
+pZPfOk5ccERaXepQIqLvaWHLeec3jZa5Xpa5HPSFvDESmpJWLxGIhPQG2ly3EBGJVzey5z5YF+Gz
+BcSRFg4kTFLNt7mEsxP7YcTCWQEJAtJUmpyvo0hWEijThXVpz6RMyJiir92z42yrvvxvwAydBiPJ
+Rx4Zoxk2iIAaMM0BOHl4G9sR313FolVydW0LxamEtj9J0DgBdF9LNM0SCbqYY/kbqfEW9YMjVieW
+Z9KPTj3VsQBBOHutVOULnCoP0/XgXxYsDmTIOwv7/IUbAsxDLu0wQWZ6/DAiE6l3sbnipC2RWyHU
+xXY10+CczF+cGDr/U1R2d61ygfdb/gMK0yGJu6SW8uUkREql9ky63kpWL9FihHaI93LcQqfiXCk5
+LnQ7vL9rsFh/rA4xljWO6tAdqSKiIdUu5jtqPGY6FEkh+623/50lvfs5JEK5xy065bSeBRFuw37G
+CiS08Svyb+BZ4cv3vC5MUrlQtodSiR6QTYl9ms2moczB31+YOe/yJDk1+GavPbd2vjuKlnHhvDoG
+a6eSkSUN+8JyW9WUr64z4vG10lbiFn7kJmcwPpddLnEm01F4b/xt1jEJRbhjSVYo/RFYDqzIC7pu
+VIJGywdyXvkm/o0gXf37f5IAmgzHwjniS2CVU1YDmKfE5L1h8Kwzw2zK1GfiMQTjyETVAjJu3FKk
+zT3RqzW7ZMYzIPkrQvPPb1m6hRbW1I9pXUBHasP8c8soOu5DqXNElZUN2srR8wTM6yK8LISHr90U
+Tcq3GiEePl4CbjInSn/6F8fxISl837IWQjheT+J1YntRz7dYQlvDV8RFdpGSdaCHzRFmbCGj0XwX
+xXDtzbgqMwUtgChxLqCB/uZfo10uD/b7HBeTs9/7Vp7EQq7vaaXj6MBGJfWerA5uRG1qq0OVHgc9
+EWDov/NF+x5x2WSIA1F/0/WuHVp5b2evchZQjNmW2zJwrFdDczZzzNkvXPGp1akZBzSShZ2Y//61
+dcd0zhjIehtkmS+pNyaGqo0D3/EdS45z2l8ob8pFyjH9fKdHvtXCHBYXsa6bfNlO/P2HRSiSSAPV
+dOzlNR/W/sUgGr4MuXt83K0xmTfv50KGUNVWISQ0GvdoObpb50zqLhx7y7/Oa9TynotTVgrzC1Xt
+VfvB2JkEmXRokU17GKRa3LoDbxuU1O8sXC0YlVLiag3J2q/XfM0J0FrbFT3ElzxFq1EgFbSEq6IH
+ScDQ5DFRtEVaKB/V+jyZ4Zxk/NefxmX5eL+vKHnPJyhpmn84TCBjdfoysrz6TbHv9FRL0W8ifRZB
+LEYXmCvt00y8LtTL0RH8x5KTb76yanv1URfZeDIy6nK7Fb2L69e/8Sok2nrChrzDzybi5KEaJyxV
+VmTK8LuwzzGMOYvG7cxsKvgvQWbBrEeWTKlM0cWwM0WoKVHCI7bts5zIzaqEPPL0TLuvfwTBRxux
+h1JBqylAE8JLskJ5Y0Y3qvRSdlIXyqJOaidpvGOjVrO9JYp+PbmDzbTSyzOk9FPmuAuc/WDaHA3o
+M11eRjmh6PoEFYPZXjbDHbOJ+6LkwyY4qYaCL4BmEvgvzhxG02oCq3xdl4LoMkVXtPTvP1lPWhkN
+RUfM9vZRFGRbWTcFFR6Nz+2wiBgLj/Vz5LCYCT2arpkyl/8FMEERP8aglKRIw6T6Jaz/TZTldKri
+1lqR8IemGTf61YILL4XYTVKdnEJo1xw+yaUMzrDdcywVVvSViZtq7UweZLmTjI8BKI0U8lClJ1HY
+RkuSicTLa9pUUB6h9Zlj2rNjKALp6YvS5SwjG5p4bR6AxTCjqHEolD271HG8ZIbao0BnqHpO/zOJ
+j58abmH0k2y668E1okIrf+TsNCGfIVBSodBQl6GACW66JL0SDul2eyRlL6JhiTXzIZ0YbEsj3XSp
+BbKCQdIOnZMVHxe85Ifnk/FDuItGyQ4Zk5c2PaBdKPp7zkRcWCBacQDOQZFEm8jHd7PYSVt4btOk
+Zm5FZ251Gk567biDFqOw/wQ/BuyhZouTviRCXmwg5srRQpYI98qnmVHa1gFd4GvNfG2XYSgDi+Mh
+YzGVp/Ls20g59eC+6nQLl01406MrVorT4jZtoy+PyrAMKgB+UCdxeL4Sixr2ALpfAIDwVjH10NZS
+OJZnG67wJSEtDQhL/OA7tt52bF9oXacZXG3zczv2HXMQzKoc7k/X0N8wLkT+DQ1F8sH4uLQq8F7R
+wYcYlxrAkjjtY1mTp5VB7TFYG0ErVP5ywBhlWRwrT3mlijBK91OVBEmZ+rffYMuKN1fMQMdzFmKt
+E2tdKHE/bW+u23uKen366gWojl5+4RiY2xZ7QWxyE6/hB5NLnsJcWbH240ONzlEHIXsQZDtEQZP8
+svuDK9ARHfyOgq4QkxtJthHvL4yhLYhVBRQBuYL52dIEBNY+BaCKudoErFJgV8hptjQgJchcvdTJ
++fNdSBlRsJzjPq3jW4Ms8QTO8XrDRbEzBxpP2iTzk+lnLKaMYAx5gVZSZoBf5s/CQEAE67MEoXxS
+ZcoHPut9nVPQd/lnzpPgYkhUyVJ5/h3Kac7VOu884c++F/QH7T1cfxBHWbxPSCQd7aItFpTIAJkL
+dblwJ7lEWNUutZf40rWVlfhPgBk7elP3t1i+8W1dasVCYMHk3oatdKTM1HYJLqz+funBVrNQSj/C
+g1BPhJFApVkHNbHxSDRUHdpdCd3spBN/C7nOsEXYcN/XPyEtkJvBj5SPS1nMRwiaTZsduy7cpEAi
+2ThAUVoR48LOZ/j4XEEE4x4Ricc6UKuDgPE1EHHhD/2CxVcMT8srNL95MvYKHYVEJOMhIM/x0/z4
+o4xl070Gkz5VsPuf725owBUJxeiHxYyj4MqqQKdsC+f+vS1bw5WKuOjECQekiSJeq1gyrR1q94IP
+J/ZAyf2UJYhdsLY9gDf1e6D6zuinU5IcU3R1/J4s7AIAhyyRtjo62xl/46JjHh/BuTQ6JXQP3qxp
+GVaa42lyj9sWU5fW99ClTeHXEuMR4rWyzFgQI1gRfN/VBc3jFeTFjTA1Om+too8mjSGsKi04qHKr
+1q6cK/0oaqx00DGs8FFwTEJChK9Itkhv2w84yFAgouI63dm9S6dZJWTy4OhMDw6AmV4OGHbxu+IQ
+ZJ/W829HsyDob4eJH0vV3/cbOl/Qxd7phc5c2MiZPGIPHnQMjVZ8rZ/PM0eojjSqk3BIfjl18/Lu
+Bk+FcBTSnFfKYsz4CChtsOQD9iiy89oxIb+Jvodt/1gLWVYfNq6y8Drq5X9lZn//FNC/bj2tAH8U
+UO0zHxAnflH7Q9zpfPOcpnSaDBpHA6fB3IdGth3/SLAWVm2G2VcxjK4lD3jHPBnu4vYr/DQc5GiY
+0TvVssY9U0rlvLdJNJz7tKdPwWjhzbcoM6jfsJFyTobl96upQ8authXfKen+HlzMVhXT+qUXbzel
+LxKIEe/CQfs6zEHmU/a6J+46Ow+349IwNM8eF3iWotoc2Bu8ARaYeM9bZ8UC6IIcR+yrDfpZi7x/
+FmI46GtTFCK8xm/tVfb07jY1yI/6FHNmCpz4UMuS+gPaI0w+y+hfBnvtO83Xml1WEY+NjfIpG+Wi
+m8xZmOVZ07AsNiFu3qUSa4TIMsRGKwovw9XRHXV4KJKhQ0uwOjPEAW3/6EJCE4uXa8Ey0V7a4Yat
+nUHqrMmp+nHIXbwYqdnDClh7l+SnzoKVrDlu3tl1WPSXJwV1UEOUrde6zW2/E9W7cvFWrY/Y0sUc
+looOgdTsSrOglF7cqYhDtzd5reUo1zNXEnGYNKkgwEMwkcpC0xbn8NKZbvtvKk9dN2eGULLiwp5U
+G52234PWsdz2XKJ8WdhRr7/jrQZ0r87sAEW94h9wPotryGDvyb5RAbiqM32UCOnexAKLrqrM6lAA
+KLpuGRCrd49nZysKD7P2x9cChylfkbh0PUztefgiw4KP9OjXb5+gtENLrs6toHQTu+1XTmWYwUD+
+zmKN7UM+Ml5lo903HEZPM0HtgDVpo4LbqCVIVoZ0lqVvsBYZC8bhGdZ/YXbNLP6BUzHrrsDYpt0H
+0LGqTF8eZ6drAt8+lFYVaNw96M745lz2i8tEsvWkhJTHacO/cyTENa4siTrhYjhZ2XgAk9LxkoJ+
++7iHq5CVAStFSGZN0DsKuxNLwHxMwB+V3DSo1x98BufHd1mkkBBEVFkvbx1U4wwqxQxdxyi9w1xn
+BRQGW8wId4k5Dx2aCyY753DvMXG2BJi2MBnJlldTybhAJDah1Gsgx17sX0yxKrv3oYp575n0TZuc
+pVnDM7VW+E1rgWF0Qo5rmoF65WjtlC31EOWqXUb6ieJ/bbk4A8bduQf8DLvD1X1fcOtmdWd6kar0
+vsDEIyfPdkd+azn5geW/avWBe+tJEA1gEKW85CHO6XAxRZP4z3Z5VQmb1tHjPCYYMQ2w+AbaPzpQ
+2A5bK5FD8+dfM3b28+FcMIn7t03uy7hI+t/jZhoxx3niQ50EghZftI03w4TekpOgVcJ8Re+ygZIl
+jitkV+OcfWAAHZR0HdQnoZbVV77LYUMs3cO/HkiaVI0cUCWLlrfKLlRa589DDB7qm2LNi37Kz4PO
+pEcS1qTBM5PkEHmNJ6NMYR7X6618dQ1t3nS8LbmyhEZCkVe5hSIzhFGZzziFU22vAiWJ8xEQR/gZ
+cYt72TQZGCs3LwoMYQf9bRUIEx460ImrdsAuh1bzPkV0GzoAaDqIQMMssHPU3VhW9o0y241eshin
+e+ecWQyyTCcfHCiWil7v6SzQIKjGhKUD6xZz1xdzQ6JKwFGHuNKvcOqpBi5NZXVVm53ZDcuF+Vwa
+57wcpNpnQ38L09ZCA+3TpLbJAEZDPG/VNyu/ejAF/7qG5sUnw/s2uJ/5Z+MQRnhcsqrFMgpRZJUZ
+njZvcR2pZHZXyOVkl+9++INFLrCC30zC470W9qLJmTKKI/LdPbzdi5a1JBwgHTw5s516Ovo0cAP/
+0MEto3vbouvMOShWjcsAKZCWIuITsaJRpMrAYn4Btih+ev/GxsZ6hdSkmDXn30g0/sTkLOr3cCfe
+04SQzHC/JX2HN6ypuywQinbJdFd1P8JuAHiVeQh8LP81pvt3h2ks1MXDTL9H7ywAaJdVGJbfC4ZF
+plRM6h6sYDrtvDNo/ukuxz08dL2LE6kLszsOc8v/UdiKJg7zIT7ZgaOm3Wv2qBOA7WG4I/0BdvSk
+1EXs0gQaQ/9wI8XqAbC9HhPJr+irJYM8DyM5SzAR36y2A31dK1uVGaiWWx9mvKF+FI2PnvcScKhf
+poXmLa5togDa3T1A/vu4x2MVZCfZ8hSggtFVhLV7dLb9RcLnzgy6zlwM4Ph62zSLrppuh+qI9MyK
+rKzzNRACevBkfKyI4D7qQSc4BL9SmZ+rpfsee1ANZhlwpL2BXcaaW7Rs4FElJhXAbKMBms22/0xj
+EU5allecekFqK7SlafOnUlbdNBxEgL2aveYmU4uYsXcC5wPjLHWNWrQgFgEDSBoI9eB5rZRj8Bu5
+SuYqo7fb3+1TjovBXfM88PBz55Nh/52TTAP72PnhoytfStalddFA3BIDEGPD50zFS52MWGKCmO9R
+6qUa07PKT8QskGUphwIFiiAUyQJdBQ4k25gtFx7UoPFqk/Fuxo5/gMjV+CXIGErQOC7hXei43RMK
+rdneud/CWCwJs1UBXW8mdR3SwHxaQUEO81O+GHGslbAk6UGPh5y6BxWkHHitrMCeXFpnhzqa+SpA
+SYb7QpNmHymAeQqtXUQJU2VwU41aSbTU78UjUVznK2fIYVRjDFi49hWDSpyiE73D7ZbVBONZZ7oY
+G1Z8XovfQSGMl+Gbrq1vvbmdzQf+pjbICHPeN1QXwq6kMAyzU6YNXQ5g0+sO0Se4IHgsPR3YEpPI
+H7uj1C71SGGcM5gR1HEteY5Fg7HNbLAgDSF2ap7eGFNNbzDkhYenFNYUyQJ+AzpUW2h4bLx9htLx
+OPj+I21JRiz+55qOAu1OtMw/71bJwR9A992bvkQzt8QnJOojifnqj9t4xBhNMddasnJA2118dAVD
+RJcRELK8efAg/xeUV4RvzZ4DKxEZAS7ssnkKCYqKkaxcDFsCBnMppAeuHBm3cU+ygSuDknCZGO0M
+gCFgSJyQz6NFkcxf6wnLrf0AoU5zo7h/W0jv35+El90qkWW6NHUg0ctMgNmSr8/oD+1UrpzePQU8
+77TEJ6Rzy31LWBJLBE1gEm2ePR6/cXetRI0tTbU1lh3PmorwhRDiTZzmIbTUgur+HT1ftigJySGI
+Y56Ug9DBJvzzDMENM78Wy3sRWwFZ5swqwemFhsFqVws4UZQ/WkC/OTFRdq57/iw70x6afWdGOd7P
+3ZpB031/KvpQTn84Ki55xKSH56LyWCAyf02vXgEa1UL+AGplLOO55FzaUzHRDUKhXobDUGfhuvIB
+NbEsKytZ6Rm2ENX1hdUvKfoMoYP28WBFDdZRVSCXtUWRlvqm+ns4ljxhvFwxpfFYZyVKS26o1jO0
+/MTuXZNI6vKJulV47hTXrnSRJ1hnY0pmYx01AlHyeNaAF56oXK4lenRqa8c/ihb/MVrfkBfKdu2W
+C6Ob0xnfPLcLvQXNvYhAC/gOxJvkSrkyAEGkQmcw97wEy6dTd9KKxqHywQ7RfTjSpqsWXRp/SEbs
+aIi+RkYmzb2GCVUJzYTPrHXTkz1wZwqg/szh+/eXN587/KJTN5HveQWQ+ciDr3+rTYwa
+`pragma protect end_protected
+module Fifo16x3 (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [15:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [15:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.Fifo16x3  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[15:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[15:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* Fifo16x3 */

文件差異過大導致無法顯示
+ 1300 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn.rpt.html


+ 46 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_resource.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>Hierarchy Module Resource</title>
+<style type="text/css">
+body { font-family: Verdana, Arial, sans-serif; font-size: 14px; }
+div#main_wrapper{ width: 100%; }
+h1 {text-align: center; }
+h1 {margin-top: 36px; }
+table, th, td { border: 1px solid #aaa; }
+table { border-collapse:collapse; margin-top: 10px; margin-bottom: 20px; width: 100%; }
+th, td { align = "center"; padding: 5px 2px 5px 5px; }
+th { color: #fff; font-weight: bold; background-color: #0084ff; }
+table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-color: #dee8f4; }
+</style>
+</head>
+<body>
+<div id="main_wrapper">
+<div id="content">
+<h1>Hierarchy Module Resource</h1>
+<table>
+<tr>
+<th class="label">MODULE NAME</th>
+<th class="label">REG NUMBER</th>
+<th class="label">ALU NUMBER</th>
+<th class="label">LUT NUMBER</th>
+<th class="label">DSP NUMBER</th>
+<th class="label">BSRAM NUMBER</th>
+<th class="label">SSRAM NUMBER</th>
+<th class="label">ROM16 NUMBER</th>
+</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">-</td>
+<td align = "center">18</td>
+<td align = "center">-</td>
+<td align = "center">1</td>
+<td align = "center">-</td>
+<td align = "center">-</td>
+</tr>
+</table>
+</div><!-- content -->
+</div><!-- main_wrapper -->
+</body>
+</html>

+ 2 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_rsc.xml

@@ -0,0 +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)"/>

+ 24 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/Fifo16x3_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:55:54 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	Fifo16x3 your_instance_name(
+		.Data(Data_i), //input [15:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [15:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

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

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

+ 6 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/fifo_parameter.v

@@ -0,0 +1,6 @@
+parameter WDEPTH = 2;
+parameter ASIZE = 1;
+parameter WDSIZE = 16;
+parameter RDEPTH = 2;
+parameter RASIZE = 1;
+parameter RDSIZE = 16;

+ 1 - 0
src/src/FifoCtrl/Fifo16x3/temp/FIFOHS/project.ini

@@ -0,0 +1 @@
+RESOURCE_CHECK=false

二進制
src/src/FifoCtrl/FifoCtrl.docx


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

@@ -32,7 +32,8 @@ module FifoCtrl #(
 
     output [OUT_WIDTH-1:0] Data_o,
     output reg ReadEn_o,
-    output reg  WriteEn_o
+    output reg  WriteEn_o,
+    output reg ValRdData_o
 
 );
 //================================================================================
@@ -132,16 +133,30 @@ always @(posedge WrClk_i) begin
     end
 end
 
-always @(posedge RdClk_i) begin
+always @(*) 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

+ 39 - 0
src/src/FifoCtrl/FifoCtrl_tb.do

@@ -0,0 +1,39 @@
+onerror {resume}
+quietly WaveActivateNextPane {} 0
+add wave -noupdate -divider FifoCtrlDDS
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/IN_WIDTH
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/WR_NUM
+add wave -noupdate -radix unsigned /FifoCtrl_tb/FifoCtrlDDS_inst/OUT_WIDTH
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/DATA_WIDTH
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/WrClk_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/RdClk_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/Rst_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/Data_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/Val_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/BusySpiM_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/FifoFull_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/FifoEmpty_i
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/Data_o
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/ReadEn_o
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/ValRdData_o
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/WriteEn_o
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/dataReg
+add wave -noupdate /FifoCtrl_tb/FifoCtrlDDS_inst/wrCnt
+TreeUpdate [SetDefaultTree]
+WaveRestoreCursors {{Cursor 1} {11121814 ps} 0}
+quietly wave cursor active 1
+configure wave -namecolwidth 150
+configure wave -valuecolwidth 100
+configure wave -justifyvalue left
+configure wave -signalnamewidth 1
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+configure wave -gridoffset 0
+configure wave -gridperiod 1
+configure wave -griddelta 40
+configure wave -timeline 0
+configure wave -timelineunits ps
+update
+WaveRestoreZoom {0 ps} {15750 ns}

+ 11 - 10
src/src/FifoCtrl/FifoCtrl_tb.sv

@@ -48,7 +48,7 @@ localparam TWENTY_MHZ = 50;
 //	           CLOCK GENERATION
 //***********************************************
 always begin
-    #5 WrClk_i = ~WrClk_i;
+    #50 WrClk_i = ~WrClk_i;
     #(FIFTY_MHZ/2) RdClkDDS_i = ~RdClkDDS_i;
     #(SIXTY_MHZ/2) RdClkLMX_i = ~RdClkLMX_i;
     #(TWENTY_MHZ/2) RdClkMax_i = ~RdClkMax_i;
@@ -71,6 +71,7 @@ FifoCtrl#(
     .BusySpiM_i(BusySpiDDS),
     .Data_o(dataToFifo64),
     .ReadEn_o(rdEnDDS),
+    .ValRdData_o(valRdDDS),
     .WriteEn_o(wrEnDDS)
 );
 
@@ -89,6 +90,7 @@ FifoCtrl #(
     .BusySpiM_i(BusySpiLMX),
     .Data_o(dataToFifo24),
     .ReadEn_o(rdEnLMX),
+    .ValRdData_o(valRdLMX),
     .WriteEn_o(wrEnLMX)
 );
 
@@ -107,12 +109,14 @@ FifoCtrl #(
     .BusySpiM_i(BusySpiMax),
     .Data_o(dataToFifo32),
     .ReadEn_o(rdEnMax),
+    .ValRdData_o(valRdMax),
     .WriteEn_o(wrEnMax)
 );
 // Depth 16
 FifoLMX FifoLMX_inst (
     .Data(dataToFifo24),
     .WrClk(WrClk_i),
+    .Reset(Rst_i),
     .RdClk(RdClkLMX_i),
     .WrEn(wrEnLMX),
     .RdEn(rdEnLMX),
@@ -124,6 +128,7 @@ FifoLMX FifoLMX_inst (
 FifoDDS FifoDDS_inst (
     .Data(dataToFifo64),
     .WrClk(WrClk_i),
+    .Reset(Rst_i),
     .RdClk(RdClkDDS_i),
     .WrEn(wrEnDDS),
     .RdEn(rdEnDDS),
@@ -132,9 +137,10 @@ FifoDDS FifoDDS_inst (
     .Full(fullFlagDDS)
 );
 //Depth 4
-FifoMax FifoMax_inst (
+FifoMax2870 FifoMax_inst (
     .Data(dataToFifo32),
     .WrClk(WrClk_i),
+    .Reset(Rst_i),
     .RdClk(RdClkMax_i),
     .WrEn(wrEnMax),
     .RdEn(rdEnMax),
@@ -148,7 +154,7 @@ SpiM #(
 )SpiMLMX_inst(
     .Clk_i(RdClkLMX_i),
     .Rst_i(Rst_i),
-    .Val_i(rdEnLMX),
+    .Val_i(valRdLMX),
     .SpiData_i(dataFromFifo24),
     .Busy_o(BusySpiLMX)
 );
@@ -158,7 +164,7 @@ SpiM #(
 )SpiMDDS_inst(
     .Clk_i(RdClkDDS_i),
     .Rst_i(Rst_i),
-    .Val_i(rdEnDDS),
+    .Val_i(valRdDDS),
     .SpiData_i(dataFromFifo64),
     .Busy_o(BusySpiDDS)
 );
@@ -168,7 +174,7 @@ SpiM #(
 )SpiMMax_inst(
     .Clk_i(RdClkMax_i),
     .Rst_i(Rst_i),
-    .Val_i(rdEnMax),
+    .Val_i(valRdMax),
     .SpiData_i(dataFromFifo32),
     .Busy_o(BusySpiMax)
 );
@@ -178,7 +184,6 @@ SpiM #(
 task drive_fifo64();
     valFromSPI64 = 1'b0;
     #300;
-    wait(!BusySpiDDS)
     @ (posedge WrClk_i)
     valFromSPI64 = 1'b1;
     dataForDDS = {8'h0, 16'hFFFF};
@@ -186,7 +191,6 @@ task drive_fifo64();
     @(posedge WrClk_i)
     valFromSPI64 = 1'b0;
     #300;
-    wait(!BusySpiDDS)
     @ (posedge WrClk_i)
     valFromSPI64 = 1'b1;
     dataForDDS = 24'habcdef;
@@ -194,7 +198,6 @@ task drive_fifo64();
     @ (posedge WrClk_i)
     valFromSPI64 = 1'b0;
     #300;
-    wait(!BusySpiDDS)
     @ (posedge WrClk_i)
     valFromSPI64 = 1'b1;
     dataForDDS = 24'h123456;
@@ -242,7 +245,6 @@ task drive_fifo24();
     #200;
     Rst_i = 1'b0;
     #300;
-    wait(!BusySpiLMX)
     @ (posedge WrClk_i)
     valFromSPI24 = 1'b1;
     dataForLMX = 24'h123456;
@@ -250,7 +252,6 @@ task drive_fifo24();
     @(posedge WrClk_i)
     valFromSPI24 = 1'b0;
     #300;
-    wait(!BusySpiLMX)
     @ (posedge WrClk_i)
     valFromSPI24 = 1'b1;
     dataForLMX = 24'habcdef;

+ 35 - 0
src/src/FifoCtrl/FifoDDS/FifoDDS.ipc

@@ -0,0 +1,35 @@
+[General]
+ipc_version=4
+file=FifoDDS
+module=FifoDDS
+target_device=gw1n9-014
+type=fifo_hs
+version=1.0
+
+[Config]
+AlmostEmptyFlag=false
+AlmostEmptyFlagItem=Empty_Single Threshold Constant Parameter
+AlmostFullFlag=false
+AlmostFullFlagItem=Full_Single Threshold Constant Parameter
+BSRAM=true
+ControlledByRdEn=false
+ECCSelected=false
+EmptyClear=1
+EmptySet=1
+EnReset=true
+FirstWordFallThrough=false
+FullClear=1
+FullSet=1
+LANG=0
+OutputRegistersSelected=false
+REG=false
+ReadDataNum=false
+ReadDataWidth=64
+ReadDepth=2
+ResetSynchronization=true
+SSRAM=false
+StandardFIFO=true
+Synthesis_tool=GowinSynthesis
+WriteDataNum=false
+WriteDataWidth=64
+WriteDepth=2

+ 189 - 0
src/src/FifoCtrl/FifoDDS/FifoDDS.v

@@ -0,0 +1,189 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:25:14 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=6464)
+`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=
+`pragma protect end_protected
+module FifoDDS (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [63:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [63:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoDDS  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[63:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[63:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoDDS */

+ 351 - 0
src/src/FifoCtrl/FifoDDS/FifoDDS.vo

@@ -0,0 +1,351 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//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
+
+`timescale 100 ps/100 ps
+module FifoDDS(
+	Data,
+	Reset,
+	WrClk,
+	RdClk,
+	WrEn,
+	RdEn,
+	Q,
+	Empty,
+	Full
+);
+input [63:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [63:0] Q;
+output Empty;
+output Full;
+wire [63:0] Data;
+wire Empty;
+wire Full;
+wire GND;
+wire [63:0] Q;
+wire RdClk;
+wire RdEn;
+wire Reset;
+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/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/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.wgraynext ;
+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 [0:0] \fifo_inst/rptr ;
+wire [1:0] \fifo_inst/wptr ;
+wire [0:0] \fifo_inst/Equal.wbin ;
+VCC VCC_cZ (
+  .V(VCC)
+);
+GND GND_cZ (
+  .G(GND)
+);
+GSR GSR (
+	.GSRI(VCC)
+);
+LUT4 \fifo_inst/n20_s1  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.I3(WrEn),
+	.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 )
+);
+defparam \fifo_inst/n24_s0 .INIT=4'h4;
+LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.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  (
+	.I0(\fifo_inst/reset_w [1]),
+	.I1(\fifo_inst/wfull_val_7 ),
+	.F(\fifo_inst/n458_4 )
+);
+defparam \fifo_inst/n458_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]),
+	.F(\fifo_inst/rempty_val )
+);
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
+LUT4 \fifo_inst/wfull_val_s3  (
+	.I0(\fifo_inst/wptr [0]),
+	.I1(\fifo_inst/wptr [1]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rptr [0]),
+	.F(\fifo_inst/wfull_val_7 )
+);
+defparam \fifo_inst/wfull_val_s3 .INIT=16'h1428;
+LUT3 \fifo_inst/wfull_val1_s9  (
+	.I0(\fifo_inst/wfull_val1_3 ),
+	.I1(\fifo_inst/wfull_val1_2 ),
+	.I2(\fifo_inst/wfull_val1_0 ),
+	.F(\fifo_inst/wfull_val1 )
+);
+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 ),
+	.I2(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/wfull_val1_0 )
+);
+defparam \fifo_inst/wfull_val1_s10 .INIT=8'h0E;
+LUT3 \fifo_inst/Full_d_s  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.F(Full)
+);
+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 ),
+	.I2(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/Full_1 )
+);
+defparam \fifo_inst/Full_s8 .INIT=8'h0E;
+LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
+	.I0(\fifo_inst/n20_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_s2  (
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.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])
+);
+defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+DFFP \fifo_inst/reset_r_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [0])
+);
+defparam \fifo_inst/reset_r_0_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_1_s0  (
+	.D(\fifo_inst/reset_w [0]),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [1])
+);
+defparam \fifo_inst/reset_w_1_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [0])
+);
+defparam \fifo_inst/reset_w_0_s0 .INIT=1'b1;
+DFFC \fifo_inst/rbin_num_1_s0  (
+	.D(\fifo_inst/rbin_num_next [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [1])
+);
+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 ),
+	.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/rptr_0_s0  (
+	.D(\fifo_inst/Equal.rgraynext [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [0])
+);
+defparam \fifo_inst/rptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_1_s0  (
+	.D(\fifo_inst/Equal.wbinnext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [1])
+);
+defparam \fifo_inst/wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_0_s0  (
+	.D(\fifo_inst/Equal.wgraynext [0]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [0])
+);
+defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_0_s0  (
+	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.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 ),
+	.CLK(RdClk),
+	.PRESET(\fifo_inst/n359_3 ),
+	.Q(Empty)
+);
+defparam \fifo_inst/Empty_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_r_1_s0  (
+	.D(\fifo_inst/reset_r [0]),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [1])
+);
+defparam \fifo_inst/reset_r_1_s0 .INIT=1'b1;
+DFFC \fifo_inst/wfull_val1_s0  (
+	.D(\fifo_inst/wfull_val_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wfull_val1_2 )
+);
+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 ),
+	.Q(\fifo_inst/wfull_val1_3 )
+);
+defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
+DFFC \fifo_inst/Full_s0  (
+	.D(\fifo_inst/wfull_val1 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Full_1_2 )
+);
+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 ),
+	.Q(\fifo_inst/Full_2 )
+);
+defparam \fifo_inst/Full_s1 .INIT=1'b1;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n20_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n24_3 ),
+	.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}),
+	.DO({Q[31:0]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_0=32;
+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;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_1_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n20_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n24_3 ),
+	.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}),
+	.DO({Q[63:32]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BIT_WIDTH_0=32;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BIT_WIDTH_1=32;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .RESET_MODE="ASYNC";
+defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BLK_SEL_0=3'b000;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BLK_SEL_1=3'b000;
+INV \fifo_inst/n4_s2  (
+	.I(RdClk),
+	.O(\fifo_inst/n4_6 )
+);
+INV \fifo_inst/n9_s2  (
+	.I(WrClk),
+	.O(\fifo_inst/n9_6 )
+);
+endmodule

+ 24 - 0
src/src/FifoCtrl/FifoDDS/FifoDDS_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:25:14 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoDDS your_instance_name(
+		.Data(Data_i), //input [63:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [63:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

+ 20 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FIFOHS.prj

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE gowin-synthesis-project>
+<Project>
+    <Version>beta</Version>
+    <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
+    <FileList>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+    </FileList>
+    <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="output_file" value="FifoDDS.vg"/>
+        <Option type="output_template" value="FifoDDS_tmp.v"/>
+        <Option type="ram_balance" value="1"/>
+        <Option type="ram_rw_check" value="1"/>
+        <Option type="verilog_language" value="sysv-2017"/>
+    </OptionList>
+</Project>

+ 45 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.log

@@ -0,0 +1,45 @@
+GowinSynthesis start
+Running parser ...
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoDDS'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+NOTE  (EX0101) : Current top module is "FifoDDS"
+[5%] Running netlist conversion ...
+Running device independent optimization ...
+[10%] Optimizing Phase 0 completed
+[15%] Optimizing Phase 1 completed
+[25%] Optimizing Phase 2 completed
+Running inference ...
+[30%] Inferring Phase 0 completed
+[40%] Inferring Phase 1 completed
+[50%] Inferring Phase 2 completed
+[55%] Inferring Phase 3 completed
+Running technical mapping ...
+[60%] Tech-Mapping Phase 0 completed
+[65%] Tech-Mapping Phase 1 completed
+[75%] Tech-Mapping Phase 2 completed
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0101) : The netlist is not one directed acyclic graph
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+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
+GowinSynthesis finish

+ 189 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS.vg

@@ -0,0 +1,189 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:25:14 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=6464)
+`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=
+`pragma protect end_protected
+module FifoDDS (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [63:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [63:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoDDS  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[63:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[63:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoDDS */

文件差異過大導致無法顯示
+ 1300 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html


+ 46 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>Hierarchy Module Resource</title>
+<style type="text/css">
+body { font-family: Verdana, Arial, sans-serif; font-size: 14px; }
+div#main_wrapper{ width: 100%; }
+h1 {text-align: center; }
+h1 {margin-top: 36px; }
+table, th, td { border: 1px solid #aaa; }
+table { border-collapse:collapse; margin-top: 10px; margin-bottom: 20px; width: 100%; }
+th, td { align = "center"; padding: 5px 2px 5px 5px; }
+th { color: #fff; font-weight: bold; background-color: #0084ff; }
+table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-color: #dee8f4; }
+</style>
+</head>
+<body>
+<div id="main_wrapper">
+<div id="content">
+<h1>Hierarchy Module Resource</h1>
+<table>
+<tr>
+<th class="label">MODULE NAME</th>
+<th class="label">REG NUMBER</th>
+<th class="label">ALU NUMBER</th>
+<th class="label">LUT NUMBER</th>
+<th class="label">DSP NUMBER</th>
+<th class="label">BSRAM NUMBER</th>
+<th class="label">SSRAM NUMBER</th>
+<th class="label">ROM16 NUMBER</th>
+</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">-</td>
+<td align = "center">18</td>
+<td align = "center">-</td>
+<td align = "center">2</td>
+<td align = "center">-</td>
+<td align = "center">-</td>
+</tr>
+</table>
+</div><!-- content -->
+</div><!-- main_wrapper -->
+</body>
+</html>

+ 2 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_syn_rsc.xml

@@ -0,0 +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)"/>

+ 24 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:25:14 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoDDS your_instance_name(
+		.Data(Data_i), //input [63:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [63:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

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

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

+ 6 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/fifo_parameter.v

@@ -0,0 +1,6 @@
+parameter WDEPTH = 2;
+parameter ASIZE = 1;
+parameter WDSIZE = 64;
+parameter RDEPTH = 2;
+parameter RASIZE = 1;
+parameter RDSIZE = 64;

+ 1 - 0
src/src/FifoCtrl/FifoDDS/temp/FIFOHS/project.ini

@@ -0,0 +1 @@
+RESOURCE_CHECK=false

+ 35 - 0
src/src/FifoCtrl/FifoLMX/FifoLMX.ipc

@@ -0,0 +1,35 @@
+[General]
+ipc_version=4
+file=FifoLMX
+module=FifoLMX
+target_device=gw1n9-014
+type=fifo_hs
+version=1.0
+
+[Config]
+AlmostEmptyFlag=false
+AlmostEmptyFlagItem=Empty_Single Threshold Constant Parameter
+AlmostFullFlag=false
+AlmostFullFlagItem=Full_Single Threshold Constant Parameter
+BSRAM=true
+ControlledByRdEn=false
+ECCSelected=false
+EmptyClear=1
+EmptySet=1
+EnReset=true
+FirstWordFallThrough=false
+FullClear=1
+FullSet=1
+LANG=0
+OutputRegistersSelected=false
+REG=false
+ReadDataNum=false
+ReadDataWidth=24
+ReadDepth=16
+ResetSynchronization=true
+SSRAM=false
+StandardFIFO=true
+Synthesis_tool=GowinSynthesis
+WriteDataNum=false
+WriteDataWidth=24
+WriteDepth=16

+ 283 - 0
src/src/FifoCtrl/FifoLMX/FifoLMX.v

@@ -0,0 +1,283 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:23:21 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=11824)
+`pragma protect data_keyowner="default-ip-vendor"
+`pragma protect data_keyname="default-ip-key"
+`pragma protect data_method="aes128-cfb"
+`pragma protect data_block
+su7hg9sEKkjt8TnUXqFeB1wnBnmtZHVIo/SMsh4lPTiDoNWFykBpZ5eWymWy/GOIm7vISE8gZHh+
+wvtinngJeq0VuAihQ/k7jO/6AzMQPHoVS17i8wAhd7iOywTsBszc1PvFvgkn0CZYx4ZGtX5xBQjg
+RXaeC1aTGy2zSNU+nRivwdqymxS30mqVBCuV4i3aZIL4Ay2EZLc9LjGD7ybx+6EB+u2KY1tbv9wq
+qpo2DGjc2wID4O4TAwFzuGTPTFT0cHat+xNn3yJE8twGClZyHUXYW1mhjBp1VrwPnG+K+/1NLg4t
+wfISBt8IFVoq9HeB5I0lID/UpRLaOO5dWqgsou2w9nM3aw5MJIk8sTHWumEAk6ZM8JJhQ80tD/Lk
+rc1iGZUIPMiEVvLlwtwQ/TCXYi6cIKkoTzchWRIgue0+J3qMr+ON0mE0Vw7MjcSBEJdjFfWoTeLm
+8WCGZeeaffovgHdqNndF6qUVkJvvYXGyaret/wUivo209CpK37F0xgKSPHgWi0M+2mYl+kzugsML
+ZeO8w+evNpziMmezmfXNLAUm/WCNVnWfai5l8DfRUGCFbKZ0soDjYvrqlQlKbVy79rqQ+bl860f3
+hhdks28Rl+PRN8feSpAxHTZYvCpdkm9D1DyJbnUNMT5vAeAzk+IiAoXZ5Gacrk/dv3bXMas3CsAL
+tb4Qt7Kj1staIQluEOtIzAbYwFYOcvJPImCuLUDV159wJ+UTX7IimuQbIwQd77C7c2ok9BeDrn05
+n3hUFdOy9fYHytCIKr8Icl44xSheT1bgofP0wVJ1elGvy7FvOyt+HiGickLfgNIekR91+UDa50YH
+3gb0g6eIymHNKjLyCrIcWSFnN+BHLotnBbkR+e74933sDP/R3F41stHTYd8T2ZTOxuXwf6Ggn7Vf
+VG6liowzWY2662USgbphxSD75/htNj4Obxx4w4wNscXKa5n48Zt/be+x1HOCLlMW+KuTwxz/TXvE
+f7etG53+AUWcrdkKYQk6ykd90QwyFFP8gdGaIpjbPCBeyDacJ1dmUijg6ypD/+F8NDsqJbYJd9PP
+88PcoKcDGPiTuaeKtnzjDsCjI7FnCK1dzZQwi4+vc3vJRFintjQLL05V2+s5YIhPqLj5XZP7jjar
+1MT3OdGMmGUf3CbpO/WHRgJfi+SYwRfpNqNqFSSFsrTkjaUN9bwUvPN754Ufm8T7G4cVYaYWWEzX
+OjrDXKahRka8I6iq5DZPMygJ0Dp0MNcud+jezfPHmdxZxnwz6hq21+SApbz81E6gzqBf5j8FKP4L
+fgVhRrUP2eLYVN66a+//DV+UHW2uVSnbWiCeITNIbcAg67aLorQA7JKMcE4zKp12eTesWzEtsmXE
+XR1wxLP1z30arE+v0QHAUAFGwk+OhNsywUotihuRLzFrcXfwx4nJ8xWhCr2+/P8xvktmQJWePsqS
+qMB4ABR0mps8JZsG2VIM6HLC58/VE0zy0e86SR7VZVRsThEuR9Wf9tS4PLHIBnEsxa+gmhORUYoF
+lPWriTDNf/D2QcTI7HYiSAz0uETyyw56sTFgipk3gt0lqHBHv8aScrbUflvt5scbkfi6zBaBYFrs
+/cYnl7tQwQPyGMXZS76bABgFsYbdae/3FeaKhRw89geYnKdGkYmDvtGQuWXj8pC31uxwPJKOGnN9
+RcLc1ir7l0Df3xMe+9n0Jn8+RaXv1x8fjaf4F47rUfxVM7awxdn/n6Tvv00b2Nhc7mPCkzFntaAA
+gJCK2EYrCs+B7t5W3nwDoud5jaLxOm6BfcKsJlD/PbDxP7EabN6P2bWrA9E5+zyN9h1GfOnT2hol
+bdnOxZggkcik98NvircmhrH1exUmuWwhsaqIRgVjnEhf+dPbW8dNDGSbd8Huq+Pq5qSZbCyV+PxN
+YDqGh2rWo+pIoPZ+Hz4QreZnzEcIH5RmAw7iIsJPAWXq0+oZUjvrOrLynXmsO0yAu1miRM+52kOO
+xEsnodrtW1JTuEcT1lGAAQWPIfR4oDcWUalf326beFrV6KlcC6GBY5gJ/AjSsux66AIzTwKRet1T
+WzfStgSPWAUYAl0oQm9T/zhLOLpptdJyIqvhgsIPvkHorpu372QhxAOn++W4nNhF+jjn3tQmqEKn
+T9RpCdNnd7YHfsngA/P5RAkTuZFIc3oqWu/EPNiBcXrEHtR9efXUPRMADiB0huuqsKDNZVICPqOs
+Ens1pEF8NPHLvIlQMyAzA+oz7w/ap1lskKAh2C7FeOlB9lnEUeo0owVh3QwE5PYUuJ4iG9AypJ05
+pNczkxG5yT48wzgXuYcUS2PtA1QtsxMjchBO8jN+LckIvERva1suErqZXGYb8UOhvhIWtcPKCIqz
+w+sbn5kCtjmCKFInGCtuho2ZW31J4NutTNkXTnG0fK9B+ifx4F0rP58yUIK0EkVTSMQOo3keOVr0
+08iM3Ii266QeJykMDqx5UrPmE12dTm0/5/CNvNQkAHzlH6Kh6NQ8sjY5DHfeR5YXVtMoUrXOad8d
+iJ5EyzsJfjgYRgq61ysVRSz44JZrLgEHU86HnMFy1oUJSDGUQLc6rFFww1I/8PGUbtuYuCWDIgL4
+AZILrJzRx1omVxM4mcn/YhPb32AekavW+tvZdoSRM3vEQUtoItxBtfjFOSy3DEFT8QSUKgExMcu2
+VM9U5Q2en7B05reCMp1VswYLPjnx/+LdzculgDatHyONsX9lKWjuQ0ctdbw6uIyj9lKy62XZCC1E
+hNEHevjpqcHDdHOElPzm1y1S1oZ0EFiNbWkJ3EpnJavxbtnb/hCOCibxaUCO+sX5mfSpMtPkUJHP
+cXhbJT+u3xO/5d4xLLQ3Bu/l1aiWWjM5Out/koBARqfXA7+2ORandZ9ycgqpkhYFLZJlqGKP98AG
+Tg+hljd8bxJm2f8WttH7YoqfRKrEtIQTrjDKrpDGxJunARezB7XaYNyMmJEpG85SqiSKFjA9dYsv
+/PtcZc591d++DmOEHDpyQdP9icHeLHkwS2hUfAJA2zFfDMgUOLTnxpHhTgKLUZ3Q0zRhrqeLiUbP
+AJ/OfQBz3pR/CvP2zfhqio9vYYH5sxgsee9AeMf2A3XQYv8oFPU8rRZ64s/gPzkzKER2IJLZ00VY
+JpV13u9/B9m90CxT6PMzbnclV0zKMJtkGAFqAvbbrlhKbVMb/ADqbVb3Dt1tWb4kKGH2ynrtNtWO
+dMCCgkm2zOmfK/yfvirZ/TcTQh9B+tAIUAjSY3CavN28w8oZmKHCG8AX3GczLKWmvUdaTHcq+fmM
+ki3yPU9G9uxxI1VcJuuJQZWQd627WOx0Zbm8fFeyjnvBquu8BOmJQMz0R2oENgDdtp+fbU7Mxfm6
+YrvKPjQry1bsr+obZG9TI5rkGALUAa56u5DlF+L75kapxI+TUDhXJCU1Lt+lEKU6rIKu7QMZ9FJ5
+By9vnl3F6cBew/rKZjsZbK3MT/VV9y3cVgzr/2UtutStbtoLfhMRs2fHyiCHXFK6T42TaJ4sBtW4
+ZrcM8EMwxjdCsIOfVTTsdFF6z7stpTLpEsLjL6w0GrOnu/Fv69gg+NVBSP7RedOyTDc8Ck2mBg34
+UR9Rl7d69Ibo9m2VGvPUfdqi38dT4xEZYz0FdTVaNNtk+XD68u8WiiNjPySvuoSicNALUkbwWuW0
+jJfUrZEk8cJcHdml+abbS+wtA9VCbHtZzZ5qGKLsiRvyUFP9sEq/rHohPMxygeG0sUqv+bcTs5hT
+6dMOT2Q79RWlsu1YiJ+TrtsCHX0+I7se+vHTFkFTdn7VVcwUk8mBHMelFHbFzoPoP3f9LWDjk7QK
+mQ5S+5O7Yy+O+62hr5lEeQ1nGY5BRDPJXFNV32xVp2P5ZJwshhdSbyQsNxeW9Bl2nH9rGpsS6snW
+eiCPb80/SKYlAogT31xHsp2+Zohi/nzcRX7tbcWDOArom8djE6yQ6NKX3lPyKjxvJdgXc4vXpi86
+KLsYvSkNmcK1wG1r5XTp/l26Ooz5u8FkkopdNyusQba21LAXAk00k32+4/Lo88teWSzPdWzIdqF0
+yGM8qf5gkWqUZ1tr8ppI5NY9XylbX3QDOgis2ZDn/QsX19uhTH10amM0auAdmq8Bi8EfAdS7s68w
+C5R5gYlnuWflYDPjV8cgoYTig7YZd/uBPaTbZ+Mg/2XHvF45acvVMLOIU6h7NCEAezPCdw/vG7Zg
+OS4emvvM7JSeaDV+rlZ46cSjlwa/h+11B8c2snYuPTsP+PWPfIZgNxoAwbFzlA8TOEbseb636v8j
+J0yk3gB3MXUeHP0VpJtix2j33+0oFJJTrAcMn4q7o5mRfkvfo7QHrH6dKuIyL6nv1dP1r2k1Z7Oq
+N0tf30YlE5t+wG1wMxh2LC4PaX/NX9Ijo+NWJnNw1xTkMsCUExBwwYJNWeTAgTE1Uk3tdfLbTgaR
+G1Tg4GsDZQ5CUgGcAqX/orIyaZOZ7iCoa0z5BHmZNKVlzoAqpIX0iZUEH4Ag6G0Wb1tAEnVgEUGK
+f7D/AzvytOu72j/2Cgl0TLb63+YLK5oBxVW0G85t2o1XWatVVy8NhfI2YNyAAmyzwJ5kbe52QXsS
+koOPcFtTV33QVKEdCgdFLqNHnNuGqYjdWaVL13ZVmgtwr6ExCLGxGZ2or0JAY4S/WIp96u2yShIm
+WdSJfiKXPn/f7J/JPz3VlvMjITcOVzsTwn5k0Fe6P+GpnKFqSzH8KCc9wx7b7tEw9iPCJVnwlHXM
+2Utpk5jBAjGk2QjvKIvyI1PotQCtIEbeEHyeHSIqvPiMQVN5OFrvPexi0hz8b7ysWWFO/ctC0kzh
+zdz6OqOyDAlnvBeRS/+oggC3pRx+YZ+BBFWA8Sq5PP8QoEsQsVkZBf2MbZYBHbTcYXwnDYCo7srH
+imloLrtkf9uxknRspGJcpSWrZj6+L+sa8jw5dukU0u7MVfPMocOyAz505fV8ZHURaG/KR/pI3heE
+CSZs059JKffPBL00Lz+fy+Prfy0R8r7DhCjzGPajjhWr8jusboImOcxrbaTiGH+2aUNxkIWDRihS
+5UjRluQ+GYAI4flEacVrHAkJjy/MUdh1hICfhbvFS2E1v/xMO9kMztzdeSLsTKT4BUpiIh11fnYz
+vHBuyOyp/7IqcTw7NLKWV2a2Zw6AfBnQCkghpfzgWKUccc97RpNB6fqIJMG4zk0fDnJelCLnCs6L
+ESu2hlK4E4ZfHg9z2B18FAUrHrueeVu4HafjwGhLJlv74PVs4JHACqCR/4gnu4zjAU5YVXHWNm69
+PeeBCqJ8lZQF0krSRnGvBCzmSc5N0r+1mbq819bNwxW2dxGecxf/4YbncSk+Zo8ipwnp0ebnwCjy
+NoZsacsrG00mpE5HgC7bRzf7NFtHeNt1XBwmSef5GgLdhmeio6JT4xWJRk0GZ+1Qxl2HvR7Bd7Ur
+ezWgAvh5/LHJzznvObf4GiOevTzKw4sAPNp7zjBCKWwyaACTotWGLvCFukZMpahLIOMgRPUQPH/5
+hbv+Sx+N9cd3xd42Im26mJyt02ts3/v7qFUkJBA3Z7tYFpDptLAiug72w8h82eH6ZgESwf2I2gRw
+QyP48PVObegKQblV/yA+xSGNVJrvzA9mPgdU0v+wzTbwiAE+43mM5xB+5EVIam5MfLY7/Vq0G+CX
+fcSXrcRCSmWHKvj7kBm9YCUkMgPOAGaLlXCmma/9NppTlWRagcjuqO+IuPE6zGMsN3bPRsCiZhsT
+L6ebfXBGy8paU8yFq7vHvdIXbt6thlHz6hsbb0PKDkEKf8redw4lfmnRFJ7mLZQp5mmecwnbWeAu
+Lx5fS6TyEbb/TUammJi1oVPRAF61+A2xFfA/O5AiKFli8ROH7jtdkfcN1mzaSHobYZy/ZcVXQSqf
+XOqMN1Bj4A0N2pYTiAFmMCz+htY54z0qNsH59Np+dJWYXeycWnbE27ee7oAJ6kGMMR0h4aA51oEh
+0Pw5FNIe/s4tADognqMmE3p7BZBLoyycQziI0+UaM8KLgtECEdlJlO2i0VXZsqpWSllFCjb+ANXt
+wOxSkxGFaoy605L4qAan+rw7r8aSIjplMSeQ6W+dCxj8QbZb9TvX537S06vYz8Lu5nbEco7MsNhC
+PO+GT822dZ1ZvA10/kf5e0b4hwBZjvl7VgzntJnPpeNBiT61W8VB6VLXgzFzEV7J4pBzCon57CGu
+GcMiysqXkiUIdhtLC+CmAE2vpJiP932OCSYeTg5odrmyHheRF2P154y7Au4oYux/4kFpSOX+ctuD
+PlOS6OgH+Ma1sJkY/RF/fbLJnFJYSU+oOY/PCgm+R4oz4wozAf/bRHRk9hHZ1BlC+ay3RLm4H276
+k75cKwwyOvDuxnOFTaAX7opFDlgAntIenP3irZMxtocpDtH9sJGN43mvuxwt4ZsdhwFdnJzGMKgp
+Sym6QWy37hGXpENZh8uLb7TeggCG58MrokzDCRQL8MrD9TdswUMDLS04h25CEwVZg+0jREveljSH
+EljaztmFC5ktC6AgGf4yFpXmpSQpdtQaAUKcb1N7kJRdO7XNKS3Q5PxdkvNBWCJc1DXkQCpQ71Rs
+CllALPd5d0Ms+TafsmTpwxB67SVbR94Jfx7LAkQYT+SZINmxEqeEetil0e2SXLFL7NYST+oywbwg
+4If2F5ET8FlCvWSWtkm2ypczuTN2QDoiuoqWqzkY17ajEWlzZA6NYcFrfKV+lMyzEn9odvS6fDmL
+ovoN+fmqg/oMrM0IhQK/Ssdz8uYA1ykIzN3PkLtNA4qJNT1hqnuinFLEMFvITK0T5QSr9k08K+pH
+n5lpTYrl5fbV9fyiVxZXPaG5rQsKCUlxsQ5pCUVdiG9Bd9TGjnOlSLT8PGXy7UpfizqDyecHOSQg
+G2qGqiG6mL46Uvg3TDoEzVjg2SCgbn4cDBGI7hSsuqCL8Ui+Ve4m0Tg76+z1Ukl1FOsqY91b8pd5
+XZppqZHWXSLMIaBCM39zsy5WrkUOecXnVqyxFSdkgbJkDsXmxXHxXV7o3KL6mo9KbuSOvxp70BBg
+CDacH0n/m9lLG5HWqb8cgfnJ6F+pusnSd7zmp9vSFaE8au/SM8UpF2ASRDszjoYN6RemX4JuVYWD
++jqZWke7DibJT2TLbwt8OpMILWHsJqB0R9a/3LkpwUfzP8LxB1RsYBlvzsHaZnlJ1XLvdXS6Dq2R
+DOV9JeF/ED1kEkeYvtqRiyELqfDxZJVm6TbwDoWzR3G3SIY5dkfwf8DiqFXhYGl5DzWxYym1v8EK
+Xrnmq4Nv8Cp9Me+N70xi2jQVtyzsMKdhN7KioVEmP62YdIsbUNB3sZaiPrjIqDZs9izo/rcQ/h5V
+jy2iKQwpBobb2JznlCBiR9hj+2shuXvVa7UrpjmfBOUDD4jESmqyewBHgIsefdRHsNZXpzdJSnsR
+ZY5PxrLACETHNUwBtr3UbrboeJypxFNp+y+WzAORZxIeXgfuxkhhppu1rWU11wM7m3Cr+SaWznX8
+UBqu04834fW2tsGm+g+FQiSrDO9kbekh10vpMiKTeUC9WAk21FSU4b9uephzWRg+ckNQi27WN07w
+109CX6kxXgdGWilHxe2fPG9Jcjf54pqGOogq4RKCTI33Fa1vrfu/TyzUuHceeEGfhuQbfFuKevEj
+1cLB9twBLEOdgBhXADDjpxLpWzQX6rObJVr+1WTSkJX/JQiIE5jbVhbyYzB/hWW3YYe93WJbC7jg
+bPRtyffdbV6AFws07ujAs+koN4zOMiOkeAkbsbyX6QCFm07epXtbOv/t6PDGtcfQNnqW8n6miHEK
+FEB7NXH5Ld5AADTAPByLqOuFGUjKml92JH60cnFiFQ4YqXOF/hQ/TVxfUCtuUJuhsb7wB5mf6Slx
+aF0dnyFJZ1cmNd7yRi35cyGZSUqo1G5j6hXMSZX9qDzW/6vssfpt8YXf1XNStMPgnSAWTuJCoPBY
+jbXEIrKx1Vvg9aUriHo/Hn7X+hjgjlZ/87GJWT8r5BtU7pFHFsgF9YUwu9unSodHm8of+x8epJd5
+vGKtPTnmpzUYXOBpgSPkxLxAKX5Ic020tSlPJOaZRa1GLgeeUB2nA7YnAIq2NLtCmFeJCYxbaEPC
+hJH4gcfOq/XkQe+klsFZs5yXwEy1GoFvJHxe1+jzX09K37dklPkzLBn4V2FcCPBICtdwKDd4uScY
+20DVGjQRsrVGago2ZTCuAU3+XB7FO+yxcGnsdJi6wSYjsZhf5AnbJJ0TcEeG2SAm5sh6wtwePsPV
+X/WrtGSW6Xsuh43sJQZ5ysZtWr4kFESYvv9qOU+ttL23IMG2mLkCvKprFhq+Gqmk+ZGDniBQwyTY
+7ccxsjYeaiugaKI5QkQRxAJWmwCP11FHlTG+Ca8nc7ydXmSpJ02bQ3oxP7tW20JUSoRFsyQNbcnQ
+xrmU2CyOHID36r1ss0L07hBLpai0Rk7XG+d+PRrCCEPB99WwnS9McPgzkm/cfwkQU3gs7rfVZifU
+rUBUwYSOYGz8Ri8Bw4l03THoqSe7FUOOE8PhK/B9CwgDvB4p/ySDZkuQ5oSHmAZsr/tU0eQ0yyBD
+VhecbiNkxdqukzz79SryJRGB9Ff5gfmfUCY3DkWBlCLe8Ib6t3aTtHl82BvGq9QriDd3+zoXiUQV
+RHsg4Kp8tkwoU8IdOGrcU85o/KAT0YOLNFTCJiMmXEMLIqxyEv1AGX9+EFoFyM50x15cI7tRy3h7
+kT+KPLipmjvJ7VOZo2MPCbMkfu0kbLc31fQ433yX0X81QjchnYEB8OOnZS0BG2KlkenSipM57V4g
+vypmHtOAaLfr8lCYUfGZFMW5JHPsDdcFlwcnRc5IVGMwCONCjomoy6Wqx30LtWW/Al4EpRbW+ZmB
+jdI0MnJKuYFeftzAcBt9eE29lk+mxS3Im3YCMVbMeo3M92Bcl1ycMdou3CuSqP4/BcNp4DLPMeHF
+6iM7LAbZT4tKR3YdCCTOTS9qm5KaBrwz7xgnolZXcD15kvdOSeBsVD0GtN3it3Qbi2mkEh/k/B4K
+iDRL/TrxEjGnK31x0pJrE/NzZe6TnKDVmRQSNkS4rNYNtX+mFbZ7z49szeSmOkqCJCRNc3u00gKW
+z4r2QiWVzSAckDTFC+T1A3Q/drD6wiwv5DiAaFYr/CXeJv3VeuAwy6o0DjBvV6oOg4n5/UWCpdUR
+9AedAJ3yvmtmbvKSfI3rqDg2s1SojeAfGmwEz4gJ8U7LY+CnQPDv17iiwRdkswMSkIcSuIFT/ADU
+lthIbftxideU+3553nJoQ6oodGIAn+tqdLIwGy6tbQZc/Kq7Wql2+QSuo/dJK6NKc1ldtYUlreHz
+HcgIjjt9KtYMprtr4h0AFk45LNXKhf0b+cd02RELkEwylNJOgbnUj28mJoCVdjXu0wElZ0TNH4Ar
+EWkHqEGxLzmK8xNLbnSUfvtM7QoD2pJSNY55Cuaj/3ZMPgX317P0E0eGztpeSoMHQAnWVeemlLdj
+cGXcGhaAZnZk1grsg6ypAstceMK3WBLaoDJ1CElU3ElQM+TL//Za0D0wrvhfbFL1pojfasZJD41N
+760ebc13i/hlUd1ffA4cMYQh0eIPRK3ycMcXHwhDuuMiBAan/qS839/+3e/rEpYB+MhHYx+/cz1P
+g1zHWHhJlYobPam3WBTcx+um5LEEaxHbIWZb2SwdwYOKKMEYAdZsjNKhXgkK+LVme5UzxOhbdTaA
+hXMJGggA50BsCoyhcLafEaLihpcsDEFql5p4BzSuyGdwBi2669cWyqcHiViHWHRUDN7IOStUU9b/
+EqA6WkkqMu9bzzmTl7FcSzrG51xWFYLJyHYaztcOjM8KqCSdzg1b/rf5R7iUzyX68ni4suYzzFuf
+4spLZd+c8iFs6D0l9jwZnuUwSD0b4QdYQOP2wX3Qc9qBpGiH9dO43Q/skFNoqWWAI2LgdeNsmmMz
+e6+3p6D/xvl0NE5K0CYpaZQZk23vVXvJaDH7uY89G8PvMj+p+TfpIWGZxwSyKQVLOoCxmvwKYFvc
+3CtHUytcfocmlPgfslOIW269ZpCflZ8dp9aBOh5dhBxPKIyrvB4ewPh7AmQK7xjvmnc0nme3qWTh
+xq3jmrKJ9vZIZRGwM4t/sCAXTGNAx/XySFEStJT5k3iz4Vx3FFQ9zRqZ5EYGzQV9iZmjlp0Acdt1
+TpIbAKaLyNFEAAZ1Rsxq11qwXbOUvNA4MqjQPYEnGQBUz/Sn30oM1lsEzW5ZE1TTQAIwcex/AEYQ
+RzedCxMYrEcrgRLz+mrRjwEsnZeNASUUVzIF62GQJilmUDqyFFPGihgzzsdQlSfmJsPt/PWAb8sy
+y0+3hoh4eV5I2MRSVh4+QhP1fEFpjANWwMLGrvi/X90mS1T9u8lcnk2nHjNcLeEHj0BqR8hLuojU
+9DUG4oDOTmqN2YseXGzBw3dRRqr5BaaXEKQkDYJeQxWW7O02ae/Ckh/QQOXNRvcsUn0b2hB8/D6r
+9kQa57hzhJndFdN6g8Ha9CK1FH7k8MUtQVtetcbhbxOtmwljQjFpcYYH/mY71gyr2LciSpbY/oT6
+Jvu01Ees5gzATQq3YtpVxNFx0axCNOZa4PNL9IgEJomwF1+7tNEPzxU56bVps2xib64BJceorevl
+pMUbwrAEm8nRdVRdrHppHfPUGS/gnBNpcfK5foQgJ+qh4TaoekqN31WLAw8wXiYZ60CbWiGyzZw7
+R5asLpOMIbvZL0sOTKpnU+6J6KKdcuzYUXIHrCp5CvYZQnbz/WKYSm/pijpYA9mKn/VEb68dYSN6
+q9XS8UviXVNGO7u0but87YV0x+8XRJS5gEDsAorqLRKguhiLYpVoRr2cK15/1DB/YMabA3cIS7IL
+zDCZd3XdMHues/11F034TdZDT0+f/esX6gqqid3PYWJGDQUYVpkLwC6PTnKB1So8diKFlbq7HqlB
+4ZsWC0TEkSoDW6B1L2oKhqLQX17eSz8bjsjK6KFD0b5ZfnszTh4pLl0X0KD7d0h6LNe/j96ZXr1l
+k98RXGoowwUBAcGSXhpXvSjJ872pFThvon+NfLzz7oWQaTHY5WT4gai+hSn2MrhDkmtarpzoyynG
+JRws/hPsctyebk+3y7/nszr1o8dMcuBeDX+4uBDQEG+EGOOyWDhSykuYZU7KFhCcadjx9sfaQSkz
+nu2oREpB5Ic47qTHwK8RkBc+rSuvjLoCSoMwZc8wyBwT85E0xkpF2G6nuzPcTESlzQwdAGjtZbUj
+CaacZkmnqSiegeP7BPNVtY5i06WJInql3L6sBbHpO930VOSdlJVMHzIfs48Z3Jy4Om/8UIbS0pim
+FOAZzrlqhTxCnbpvaZnLsDWmwiJOHGXPD0cHD6yz1APb3rzjml34FDyZlB5qr0ukZsFtUIPVAj1V
+HWKpfUOt9ez67EpML2w562LgtBvF/NdL0gfbHm0DYZHC+oi8YouJdCpA5OfYnRHpia0rDcZcocDq
+Cq08TgjfntzPPe5J3a/AwWnU/rkxk7v6/uY+6M3JsgBk9pxpULHBbkl3WIIFpF+0vb77uCjYQR6Q
+b3KAooXn5FYdfFmU5LGmCH/m9vFkrANtWjq2mMgWx3JaKNmwTgs1aPISJLmCPGfGvvCe6CcnFufF
+ztIDGdDjOtG+vjy6HZSRLztrtHQdepy5zRQPM0Vo47+cBGb1KfG/RvIIsENoJK0Gy3ifY0SBHbiW
+/9BZQUsRzHA/A91S5y+GNZbi2/1HA8LRRW7nfp13IxTyBRKNrqOJZEjx6KSVyivQQmCYtjP5vUo7
+q7O1FRzt5jFPgWO2BS/AuBIZG5p+7ldcCfPYaP/Kp8Tcsr398INGUzDRYt9qLyGBzArjWwFtTZK1
+d1PGL24FYiKfmTjR/r4sXQQJXr/mFzyt0ZvWzBrmHpNure/Dr2Sv35UDOrciA91rvngezYNXh8yZ
+S8VyeYE08PFU0wSR66gym+vdkvho77yPXQP+7M4cvIQ/HNfDvI3iCW6PTg+sikY/wUgDE8uEoO0k
+PSaCC7TlrH+xskDDkhGP1tM2jvP34VqedGebD+sXm+DqLo18p4PwA5rp05tuyb4KxcNSxujJr3N5
+nynxHrkYGkCJySGlbNUB6fdjaZUCbWKVbky/yFnMz42aky6rgwJvTXnw9e0hbsznyYChWdiDRYRA
+HotNRYRbku437A+emMHCqWRf7QGdoKbev4ydeZB7saR7g2s/C1F9GSaUHYZlS7UjjeCeL4aUxwlc
+fPTCYOD1sH69VgpEuu4RMHmI2pA1NGX8qJ3wSCjmb4PK6yPz6K62SvY2kzefjfiXUjvJHhdMAhEg
+TxfmPSX8zYXIJgY//RovwcPT/qUGM6Z+R6bGLsMNrKAfbLNh8YYGRr5xBN5pr40iAJmVdFPH/RoL
+wyZvxcO8i+xLqoe/W9N7Q3smvYBRWljAWv6lhrZXPhNLcsQt3d2860RfLJI8U9Ao+wlmhZFlDJD6
+fKzXIKpAdFUf6/9sVOkIAFcdeXtf6TD9XrVkJvY5tcaEYOiVimTlum1tpHkQdpALgJ90SLWpBTLz
++RQPn1t1mnquqKOaf79T/DJ05i1B4zJLjT8RbDcNeNFMNJ1953FX5ML813wrjUZ/wH9H2vdmQlym
+DqVzlbTN4TYnUSBN7sFOC+YHeiYDYMKsQW6EKHW20Lql3ZX9+1exfRYuZbkHbuUYixI1E3/08zRO
+l0MmJ2MLUZmemM9qI7+umrjDFRHKEms5R2iOIICkmdPLmxsZ2Uus3CBMb9XYPD5YWaRg6A10s7KD
+XEYM6/8lJ4pqwtRBuLI+RbVBGjxcN4VVL4OUUq2DzxkSfzySS/eCUa3sryjBt6nwb9UUsAKnkiS1
+H28qeafyXmDcuLimKbIFwfQ8yunC/mZcE3H1GuiF41bFsJDSIQlb272u/lLuZKhIZkjiHbdAvPFn
+cwZBVr+fKOAYyb3K+TIZuuVw/TNGyCLgrzrVjz4bUKCgDq6RstaBE1TnzFLa7vpIg7zFrwT+RNH/
+JQM0RyCUeI+acrRx28rmF6llqxhOfj6Ei74ZX0vqyRbPbrswiHHkIcae6vy7olH8FKkkwuTM5gLA
+Gx+VKnDoFrWx2uJDnMZUOgdtTlYDUFrpbmoyFhy9pZtR285yqdDAyJQIiSR08wviaWWMcChvQEn2
+Sp1r3+nE98F14d+1OOWB2oDzXqC1jxZepob6jVXsS9/9puWNC1DOGB8EaWi1FuwpTZcqxVIYGkON
+2Wjo4YDxmyAXxmddA5lAqp24pLYVkTyfHej903oRrF0NW/gcl4HP79FoEaV+JYhtqPCZIYi2OBPn
+Xd69YGOO+WEu0skE/NM/zmblP4DtaGr1Fzq/ahFRF8vpof46NgL1LzpcPKgk0JLcGqXRK4riLSOm
+fAN2xJFGLNfGPg4Dvc2GTUHO0i1B5kgRGCpphdFl8M2yEm7OQpQ8EfvL6kz/D/2GE2wl+9EzmUtk
+4Ry2LG+pqDEC6TSyU+9l/crNPBPI0eOno7VRQuBwkRkUiugHbR3l7WnnUdnkuqIKcmdONn8yN8rC
+JoUCOQQmAMmhl7GB3Dq9tkEGpoAsjIkvPqgVBiZqUeAIrnsen8KQOVqtWhGL5+4PJR0p+Qg8b4iC
+93QqQOuvzeJlLtgKvChiG/5bu+Mk0+JQoNP/LWLaOOktqwvYZRVUTZmDgBg+Jj6a7ZXmHDlIK35c
+yFB6lg6//WOtBURkIXqAGs1SuDwntmmcL19zKCay+qngG0f3khnaHcFVc1KsaWZIEaAI8kffY2L+
+/InKb1QAs54O5qTz2Y57CYcnziZAvlS3v7sgvsO/lCs1KOWZ3hVAxQfi0LKI/ahcTDBq70VWG90V
+1+yI/rEWnDMOlxy15+O22vdtSx7jjCCArrGj+Y42+xG+7eotdMjyqapdJaSZdS9pMUgv7tMDRXw1
+M8JNQN9ZngbE4KfBkwPT/M+DeCFSb4erxNqnhJ5cDmZj9VpzE0U1oXN7FTC4WM+3J8QMmdaeG3gd
+J8/ZT6ZexC2CX2acb8mCl7CU+uNG6fTTvj/fe18Xjms1G9kCyxHJ5/+F+gnaCqNIylDb20nUCmh8
+0JMiFcQtiVjvcIva6X4yL37pYfiDOlz6vEdPa7+andCB9z+l6RnwvV15XtO1FUY9gLVtPCITWKU6
+4XmuHhxk56EaDin3w6WvtIczLGJ1kJQYd3jc/ql/Fyg5qFuUp7pgQO85ZPDNgsobJF6mU9BeKBSZ
++qA8ohBT923spy3M5H4yYeIEkV0De+vrZ9vlsZBO/VHMpBdTSFgQSFgE08mMgtkpkLLWyjbHEVum
+HY5QdwWIfhHxbMV+A31lXhqGV8GC6xK6+/OEOYmuuopyKvusbfIiauzpr6g7zP0/S836UlhpMelA
+1Pe3qm7xILghYXQPJUe0yNpMX86aGYWle19HYr6jwJuFFllmOthf/zzKqoHtstk7ZoGxMAQ3cq9a
+Pbteo9AQSlCUSBPmhFOYEqITaN7Ip8zKvKl84irbWiwakB72bGUN+Z/V9jiPJxL49ausQedo4/97
+bFFEjIDl3TgUJxeRQXiwAD0urMROYGCZxl0wFjlCGAYI0L+3gkuy2H4AeK14M8oPVH0rIhHsCg3h
+69n/TrZ28zlCRwhkvDndL28VpClEC6ilsVsAvvXhLQqa2UGtD8gDyESHDPQT3Tazef1dep3kpnON
+UVmd4sjxYgE25n0hCEB+b/w/WrLspmYEj1bR2jBgcKUkEgDeFiCQ4DPgcfdYIwyPp7qBhoI2opZ+
++enJda3DZN76ythcL2jjPdqO86uVP6i6sVocta298gBQvHt3/fsbNKhwf0KJdjLdprmpWv35iQt7
+nScVbyUQoiIPp7/MFXg99L78AbuWlaSl/VTYmWl7Bb1UsLpfLEa/ZbGxHFsJs4B55UU+zWH2N+fB
+ZDPjeOuFqJyiycNL7VaUmzGWJJrFGrnp8t3JBQXLzape4ftQSVILB0/j9u8IYjIj5+l8fI6vJzxC
+UiRdRrAgc8XeCSS04avvoY80V65YdHLCa+BNBbUoJJ7Kiip+POCqMtJFvSvtFXwPqalXZamxYqmJ
+qkQv/ZwqRf5ayVKsqtZE9qE+WgS7ihWWitwc0LyXqgAcEeO6jM2RKh/jVeEpj3QUZdwBDlFySDhp
+jFizB1tWaWppI8F8qC2DWs7OQLCjEMsX/0O81WLYmS/64RcDr3oTWyQYIA1hjdNIxnaW67dZ1V/T
+I6wuNH0dZmnl+K6pg3QQf8NnHt3INjGLbYREzTXbqg3k5VQ4VdyH880ijQ57YmUK+JoW773+ePYW
+0C3g7eZaJ4G4xBI4TPvKSjwasa96i9ZSc9MtSZYpb9fdx3Hqj8J7RwSC3n84fx+PfLiIZdJ0/Vs1
+9ciM+Cg4srkOMZWyR/ghfXXeP6IOBBa5ehSUqGw/yMIz8h04dYu+3Fo28UFfDAXEOH4ES1TZ9Eih
+9riyTpMBUuOUiAHphlLoiP8q7SQWFlMpIBoGVMXVvV/ZiqpwdJGczLFKJDlx4kjNR5i3OvqxuBaa
+ycHwhp842bmxlRmIHlNHGH3NfM7jxy0w9dx0q6V/PAVb2cjMXTMNFU6xksf/ghrsydoNbYXEsKSR
+QKf8BWSPHfiDE5uNZfaaoKSe+5VscFC8DhmYkVhgagiwVmhIIVFhn0x2mkSRwzCOBAkJodvO34FT
+UK1Nr1+0WT/iUa4He1aqeQ4EMoK/VIDvJS3p1V9lIiEdHogkXoumIdQIDFqKCwF9SXw6+YInu1Bu
+XIZmYLeAzewzN9MZbwR9ZdfqL6VO3KelaJRuBxq6zR4s983AiuRehT2GbEOmkBZbESOIlveOkrx1
+h0CJ2e7b8jmTGvIdzhP2nVeDnFJTEUzP9g==
+`pragma protect end_protected
+module FifoLMX (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [23:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [23:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoLMX  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[23:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[23:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoLMX */

+ 625 - 0
src/src/FifoCtrl/FifoLMX/FifoLMX.vo

@@ -0,0 +1,625 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//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
+
+`timescale 100 ps/100 ps
+module FifoLMX(
+	Data,
+	Reset,
+	WrClk,
+	RdClk,
+	WrEn,
+	RdEn,
+	Q,
+	Empty,
+	Full
+);
+input [23:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [23:0] Q;
+output Empty;
+output Full;
+wire [23:0] Data;
+wire Empty;
+wire Full;
+wire GND;
+wire [23:0] Q;
+wire RdClk;
+wire RdEn;
+wire Reset;
+wire VCC;
+wire WrClk;
+wire WrEn;
+wire \fifo_inst/n23_5 ;
+wire \fifo_inst/n27_3 ;
+wire \fifo_inst/wfull_val ;
+wire \fifo_inst/n277_3 ;
+wire \fifo_inst/n372_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.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/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/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: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 [3:0] \fifo_inst/rptr ;
+wire [4:0] \fifo_inst/wptr ;
+wire [3:0] \fifo_inst/Equal.wbin ;
+wire [31:24] \fifo_inst/DO ;
+VCC VCC_cZ (
+  .V(VCC)
+);
+GND GND_cZ (
+  .G(GND)
+);
+GSR GSR (
+	.GSRI(VCC)
+);
+LUT4 \fifo_inst/n23_s1  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.I3(WrEn),
+	.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]),
+	.F(\fifo_inst/Equal.rgraynext [1])
+);
+defparam \fifo_inst/Equal.rgraynext_1_s0 .INIT=16'h07F8;
+LUT3 \fifo_inst/Equal.rgraynext_2_s0  (
+	.I0(\fifo_inst/Equal.rgraynext_2_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 ),
+	.I1(\fifo_inst/rbin_num [2]),
+	.I2(\fifo_inst/rbin_num [3]),
+	.I3(\fifo_inst/rbin_num [4]),
+	.F(\fifo_inst/Equal.rgraynext [3])
+);
+defparam \fifo_inst/Equal.rgraynext_3_s0 .INIT=16'h07F8;
+LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
+	.I0(\fifo_inst/n23_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.I2(\fifo_inst/Equal.wbin [1]),
+	.F(\fifo_inst/Equal.wgraynext [0])
+);
+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 ),
+	.I2(\fifo_inst/Equal.wbin [1]),
+	.I3(\fifo_inst/Equal.wbin [2]),
+	.F(\fifo_inst/Equal.wgraynext [1])
+);
+defparam \fifo_inst/Equal.wgraynext_1_s0 .INIT=16'h0BF4;
+LUT4 \fifo_inst/Equal.wgraynext_2_s0  (
+	.I0(Full),
+	.I1(\fifo_inst/Equal.wgraynext_2_4 ),
+	.I2(\fifo_inst/Equal.wbin [2]),
+	.I3(\fifo_inst/Equal.wbin [3]),
+	.F(\fifo_inst/Equal.wgraynext [2])
+);
+defparam \fifo_inst/Equal.wgraynext_2_s0 .INIT=16'h0BF4;
+LUT4 \fifo_inst/Equal.wgraynext_3_s0  (
+	.I0(Full),
+	.I1(\fifo_inst/Equal.wgraynext_3_4 ),
+	.I2(\fifo_inst/Equal.wbin [3]),
+	.I3(\fifo_inst/wptr [4]),
+	.F(\fifo_inst/Equal.wgraynext [3])
+);
+defparam \fifo_inst/Equal.wgraynext_3_s0 .INIT=16'h0BF4;
+LUT4 \fifo_inst/wfull_val_s0  (
+	.I0(\fifo_inst/wptr [4]),
+	.I1(\fifo_inst/rbin_num [4]),
+	.I2(\fifo_inst/wfull_val_4 ),
+	.I3(\fifo_inst/wfull_val_5 ),
+	.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  (
+	.I0(\fifo_inst/wfull_val_4 ),
+	.I1(\fifo_inst/wfull_val_5 ),
+	.I2(\fifo_inst/n372_5 ),
+	.F(\fifo_inst/n372_4 )
+);
+defparam \fifo_inst/n372_s1 .INIT=8'h80;
+LUT3 \fifo_inst/wfull_val1_s9  (
+	.I0(\fifo_inst/wfull_val1_3 ),
+	.I1(\fifo_inst/wfull_val1_2 ),
+	.I2(\fifo_inst/wfull_val1_0 ),
+	.F(\fifo_inst/wfull_val1 )
+);
+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 ),
+	.I2(\fifo_inst/wfull_val_4 ),
+	.I3(\fifo_inst/wfull_val1_16 ),
+	.F(\fifo_inst/wfull_val1_0 )
+);
+defparam \fifo_inst/wfull_val1_s10 .INIT=16'hFF80;
+LUT3 \fifo_inst/Full_d_s  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.F(Full)
+);
+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 ),
+	.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 ),
+	.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 ),
+	.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;
+LUT4 \fifo_inst/rbin_num_next_4_s2  (
+	.I0(\fifo_inst/Equal.rgraynext_2_4 ),
+	.I1(\fifo_inst/rbin_num [2]),
+	.I2(\fifo_inst/rbin_num [3]),
+	.I3(\fifo_inst/rbin_num [4]),
+	.F(\fifo_inst/rbin_num_next [4])
+);
+defparam \fifo_inst/rbin_num_next_4_s2 .INIT=16'h7F80;
+LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
+	.I0(\fifo_inst/n23_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_2_s3  (
+	.I0(Full),
+	.I1(\fifo_inst/Equal.wgraynext_2_4 ),
+	.I2(\fifo_inst/Equal.wbin [2]),
+	.F(\fifo_inst/Equal.wbinnext [2])
+);
+defparam \fifo_inst/Equal.wbinnext_2_s3 .INIT=8'hB4;
+LUT3 \fifo_inst/Equal.wbinnext_3_s3  (
+	.I0(Full),
+	.I1(\fifo_inst/Equal.wgraynext_3_4 ),
+	.I2(\fifo_inst/Equal.wbin [3]),
+	.F(\fifo_inst/Equal.wbinnext [3])
+);
+defparam \fifo_inst/Equal.wbinnext_3_s3 .INIT=8'hB4;
+LUT4 \fifo_inst/Equal.wbinnext_4_s2  (
+	.I0(Full),
+	.I1(\fifo_inst/Equal.wgraynext_3_4 ),
+	.I2(\fifo_inst/Equal.wbin [3]),
+	.I3(\fifo_inst/wptr [4]),
+	.F(\fifo_inst/Equal.wbinnext [4])
+);
+defparam \fifo_inst/Equal.wbinnext_4_s2 .INIT=16'hBF40;
+LUT4 \fifo_inst/Equal.rgraynext_2_s1  (
+	.I0(Empty),
+	.I1(RdEn),
+	.I2(\fifo_inst/rbin_num [0]),
+	.I3(\fifo_inst/rbin_num [1]),
+	.F(\fifo_inst/Equal.rgraynext_2_4 )
+);
+defparam \fifo_inst/Equal.rgraynext_2_s1 .INIT=16'h4000;
+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;
+LUT3 \fifo_inst/Equal.wgraynext_2_s1  (
+	.I0(WrEn),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.I2(\fifo_inst/Equal.wbin [1]),
+	.F(\fifo_inst/Equal.wgraynext_2_4 )
+);
+defparam \fifo_inst/Equal.wgraynext_2_s1 .INIT=8'h80;
+LUT4 \fifo_inst/Equal.wgraynext_3_s1  (
+	.I0(WrEn),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.I2(\fifo_inst/Equal.wbin [1]),
+	.I3(\fifo_inst/Equal.wbin [2]),
+	.F(\fifo_inst/Equal.wgraynext_3_4 )
+);
+defparam \fifo_inst/Equal.wgraynext_3_s1 .INIT=16'h8000;
+LUT4 \fifo_inst/wfull_val_s1  (
+	.I0(\fifo_inst/wptr [0]),
+	.I1(\fifo_inst/rptr [0]),
+	.I2(\fifo_inst/wptr [1]),
+	.I3(\fifo_inst/rptr [1]),
+	.F(\fifo_inst/wfull_val_4 )
+);
+defparam \fifo_inst/wfull_val_s1 .INIT=16'h9009;
+LUT4 \fifo_inst/wfull_val_s2  (
+	.I0(\fifo_inst/wptr [2]),
+	.I1(\fifo_inst/rptr [2]),
+	.I2(\fifo_inst/wptr [3]),
+	.I3(\fifo_inst/rptr [3]),
+	.F(\fifo_inst/wfull_val_5 )
+);
+defparam \fifo_inst/wfull_val_s2 .INIT=16'h0990;
+LUT3 \fifo_inst/n372_s2  (
+	.I0(\fifo_inst/reset_w [1]),
+	.I1(\fifo_inst/wptr [4]),
+	.I2(\fifo_inst/rbin_num [4]),
+	.F(\fifo_inst/n372_5 )
+);
+defparam \fifo_inst/n372_s2 .INIT=8'h14;
+LUT2 \fifo_inst/wfull_val1_s11  (
+	.I0(\fifo_inst/reset_w [1]),
+	.I1(\fifo_inst/wfull_val1_0 ),
+	.F(\fifo_inst/wfull_val1_16 )
+);
+defparam \fifo_inst/wfull_val1_s11 .INIT=4'h4;
+LUT2 \fifo_inst/Full_s9  (
+	.I0(\fifo_inst/reset_w [1]),
+	.I1(\fifo_inst/Full_1 ),
+	.F(\fifo_inst/Full_11 )
+);
+defparam \fifo_inst/Full_s9 .INIT=4'h4;
+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/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 [4]),
+	.I1(\fifo_inst/rbin_num [4]),
+	.I2(\fifo_inst/n131_3 ),
+	.F(\fifo_inst/rempty_val )
+);
+defparam \fifo_inst/rempty_val_s2 .INIT=8'h09;
+DFFP \fifo_inst/reset_r_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [0])
+);
+defparam \fifo_inst/reset_r_0_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_1_s0  (
+	.D(\fifo_inst/reset_w [0]),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [1])
+);
+defparam \fifo_inst/reset_w_1_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [0])
+);
+defparam \fifo_inst/reset_w_0_s0 .INIT=1'b1;
+DFFC \fifo_inst/rbin_num_4_s0  (
+	.D(\fifo_inst/rbin_num_next [4]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [4])
+);
+defparam \fifo_inst/rbin_num_4_s0 .INIT=1'b0;
+DFFC \fifo_inst/rbin_num_3_s0  (
+	.D(\fifo_inst/rbin_num_next [3]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [3])
+);
+defparam \fifo_inst/rbin_num_3_s0 .INIT=1'b0;
+DFFC \fifo_inst/rbin_num_2_s0  (
+	.D(\fifo_inst/rbin_num_next [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [2])
+);
+defparam \fifo_inst/rbin_num_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/rbin_num_1_s0  (
+	.D(\fifo_inst/rbin_num_next [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [1])
+);
+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 ),
+	.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/rptr_3_s0  (
+	.D(\fifo_inst/Equal.rgraynext [3]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [3])
+);
+defparam \fifo_inst/rptr_3_s0 .INIT=1'b0;
+DFFC \fifo_inst/rptr_2_s0  (
+	.D(\fifo_inst/Equal.rgraynext [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [2])
+);
+defparam \fifo_inst/rptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/rptr_1_s0  (
+	.D(\fifo_inst/Equal.rgraynext [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [1])
+);
+defparam \fifo_inst/rptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/rptr_0_s0  (
+	.D(\fifo_inst/Equal.rgraynext [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [0])
+);
+defparam \fifo_inst/rptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_4_s0  (
+	.D(\fifo_inst/Equal.wbinnext [4]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [4])
+);
+defparam \fifo_inst/wptr_4_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_3_s0  (
+	.D(\fifo_inst/Equal.wgraynext [3]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [3])
+);
+defparam \fifo_inst/wptr_3_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_2_s0  (
+	.D(\fifo_inst/Equal.wgraynext [2]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [2])
+);
+defparam \fifo_inst/wptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_1_s0  (
+	.D(\fifo_inst/Equal.wgraynext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [1])
+);
+defparam \fifo_inst/wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_0_s0  (
+	.D(\fifo_inst/Equal.wgraynext [0]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [0])
+);
+defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_3_s0  (
+	.D(\fifo_inst/Equal.wbinnext [3]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Equal.wbin [3])
+);
+defparam \fifo_inst/Equal.wbin_3_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_2_s0  (
+	.D(\fifo_inst/Equal.wbinnext [2]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Equal.wbin [2])
+);
+defparam \fifo_inst/Equal.wbin_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_1_s0  (
+	.D(\fifo_inst/Equal.wbinnext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Equal.wbin [1])
+);
+defparam \fifo_inst/Equal.wbin_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_0_s0  (
+	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.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 ),
+	.CLK(RdClk),
+	.PRESET(\fifo_inst/n277_3 ),
+	.Q(Empty)
+);
+defparam \fifo_inst/Empty_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_r_1_s0  (
+	.D(\fifo_inst/reset_r [0]),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [1])
+);
+defparam \fifo_inst/reset_r_1_s0 .INIT=1'b1;
+DFFC \fifo_inst/wfull_val1_s0  (
+	.D(\fifo_inst/wfull_val ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wfull_val1_2 )
+);
+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 ),
+	.Q(\fifo_inst/wfull_val1_3 )
+);
+defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
+DFFC \fifo_inst/Full_s0  (
+	.D(\fifo_inst/wfull_val1 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Full_1_2 )
+);
+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 ),
+	.Q(\fifo_inst/Full_2 )
+);
+defparam \fifo_inst/Full_s1 .INIT=1'b1;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n23_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n27_3 ),
+	.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}),
+	.DO({\fifo_inst/DO [31:24], Q[23:0]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_0=32;
+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]),
+	.I3(GND),
+	.CIN(\fifo_inst/n129_3 ),
+	.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]),
+	.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;
+INV \fifo_inst/n4_s2  (
+	.I(RdClk),
+	.O(\fifo_inst/n4_6 )
+);
+INV \fifo_inst/n9_s2  (
+	.I(WrClk),
+	.O(\fifo_inst/n9_6 )
+);
+endmodule

+ 24 - 0
src/src/FifoCtrl/FifoLMX/FifoLMX_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:23:21 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoLMX your_instance_name(
+		.Data(Data_i), //input [23:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [23:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

+ 20 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FIFOHS.prj

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE gowin-synthesis-project>
+<Project>
+    <Version>beta</Version>
+    <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
+    <FileList>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+    </FileList>
+    <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="output_file" value="FifoLMX.vg"/>
+        <Option type="output_template" value="FifoLMX_tmp.v"/>
+        <Option type="ram_balance" value="1"/>
+        <Option type="ram_rw_check" value="1"/>
+        <Option type="verilog_language" value="sysv-2017"/>
+    </OptionList>
+</Project>

+ 45 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.log

@@ -0,0 +1,45 @@
+GowinSynthesis start
+Running parser ...
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoLMX'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+NOTE  (EX0101) : Current top module is "FifoLMX"
+[5%] Running netlist conversion ...
+Running device independent optimization ...
+[10%] Optimizing Phase 0 completed
+[15%] Optimizing Phase 1 completed
+[25%] Optimizing Phase 2 completed
+Running inference ...
+[30%] Inferring Phase 0 completed
+[40%] Inferring Phase 1 completed
+[50%] Inferring Phase 2 completed
+[55%] Inferring Phase 3 completed
+Running technical mapping ...
+[60%] Tech-Mapping Phase 0 completed
+[65%] Tech-Mapping Phase 1 completed
+[75%] Tech-Mapping Phase 2 completed
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0101) : The netlist is not one directed acyclic graph
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+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
+GowinSynthesis finish

+ 283 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX.vg

@@ -0,0 +1,283 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:23:21 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=11824)
+`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==
+`pragma protect end_protected
+module FifoLMX (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [23:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [23:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoLMX  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[23:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[23:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoLMX */

文件差異過大導致無法顯示
+ 1420 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn.rpt.html


+ 46 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_resource.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>Hierarchy Module Resource</title>
+<style type="text/css">
+body { font-family: Verdana, Arial, sans-serif; font-size: 14px; }
+div#main_wrapper{ width: 100%; }
+h1 {text-align: center; }
+h1 {margin-top: 36px; }
+table, th, td { border: 1px solid #aaa; }
+table { border-collapse:collapse; margin-top: 10px; margin-bottom: 20px; width: 100%; }
+th, td { align = "center"; padding: 5px 2px 5px 5px; }
+th { color: #fff; font-weight: bold; background-color: #0084ff; }
+table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-color: #dee8f4; }
+</style>
+</head>
+<body>
+<div id="main_wrapper">
+<div id="content">
+<h1>Hierarchy Module Resource</h1>
+<table>
+<tr>
+<th class="label">MODULE NAME</th>
+<th class="label">REG NUMBER</th>
+<th class="label">ALU NUMBER</th>
+<th class="label">LUT NUMBER</th>
+<th class="label">DSP NUMBER</th>
+<th class="label">BSRAM NUMBER</th>
+<th class="label">SSRAM NUMBER</th>
+<th class="label">ROM16 NUMBER</th>
+</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">4</td>
+<td align = "center">39</td>
+<td align = "center">-</td>
+<td align = "center">1</td>
+<td align = "center">-</td>
+<td align = "center">-</td>
+</tr>
+</table>
+</div><!-- content -->
+</div><!-- main_wrapper -->
+</body>
+</html>

+ 2 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_syn_rsc.xml

@@ -0,0 +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)"/>

+ 24 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/FifoLMX_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:23:21 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoLMX your_instance_name(
+		.Data(Data_i), //input [23:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [23:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

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

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

+ 6 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/fifo_parameter.v

@@ -0,0 +1,6 @@
+parameter WDEPTH = 16;
+parameter ASIZE = 4;
+parameter WDSIZE = 24;
+parameter RDEPTH = 16;
+parameter RASIZE = 4;
+parameter RDSIZE = 24;

+ 1 - 0
src/src/FifoCtrl/FifoLMX/temp/FIFOHS/project.ini

@@ -0,0 +1 @@
+RESOURCE_CHECK=false

+ 35 - 0
src/src/FifoCtrl/FifoMax2870/FifoMax2870.ipc

@@ -0,0 +1,35 @@
+[General]
+ipc_version=4
+file=FifoMax2870
+module=FifoMax2870
+target_device=gw1n9-014
+type=fifo_hs
+version=1.0
+
+[Config]
+AlmostEmptyFlag=false
+AlmostEmptyFlagItem=Empty_Single Threshold Constant Parameter
+AlmostFullFlag=false
+AlmostFullFlagItem=Full_Single Threshold Constant Parameter
+BSRAM=true
+ControlledByRdEn=false
+ECCSelected=false
+EmptyClear=1
+EmptySet=1
+EnReset=true
+FirstWordFallThrough=false
+FullClear=1
+FullSet=1
+LANG=0
+OutputRegistersSelected=false
+REG=false
+ReadDataNum=false
+ReadDataWidth=32
+ReadDepth=4
+ResetSynchronization=true
+SSRAM=false
+StandardFIFO=true
+Synthesis_tool=GowinSynthesis
+WriteDataNum=false
+WriteDataWidth=32
+WriteDepth=4

+ 214 - 0
src/src/FifoCtrl/FifoMax2870/FifoMax2870.v

@@ -0,0 +1,214 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:27:38 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7888)
+`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==
+`pragma protect end_protected
+module FifoMax2870 (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [31:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [31:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoMax2870  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[31:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[31:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoMax2870 */

+ 438 - 0
src/src/FifoCtrl/FifoMax2870/FifoMax2870.vo

@@ -0,0 +1,438 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//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
+
+`timescale 100 ps/100 ps
+module FifoMax2870(
+	Data,
+	Reset,
+	WrClk,
+	RdClk,
+	WrEn,
+	RdEn,
+	Q,
+	Empty,
+	Full
+);
+input [31:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [31:0] Q;
+output Empty;
+output Full;
+wire [31:0] Data;
+wire Empty;
+wire Full;
+wire GND;
+wire [31:0] Q;
+wire RdClk;
+wire RdEn;
+wire Reset;
+wire VCC;
+wire WrClk;
+wire WrEn;
+wire \fifo_inst/n21_5 ;
+wire \fifo_inst/n25_3 ;
+wire \fifo_inst/n257_3 ;
+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/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/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: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 [1:0] \fifo_inst/rptr ;
+wire [2:0] \fifo_inst/wptr ;
+wire [1:0] \fifo_inst/Equal.wbin ;
+VCC VCC_cZ (
+  .V(VCC)
+);
+GND GND_cZ (
+  .G(GND)
+);
+GSR GSR (
+	.GSRI(VCC)
+);
+LUT4 \fifo_inst/n21_s1  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.I3(WrEn),
+	.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 )
+);
+defparam \fifo_inst/n25_s0 .INIT=4'h4;
+LUT4 \fifo_inst/Equal.rgraynext_1_s0  (
+	.I0(\fifo_inst/n25_3 ),
+	.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;
+LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
+	.I0(\fifo_inst/n21_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.I2(\fifo_inst/Equal.wbin [1]),
+	.F(\fifo_inst/Equal.wgraynext [0])
+);
+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 ),
+	.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;
+LUT3 \fifo_inst/wfull_val1_s9  (
+	.I0(\fifo_inst/wfull_val1_3 ),
+	.I1(\fifo_inst/wfull_val1_2 ),
+	.I2(\fifo_inst/wfull_val1_0 ),
+	.F(\fifo_inst/wfull_val1 )
+);
+defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
+LUT4 \fifo_inst/wfull_val1_s10  (
+	.I0(\fifo_inst/wfull_val_4 ),
+	.I1(\fifo_inst/wfull_val_5 ),
+	.I2(\fifo_inst/wfull_val1_0 ),
+	.I3(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/wfull_val1_0 )
+);
+defparam \fifo_inst/wfull_val1_s10 .INIT=16'h00F8;
+LUT3 \fifo_inst/Full_d_s  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.F(Full)
+);
+defparam \fifo_inst/Full_d_s .INIT=8'hAC;
+LUT4 \fifo_inst/Full_s8  (
+	.I0(\fifo_inst/wfull_val_4 ),
+	.I1(\fifo_inst/wfull_val_5 ),
+	.I2(\fifo_inst/Full_1 ),
+	.I3(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/Full_1 )
+);
+defparam \fifo_inst/Full_s8 .INIT=16'h00F8;
+LUT4 \fifo_inst/rbin_num_next_2_s2  (
+	.I0(\fifo_inst/n25_3 ),
+	.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;
+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;
+LUT4 \fifo_inst/Equal.wbinnext_2_s2  (
+	.I0(Full),
+	.I1(\fifo_inst/Equal.wgraynext_1_4 ),
+	.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;
+LUT2 \fifo_inst/wfull_val_s1  (
+	.I0(\fifo_inst/wptr [2]),
+	.I1(\fifo_inst/rbin_num [2]),
+	.F(\fifo_inst/wfull_val_4 )
+);
+defparam \fifo_inst/wfull_val_s1 .INIT=4'h6;
+LUT4 \fifo_inst/wfull_val_s2  (
+	.I0(\fifo_inst/wptr [0]),
+	.I1(\fifo_inst/rptr [0]),
+	.I2(\fifo_inst/wptr [1]),
+	.I3(\fifo_inst/rptr [1]),
+	.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  (
+	.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 )
+);
+defparam \fifo_inst/n336_s2 .INIT=16'h0600;
+LUT3 \fifo_inst/wfull_val_s3  (
+	.I0(\fifo_inst/wptr [2]),
+	.I1(\fifo_inst/rbin_num [2]),
+	.I2(\fifo_inst/wfull_val_5 ),
+	.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 ),
+	.F(\fifo_inst/rempty_val )
+);
+defparam \fifo_inst/rempty_val_s2 .INIT=8'h09;
+DFFP \fifo_inst/reset_r_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [0])
+);
+defparam \fifo_inst/reset_r_0_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_1_s0  (
+	.D(\fifo_inst/reset_w [0]),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [1])
+);
+defparam \fifo_inst/reset_w_1_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [0])
+);
+defparam \fifo_inst/reset_w_0_s0 .INIT=1'b1;
+DFFC \fifo_inst/rbin_num_2_s0  (
+	.D(\fifo_inst/rbin_num_next [2]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [2])
+);
+defparam \fifo_inst/rbin_num_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/rbin_num_1_s0  (
+	.D(\fifo_inst/rbin_num_next [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [1])
+);
+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 ),
+	.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/rptr_1_s0  (
+	.D(\fifo_inst/Equal.rgraynext [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [1])
+);
+defparam \fifo_inst/rptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/rptr_0_s0  (
+	.D(\fifo_inst/Equal.rgraynext [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [0])
+);
+defparam \fifo_inst/rptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_2_s0  (
+	.D(\fifo_inst/Equal.wbinnext [2]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [2])
+);
+defparam \fifo_inst/wptr_2_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_1_s0  (
+	.D(\fifo_inst/Equal.wgraynext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [1])
+);
+defparam \fifo_inst/wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_0_s0  (
+	.D(\fifo_inst/Equal.wgraynext [0]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [0])
+);
+defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_1_s0  (
+	.D(\fifo_inst/Equal.wbinnext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Equal.wbin [1])
+);
+defparam \fifo_inst/Equal.wbin_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_0_s0  (
+	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.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 ),
+	.CLK(RdClk),
+	.PRESET(\fifo_inst/n257_3 ),
+	.Q(Empty)
+);
+defparam \fifo_inst/Empty_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_r_1_s0  (
+	.D(\fifo_inst/reset_r [0]),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [1])
+);
+defparam \fifo_inst/reset_r_1_s0 .INIT=1'b1;
+DFFC \fifo_inst/wfull_val1_s0  (
+	.D(\fifo_inst/wfull_val ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wfull_val1_2 )
+);
+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 ),
+	.Q(\fifo_inst/wfull_val1_3 )
+);
+defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
+DFFC \fifo_inst/Full_s0  (
+	.D(\fifo_inst/wfull_val1 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Full_1_2 )
+);
+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 ),
+	.Q(\fifo_inst/Full_2 )
+);
+defparam \fifo_inst/Full_s1 .INIT=1'b1;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n21_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n25_3 ),
+	.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}),
+	.DO({Q[31:0]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_0=32;
+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]),
+	.I3(GND),
+	.CIN(GND),
+	.COUT(\fifo_inst/n156_3 ),
+	.SUM(\fifo_inst/n156_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]),
+	.I3(GND),
+	.CIN(\fifo_inst/n156_3 ),
+	.COUT(\fifo_inst/n157_3 ),
+	.SUM(\fifo_inst/n157_1_SUM )
+);
+defparam \fifo_inst/n157_s0 .ALU_MODE=3;
+INV \fifo_inst/n4_s2  (
+	.I(RdClk),
+	.O(\fifo_inst/n4_6 )
+);
+INV \fifo_inst/n9_s2  (
+	.I(WrClk),
+	.O(\fifo_inst/n9_6 )
+);
+endmodule

+ 24 - 0
src/src/FifoCtrl/FifoMax2870/FifoMax2870_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:27:38 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoMax2870 your_instance_name(
+		.Data(Data_i), //input [31:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [31:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

+ 20 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FIFOHS.prj

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE gowin-synthesis-project>
+<Project>
+    <Version>beta</Version>
+    <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
+    <FileList>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+    </FileList>
+    <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="output_file" value="FifoMax2870.vg"/>
+        <Option type="output_template" value="FifoMax2870_tmp.v"/>
+        <Option type="ram_balance" value="1"/>
+        <Option type="ram_rw_check" value="1"/>
+        <Option type="verilog_language" value="sysv-2017"/>
+    </OptionList>
+</Project>

+ 45 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.log

@@ -0,0 +1,45 @@
+GowinSynthesis start
+Running parser ...
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoMax2870'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+NOTE  (EX0101) : Current top module is "FifoMax2870"
+[5%] Running netlist conversion ...
+Running device independent optimization ...
+[10%] Optimizing Phase 0 completed
+[15%] Optimizing Phase 1 completed
+[25%] Optimizing Phase 2 completed
+Running inference ...
+[30%] Inferring Phase 0 completed
+[40%] Inferring Phase 1 completed
+[50%] Inferring Phase 2 completed
+[55%] Inferring Phase 3 completed
+Running technical mapping ...
+[60%] Tech-Mapping Phase 0 completed
+[65%] Tech-Mapping Phase 1 completed
+[75%] Tech-Mapping Phase 2 completed
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0101) : The netlist is not one directed acyclic graph
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+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
+GowinSynthesis finish

+ 214 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870.vg

@@ -0,0 +1,214 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 12:27:38 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7888)
+`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==
+`pragma protect end_protected
+module FifoMax2870 (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [31:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [31:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoMax2870  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[31:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[31:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoMax2870 */

文件差異過大導致無法顯示
+ 1340 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn.rpt.html


+ 46 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_resource.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>Hierarchy Module Resource</title>
+<style type="text/css">
+body { font-family: Verdana, Arial, sans-serif; font-size: 14px; }
+div#main_wrapper{ width: 100%; }
+h1 {text-align: center; }
+h1 {margin-top: 36px; }
+table, th, td { border: 1px solid #aaa; }
+table { border-collapse:collapse; margin-top: 10px; margin-bottom: 20px; width: 100%; }
+th, td { align = "center"; padding: 5px 2px 5px 5px; }
+th { color: #fff; font-weight: bold; background-color: #0084ff; }
+table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-color: #dee8f4; }
+</style>
+</head>
+<body>
+<div id="main_wrapper">
+<div id="content">
+<h1>Hierarchy Module Resource</h1>
+<table>
+<tr>
+<th class="label">MODULE NAME</th>
+<th class="label">REG NUMBER</th>
+<th class="label">ALU NUMBER</th>
+<th class="label">LUT NUMBER</th>
+<th class="label">DSP NUMBER</th>
+<th class="label">BSRAM NUMBER</th>
+<th class="label">SSRAM NUMBER</th>
+<th class="label">ROM16 NUMBER</th>
+</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">-</td>
+<td align = "center">1</td>
+<td align = "center">-</td>
+<td align = "center">-</td>
+</tr>
+</table>
+</div><!-- content -->
+</div><!-- main_wrapper -->
+</body>
+</html>

+ 2 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_rsc.xml

@@ -0,0 +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)"/>

+ 24 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/FifoMax2870_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 12:27:38 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoMax2870 your_instance_name(
+		.Data(Data_i), //input [31:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [31:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

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

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

+ 6 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/fifo_parameter.v

@@ -0,0 +1,6 @@
+parameter WDEPTH = 4;
+parameter ASIZE = 2;
+parameter WDSIZE = 32;
+parameter RDEPTH = 4;
+parameter RASIZE = 2;
+parameter RDSIZE = 32;

+ 1 - 0
src/src/FifoCtrl/FifoMax2870/temp/FIFOHS/project.ini

@@ -0,0 +1 @@
+RESOURCE_CHECK=false

+ 35 - 0
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.ipc

@@ -0,0 +1,35 @@
+[General]
+ipc_version=4
+file=FifoShiftReg
+module=FifoShiftReg
+target_device=gw1n9-014
+type=fifo_hs
+version=1.0
+
+[Config]
+AlmostEmptyFlag=false
+AlmostEmptyFlagItem=Empty_Single Threshold Constant Parameter
+AlmostFullFlag=false
+AlmostFullFlagItem=Full_Single Threshold Constant Parameter
+BSRAM=true
+ControlledByRdEn=false
+ECCSelected=false
+EmptyClear=1
+EmptySet=1
+EnReset=true
+FirstWordFallThrough=false
+FullClear=1
+FullSet=1
+LANG=0
+OutputRegistersSelected=false
+REG=false
+ReadDataNum=false
+ReadDataWidth=8
+ReadDepth=2
+ResetSynchronization=true
+SSRAM=false
+StandardFIFO=true
+Synthesis_tool=GowinSynthesis
+WriteDataNum=false
+WriteDataWidth=8
+WriteDepth=2

+ 178 - 0
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.v

@@ -0,0 +1,178 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 14:54:26 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5840)
+`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=
+`pragma protect end_protected
+module FifoShiftReg (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [7:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [7:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoShiftReg  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[7:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[7:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoShiftReg */

+ 331 - 0
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg.vo

@@ -0,0 +1,331 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//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
+
+`timescale 100 ps/100 ps
+module FifoShiftReg(
+	Data,
+	Reset,
+	WrClk,
+	RdClk,
+	WrEn,
+	RdEn,
+	Q,
+	Empty,
+	Full
+);
+input [7:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [7:0] Q;
+output Empty;
+output Full;
+wire [7:0] Data;
+wire Empty;
+wire Full;
+wire GND;
+wire [7:0] Q;
+wire RdClk;
+wire RdEn;
+wire Reset;
+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/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/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.wgraynext ;
+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 [0:0] \fifo_inst/rptr ;
+wire [1:0] \fifo_inst/wptr ;
+wire [0:0] \fifo_inst/Equal.wbin ;
+wire [31:8] \fifo_inst/DO ;
+VCC VCC_cZ (
+  .V(VCC)
+);
+GND GND_cZ (
+  .G(GND)
+);
+GSR GSR (
+	.GSRI(VCC)
+);
+LUT4 \fifo_inst/n20_s1  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.I3(WrEn),
+	.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 )
+);
+defparam \fifo_inst/n24_s0 .INIT=4'h4;
+LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.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  (
+	.I0(\fifo_inst/reset_w [1]),
+	.I1(\fifo_inst/wfull_val_7 ),
+	.F(\fifo_inst/n178_4 )
+);
+defparam \fifo_inst/n178_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]),
+	.F(\fifo_inst/rempty_val )
+);
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
+LUT4 \fifo_inst/wfull_val_s3  (
+	.I0(\fifo_inst/wptr [0]),
+	.I1(\fifo_inst/wptr [1]),
+	.I2(\fifo_inst/rbin_num [1]),
+	.I3(\fifo_inst/rptr [0]),
+	.F(\fifo_inst/wfull_val_7 )
+);
+defparam \fifo_inst/wfull_val_s3 .INIT=16'h1428;
+LUT3 \fifo_inst/wfull_val1_s9  (
+	.I0(\fifo_inst/wfull_val1_3 ),
+	.I1(\fifo_inst/wfull_val1_2 ),
+	.I2(\fifo_inst/wfull_val1_0 ),
+	.F(\fifo_inst/wfull_val1 )
+);
+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 ),
+	.I2(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/wfull_val1_0 )
+);
+defparam \fifo_inst/wfull_val1_s10 .INIT=8'h0E;
+LUT3 \fifo_inst/Full_d_s  (
+	.I0(\fifo_inst/Full_2 ),
+	.I1(\fifo_inst/Full_1_2 ),
+	.I2(\fifo_inst/Full_1 ),
+	.F(Full)
+);
+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 ),
+	.I2(\fifo_inst/reset_w [1]),
+	.F(\fifo_inst/Full_1 )
+);
+defparam \fifo_inst/Full_s8 .INIT=8'h0E;
+LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
+	.I0(\fifo_inst/n20_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_s2  (
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.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])
+);
+defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
+DFFP \fifo_inst/reset_r_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [0])
+);
+defparam \fifo_inst/reset_r_0_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_1_s0  (
+	.D(\fifo_inst/reset_w [0]),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [1])
+);
+defparam \fifo_inst/reset_w_1_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_w_0_s0  (
+	.D(GND),
+	.CLK(\fifo_inst/n9_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_w [0])
+);
+defparam \fifo_inst/reset_w_0_s0 .INIT=1'b1;
+DFFC \fifo_inst/rbin_num_1_s0  (
+	.D(\fifo_inst/rbin_num_next [1]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rbin_num [1])
+);
+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 ),
+	.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/rptr_0_s0  (
+	.D(\fifo_inst/Equal.rgraynext [0]),
+	.CLK(RdClk),
+	.CLEAR(\fifo_inst/reset_r [1]),
+	.Q(\fifo_inst/rptr [0])
+);
+defparam \fifo_inst/rptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_1_s0  (
+	.D(\fifo_inst/Equal.wbinnext [1]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [1])
+);
+defparam \fifo_inst/wptr_1_s0 .INIT=1'b0;
+DFFC \fifo_inst/wptr_0_s0  (
+	.D(\fifo_inst/Equal.wgraynext [0]),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wptr [0])
+);
+defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
+DFFC \fifo_inst/Equal.wbin_0_s0  (
+	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.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 ),
+	.CLK(RdClk),
+	.PRESET(\fifo_inst/n135_3 ),
+	.Q(Empty)
+);
+defparam \fifo_inst/Empty_s0 .INIT=1'b1;
+DFFP \fifo_inst/reset_r_1_s0  (
+	.D(\fifo_inst/reset_r [0]),
+	.CLK(\fifo_inst/n4_6 ),
+	.PRESET(Reset),
+	.Q(\fifo_inst/reset_r [1])
+);
+defparam \fifo_inst/reset_r_1_s0 .INIT=1'b1;
+DFFC \fifo_inst/wfull_val1_s0  (
+	.D(\fifo_inst/wfull_val_7 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/wfull_val1_2 )
+);
+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 ),
+	.Q(\fifo_inst/wfull_val1_3 )
+);
+defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
+DFFC \fifo_inst/Full_s0  (
+	.D(\fifo_inst/wfull_val1 ),
+	.CLK(WrClk),
+	.CLEAR(\fifo_inst/reset_w [1]),
+	.Q(\fifo_inst/Full_1_2 )
+);
+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 ),
+	.Q(\fifo_inst/Full_2 )
+);
+defparam \fifo_inst/Full_s1 .INIT=1'b1;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n20_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n24_3 ),
+	.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}),
+	.DO({\fifo_inst/DO [31:8], Q[7:0]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_0=8;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_0_s .BIT_WIDTH_1=8;
+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;
+INV \fifo_inst/n4_s2  (
+	.I(RdClk),
+	.O(\fifo_inst/n4_6 )
+);
+INV \fifo_inst/n9_s2  (
+	.I(WrClk),
+	.O(\fifo_inst/n9_6 )
+);
+endmodule

+ 24 - 0
src/src/FifoCtrl/FifoShiftReg/FifoShiftReg_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 14:54:26 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoShiftReg your_instance_name(
+		.Data(Data_i), //input [7:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [7:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

+ 20 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FIFOHS.prj

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE gowin-synthesis-project>
+<Project>
+    <Version>beta</Version>
+    <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
+    <FileList>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+    </FileList>
+    <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/FifoShiftReg/temp/FIFOHS"/>
+        <Option type="output_file" value="FifoShiftReg.vg"/>
+        <Option type="output_template" value="FifoShiftReg_tmp.v"/>
+        <Option type="ram_balance" value="1"/>
+        <Option type="ram_rw_check" value="1"/>
+        <Option type="verilog_language" value="sysv-2017"/>
+    </OptionList>
+</Project>

+ 45 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg.log

@@ -0,0 +1,45 @@
+GowinSynthesis start
+Running parser ...
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoShiftReg'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+NOTE  (EX0101) : Current top module is "FifoShiftReg"
+[5%] Running netlist conversion ...
+Running device independent optimization ...
+[10%] Optimizing Phase 0 completed
+[15%] Optimizing Phase 1 completed
+[25%] Optimizing Phase 2 completed
+Running inference ...
+[30%] Inferring Phase 0 completed
+[40%] Inferring Phase 1 completed
+[50%] Inferring Phase 2 completed
+[55%] Inferring Phase 3 completed
+Running technical mapping ...
+[60%] Tech-Mapping Phase 0 completed
+[65%] Tech-Mapping Phase 1 completed
+[75%] Tech-Mapping Phase 2 completed
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0101) : The netlist is not one directed acyclic graph
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+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\FifoShiftReg\temp\FIFOHS\FifoShiftReg.vg" completed
+Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoShiftReg\temp\FIFOHS\FifoShiftReg_tmp.v" completed
+[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoShiftReg\temp\FIFOHS\FifoShiftReg_syn.rpt.html" completed
+GowinSynthesis finish

+ 178 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg.vg

@@ -0,0 +1,178 @@
+//
+//Written by GowinSynthesis
+//Tool Version "V1.9.9.02"
+//Wed Apr 24 14:54:26 2024
+
+//Source file index table:
+//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+`timescale 100 ps/100 ps
+`pragma protect begin_protected
+`pragma protect version="2.3"
+`pragma protect author="default"
+`pragma protect author_info="default"
+`pragma protect encrypt_agent="GOWIN"
+`pragma protect encrypt_agent_info="GOWIN Encrypt Version 2.3"
+
+`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==
+
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5840)
+`pragma protect data_keyowner="default-ip-vendor"
+`pragma protect data_keyname="default-ip-key"
+`pragma protect data_method="aes128-cfb"
+`pragma protect data_block
+VK77N4wiigXr59iGa59PiSfdb46m7TM16APHsHBXKaYBwY7Ynf8ffGt8SVvlnR7JOBnYE6ItsnoC
+6cfcqm5h6BrhTNCsPlyUirferLMWqFYYt2XY2A5a+IOom1Q1OeEQJ2gdyFb/KjjyzxcW0Qm3z2Ee
+8Boix3QRnIl/SyVel+6s8vlZ+mvsWNTwHofbbB+7D+9Qv913fOeDTC4Np8vQYFvc+aaB/fhQnsSd
+WlB2svB05tyNzEwhkpl+rzSev8V/cMQa313VSO27xjE3ldp8wxGJnmGQdZbW3ip+9v/5ZjUN74O2
+quuq4gBEXhcBPWkpqO28pqEh3W6AU3swzAVjpcR7XlGwXiD4WATxnnYGPX3Hlco/VYi1O2EFoIsl
+7I9emVD65OjqWcpyypV6TlXFUFVvFPwRlnaPVFKQyb7J2R68B22pJrPRLBMdVXwY86dm6S7CbHiy
+9ny2x7L+VNzdsufoMm4fPVMRZPyedEOIPo/LffuPd5jZ2G0E2U+UA6L7kbjlaRQPfp4uU5xjdnZZ
+vc37BICcf9Wl5JMRre6KiX1j570vbm0gnNAklPqjJiFL6QNUmfBvN+XdRPCgqFCypUz7kCaBrRXI
+wn7jdsTF7h+Ocpc7f7xvYGOYfDLBXRLNeo4csbKhExURyzDuWI/iB/n0lWf4lk0tEkgM79EMz5Uu
+tCoR69lSA6+mwAbLacmknxdU0vPGIS5+WP7MrgRvIs/sHiARY5WWyHML0x4UAhfEGlG1F3sn3jjA
+y756mmDM+RBUkWTBW8cfmI25wlHaaJyxQOetSLYdMHidJdO/U1rBkps34WswWLKbOzv/2YQJH2Eh
+qGQY+oaqsxRORJC2FuECM5HkauVOhp2sFyqcDa/BPkXeaFUSvvNiP9LStmubo68Xy2fATghplL7s
+fOA/wUZAh4MAAkqK8y8g7a7eu1n1QeNn6weQGlsO6MBfKBMcM6De/rbf8DQj4rHl4CNgOaDa+XdE
+5FdrYyTKBJfho4miGXIKa9cWGpdm3g3bVo1+bgk2ohChoSnPAuutBS2d8J1MKO1TRH7mFawJz+GZ
+c+VPdu1oSYaV/6Z/GqnrGwQWQKggfIYJOnvQq3caydo6bWXZ4zm97/8w0kDJ3ceneCBTpFnX9PZ/
+vqWfI4HKBbKtEcKd+PwEhNTOWhP1rScwhBWCajY9KSoVVI8s60p51JmRkWTbft1tXRVql8OyOVao
+GyIFWVQL+SmAANGZvepffemGmErlr5IX9yx4pvPX5DP66cEa0zB+ngGhZmS+1F1yXk6GOQBRjfRR
+C8YCZwQ7dCMO1zmmQLvsWEVUv4dXLaimpGIBuM/7CSWtgpNRR2yIbLF+U4AYQQPMRRmbhSDkQLKo
+jqsFjhWIqgVgEoldCl+9tc+RmoRdmDPHjQ97h/Sx2k5sJ/NesupNIjZFBCGxO/AEar2YOkdYwnGx
+LllHN+gJpAFxFADALp9m1S0/mXTu3vrwebQHujOlGu2pKBel00QFRK+u85qMI+PnzMUDrCWUdxGc
+LBRlpijw49wp+lY8X9tzEEiig7t80KvX7Sbkc73BIxfsffCNpwPgU6+3jqedPqWF/hR1OSfWLnzt
+3wEEVuN30hyNVLfoXeymoK0Yk+8Yt9KcaRvs8emslxv4vs01asPJlqhmmb74+XzI9Gt4X/vh/TDC
+UYRjbmntGvOC5kCUtSyXhDlv4Qb+4h31EjA0MaiuSOm/J6PdxAYk3gc4wWooKTg+Ooe5siCQC5yb
+qEXl3kos1sPVcRSWAJZSY0CZlo9kdGWhxZzvVFOqlc1L7xdthHzGLQBUwdHqeeypLvRyGZby5ZO0
+Za1Qu+jvA6ujmvX2rR5yYIwrABmQa+jyGw60Y7IBrJqIncsX2TEz+VrEdOIRmL8N5AKw4OVNWHRC
+cBcGewdZxA0mrMJcYfABnXWIVOLMAevP1POVLAw9yQxSeuBopyho5fccydmLqOm51AnMim/hM6n4
+krjmQ0JJpXKHXMKePjYpN80fJKXVz8YrBkaCqNNbv1usDFdRsgFCR3rFC5MPjF4k5EXW+yUNUxGA
+uSPfrs8oN17SwRVfA1Swgif0WlU5t/8KwA/IDggI4A0VjMep5meUEsb667PMlja+5gzKJHdurnek
+9HnAli1TZFM/hyuAprhCcgLcT6th6VQvb5IDc/lHYq+1U6xobfK0HS5pd+rfmjt6KUCOKBhduOS7
+JV1YkVx6IWsurkbnpxrlbda2xSr6veYXUAj5M7Zof/cIsJmiR6C3/TZA6z9jBl4Qq8+OnQLGdsE1
+RYeliDm+WWvfrR+H9a3e37HCFVS+OwvD7bGDXgVfbrBLAUCfjdsraI1OtMo4NfPkAA3jCVlykGLS
+iku+1tEw921hFQeD32iytd36M/bWGcB1DJ8+XzDOdKcTXnJb4pzxc4c3GE7aTOtKU7fxCpoYxjM4
+j6v6mgpkgtquhioYzZ5T5O5LJ1bGx1PqQjVd6LHyRR4wYo/hGnbjMwdDEdbqG+biIVVft1MtP+A9
+hgelvvp9OoLT21S54zJ36zIAW0ydb2tGfLLIMXF3KXXwDi73Hx2qBb9i2IzFNloVt19rfkroVQUq
+VY7innwYIoone0vcT/4/FIzyS8590iFNPvmT6yrzP818fvPwf31PepVS8GDKeV+RLTDoYYbwI/1y
+CfJpcdTpuY78/s2Til15GDWGXv2ZlE1rhjJJwqjrXzYkZjUN/aUATdLSBB/bfiqQVDCaOA4xaPyz
+RR39tR2upzoiN0jMJyKPcxFfkpAz6Vrvlub/z1Rq/oNEsKI2yCP30fmHP61m5CSukMBTan3s+mUP
++tTjiNQXbRELN71WQUvNEj9X6QcoZJ8wR7sP0oq9YCLtKbaAWPhZHdpngWS7qjej4qRpxCwfQfob
+ZqWvvHKB6/JC3bQ/mmaOLwUVIVu2ZIBtXrK9ZQHZTmN3T0Jap1Yag7MnmzmDhPycnfI2JffV9Sjm
+XJviBhTVmZ+RRoYaY3VGeEg/VrabZ59RxFbjJ1+OSADJCb7y2u2RGloU38DAFneblcBttBVCSL3n
+ib24VKzC4AW/o3gcpyA5RQEX/efQx+0vcOepvAOaGxSSOQVQGDmTKVqE6JKZ0tJwZh7HuygjyiA0
+umTN1gMN9R5gR2nL7j2gqUkFMcQAbAUmX3xSsskCj8D/Relkce+FPDUMrF/oI8zurdPSZjoqFeQ3
+WwqnWft9Qx8v0v0y7oPgZuCN+L27Q+gq68vjimE5P34K/ItroNwToljBqTYZ5HaJTdiSQeXsVm5f
+Ha2PTF0KL4A8Q2yZytGzBKHJcVJdKh6iAt7f60YspQXiyP13qHLkPxUEDAb8JwA6nczBauAtZ/qV
+LD6I5RtVMUEby/V6G38SJ0NHX3kQVk3XPdPLBDSuMK4tct+RD8MKdaBF9C27BEdmclzk42YaMi4m
+/tdp51u0uFQQr6tt/pUsCTnG66nlEEGfUKKXYXsV0VKS1Ip6xbqTA25GafM0uk29crH6upo7EBCG
+wDfccCtGB4Wzq2ONREaswrm8kmLG21a4PVHwz+qHM/kD1DTTSx3ECZnqEXk3OOSQuulRiDKi2UVh
+7VPZAicwfuV9RCrbqmpAmvyNmrza/8Q93IQBPAqIQc9TQExPDBaocIUFjoEuhaaaCUgj1OXqZiMd
+AL1pGhaLyUVCbHGXpPmAbryHZng9ZpMuYWGYd5Y7vJJ+lH/c4MzrdGLBz/aALxDBzCJmntr0aLcm
+u8oN32jqfe6Nhtf1SYmauyWO8ZwD2QjF5xLWlXhflnfSwdwZUvjTSHliTbZk1iPgiG4a5DeYQvQj
+Fri/dTBQxVDY5vqgBPXC9qKM1HjOMxyuEYjPQOiWNPKe8ghXpOGRsqvO9TfO1p8YgzauyKrIrXjC
+fdPMhm4VHjkFPZxfWuO2aazd/xwIa0PgTuaXVNF+6ul+PiXMgyNbeFZxTTjVgO/r1LhGKRPLg/3m
+E5jtuhUoOyRb1Hok7bncADtJ5itRcod1HyinkfjDGS17jeZEi0rosGAat7uQwG9ltv5Bkr/AyKzb
+MPL4Gv1cc4RGV4LTsdit27UEeUVxMQ46FRmz1/IckkLO8WGOn1YH1nrUkiguzL/bFGZCmX3gLkZv
+OYMbyIa7AxQB2SDJsVIavyd5eSXTXApcVQU3rR9hxY/ncHxK3B167toEv4a4+YMYEGQwpZ2Pe/DC
+L/vutxMbojJ655eTWjy/qz2oR3h/oMovTdNGVNMpTJye5EvVhtKPlB13RA1B3Q2oLqK8WBVb4E8n
+h14alfKUzC8yNceDewlcQzhWS5/kHE9XA5PBQ7mG1zX6Jw/Fv3wYbT/k4YbGpxL8CN4tcY9pwZ9P
+O9eUZMkKAgowREs28Qv2bs6d92FrMRFGtlMrBtGy7MYrofkdrZLtWb6wnISo3ELDHzxBsf/0ysMl
+2GlRgr39J030A0HDONsgI7zhzBp82E9yUa9oUZBwKSltrpSuiKq5nrY/8MdOQAelWKTkwtixPxvC
+T9pS8zxdaLQvboRD+2dwk1HFqagPIOl3VZ07Gc5uzXXpj6g6jsrOM5yXzlah0EV1HDm20YIWN1Gp
+g3jvO24DLo+gpmjt/wwHNIztM1tX0vtItIGoM53J6gkdLy/DRW2pu37AGX2KkSiOJKcxkuGRxqPo
+jBdvnQrYi1YiZTHwGAxzBpa8bjxwWwi9zsdomXN8RBB83G327Y6pCkA2SLYgyoXyIIR9MfQ7dVJt
+xeElt4jeqQenl3SSU17V7/UdezZT5iabBrWc8EV4nGjsjj05rMr098r8o1cE9AIPSv48p6h//heJ
+eajILeO1LCaX4kgYktypbbdfj60inaJ+TqDWtiLrdXInMh8S5dCZ/dOViwjC7NQ/mk+B+vQna4Mi
+hOIA9XupKIoBaFvyPewyRweWhGfK5nuyR5TKZrDZE6Z1pThYjH4DEQkmCVBEBSS9/ypV4dxC3iOU
+ABnlk9q6YPC6bQPK2s43zym6y+yldiIJRlRTBBTnNiPDCmAYdolmATXVEv1Cd8m28MRIf/LX7Zy3
+n+AQ+Hxm5vn9pPk6VFJGD80+4XqsVPb2WQjNWAnqNV8uC516orRJqxIDEfmljmAHwO4tebATvzLH
+GeC3NPDs9FQT1V1rp7/4BFbvs32nVKVbhjOLwt5C3Xl6LGAnkobsBMDS05CTbtzdQE7vde6FH53m
+7xD82YODwVicUiTbff+lDlOYKworC1d72cJIRx6W2tdEWyNF7nKp5lq/jeh9rhrn1+e7hA3Tzxwv
+RVn4PS7X29gikWjdOoQzybZduIeka+9LuhlqQsGGjy/jO2DmeNRzSOgfgSJ7+wNNY3h6NYjixQw9
+UpkWN979f4Nc2DThZCI+NnFBlFV3BPAGPvrw5H4HZzcneJnlk5MuysPexcLVWHtjY2cHkpdeL4oL
+XVpgstQ0jKPYgm2kPBaOT2iLC/MJkC0hJqNl7M5w0aHdvbC3WRYX2VhB/gLDo8lGmxHIVvzII97R
+mczTZxe3pilXschK4p3D+sVT1lxNTPcQbPR9Ylnf56vf6P0rgjRVyW4xcgEE0i9IwpmD3OiSirkc
+TjIp4VBT9yxzaWdQL61yJm/BGpQ4YZMqC5TNKKnEUYl9EDLygGXnVq2HNegXhEeeH1H7zGv1RK3r
+gL1BLLv+57F/kFj1jAjVwaZgzCRDwiu71u8wWU7kJXdTDs3nnWlTNesWXujC7BF2QN6ZxcVHt6Q+
+m8yLUTKogvQ1fjlxc4jRYH1FkzdizH2t307iMSWYevK/acVd1WCWhhIeG83sTvvQ8duthiKxw7td
+bGn0L1D7A2rNh3nWPjywmGrlLrJmCEXjyTTAhcvUiQIHa7fdLnqj0Mpo3yw2E4gUa+0z2PEQYG17
+m+CLfIA3PBmpdaPwlxwRP15Men4UrvWJ6tJdzlOk2S4PUe5PlMDyrNFGuIZ5RxyhNtTbrnh4AKt5
+iV7g/MrQYr0nSJoZeIzSOZBFy3b4XmQteUNEKIdwxXSNSntN3mueEtlbqGxgrL9jiDDcttRthFoj
+0kBVmC6jIyg9fgF5fVs6BFwjzNqeV9U5gWTRkBWcbW/i8aq0IaoJkY+SO15IBqdW4qddL+9oPgPD
+qGyiHLKZpcoY6ns+Nol4+RBR2OTCAHLIpfP0qhjMIHCXmFTG1swWXpKyR0XZHEM3PaPkkXM94TBX
+QTGkr4NtWDXJxsVLB/Nb6f+cnsAA2b5ddId8dDVZ/y+sMOCmc5Akm/PaCl823yzE2GvpBwk9+4c6
+i3WqfBO2SsmhHDBCeU3szyOfFiG3m8dlEfDbizEII9z8WBZoY1vxTzpq01KBAH3bUi242xOfvOvf
+6z0TyIjOxDqX5eB4Xc3S6RFplaO9fgnp0mgcPA5BwWm/EX2yUv55cjo8YcqBGwpKB/qPt6fGH8tv
+LsUlGhDSbL0kgd3CfRXNqpoMOQ6OTYUjLbErKnVId9Km2+HRs5bmBa5SW/ECj00An8hkiheNo4I/
+TmDPYv6pwX3XNVXtVK97m846JwkMB+YcH+f455k3duKyoajevEVYN3AhNJ1YE2l3e9XKuDsY56mC
+LwhoS0xVcFPSIcFz0xpR/b6spfRN7kwan40aV0+JVTG6T9yvW7es/nMbwLrZQaice/xyynXkdJqw
+4C4CBtUh3X3sGU6yQam3X/CDkPIunmMFVHN1U3wyQYoajJVd4R6hprZJ85aUSCUk0PGQfyNL9Pud
+r6KP9p6MAGePHjUiNEheRA2bW1HpUbgHUiwv2+9MZ/RaKduzwA2kSId7zY91Go+T0P8DmbjATDr+
+VMUDR1jmd6hfHDHGPfSv0WRVAioUsic55lA4Xh0dmLTrobNQkFrZYI+JXKSsyydL3HarJ8fHybAi
+lHiaNrIcz9vnMzA2KyQoVs9KmamE5UVbAopoeUDvLpzLRcKwJEfa5bBrxb7n+YJoEXKKYgSRmO9k
+mT7SKosYmZ6S3Ay/3qwQuT29C8UGlBej71DmErdl1Bhgm9t8boI/pVXGr8LPoxVlPswcJtCiFYi3
+iLXvTqxvUNCUiQVUZI0PnHzjTd/h2cbRoAju4VnSG4VRhqwHzkq6fBm486zCH0I+l454JJClnANA
++oQkJGpRpKCTByFqYr/Bay3xtfPnA5p4cvfG26W2XmoZxOFyDLbB2RO0FkXCU1n5OZBtM63kBzY4
+Xhn/tAWnj9l7HM/p7QUvP8xxpQV2AQRcN6bqFnaCcXfuzYBIA2QvugwFiz8PRhu1Xpr+uo8g1WJJ
+7PMUg0q45St7X9OlIhPVpluIXyPd9ipt0y9XIQ0aV13jWO5Jb5HK4AHI1n2XjI/yc8Nrnxwh8S7O
+JUQb4DfZZMdjS3MbHw1anqeHXM8szgbgYKyuCbVyaxcpYYu6zCZvcscn5BCbciX3/VIxjzBDLN3r
+d+NZN9uGewdi1VHA8OCSN0JcIgdthbd7hKfshPxdugqUi2DoSIeYKEwAfeq43WSYlih6INswjEhw
+k8CwIXxeAXABjAdruo86n8KuI/ur4oiqwrlv5U/beePBd7yAmvalvt4owmQGg9RkY95S16cObuFx
+fXRnmrdPImm8DUSKytjTDBdaZ2fYQhaUHxz3+6SEO1F+BidNmaXcKFpgJxG+gZvgLKxHqVyZHYqo
+i2YRnFrgZquY34xqs2+1xYd8vo/rui0jWiM9cfdqf+7VP0ctyZGaXn2bWaW+B441YC9IRa03SBqR
+MuG2svJVTgxP8kgcxwtzuuaJzLcrnAupUPIq/a1a0Ab3HS05vY/ETq24tVSYoS0UBphmtinHZaWJ
+sV7+/rQKRBAMCUDVtSYhFepC2389xlMHIWg=
+`pragma protect end_protected
+module FifoShiftReg (
+  Data,
+  Reset,
+  WrClk,
+  RdClk,
+  WrEn,
+  RdEn,
+  Q,
+  Empty,
+  Full
+)
+;
+input [7:0] Data;
+input Reset;
+input WrClk;
+input RdClk;
+input WrEn;
+input RdEn;
+output [7:0] Q;
+output Empty;
+output Full;
+wire VCC;
+wire GND;
+  \~fifo.FifoShiftReg  fifo_inst (
+    .Reset(Reset),
+    .RdClk(RdClk),
+    .WrClk(WrClk),
+    .WrEn(WrEn),
+    .RdEn(RdEn),
+    .Data(Data[7:0]),
+    .Empty(Empty),
+    .Full(Full),
+    .Q(Q[7:0])
+);
+  VCC VCC_cZ (
+    .V(VCC)
+);
+  GND GND_cZ (
+    .G(GND)
+);
+  GSR GSR (
+    .GSRI(VCC) 
+);
+endmodule /* FifoShiftReg */

文件差異過大導致無法顯示
+ 1300 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn.rpt.html


+ 46 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_resource.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>Hierarchy Module Resource</title>
+<style type="text/css">
+body { font-family: Verdana, Arial, sans-serif; font-size: 14px; }
+div#main_wrapper{ width: 100%; }
+h1 {text-align: center; }
+h1 {margin-top: 36px; }
+table, th, td { border: 1px solid #aaa; }
+table { border-collapse:collapse; margin-top: 10px; margin-bottom: 20px; width: 100%; }
+th, td { align = "center"; padding: 5px 2px 5px 5px; }
+th { color: #fff; font-weight: bold; background-color: #0084ff; }
+table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-color: #dee8f4; }
+</style>
+</head>
+<body>
+<div id="main_wrapper">
+<div id="content">
+<h1>Hierarchy Module Resource</h1>
+<table>
+<tr>
+<th class="label">MODULE NAME</th>
+<th class="label">REG NUMBER</th>
+<th class="label">ALU NUMBER</th>
+<th class="label">LUT NUMBER</th>
+<th class="label">DSP NUMBER</th>
+<th class="label">BSRAM NUMBER</th>
+<th class="label">SSRAM NUMBER</th>
+<th class="label">ROM16 NUMBER</th>
+</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">-</td>
+<td align = "center">18</td>
+<td align = "center">-</td>
+<td align = "center">1</td>
+<td align = "center">-</td>
+<td align = "center">-</td>
+</tr>
+</table>
+</div><!-- content -->
+</div><!-- main_wrapper -->
+</body>
+</html>

+ 2 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_rsc.xml

@@ -0,0 +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)"/>

+ 24 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/FifoShiftReg_tmp.v

@@ -0,0 +1,24 @@
+//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//All rights reserved.
+//File Title: Template file for instantiation
+//Tool Version: V1.9.9.02
+//Part Number: GW1N-LV9PG256C6/I5
+//Device: GW1N-
+//Created Time: Wed Apr 24 14:54:26 2024
+
+//Change the instance name and port connections to the signal names
+//--------Copy here to design--------
+
+	FifoShiftReg your_instance_name(
+		.Data(Data_i), //input [7:0] Data
+		.Reset(Reset_i), //input Reset
+		.WrClk(WrClk_i), //input WrClk
+		.RdClk(RdClk_i), //input RdClk
+		.WrEn(WrEn_i), //input WrEn
+		.RdEn(RdEn_i), //input RdEn
+		.Q(Q_o), //output [7:0] Q
+		.Empty(Empty_o), //output Empty
+		.Full(Full_o) //output Full
+	);
+
+//--------Copy end-------------------

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

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

+ 6 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/fifo_parameter.v

@@ -0,0 +1,6 @@
+parameter WDEPTH = 2;
+parameter ASIZE = 1;
+parameter WDSIZE = 8;
+parameter RDEPTH = 2;
+parameter RASIZE = 1;
+parameter RDSIZE = 8;

+ 1 - 0
src/src/FifoCtrl/FifoShiftReg/temp/FIFOHS/project.ini

@@ -0,0 +1 @@
+RESOURCE_CHECK=false

+ 439 - 36
src/src/Top/TopSbTmsg.v

@@ -59,15 +59,75 @@ module TopSbTmsg
 
 //================================================================================
 //  REG/WIRE
-
-	wire clk360;
+	wire gclk;
 	wire clk100;
-	wire clk75;
-	wire clk50;
-	wire clk40;
-	wire clk20;
-	wire clk30;
 	wire clk5;
+	wire clk20;
+	wire clk50;
+	wire clk26dot25;
+	wire clk60;
+
+	//FifoLMX
+	wire [23:0] dataFromLmxFifo;
+	wire [23:0] dataFromLmxFifoCtrl;
+	wire readEnLmx;
+	wire writeEnLmx;
+	wire lmxFifoEmpty;
+	wire lmxFifoFull;
+	wire valRdDataLMX;
+
+	//FifoDDS
+	wire [63:0] dataFromDdsFifo;
+	wire [63:0] dataFromDdsFifoCtrl;
+	wire readEnDds;
+	wire writeEnDds;
+	wire ddsFifoEmpty;
+	wire ddsFifoFull;
+	wire valRdDataDDS;
+
+	//FifoPot
+	wire [15:0] dataFromPotFifo;
+	wire [15:0] dataFromPotFifoCtrl;
+	wire readEnPot;
+	wire writeEnPot;
+	wire potFifoEmpty;
+	wire potFifoFull;
+	wire valRdDataPOT;
+
+	//FifoDAC
+	wire [15:0] dataFromDacFifo;
+	wire [15:0] dataFromDacFifoCtrl;
+	wire readEnDac;
+	wire writeEnDac;
+	wire dacFifoEmpty;
+	wire dacFifoFull;
+
+	//FifoAtt
+	wire [15:0] dataFromAttFifo;
+	wire [15:0] dataFromAttFifoCtrl;
+	wire readEnAtt;
+	wire writeEnAtt;
+	wire attFifoEmpty;
+	wire attFifoFull;
+	wire valRdDataATT;
+
+	//FifoShReg
+	wire [7:0] dataFromShRegFifo;
+	wire [7:0] dataFromShRegFifoCtrl;
+	wire readEnShReg;
+	wire writeEnShReg;
+	wire shRegFifoEmpty;
+	wire shRegFifoFull;
+	wire valRdDataShReg;
+
+	//FifoMax
+	wire [31:0] dataFromMaxFifo;
+	wire [31:0] dataFromMaxFifoCtrl;
+	wire readEnMax;
+	wire writeEnMax;
+	wire maxFifoEmpty;
+	wire maxFifoFull;
+	wire valRdDataMAX;
 
 	wire spiDataVal;
 	wire [WORDWIDTH-1:0] spiData;
@@ -104,41 +164,49 @@ module TopSbTmsg
 
 //================================================================================
 //  CODING
+ClkGen ClkGen_inst (
+	.Clk24Mhz_i			(Clk_i),
+	.Clk24Mhz_o			(gclk),
+	.Clk100Mhz_o		(clk100),
+	.Clk5Mhz_o			(clk5),
+	.Clk20Mhz_o			(clk20),
+	.Clk50Mhz_o			(clk50),
+	.Clk26dot25Mhz_o 	(clk26dot25),
+	.Clk60Mhz_o			(clk60)
+);
 
 InterfaceArbiter 
 #(	
-	.OUTWORDWIDTH (WORDWIDTH),
-	.SSPIWORDWIDTH (SSPIWORDWIDTH)
+	.OUTWORDWIDTH	(WORDWIDTH),
+	.SSPIWORDWIDTH	(SSPIWORDWIDTH)
 )
 SpiSlaveArbiter
 (
-	.Rst_i		(Rst_i),
-	// .Clk_i		(clk100),
-	.Clk_i		(Clk_i),
-	
-	.Sck_i		(Sck_i),
-	.Ss_i		(Ss_i),
-	
-	.Mosi0_i	(Mosi0_i),
-	.Mosi1_i	(Mosi1_io),
-	.Mosi2_i	(Mosi2_i),
-	.Mosi3_i	(Mosi3_i),
-	
-	
-	.DataVal_o	(spiDataVal),
-	.Data_o		(spiData)
+	.Rst_i			(Rst_i),
+	.Clk_i			(clk100),
+		
+	.Sck_i			(Sck_i),
+	.Ss_i			(Ss_i),
+		
+	.Mosi0_i		(Mosi0_i),
+	.Mosi1_i		(Mosi1_io),
+	.Mosi2_i		(Mosi2_i),
+	.Mosi3_i		(Mosi3_i),
+		
+		
+	.DataVal_o		(spiDataVal),
+	.Data_o			(spiData)
 );
 
 PacketAnalyzer4Mosi PacketAnalyzer4Mosi
 (
-	// .Clk_i	(clk100),
-	.Clk_i	(Clk_i),
-	.Rst_i	(Rst_i),
+	.Clk_i					(clk100),
+	.Rst_i					(Rst_i),
 
-	.DataFromSpi_i		(spiData),
-	.ValDataFromSpi_i	(spiDataVal),
+	.DataFromSpi_i			(spiData),
+	.ValDataFromSpi_i		(spiDataVal),
 
-	.BusyMosi1_i	(busyMosi1),
+	.BusyMosi1_i			(busyMosi1),
 
 	.ValLmxDataToFifo_o		(valLmxDataToFifo),
 	.ValDdsDataToFifo_o		(valDdsDataToFifo),
@@ -149,19 +217,18 @@ PacketAnalyzer4Mosi PacketAnalyzer4Mosi
 	.ValMaxDataToFifo_o		(valMaxDataToFifo),
 	.ValGpioDataToFifo_o	(valGpioDataToFifo),
 
-	.Busy_o	(busyMosi4)
+	.Busy_o					(busyMosi4)
 );
 
 PacketAnalyzer1Mosi PacketAnalyzer1Mosi
 (
-	// .Clk_i	(clk100),
-	.Clk_i	(Clk_i),
-	.Rst_i	(Rst_i),
+	.Clk_i				(clk100),
+	.Rst_i				(Rst_i),
 
 	.DataFromSpi_i		(spiData),
 	.ValDataFromSpi_i	(spiDataVal),
 
-	.BusyMosi4_i	(busyMosi4),
+	.BusyMosi4_i		(busyMosi4),
 
 	.FlagDirectLmx_o	(flagDirectLmx),
 	.FlagDirectDds_o	(flagDirectDds),
@@ -173,7 +240,343 @@ PacketAnalyzer1Mosi PacketAnalyzer1Mosi
 	.FlagDirectGpio_o	(flagDirectGpio),
 	.FlagDirectTemp_o	(flagDirectTemp),
 
-	.Busy_o	(busyMosi1)
+	.Busy_o				(busyMosi1)
+);
+
+//***********************************************
+//	           LMX2594
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(24)
+) FifoCtrlLmx
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk60),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valLmxDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk60),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnLmx),
+	.RdEn	(readEnLmx),
+	.Full	(lmxFifoFull),
+	.Empty	(lmxFifoEmpty),
+	.Q		(dataFromLmxFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(24)
+)SpiMLmx(
+	.Clk_i		(clk60),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataLMX),
+	.SpiData_i	(dataFromLmxFifo),
+	.Busy_o	    (busySpiMLmx),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
+);
+
+//***********************************************
+//	           		DDS
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(3),
+	.OUT_WIDTH		(64)
+) FifoCtrlDDS
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk50),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valDdsDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk50),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnDds),
+	.RdEn	(readEnDds),
+	.Full	(ddsFifoFull),
+	.Empty	(ddsFifoEmpty),
+	.Q		(dataFromDdsFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(64)
+)SpiMDDS(
+	.Clk_i		(clk50),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataDDS),
+	.SpiData_i	(dataFromDdsFifo),
+	.Busy_o	    (busySpiMDds),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
+);
+
+//***********************************************
+//	           		POT
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(16)
+) FifoCtrlPot
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk5),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valPotDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk5),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnPot),
+	.RdEn	(readEnPot),
+	.Full	(potFifoFull),
+	.Empty	(potFifoEmpty),
+	.Q		(dataFromPotFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(16)
+)SpiMPot(
+	.Clk_i		(clk5),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataPOT),
+	.SpiData_i	(dataFromPotFifo),
+	.Busy_o	    (busySpiMPot),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
+);
+
+//***********************************************
+//	           		DAC
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(16)
+) FifoCtrlDac
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk5),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valDacDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk50),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnDac),
+	.RdEn	(readEnDac),
+	.Full	(dacFifoFull),
+	.Empty	(dacFifoEmpty),
+	.Q		(dataFromDacFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(16)
+)SpiMDac(
+	.Clk_i		(clk50),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataDAC),
+	.SpiData_i	(dataFromDacFifo),
+	.Busy_o	    (busySpiMDac),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
+);
+
+//***********************************************
+//	           		ATT
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(16)
+) FifoCtrlAtt
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk50),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valAttDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk50),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnAtt),
+	.RdEn	(readEnAtt),
+	.Full	(attFifoFull),
+	.Empty	(attFifoEmpty),
+	.Q		(dataFromAttFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(16)
+)SpiMAtt(
+	.Clk_i		(clk50),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataATT),
+	.SpiData_i	(dataFromAttFifo),
+	.Busy_o	    (busySpiMAtt),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
+);
+
+//***********************************************
+//	           		ShiftRegister
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(1),
+	.OUT_WIDTH		(8)
+) FifoCtrlShReg
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk26dot25),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valShRegDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk26dot25),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnShReg),
+	.RdEn	(readEnShReg),
+	.Full	(shRegFifoFull),
+	.Empty	(shRegFifoEmpty),
+	.Q		(dataFromShRegFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(8)
+)SpiMShReg(
+	.Clk_i		(clk26dot25),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataShReg),
+	.SpiData_i	(dataFromShRegFifo),
+	.Busy_o	    (busySpiMShReg),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
+);
+
+//***********************************************
+//	           		MAX2870
+//***********************************************
+FifoCtrl #(
+	.IN_WIDTH		(24),
+	.WR_NUM			(2),
+	.OUT_WIDTH		(32)
+) FifoCtrlMax
+(
+	.WrClk_i		(clk100),
+	.RdClk_i		(clk50),
+	.Rst_i			(Rst_i),
+	.Data_i			(spiData),
+	.Val_i			(valMaxDataToFifo),
+	.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	(clk100),
+	.RdClk	(clk50),
+	.Reset	(Rst_i),
+	.WrEn	(writeEnMax),
+	.RdEn	(readEnMax),
+	.Full	(maxFifoFull),
+	.Empty	(maxFifoEmpty),
+	.Q		(dataFromMaxFifo)
+);
+
+SpiM #(
+	.DATA_WIDTH	(32)
+)SpiMMax(
+	.Clk_i		(clk50),
+	.Rst_i		(Rst_i),
+	.Val_i		(valRdDataMAX),
+	.SpiData_i	(dataFromMaxFifo),
+	.Busy_o	    (busySpiMMax),
+	.Ss_o		(),
+	.Mosi_o		(),
+	.Sck_o		()
 );
 
 endmodule